public static LNode LLLPG_lexer(LNode node, IMacroContext context) { return(LllpgMacro(node, context, _lexer, lexerCfg => { var helper = new IntStreamCodeGenHelper(); foreach (var option in MacroContext.GetOptions(lexerCfg.Args)) { LNode value = option.Value ?? LNode.Missing; string key = option.Key.Name.Name; switch (key.ToLowerInvariant()) { case "inputsource": helper.InputSource = value; break; case "inputclass": helper.InputClass = value; break; case "terminaltype": helper.TerminalType = value; break; case "settype": helper.SetType = value; break; case "listinitializer": helper.SetListInitializer(value); break; case "nocheckbydefault": SetOption <bool>(context, option.Key, value.Value, b => helper.NoCheckByDefault = b); break; default: context.Sink.Error(option.Key, "Unrecognized option '{0}'. Available options: " + "InputSource: var, InputClass: type, TerminalType: type, SetType: type, " + "ListInitializer: var _ = new List<T>(), NoCheckByDefault: true", key); break; } } return helper; })); }
public static LNode LLLPG_lexer(LNode node, IMacroContext context) { return(LllpgMacro(node, context, _lexer, lexerCfg => { var helper = new IntStreamCodeGenHelper(); foreach (var option in MacroContext.GetOptions(lexerCfg.Args)) { LNode value = option.Value; string key = (option.Key ?? (Symbol)"??").Name; switch (key.ToLowerInvariant()) { case "inputsource": helper.InputSource = value; break; case "inputclass": helper.InputClass = value; break; case "terminaltype": helper.TerminalType = value; break; case "settype": helper.SetType = value; break; case "listinitializer": helper.SetListInitializer(value); break; default: context.Write(Severity.Error, value, "Unrecognized option '{0}'. Available options: " + "inputSource: var, inputClass: type, terminalType: type, setType: type, listInitializer: var _ = new List<T>()", key); break; } } return helper; })); }
public static LNode LLLPG_lexer(LNode node, IMacroContext context) { var p = context.GetArgsAndBody(true); var args = p.A; var body = p.B; LNode lexerCfg; if (args.Count != 1 || (lexerCfg = args[0]).Name != _lexer) { return(null); } // Scan options in lexer(...) node var helper = new IntStreamCodeGenHelper(); foreach (var option in MacroContext.GetOptions(lexerCfg.Args)) { LNode value = option.Value; string key = (option.Key ?? (Symbol)"??").Name; switch (key.ToLowerInvariant()) { case "inputsource": helper.InputSource = value; break; case "inputclass": helper.InputClass = value; break; case "terminaltype": helper.TerminalType = value; break; case "settype": helper.SetType = value; break; case "listinitializer": helper.SetListInitializer(value); break; default: context.Write(Severity.Error, value, "Unrecognized option '{0}'. Available options: " + "inputSource: var, inputClass: type, terminalType: type, setType: type, listInitializer: var _ = new List<T>()", key); break; } } return(node.WithTarget(_run_LLLPG).WithArgs(F.Literal(helper), F.Braces(body))); }