Loyc.LLParserGenerator.Rule.MakeRecognizerVersion C# (CSharp) Method

MakeRecognizerVersion() public method

public MakeRecognizerVersion ( ) : Rule
return Rule
		public Rule MakeRecognizerVersion()
		{
			var scanName = GSymbol.Get("Scan_" + Name.Name);
			return _recognizer = _recognizer ?? MakeRecognizerVersion(scanName);
		}
		public Rule MakeRecognizerVersion(Symbol newName)

Same methods

Rule::MakeRecognizerVersion ( LNode prototype ) : Rule
Rule::MakeRecognizerVersion ( LNode prototype, Symbol newName ) : Rule
Rule::MakeRecognizerVersion ( Symbol newName ) : Rule

Usage Example

Ejemplo n.º 1
0
        public virtual LNode CallRule(RuleRef rref, bool recognizerMode)
        {
            Rule target  = rref.Rule;
            var  @params = rref.Params;

            if (recognizerMode)
            {
                target = target.MakeRecognizerVersion();

                // Allow recognizers to take fewer arguments than the normal rule
                // by truncating argument(s) at the call site.
                int maxArgCount = target.Basis.CallsMin(S.Fn, 3) ? target.Basis.Args[2].ArgCount : 0;
                if (@params.Count > maxArgCount)
                {
                    @params = @params.First(maxArgCount);
                }
            }
            LNode call = F.Call(target.Name, @params);

            if (recognizerMode)
            {
                return(F.Call(S.If, F.Call(S.Not, call), F.Call(S.Return, F.@false)));
            }
            else
            {
                return(rref.AutoSaveResult(call));
            }
        }
All Usage Examples Of Loyc.LLParserGenerator.Rule::MakeRecognizerVersion