Exemple #1
0
        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;
            }));
        }
Exemple #2
0
        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;
            }));
        }
Exemple #3
0
        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)));
        }