示例#1
0
文件: LRParser.cs 项目: singba/SSharp
        private AstNode CreateNode(ActionRecord reduceAction, SourceSpan sourceSpan, AstNodeList childNodes)
        {
            IGrammarTerm nonTeminal = reduceAction.NonTerminal;
            AstNode      result;

            AstNodeArgs args = new AstNodeArgs(nonTeminal, sourceSpan, childNodes);

            Type ntNodeType = nonTeminal.NodeType ?? typeof(AstNode);

            bool isList = nonTeminal.IsSet(TermOptions.IsList);

            if (isList && childNodes.Count > 1 && childNodes[0].Term == nonTeminal)
            {
                result = childNodes[0];
                AstNode newChild = childNodes[childNodes.Count - 1];
                newChild.Parent = result;
                result.ChildNodes.Add(newChild);
                return(result);
            }

            if (nonTeminal.IsSet(TermOptions.IsStarList) && childNodes.Count == 1)
            {
                childNodes = childNodes[0].ChildNodes;
            }

            if (!isList && !nonTeminal.IsSet(TermOptions.IsPunctuation) && childNodes.Count == 1)
            {
                Type childNodeType = childNodes[0].Term.NodeType ?? typeof(AstNode);
                if (childNodeType == ntNodeType || childNodeType.IsSubclassOf(ntNodeType))
                {
                    return(childNodes[0]);
                }
            }

            result = null;
            if (ntNodeType == typeof(AstNode))
            {
                result = new AstNode(args);
            }
            else
            {
                ConstructorInfo ctor = ntNodeType.GetConstructor(new Type[] { typeof(AstNodeArgs) });
                if (ctor == null)
                {
                    throw new Exception("Failed to located constructor: " + ntNodeType.ToString() + "(AstNodeArgs args)");
                }

                result = (AstNode)ctor.Invoke(new object[] { args });
            }

            return(result);
        }
示例#2
0
文件: LRParser.cs 项目: singba/SSharp
        private AstNode Parse(CompilerContext context, IEnumerable <TokenAst> tokenStream)
        {
            _context = context;
            Reset();
            _input = tokenStream.GetEnumerator();
            NextToken();

            while (true)
            {
                if (_currentState == FinalState)
                {
                    AstNode result = _stack[0].Node;
                    _stack.Reset();
                    return(result);
                }

                if (_currentToken.Terminal.Category == TokenCategory.Error)
                {
                    ReportScannerError();
                    return(null);
                }

                ActionRecord action = GetCurrentAction();
                if (action == null)
                {
                    ReportParserError();
                    return(null);
                }

                switch (action.ActionType)
                {
                case ParserActionType.Operator:
                    if (GetActionTypeForOperation(_currentToken) == ParserActionType.Shift)
                    {
                        goto case ParserActionType.Shift;
                    }
                    else
                    {
                        goto case ParserActionType.Reduce;
                    }

                case ParserActionType.Shift:
                    ExecuteShiftAction(action);
                    break;

                case ParserActionType.Reduce:
                    ExecuteReduceAction(action);
                    break;
                }
            }
        }
示例#3
0
文件: LRParser.cs 项目: singba/SSharp
        private void ExecuteReduceAction(ActionRecord action)
        {
            ParserState oldState = _currentState;
            int         popCnt   = action.PopCount;

            AstNodeList childNodes = new AstNodeList();

            for (int i = 0; i < action.PopCount; i++)
            {
                AstNode child = _stack[_stack.Count - popCnt + i].Node;
                if (!child.Term.IsSet(TermOptions.IsPunctuation))
                {
                    childNodes.Add(child);
                }
            }

            SourceSpan newNodeSpan;

            if (popCnt == 0)
            {
                newNodeSpan = new SourceSpan(_currentToken.Location, 0);
            }
            else
            {
                SourceLocation firstPopLoc   = _stack[_stack.Count - popCnt].Node.Location;
                int            lastPopEndPos = _stack[_stack.Count - 1].Node.Span.EndPos;
                newNodeSpan   = new SourceSpan(firstPopLoc, lastPopEndPos - firstPopLoc.Position);
                _currentState = _stack[_stack.Count - popCnt].State;
                _stack.Pop(popCnt);
            }

            AstNode node = CreateNode(action, newNodeSpan, childNodes);

            _stack.Push(node, _currentState);

            ActionRecord gotoAction;

            if (_currentState.Actions.TryGetValue(action.NonTerminal.Key, out gotoAction))
            {
                _currentState = gotoAction.NewState;
            }
            else
            {
                throw new CompilerException(string.Format("Cannot find transition for input {0}; state: {1}, popped state: {2}",
                                                          action.NonTerminal, oldState, _currentState));
            }
        }
示例#4
0
文件: LRParser.cs 项目: singba/SSharp
        private ActionRecord GetCurrentAction()
        {
            ActionRecord action = null;

            if (_currentToken.MatchByValue)
            {
                if (_currentState.Actions.TryGetValue(_currentToken.Text, out action))
                {
                    return(action);
                }
            }

            if (_currentToken.MatchByType && _currentState.Actions.TryGetValue(_currentToken.Terminal.Key, out action))
            {
                return(action);
            }

            return(null);
        }
示例#5
0
文件: LRParser.cs 项目: singba/SSharp
 private void ExecuteShiftAction(ActionRecord action)
 {
     _stack.Push(_currentToken, _currentState);
     _currentState = action.NewState;
     NextToken();
 }
示例#6
0
    public LRParser()
    {

      ParserState state_0 = new ParserState(0);
      ParserState state_1 = new ParserState(1);
      ParserState state_2 = new ParserState(2);
      ParserState state_3 = new ParserState(3);
      ParserState state_4 = new ParserState(4);
      ParserState state_5 = new ParserState(5);
      ParserState state_6 = new ParserState(6);
      ParserState state_7 = new ParserState(7);
      ParserState state_8 = new ParserState(8);
      ParserState state_9 = new ParserState(9);
      ParserState state_10 = new ParserState(10);
      ParserState state_11 = new ParserState(11);
      ParserState state_12 = new ParserState(12);
      ParserState state_13 = new ParserState(13);
      ParserState state_14 = new ParserState(14);
      ParserState state_15 = new ParserState(15);
      ParserState state_16 = new ParserState(16);
      ParserState state_17 = new ParserState(17);
      ParserState state_18 = new ParserState(18);
      ParserState state_19 = new ParserState(19);
      ParserState state_20 = new ParserState(20);
      ParserState state_21 = new ParserState(21);
      ParserState state_22 = new ParserState(22);
      ParserState state_23 = new ParserState(23);
      ParserState state_24 = new ParserState(24);
      ParserState state_25 = new ParserState(25);
      ParserState state_26 = new ParserState(26);
      ParserState state_27 = new ParserState(27);
      ParserState state_28 = new ParserState(28);
      ParserState state_29 = new ParserState(29);
      ParserState state_30 = new ParserState(30);
      ParserState state_31 = new ParserState(31);
      ParserState state_32 = new ParserState(32);
      ParserState state_33 = new ParserState(33);
      ParserState state_34 = new ParserState(34);
      ParserState state_35 = new ParserState(35);
      ParserState state_36 = new ParserState(36);
      ParserState state_37 = new ParserState(37);
      ParserState state_38 = new ParserState(38);
      ParserState state_39 = new ParserState(39);
      ParserState state_40 = new ParserState(40);
      ParserState state_41 = new ParserState(41);
      ParserState state_42 = new ParserState(42);
      ParserState state_43 = new ParserState(43);
      ParserState state_44 = new ParserState(44);
      ParserState state_45 = new ParserState(45);
      ParserState state_46 = new ParserState(46);
      ParserState state_47 = new ParserState(47);
      ParserState state_48 = new ParserState(48);
      ParserState state_49 = new ParserState(49);
      ParserState state_50 = new ParserState(50);
      ParserState state_51 = new ParserState(51);
      ParserState state_52 = new ParserState(52);
      ParserState state_53 = new ParserState(53);
      ParserState state_54 = new ParserState(54);
      ParserState state_55 = new ParserState(55);
      ParserState state_56 = new ParserState(56);
      ParserState state_57 = new ParserState(57);
      ParserState state_58 = new ParserState(58);
      ParserState state_59 = new ParserState(59);
      ParserState state_60 = new ParserState(60);
      ParserState state_61 = new ParserState(61);
      ParserState state_62 = new ParserState(62);
      ParserState state_63 = new ParserState(63);
      ParserState state_64 = new ParserState(64);
      ParserState state_65 = new ParserState(65);
      ParserState state_66 = new ParserState(66);
      ParserState state_67 = new ParserState(67);
      ParserState state_68 = new ParserState(68);
      ParserState state_69 = new ParserState(69);
      ParserState state_70 = new ParserState(70);
      ParserState state_71 = new ParserState(71);
      ParserState state_72 = new ParserState(72);
      ParserState state_73 = new ParserState(73);
      ParserState state_74 = new ParserState(74);
      ParserState state_75 = new ParserState(75);
      ParserState state_76 = new ParserState(76);
      ParserState state_77 = new ParserState(77);
      ParserState state_78 = new ParserState(78);
      ParserState state_79 = new ParserState(79);
      ParserState state_80 = new ParserState(80);
      ParserState state_81 = new ParserState(81);
      ParserState state_82 = new ParserState(82);
      ParserState state_83 = new ParserState(83);
      ParserState state_84 = new ParserState(84);
      ParserState state_85 = new ParserState(85);
      ParserState state_86 = new ParserState(86);
      ParserState state_87 = new ParserState(87);
      ParserState state_88 = new ParserState(88);
      ParserState state_89 = new ParserState(89);
      ParserState state_90 = new ParserState(90);
      ParserState state_91 = new ParserState(91);
      ParserState state_92 = new ParserState(92);
      ParserState state_93 = new ParserState(93);
      ParserState state_94 = new ParserState(94);
      ParserState state_95 = new ParserState(95);
      ParserState state_96 = new ParserState(96);
      ParserState state_97 = new ParserState(97);
      ParserState state_98 = new ParserState(98);
      ParserState state_99 = new ParserState(99);
      ParserState state_100 = new ParserState(100);
      ParserState state_101 = new ParserState(101);
      ParserState state_102 = new ParserState(102);
      ParserState state_103 = new ParserState(103);
      ParserState state_104 = new ParserState(104);
      ParserState state_105 = new ParserState(105);
      ParserState state_106 = new ParserState(106);
      ParserState state_107 = new ParserState(107);
      ParserState state_108 = new ParserState(108);
      ParserState state_109 = new ParserState(109);
      ParserState state_110 = new ParserState(110);
      ParserState state_111 = new ParserState(111);
      ParserState state_112 = new ParserState(112);
      ParserState state_113 = new ParserState(113);
      ParserState state_114 = new ParserState(114);
      ParserState state_115 = new ParserState(115);
      ParserState state_116 = new ParserState(116);
      ParserState state_117 = new ParserState(117);
      ParserState state_118 = new ParserState(118);
      ParserState state_119 = new ParserState(119);
      ParserState state_120 = new ParserState(120);
      ParserState state_121 = new ParserState(121);
      ParserState state_122 = new ParserState(122);
      ParserState state_123 = new ParserState(123);
      ParserState state_124 = new ParserState(124);
      ParserState state_125 = new ParserState(125);
      ParserState state_126 = new ParserState(126);
      ParserState state_127 = new ParserState(127);
      ParserState state_128 = new ParserState(128);
      ParserState state_129 = new ParserState(129);
      ParserState state_130 = new ParserState(130);
      ParserState state_131 = new ParserState(131);
      ParserState state_132 = new ParserState(132);
      ParserState state_133 = new ParserState(133);
      ParserState state_134 = new ParserState(134);
      ParserState state_135 = new ParserState(135);
      ParserState state_136 = new ParserState(136);
      ParserState state_137 = new ParserState(137);
      ParserState state_138 = new ParserState(138);
      ParserState state_139 = new ParserState(139);
      ParserState state_140 = new ParserState(140);
      ParserState state_141 = new ParserState(141);
      ParserState state_142 = new ParserState(142);
      ParserState state_143 = new ParserState(143);
      ParserState state_144 = new ParserState(144);
      ParserState state_145 = new ParserState(145);
      ParserState state_146 = new ParserState(146);
      ParserState state_147 = new ParserState(147);
      ParserState state_148 = new ParserState(148);
      ParserState state_149 = new ParserState(149);
      ParserState state_150 = new ParserState(150);
      ParserState state_151 = new ParserState(151);
      ParserState state_152 = new ParserState(152);
      ParserState state_153 = new ParserState(153);
      ParserState state_154 = new ParserState(154);
      ParserState state_155 = new ParserState(155);
      ParserState state_156 = new ParserState(156);
      ParserState state_157 = new ParserState(157);
      ParserState state_158 = new ParserState(158);
      ParserState state_159 = new ParserState(159);
      ParserState state_160 = new ParserState(160);
      ParserState state_161 = new ParserState(161);
      ParserState state_162 = new ParserState(162);
      ParserState state_163 = new ParserState(163);
      ParserState state_164 = new ParserState(164);
      ParserState state_165 = new ParserState(165);
      ParserState state_166 = new ParserState(166);
      ParserState state_167 = new ParserState(167);
      ParserState state_168 = new ParserState(168);
      ParserState state_169 = new ParserState(169);
      ParserState state_170 = new ParserState(170);
      ParserState state_171 = new ParserState(171);
      ParserState state_172 = new ParserState(172);
      ParserState state_173 = new ParserState(173);
      ParserState state_174 = new ParserState(174);
      ParserState state_175 = new ParserState(175);
      ParserState state_176 = new ParserState(176);
      ParserState state_177 = new ParserState(177);
      ParserState state_178 = new ParserState(178);
      ParserState state_179 = new ParserState(179);
      ParserState state_180 = new ParserState(180);
      ParserState state_181 = new ParserState(181);
      ParserState state_182 = new ParserState(182);
      ParserState state_183 = new ParserState(183);
      ParserState state_184 = new ParserState(184);
      ParserState state_185 = new ParserState(185);
      ParserState state_186 = new ParserState(186);
      ParserState state_187 = new ParserState(187);
      ParserState state_188 = new ParserState(188);
      ParserState state_189 = new ParserState(189);
      ParserState state_190 = new ParserState(190);
      ParserState state_191 = new ParserState(191);
      ParserState state_192 = new ParserState(192);
      ParserState state_193 = new ParserState(193);
      ParserState state_194 = new ParserState(194);
      ParserState state_195 = new ParserState(195);
      ParserState state_196 = new ParserState(196);
      ParserState state_197 = new ParserState(197);
      ParserState state_198 = new ParserState(198);
      ParserState state_199 = new ParserState(199);
      ParserState state_200 = new ParserState(200);
      ParserState state_201 = new ParserState(201);
      ParserState state_202 = new ParserState(202);
      ParserState state_203 = new ParserState(203);
      ParserState state_204 = new ParserState(204);
      ParserState state_205 = new ParserState(205);
      ParserState state_206 = new ParserState(206);
      ParserState state_207 = new ParserState(207);
      ParserState state_208 = new ParserState(208);
      ParserState state_209 = new ParserState(209);
      ParserState state_210 = new ParserState(210);
      ParserState state_211 = new ParserState(211);
      ParserState state_212 = new ParserState(212);
      ParserState state_213 = new ParserState(213);
      ParserState state_214 = new ParserState(214);
      ParserState state_215 = new ParserState(215);
      ParserState state_216 = new ParserState(216);
      ParserState state_217 = new ParserState(217);
      ParserState state_218 = new ParserState(218);
      ParserState state_219 = new ParserState(219);
      ParserState state_220 = new ParserState(220);
      ParserState state_221 = new ParserState(221);
      ParserState state_222 = new ParserState(222);
      ParserState state_223 = new ParserState(223);
      ParserState state_224 = new ParserState(224);
      ParserState state_225 = new ParserState(225);
      ParserState state_226 = new ParserState(226);
      ParserState state_227 = new ParserState(227);
      ParserState state_228 = new ParserState(228);
      ParserState state_229 = new ParserState(229);
      ParserState state_230 = new ParserState(230);
      ParserState state_231 = new ParserState(231);
      ParserState state_232 = new ParserState(232);
      ParserState state_233 = new ParserState(233);
      ParserState state_234 = new ParserState(234);
      ParserState state_235 = new ParserState(235);
      ParserState state_236 = new ParserState(236);
      ParserState state_237 = new ParserState(237);
      ParserState state_238 = new ParserState(238);
      ParserState state_239 = new ParserState(239);
      ParserState state_240 = new ParserState(240);
      ParserState state_241 = new ParserState(241);
      ParserState state_242 = new ParserState(242);
      ParserState state_243 = new ParserState(243);
      ParserState state_244 = new ParserState(244);
      ParserState state_245 = new ParserState(245);
      ParserState state_246 = new ParserState(246);
      ParserState state_247 = new ParserState(247);
      ParserState state_248 = new ParserState(248);
      ParserState state_249 = new ParserState(249);
      ParserState state_250 = new ParserState(250);
      ParserState state_251 = new ParserState(251);
      ParserState state_252 = new ParserState(252);
      ParserState state_253 = new ParserState(253);
      ParserState state_254 = new ParserState(254);
      ParserState state_255 = new ParserState(255);
      ParserState state_256 = new ParserState(256);
      ParserState state_257 = new ParserState(257);
      ParserState state_258 = new ParserState(258);
      ParserState state_259 = new ParserState(259);
      ParserState state_260 = new ParserState(260);
      ParserState state_261 = new ParserState(261);
      ParserState state_262 = new ParserState(262);
      ParserState state_263 = new ParserState(263);
      ParserState state_264 = new ParserState(264);
      ParserState state_265 = new ParserState(265);
      ParserState state_266 = new ParserState(266);
      ParserState state_267 = new ParserState(267);
      ParserState state_268 = new ParserState(268);
      ParserState state_269 = new ParserState(269);
      NonTerminal Terms_48 = new NonTerminal("Elements", typeof(Scripting.SSharp.Parser.Ast.ScriptElements), "Elements\b", TermOptions.IsList, 48);
      NonTerminal Terms_59 = new NonTerminal("Prog'", typeof(AstNode), "Prog'\b", TermOptions.None, 59);
      NonTerminal Terms_46 = new NonTerminal("Prog", typeof(Scripting.SSharp.Parser.Ast.ScriptProg), "Prog\b", TermOptions.None, 46);
      NonTerminal Terms_47 = new NonTerminal("Element", typeof(Scripting.SSharp.Parser.Ast.ScriptAst), "Element\b", TermOptions.None, 47);
      NonTerminal Terms_30 = new NonTerminal("Statement", typeof(Scripting.SSharp.Parser.Ast.ScriptStatement), "Statement\b", TermOptions.None, 30);
      NonTerminal Terms_45 = new NonTerminal("Statements(Compound)", typeof(Scripting.SSharp.Parser.Ast.ScriptCompoundStatement), "Statements(Compound)\b", TermOptions.IsList, 45);
      NonTerminal Terms_0 = new NonTerminal("Expr", typeof(Scripting.SSharp.Parser.Ast.ScriptExpr), "Expr\b", TermOptions.None, 0);
      NonTerminal Terms_1 = new NonTerminal("ConstExpr", typeof(Scripting.SSharp.Parser.Ast.ScriptConstExpr), "ConstExpr\b", TermOptions.None, 1);
      NonTerminal Terms_2 = new NonTerminal("BinExpr", typeof(Scripting.SSharp.Parser.Ast.ScriptBinExpr), "BinExpr\b", TermOptions.None, 2);
      NonTerminal Terms_55 = new NonTerminal("*", typeof(AstNode), "*\b", TermOptions.IsList, 55);
      NonTerminal Terms_16 = new NonTerminal("LUnOp", typeof(AstNode), "LUnOp\b", TermOptions.None, 16);
      NonTerminal Terms_72 = new NonTerminal("NT3", typeof(AstNode), "\b", TermOptions.None, 72);
      NonTerminal Terms_51 = new NonTerminal("ParamaterList", typeof(Scripting.SSharp.Parser.Ast.ScriptFuncParameters), "ParamaterList\b", TermOptions.IsStarList, 51);
      NonTerminal Terms_35 = new NonTerminal("OptionalExpression", typeof(Scripting.SSharp.Parser.Ast.ScriptExpr), "OptionalExpression\b", TermOptions.None, 35);
      NonTerminal Terms_43 = new NonTerminal("ExprStatement", typeof(Scripting.SSharp.Parser.Ast.ScriptStatement), "ExprStatement\b", TermOptions.None, 43);
      NonTerminal Terms_15 = new NonTerminal("BinOp", typeof(AstNode), "BinOp\b", TermOptions.None, 15);
      NonTerminal Terms_42 = new NonTerminal("FlowControl", typeof(Scripting.SSharp.Parser.Ast.ScriptFlowControlStatement), "FlowControl\b", TermOptions.None, 42);
      NonTerminal Terms_4 = new NonTerminal("AssignExpr", typeof(Scripting.SSharp.Parser.Ast.ScriptAssignExpr), "AssignExpr\b", TermOptions.None, 4);
      NonTerminal Terms_3 = new NonTerminal("UnaryExpr", typeof(Scripting.SSharp.Parser.Ast.ScriptUnaryExpr), "UnaryExpr\b", TermOptions.None, 3);
      NonTerminal Terms_26 = new NonTerminal("QualifiedName", typeof(Scripting.SSharp.Parser.Ast.ScriptQualifiedName), "QualifiedName\b", TermOptions.None, 26);
      NonTerminal Terms_24 = new NonTerminal("NewStmt", typeof(Scripting.SSharp.Parser.Ast.ScriptNewStmt), "NewStmt\b", TermOptions.None, 24);
      NonTerminal Terms_60 = new NonTerminal("GenericsPostfix?", typeof(AstNode), "\b", TermOptions.None, 60);
      NonTerminal Terms_21 = new NonTerminal("MObjectPart", typeof(Scripting.SSharp.Parser.Ast.ScriptAst), "MObjectPart\b", TermOptions.IsList, 21);
      NonTerminal Terms_23 = new NonTerminal("ExprList", typeof(Scripting.SSharp.Parser.Ast.ScriptExprList), "ExprList\b", TermOptions.IsList, 23);
      NonTerminal Terms_9 = new NonTerminal("RefExpr", typeof(Scripting.SSharp.Parser.Ast.ScriptRefExpr), "RefExpr\b", TermOptions.None, 9);
      NonTerminal Terms_10 = new NonTerminal("VarExpr", typeof(Scripting.SSharp.Parser.Ast.ScriptVarExpr), "VarExpr\b", TermOptions.None, 10);
      NonTerminal Terms_58 = new NonTerminal("idn+", typeof(AstNode), "idn+\b", TermOptions.IsList, 58);
      NonTerminal Terms_73 = new NonTerminal("?", typeof(AstNode), "\b", TermOptions.None, 73);
      NonTerminal Terms_32 = new NonTerminal("WhileStatement", typeof(Scripting.SSharp.Parser.Ast.ScriptWhileStatement), "WhileStatement\b", TermOptions.None, 32);
      NonTerminal Terms_44 = new NonTerminal("BlockStatement", typeof(Scripting.SSharp.Parser.Ast.ScriptStatement), "BlockStatement\b", TermOptions.None, 44);
      NonTerminal Terms_6 = new NonTerminal("IsExpr", typeof(Scripting.SSharp.Parser.Ast.ScriptIsExpr), "IsExpr\b", TermOptions.None, 6);
      NonTerminal Terms_56 = new NonTerminal("*", typeof(AstNode), "*\b", TermOptions.IsList, 56);
      NonTerminal Terms_63 = new NonTerminal("NT1", typeof(AstNode), "\b", TermOptions.None, 63);
      NonTerminal Terms_64 = new NonTerminal("ExprList?", typeof(AstNode), "\b", TermOptions.None, 64);
      NonTerminal Terms_12 = new NonTerminal("TypeConstructor", typeof(Scripting.SSharp.Parser.Ast.ScriptTypeConstructor), "TypeConstructor\b", TermOptions.None, 12);
      NonTerminal Terms_25 = new NonTerminal("NewArrStmt", typeof(Scripting.SSharp.Parser.Ast.ScriptNewArrStmt), "NewArrStmt\b", TermOptions.None, 25);
      NonTerminal Terms_11 = new NonTerminal("TypeExpr", typeof(Scripting.SSharp.Parser.Ast.ScriptTypeExpr), "TypeExpr\b", TermOptions.None, 11);
      NonTerminal Terms_18 = new NonTerminal("ArrayConstructor", typeof(Scripting.SSharp.Parser.Ast.ScriptArrayConstructor), "ArrayConstructor\b", TermOptions.None, 18);
      NonTerminal Terms_19 = new NonTerminal("MObjectConstructor", typeof(Scripting.SSharp.Parser.Ast.ScriptMObject), "MObjectConstructor\b", TermOptions.None, 19);
      NonTerminal Terms_71 = new NonTerminal("Expr?", typeof(AstNode), "\b", TermOptions.None, 71);
      NonTerminal Terms_7 = new NonTerminal("MetaExpr", typeof(Scripting.SSharp.Parser.Ast.ScriptMetaExpr), "MetaExpr\b", TermOptions.None, 7);
      NonTerminal Terms_66 = new NonTerminal("GlobalList?", typeof(AstNode), "\b", TermOptions.None, 66);
      NonTerminal Terms_31 = new NonTerminal("IfStatement", typeof(Scripting.SSharp.Parser.Ast.ScriptIfStatement), "IfStatement\b", TermOptions.None, 31);
      NonTerminal Terms_29 = new NonTerminal("Condition", typeof(Scripting.SSharp.Parser.Ast.ScriptCondition), "Condition\b", TermOptions.None, 29);
      NonTerminal Terms_22 = new NonTerminal("TypeList", typeof(Scripting.SSharp.Parser.Ast.ScriptTypeExprList), "TypeList\b", TermOptions.IsList, 22);
      NonTerminal Terms_62 = new NonTerminal("GenericsPostfix?", typeof(AstNode), "\b", TermOptions.None, 62);
      NonTerminal Terms_20 = new NonTerminal("MObjectPart", typeof(Scripting.SSharp.Parser.Ast.ScriptMObjectPart), "MObjectPart\b", TermOptions.None, 20);
      NonTerminal Terms_5 = new NonTerminal("TypeConvertExpr", typeof(Scripting.SSharp.Parser.Ast.ScriptTypeConvertExpr), "TypeConvertExpr\b", TermOptions.None, 5);
      NonTerminal Terms_67 = new NonTerminal("FuncContract?", typeof(AstNode), "\b", TermOptions.None, 67);
      NonTerminal Terms_75 = new NonTerminal("GlobalList?", typeof(AstNode), "\b", TermOptions.None, 75);
      NonTerminal Terms_40 = new NonTerminal("UsingStatement", typeof(Scripting.SSharp.Parser.Ast.ScriptUsingStatement), "UsingStatement\b", TermOptions.None, 40);
      NonTerminal Terms_57 = new NonTerminal("SwitchCaseStatement*", typeof(AstNode), "SwitchCaseStatement*\b", TermOptions.IsList, 57);
      NonTerminal Terms_65 = new NonTerminal("NT2", typeof(AstNode), "\b", TermOptions.None, 65);
      NonTerminal Terms_27 = new NonTerminal("GenericsPostfix", typeof(Scripting.SSharp.Parser.Ast.ScriptGenericsPostfix), "GenericsPostfix\b", TermOptions.None, 27);
      NonTerminal Terms_14 = new NonTerminal("ArrayResolution", typeof(Scripting.SSharp.Parser.Ast.ScriptArrayResolution), "ArrayResolution\b", TermOptions.None, 14);
      NonTerminal Terms_13 = new NonTerminal("FunctionCall", typeof(Scripting.SSharp.Parser.Ast.ScriptFunctionCall), "FunctionCall\b", TermOptions.None, 13);
      NonTerminal Terms_61 = new NonTerminal("NT0", typeof(AstNode), "\b", TermOptions.None, 61);
      NonTerminal Terms_76 = new NonTerminal("FuncContract?", typeof(AstNode), "\b", TermOptions.None, 76);
      NonTerminal Terms_74 = new NonTerminal("SwitchDefaultStatement?", typeof(AstNode), "\b", TermOptions.None, 74);
      NonTerminal Terms_8 = new NonTerminal("FuncDefExpr", typeof(Scripting.SSharp.Parser.Ast.ScriptFunctionDefinition), "FuncDefExpr\b", TermOptions.None, 8);
      NonTerminal Terms_34 = new NonTerminal("ForEachStatement", typeof(Scripting.SSharp.Parser.Ast.ScriptForEachStatement), "ForEachStatement\b", TermOptions.None, 34);
      NonTerminal Terms_36 = new NonTerminal("SwitchStatement", typeof(Scripting.SSharp.Parser.Ast.ScriptSwitchRootStatement), "SwitchStatement\b", TermOptions.None, 36);
      NonTerminal Terms_37 = new NonTerminal("SwitchStatements", typeof(Scripting.SSharp.Parser.Ast.ScriptSwitchStatement), "SwitchStatements\b", TermOptions.None, 37);
      NonTerminal Terms_68 = new NonTerminal("ExprList?", typeof(AstNode), "\b", TermOptions.None, 68);
      NonTerminal Terms_28 = new NonTerminal("GlobalList", typeof(Scripting.SSharp.Parser.Ast.ScriptGlobalList), "GlobalList\b", TermOptions.None, 28);
      NonTerminal Terms_49 = new NonTerminal("FuncDef", typeof(Scripting.SSharp.Parser.Ast.ScriptFunctionDefinition), "FuncDef\b", TermOptions.None, 49);
      NonTerminal Terms_33 = new NonTerminal("ForStatement", typeof(Scripting.SSharp.Parser.Ast.ScriptForStatement), "ForStatement\b", TermOptions.None, 33);
      NonTerminal Terms_39 = new NonTerminal("SwitchDefaultStatement", typeof(Scripting.SSharp.Parser.Ast.ScriptSwitchDefaultStatement), "SwitchDefaultStatement\b", TermOptions.None, 39);
      NonTerminal Terms_41 = new NonTerminal("TryCatchFinallyStatement", typeof(Scripting.SSharp.Parser.Ast.ScriptTryCatchFinallyStatement), "TryCatchFinallyStatement\b", TermOptions.None, 41);
      NonTerminal Terms_69 = new NonTerminal("ExprList?", typeof(AstNode), "\b", TermOptions.None, 69);
      NonTerminal Terms_52 = new NonTerminal("Pre Conditions", typeof(Scripting.SSharp.Parser.Ast.ScriptFuncContractPre), "Pre Conditions\b", TermOptions.None, 52);
      NonTerminal Terms_38 = new NonTerminal("SwitchCaseStatement", typeof(Scripting.SSharp.Parser.Ast.ScriptSwitchCaseStatement), "SwitchCaseStatement\b", TermOptions.None, 38);
      NonTerminal Terms_70 = new NonTerminal("ExprList?", typeof(AstNode), "\b", TermOptions.None, 70);
      NonTerminal Terms_53 = new NonTerminal("Post Conditions", typeof(Scripting.SSharp.Parser.Ast.ScriptFuncContractPost), "Post Conditions\b", TermOptions.None, 53);
      NonTerminal Terms_50 = new NonTerminal("FuncContract", typeof(Scripting.SSharp.Parser.Ast.ScriptFuncContract), "FuncContract\b", TermOptions.None, 50);
      NonTerminal Terms_54 = new NonTerminal("Invariant Conditions", typeof(Scripting.SSharp.Parser.Ast.ScriptFuncContractInv), "Invariant Conditions\b", TermOptions.None, 54);
      ActionsRecord fd;
      fd = state_0.Actions;
      ActionRecord ar_0 = new ActionRecord(ParserActionType.Shift, state_1, null, 0);
      fd.Add("Prog'\b", ar_0);
      fd.Add("Prog\b", ar_0);
      ActionRecord ar_1 = new ActionRecord(ParserActionType.Shift, state_2, null, 0);
      fd.Add("Elements\b", ar_1);
      ActionRecord ar_2 = new ActionRecord(ParserActionType.Reduce, null, Terms_48, 0);
      fd.Add("EOF\b", ar_2);
      fd.Add(";", ar_2);
      fd.Add("function", ar_2);
      fd.Add("if", ar_2);
      fd.Add("{", ar_2);
      fd.Add("while", ar_2);
      fd.Add("for", ar_2);
      fd.Add("foreach", ar_2);
      fd.Add("using", ar_2);
      fd.Add("switch", ar_2);
      fd.Add("try", ar_2);
      fd.Add("break", ar_2);
      fd.Add("continue", ar_2);
      fd.Add("return", ar_2);
      fd.Add("throw", ar_2);
      fd.Add("true", ar_2);
      fd.Add("false", ar_2);
      fd.Add("null", ar_2);
      fd.Add("string\b", ar_2);
      fd.Add("number\b", ar_2);
      fd.Add("idn\b", ar_2);
      fd.Add("var", ar_2);
      fd.Add("new", ar_2);
      fd.Add("[", ar_2);
      fd.Add("(", ar_2);
      fd.Add("<!", ar_2);
      fd.Add("~", ar_2);
      fd.Add("-", ar_2);
      fd.Add("!", ar_2);
      fd.Add("$", ar_2);
      fd.Add("ref", ar_2);
      fd.Add("out", ar_2);
      fd = state_1.Actions;
      ActionRecord ar_3 = new ActionRecord(ParserActionType.Reduce, null, Terms_59, 1);
      fd.Add("EOF\b", ar_3);
      fd = state_2.Actions;
      ActionRecord ar_4 = new ActionRecord(ParserActionType.Shift, state_3, null, 0);
      fd.Add("EOF\b", ar_4);
      ActionRecord ar_5 = new ActionRecord(ParserActionType.Shift, state_4, null, 0);
      fd.Add("Element\b", ar_5);
      ActionRecord ar_6 = new ActionRecord(ParserActionType.Shift, state_5, null, 0);
      fd.Add("Statement\b", ar_6);
      ActionRecord ar_7 = new ActionRecord(ParserActionType.Shift, state_6, null, 0);
      fd.Add("FuncDef\b", ar_7);
      ActionRecord ar_8 = new ActionRecord(ParserActionType.Shift, state_7, null, 0);
      fd.Add(";", ar_8);
      ActionRecord ar_9 = new ActionRecord(ParserActionType.Shift, state_8, null, 0);
      fd.Add("IfStatement\b", ar_9);
      ActionRecord ar_10 = new ActionRecord(ParserActionType.Shift, state_9, null, 0);
      fd.Add("WhileStatement\b", ar_10);
      ActionRecord ar_11 = new ActionRecord(ParserActionType.Shift, state_10, null, 0);
      fd.Add("ForStatement\b", ar_11);
      ActionRecord ar_12 = new ActionRecord(ParserActionType.Shift, state_11, null, 0);
      fd.Add("ForEachStatement\b", ar_12);
      ActionRecord ar_13 = new ActionRecord(ParserActionType.Shift, state_12, null, 0);
      fd.Add("UsingStatement\b", ar_13);
      ActionRecord ar_14 = new ActionRecord(ParserActionType.Shift, state_13, null, 0);
      fd.Add("SwitchStatement\b", ar_14);
      ActionRecord ar_15 = new ActionRecord(ParserActionType.Shift, state_14, null, 0);
      fd.Add("BlockStatement\b", ar_15);
      ActionRecord ar_16 = new ActionRecord(ParserActionType.Shift, state_15, null, 0);
      fd.Add("TryCatchFinallyStatement\b", ar_16);
      ActionRecord ar_17 = new ActionRecord(ParserActionType.Shift, state_16, null, 0);
      fd.Add("ExprStatement\b", ar_17);
      ActionRecord ar_18 = new ActionRecord(ParserActionType.Shift, state_17, null, 0);
      fd.Add("FlowControl\b", ar_18);
      ActionRecord ar_19 = new ActionRecord(ParserActionType.Shift, state_18, null, 0);
      fd.Add("function", ar_19);
      ActionRecord ar_20 = new ActionRecord(ParserActionType.Shift, state_19, null, 0);
      fd.Add("if", ar_20);
      ActionRecord ar_21 = new ActionRecord(ParserActionType.Shift, state_20, null, 0);
      fd.Add("while", ar_21);
      ActionRecord ar_22 = new ActionRecord(ParserActionType.Shift, state_21, null, 0);
      fd.Add("for", ar_22);
      ActionRecord ar_23 = new ActionRecord(ParserActionType.Shift, state_22, null, 0);
      fd.Add("foreach", ar_23);
      ActionRecord ar_24 = new ActionRecord(ParserActionType.Shift, state_23, null, 0);
      fd.Add("using", ar_24);
      ActionRecord ar_25 = new ActionRecord(ParserActionType.Shift, state_24, null, 0);
      fd.Add("switch", ar_25);
      ActionRecord ar_26 = new ActionRecord(ParserActionType.Shift, state_25, null, 0);
      fd.Add("{", ar_26);
      ActionRecord ar_27 = new ActionRecord(ParserActionType.Shift, state_26, null, 0);
      fd.Add("try", ar_27);
      ActionRecord ar_28 = new ActionRecord(ParserActionType.Shift, state_27, null, 0);
      fd.Add("Expr\b", ar_28);
      ActionRecord ar_29 = new ActionRecord(ParserActionType.Shift, state_28, null, 0);
      fd.Add("break", ar_29);
      ActionRecord ar_30 = new ActionRecord(ParserActionType.Shift, state_29, null, 0);
      fd.Add("continue", ar_30);
      ActionRecord ar_31 = new ActionRecord(ParserActionType.Shift, state_30, null, 0);
      fd.Add("return", ar_31);
      ActionRecord ar_32 = new ActionRecord(ParserActionType.Shift, state_31, null, 0);
      fd.Add("throw", ar_32);
      ActionRecord ar_33 = new ActionRecord(ParserActionType.Shift, state_32, null, 0);
      fd.Add("ConstExpr\b", ar_33);
      ActionRecord ar_34 = new ActionRecord(ParserActionType.Shift, state_33, null, 0);
      fd.Add("BinExpr\b", ar_34);
      ActionRecord ar_35 = new ActionRecord(ParserActionType.Shift, state_34, null, 0);
      fd.Add("UnaryExpr\b", ar_35);
      ActionRecord ar_36 = new ActionRecord(ParserActionType.Shift, state_35, null, 0);
      fd.Add("QualifiedName\b", ar_36);
      ActionRecord ar_37 = new ActionRecord(ParserActionType.Shift, state_36, null, 0);
      fd.Add("AssignExpr\b", ar_37);
      ActionRecord ar_38 = new ActionRecord(ParserActionType.Shift, state_37, null, 0);
      fd.Add("NewStmt\b", ar_38);
      ActionRecord ar_39 = new ActionRecord(ParserActionType.Shift, state_38, null, 0);
      fd.Add("FuncDefExpr\b", ar_39);
      ActionRecord ar_40 = new ActionRecord(ParserActionType.Shift, state_39, null, 0);
      fd.Add("NewArrStmt\b", ar_40);
      ActionRecord ar_41 = new ActionRecord(ParserActionType.Shift, state_40, null, 0);
      fd.Add("ArrayConstructor\b", ar_41);
      ActionRecord ar_42 = new ActionRecord(ParserActionType.Shift, state_41, null, 0);
      fd.Add("MObjectConstructor\b", ar_42);
      ActionRecord ar_43 = new ActionRecord(ParserActionType.Shift, state_42, null, 0);
      fd.Add("TypeConvertExpr\b", ar_43);
      ActionRecord ar_44 = new ActionRecord(ParserActionType.Shift, state_43, null, 0);
      fd.Add("MetaExpr\b", ar_44);
      ActionRecord ar_45 = new ActionRecord(ParserActionType.Shift, state_44, null, 0);
      fd.Add("RefExpr\b", ar_45);
      ActionRecord ar_46 = new ActionRecord(ParserActionType.Shift, state_45, null, 0);
      fd.Add("VarExpr\b", ar_46);
      ActionRecord ar_47 = new ActionRecord(ParserActionType.Shift, state_46, null, 0);
      fd.Add("true", ar_47);
      ActionRecord ar_48 = new ActionRecord(ParserActionType.Shift, state_47, null, 0);
      fd.Add("false", ar_48);
      ActionRecord ar_49 = new ActionRecord(ParserActionType.Shift, state_48, null, 0);
      fd.Add("null", ar_49);
      ActionRecord ar_50 = new ActionRecord(ParserActionType.Shift, state_49, null, 0);
      fd.Add("string\b", ar_50);
      ActionRecord ar_51 = new ActionRecord(ParserActionType.Shift, state_50, null, 0);
      fd.Add("number\b", ar_51);
      ActionRecord ar_52 = new ActionRecord(ParserActionType.Shift, state_51, null, 0);
      fd.Add("IsExpr\b", ar_52);
      ActionRecord ar_53 = new ActionRecord(ParserActionType.Shift, state_52, null, 0);
      fd.Add("LUnOp\b", ar_53);
      ActionRecord ar_54 = new ActionRecord(ParserActionType.Shift, state_53, null, 0);
      fd.Add("idn\b", ar_54);
      ActionRecord ar_55 = new ActionRecord(ParserActionType.Shift, state_54, null, 0);
      fd.Add("new", ar_55);
      ActionRecord ar_56 = new ActionRecord(ParserActionType.Shift, state_55, null, 0);
      fd.Add("[", ar_56);
      ActionRecord ar_57 = new ActionRecord(ParserActionType.Shift, state_56, null, 0);
      fd.Add("(", ar_57);
      ActionRecord ar_58 = new ActionRecord(ParserActionType.Shift, state_57, null, 0);
      fd.Add("<!", ar_58);
      ActionRecord ar_59 = new ActionRecord(ParserActionType.Shift, state_58, null, 0);
      fd.Add("\b", ar_59);
      ActionRecord ar_60 = new ActionRecord(ParserActionType.Shift, state_59, null, 0);
      fd.Add("var", ar_60);
      ActionRecord ar_61 = new ActionRecord(ParserActionType.Shift, state_60, null, 0);
      fd.Add("~", ar_61);
      ActionRecord ar_62 = new ActionRecord(ParserActionType.Shift, state_61, null, 0);
      fd.Add("-", ar_62);
      ActionRecord ar_63 = new ActionRecord(ParserActionType.Shift, state_62, null, 0);
      fd.Add("!", ar_63);
      ActionRecord ar_64 = new ActionRecord(ParserActionType.Shift, state_63, null, 0);
      fd.Add("$", ar_64);
      ActionRecord ar_65 = new ActionRecord(ParserActionType.Shift, state_64, null, 0);
      fd.Add("ref", ar_65);
      ActionRecord ar_66 = new ActionRecord(ParserActionType.Shift, state_65, null, 0);
      fd.Add("out", ar_66);
      fd = state_3.Actions;
      ActionRecord ar_67 = new ActionRecord(ParserActionType.Reduce, null, Terms_46, 2);
      fd.Add("EOF\b", ar_67);
      fd = state_4.Actions;
      ActionRecord ar_68 = new ActionRecord(ParserActionType.Reduce, null, Terms_48, 2);
      fd.Add("EOF\b", ar_68);
      fd.Add(";", ar_68);
      fd.Add("function", ar_68);
      fd.Add("if", ar_68);
      fd.Add("{", ar_68);
      fd.Add("while", ar_68);
      fd.Add("for", ar_68);
      fd.Add("foreach", ar_68);
      fd.Add("using", ar_68);
      fd.Add("switch", ar_68);
      fd.Add("try", ar_68);
      fd.Add("break", ar_68);
      fd.Add("continue", ar_68);
      fd.Add("return", ar_68);
      fd.Add("throw", ar_68);
      fd.Add("true", ar_68);
      fd.Add("false", ar_68);
      fd.Add("null", ar_68);
      fd.Add("string\b", ar_68);
      fd.Add("number\b", ar_68);
      fd.Add("idn\b", ar_68);
      fd.Add("var", ar_68);
      fd.Add("new", ar_68);
      fd.Add("[", ar_68);
      fd.Add("(", ar_68);
      fd.Add("<!", ar_68);
      fd.Add("~", ar_68);
      fd.Add("-", ar_68);
      fd.Add("!", ar_68);
      fd.Add("$", ar_68);
      fd.Add("ref", ar_68);
      fd.Add("out", ar_68);
      fd.Add("!>", ar_68);
      fd = state_5.Actions;
      ActionRecord ar_69 = new ActionRecord(ParserActionType.Reduce, null, Terms_47, 1);
      fd.Add("EOF\b", ar_69);
      fd.Add(";", ar_69);
      fd.Add("function", ar_69);
      fd.Add("if", ar_69);
      fd.Add("{", ar_69);
      fd.Add("while", ar_69);
      fd.Add("for", ar_69);
      fd.Add("foreach", ar_69);
      fd.Add("using", ar_69);
      fd.Add("switch", ar_69);
      fd.Add("try", ar_69);
      fd.Add("break", ar_69);
      fd.Add("continue", ar_69);
      fd.Add("return", ar_69);
      fd.Add("throw", ar_69);
      fd.Add("true", ar_69);
      fd.Add("false", ar_69);
      fd.Add("null", ar_69);
      fd.Add("string\b", ar_69);
      fd.Add("number\b", ar_69);
      fd.Add("idn\b", ar_69);
      fd.Add("var", ar_69);
      fd.Add("new", ar_69);
      fd.Add("[", ar_69);
      fd.Add("(", ar_69);
      fd.Add("<!", ar_69);
      fd.Add("~", ar_69);
      fd.Add("-", ar_69);
      fd.Add("!", ar_69);
      fd.Add("$", ar_69);
      fd.Add("ref", ar_69);
      fd.Add("out", ar_69);
      fd.Add("!>", ar_69);
      fd = state_6.Actions;
      fd.Add("EOF\b", ar_69);
      fd.Add(";", ar_69);
      fd.Add("function", ar_69);
      fd.Add("if", ar_69);
      fd.Add("{", ar_69);
      fd.Add("while", ar_69);
      fd.Add("for", ar_69);
      fd.Add("foreach", ar_69);
      fd.Add("using", ar_69);
      fd.Add("switch", ar_69);
      fd.Add("try", ar_69);
      fd.Add("break", ar_69);
      fd.Add("continue", ar_69);
      fd.Add("return", ar_69);
      fd.Add("throw", ar_69);
      fd.Add("true", ar_69);
      fd.Add("false", ar_69);
      fd.Add("null", ar_69);
      fd.Add("string\b", ar_69);
      fd.Add("number\b", ar_69);
      fd.Add("idn\b", ar_69);
      fd.Add("var", ar_69);
      fd.Add("new", ar_69);
      fd.Add("[", ar_69);
      fd.Add("(", ar_69);
      fd.Add("<!", ar_69);
      fd.Add("~", ar_69);
      fd.Add("-", ar_69);
      fd.Add("!", ar_69);
      fd.Add("$", ar_69);
      fd.Add("ref", ar_69);
      fd.Add("out", ar_69);
      fd.Add("!>", ar_69);
      fd = state_7.Actions;
      ActionRecord ar_70 = new ActionRecord(ParserActionType.Reduce, null, Terms_30, 1);
      fd.Add("EOF\b", ar_70);
      fd.Add(";", ar_70);
      fd.Add("function", ar_70);
      fd.Add("if", ar_70);
      fd.Add("{", ar_70);
      fd.Add("while", ar_70);
      fd.Add("for", ar_70);
      fd.Add("foreach", ar_70);
      fd.Add("using", ar_70);
      fd.Add("switch", ar_70);
      fd.Add("try", ar_70);
      fd.Add("break", ar_70);
      fd.Add("continue", ar_70);
      fd.Add("return", ar_70);
      fd.Add("throw", ar_70);
      fd.Add("true", ar_70);
      fd.Add("false", ar_70);
      fd.Add("null", ar_70);
      fd.Add("string\b", ar_70);
      fd.Add("number\b", ar_70);
      fd.Add("idn\b", ar_70);
      fd.Add("var", ar_70);
      fd.Add("new", ar_70);
      fd.Add("[", ar_70);
      fd.Add("(", ar_70);
      fd.Add("<!", ar_70);
      fd.Add("~", ar_70);
      fd.Add("-", ar_70);
      fd.Add("!", ar_70);
      fd.Add("$", ar_70);
      fd.Add("ref", ar_70);
      fd.Add("out", ar_70);
      fd.Add("else", ar_70);
      fd.Add("}", ar_70);
      fd.Add("!>", ar_70);
      fd.Add("default", ar_70);
      fd.Add("case", ar_70);
      fd = state_8.Actions;
      fd.Add("EOF\b", ar_70);
      fd.Add(";", ar_70);
      fd.Add("function", ar_70);
      fd.Add("if", ar_70);
      fd.Add("{", ar_70);
      fd.Add("while", ar_70);
      fd.Add("for", ar_70);
      fd.Add("foreach", ar_70);
      fd.Add("using", ar_70);
      fd.Add("switch", ar_70);
      fd.Add("try", ar_70);
      fd.Add("break", ar_70);
      fd.Add("continue", ar_70);
      fd.Add("return", ar_70);
      fd.Add("throw", ar_70);
      fd.Add("true", ar_70);
      fd.Add("false", ar_70);
      fd.Add("null", ar_70);
      fd.Add("string\b", ar_70);
      fd.Add("number\b", ar_70);
      fd.Add("idn\b", ar_70);
      fd.Add("var", ar_70);
      fd.Add("new", ar_70);
      fd.Add("[", ar_70);
      fd.Add("(", ar_70);
      fd.Add("<!", ar_70);
      fd.Add("~", ar_70);
      fd.Add("-", ar_70);
      fd.Add("!", ar_70);
      fd.Add("$", ar_70);
      fd.Add("ref", ar_70);
      fd.Add("out", ar_70);
      fd.Add("else", ar_70);
      fd.Add("}", ar_70);
      fd.Add("!>", ar_70);
      fd.Add("default", ar_70);
      fd.Add("case", ar_70);
      fd = state_9.Actions;
      fd.Add("EOF\b", ar_70);
      fd.Add(";", ar_70);
      fd.Add("function", ar_70);
      fd.Add("if", ar_70);
      fd.Add("{", ar_70);
      fd.Add("while", ar_70);
      fd.Add("for", ar_70);
      fd.Add("foreach", ar_70);
      fd.Add("using", ar_70);
      fd.Add("switch", ar_70);
      fd.Add("try", ar_70);
      fd.Add("break", ar_70);
      fd.Add("continue", ar_70);
      fd.Add("return", ar_70);
      fd.Add("throw", ar_70);
      fd.Add("true", ar_70);
      fd.Add("false", ar_70);
      fd.Add("null", ar_70);
      fd.Add("string\b", ar_70);
      fd.Add("number\b", ar_70);
      fd.Add("idn\b", ar_70);
      fd.Add("var", ar_70);
      fd.Add("new", ar_70);
      fd.Add("[", ar_70);
      fd.Add("(", ar_70);
      fd.Add("<!", ar_70);
      fd.Add("~", ar_70);
      fd.Add("-", ar_70);
      fd.Add("!", ar_70);
      fd.Add("$", ar_70);
      fd.Add("ref", ar_70);
      fd.Add("out", ar_70);
      fd.Add("else", ar_70);
      fd.Add("}", ar_70);
      fd.Add("!>", ar_70);
      fd.Add("default", ar_70);
      fd.Add("case", ar_70);
      fd = state_10.Actions;
      fd.Add("EOF\b", ar_70);
      fd.Add(";", ar_70);
      fd.Add("function", ar_70);
      fd.Add("if", ar_70);
      fd.Add("{", ar_70);
      fd.Add("while", ar_70);
      fd.Add("for", ar_70);
      fd.Add("foreach", ar_70);
      fd.Add("using", ar_70);
      fd.Add("switch", ar_70);
      fd.Add("try", ar_70);
      fd.Add("break", ar_70);
      fd.Add("continue", ar_70);
      fd.Add("return", ar_70);
      fd.Add("throw", ar_70);
      fd.Add("true", ar_70);
      fd.Add("false", ar_70);
      fd.Add("null", ar_70);
      fd.Add("string\b", ar_70);
      fd.Add("number\b", ar_70);
      fd.Add("idn\b", ar_70);
      fd.Add("var", ar_70);
      fd.Add("new", ar_70);
      fd.Add("[", ar_70);
      fd.Add("(", ar_70);
      fd.Add("<!", ar_70);
      fd.Add("~", ar_70);
      fd.Add("-", ar_70);
      fd.Add("!", ar_70);
      fd.Add("$", ar_70);
      fd.Add("ref", ar_70);
      fd.Add("out", ar_70);
      fd.Add("else", ar_70);
      fd.Add("}", ar_70);
      fd.Add("!>", ar_70);
      fd.Add("default", ar_70);
      fd.Add("case", ar_70);
      fd = state_11.Actions;
      fd.Add("EOF\b", ar_70);
      fd.Add(";", ar_70);
      fd.Add("function", ar_70);
      fd.Add("if", ar_70);
      fd.Add("{", ar_70);
      fd.Add("while", ar_70);
      fd.Add("for", ar_70);
      fd.Add("foreach", ar_70);
      fd.Add("using", ar_70);
      fd.Add("switch", ar_70);
      fd.Add("try", ar_70);
      fd.Add("break", ar_70);
      fd.Add("continue", ar_70);
      fd.Add("return", ar_70);
      fd.Add("throw", ar_70);
      fd.Add("true", ar_70);
      fd.Add("false", ar_70);
      fd.Add("null", ar_70);
      fd.Add("string\b", ar_70);
      fd.Add("number\b", ar_70);
      fd.Add("idn\b", ar_70);
      fd.Add("var", ar_70);
      fd.Add("new", ar_70);
      fd.Add("[", ar_70);
      fd.Add("(", ar_70);
      fd.Add("<!", ar_70);
      fd.Add("~", ar_70);
      fd.Add("-", ar_70);
      fd.Add("!", ar_70);
      fd.Add("$", ar_70);
      fd.Add("ref", ar_70);
      fd.Add("out", ar_70);
      fd.Add("else", ar_70);
      fd.Add("}", ar_70);
      fd.Add("!>", ar_70);
      fd.Add("default", ar_70);
      fd.Add("case", ar_70);
      fd = state_12.Actions;
      fd.Add("EOF\b", ar_70);
      fd.Add(";", ar_70);
      fd.Add("function", ar_70);
      fd.Add("if", ar_70);
      fd.Add("{", ar_70);
      fd.Add("while", ar_70);
      fd.Add("for", ar_70);
      fd.Add("foreach", ar_70);
      fd.Add("using", ar_70);
      fd.Add("switch", ar_70);
      fd.Add("try", ar_70);
      fd.Add("break", ar_70);
      fd.Add("continue", ar_70);
      fd.Add("return", ar_70);
      fd.Add("throw", ar_70);
      fd.Add("true", ar_70);
      fd.Add("false", ar_70);
      fd.Add("null", ar_70);
      fd.Add("string\b", ar_70);
      fd.Add("number\b", ar_70);
      fd.Add("idn\b", ar_70);
      fd.Add("var", ar_70);
      fd.Add("new", ar_70);
      fd.Add("[", ar_70);
      fd.Add("(", ar_70);
      fd.Add("<!", ar_70);
      fd.Add("~", ar_70);
      fd.Add("-", ar_70);
      fd.Add("!", ar_70);
      fd.Add("$", ar_70);
      fd.Add("ref", ar_70);
      fd.Add("out", ar_70);
      fd.Add("else", ar_70);
      fd.Add("}", ar_70);
      fd.Add("!>", ar_70);
      fd.Add("default", ar_70);
      fd.Add("case", ar_70);
      fd = state_13.Actions;
      fd.Add("EOF\b", ar_70);
      fd.Add(";", ar_70);
      fd.Add("function", ar_70);
      fd.Add("if", ar_70);
      fd.Add("{", ar_70);
      fd.Add("while", ar_70);
      fd.Add("for", ar_70);
      fd.Add("foreach", ar_70);
      fd.Add("using", ar_70);
      fd.Add("switch", ar_70);
      fd.Add("try", ar_70);
      fd.Add("break", ar_70);
      fd.Add("continue", ar_70);
      fd.Add("return", ar_70);
      fd.Add("throw", ar_70);
      fd.Add("true", ar_70);
      fd.Add("false", ar_70);
      fd.Add("null", ar_70);
      fd.Add("string\b", ar_70);
      fd.Add("number\b", ar_70);
      fd.Add("idn\b", ar_70);
      fd.Add("var", ar_70);
      fd.Add("new", ar_70);
      fd.Add("[", ar_70);
      fd.Add("(", ar_70);
      fd.Add("<!", ar_70);
      fd.Add("~", ar_70);
      fd.Add("-", ar_70);
      fd.Add("!", ar_70);
      fd.Add("$", ar_70);
      fd.Add("ref", ar_70);
      fd.Add("out", ar_70);
      fd.Add("else", ar_70);
      fd.Add("}", ar_70);
      fd.Add("!>", ar_70);
      fd.Add("default", ar_70);
      fd.Add("case", ar_70);
      fd = state_14.Actions;
      fd.Add("EOF\b", ar_70);
      fd.Add(";", ar_70);
      fd.Add("function", ar_70);
      fd.Add("if", ar_70);
      fd.Add("{", ar_70);
      fd.Add("while", ar_70);
      fd.Add("for", ar_70);
      fd.Add("foreach", ar_70);
      fd.Add("using", ar_70);
      fd.Add("switch", ar_70);
      fd.Add("try", ar_70);
      fd.Add("break", ar_70);
      fd.Add("continue", ar_70);
      fd.Add("return", ar_70);
      fd.Add("throw", ar_70);
      fd.Add("true", ar_70);
      fd.Add("false", ar_70);
      fd.Add("null", ar_70);
      fd.Add("string\b", ar_70);
      fd.Add("number\b", ar_70);
      fd.Add("idn\b", ar_70);
      fd.Add("var", ar_70);
      fd.Add("new", ar_70);
      fd.Add("[", ar_70);
      fd.Add("(", ar_70);
      fd.Add("<!", ar_70);
      fd.Add("~", ar_70);
      fd.Add("-", ar_70);
      fd.Add("!", ar_70);
      fd.Add("$", ar_70);
      fd.Add("ref", ar_70);
      fd.Add("out", ar_70);
      fd.Add("else", ar_70);
      fd.Add("}", ar_70);
      fd.Add("!>", ar_70);
      fd.Add("default", ar_70);
      fd.Add("case", ar_70);
      fd = state_15.Actions;
      fd.Add("EOF\b", ar_70);
      fd.Add(";", ar_70);
      fd.Add("function", ar_70);
      fd.Add("if", ar_70);
      fd.Add("{", ar_70);
      fd.Add("while", ar_70);
      fd.Add("for", ar_70);
      fd.Add("foreach", ar_70);
      fd.Add("using", ar_70);
      fd.Add("switch", ar_70);
      fd.Add("try", ar_70);
      fd.Add("break", ar_70);
      fd.Add("continue", ar_70);
      fd.Add("return", ar_70);
      fd.Add("throw", ar_70);
      fd.Add("true", ar_70);
      fd.Add("false", ar_70);
      fd.Add("null", ar_70);
      fd.Add("string\b", ar_70);
      fd.Add("number\b", ar_70);
      fd.Add("idn\b", ar_70);
      fd.Add("var", ar_70);
      fd.Add("new", ar_70);
      fd.Add("[", ar_70);
      fd.Add("(", ar_70);
      fd.Add("<!", ar_70);
      fd.Add("~", ar_70);
      fd.Add("-", ar_70);
      fd.Add("!", ar_70);
      fd.Add("$", ar_70);
      fd.Add("ref", ar_70);
      fd.Add("out", ar_70);
      fd.Add("else", ar_70);
      fd.Add("}", ar_70);
      fd.Add("!>", ar_70);
      fd.Add("default", ar_70);
      fd.Add("case", ar_70);
      fd = state_16.Actions;
      fd.Add("EOF\b", ar_70);
      fd.Add(";", ar_70);
      fd.Add("function", ar_70);
      fd.Add("if", ar_70);
      fd.Add("{", ar_70);
      fd.Add("while", ar_70);
      fd.Add("for", ar_70);
      fd.Add("foreach", ar_70);
      fd.Add("using", ar_70);
      fd.Add("switch", ar_70);
      fd.Add("try", ar_70);
      fd.Add("break", ar_70);
      fd.Add("continue", ar_70);
      fd.Add("return", ar_70);
      fd.Add("throw", ar_70);
      fd.Add("true", ar_70);
      fd.Add("false", ar_70);
      fd.Add("null", ar_70);
      fd.Add("string\b", ar_70);
      fd.Add("number\b", ar_70);
      fd.Add("idn\b", ar_70);
      fd.Add("var", ar_70);
      fd.Add("new", ar_70);
      fd.Add("[", ar_70);
      fd.Add("(", ar_70);
      fd.Add("<!", ar_70);
      fd.Add("~", ar_70);
      fd.Add("-", ar_70);
      fd.Add("!", ar_70);
      fd.Add("$", ar_70);
      fd.Add("ref", ar_70);
      fd.Add("out", ar_70);
      fd.Add("else", ar_70);
      fd.Add("}", ar_70);
      fd.Add("!>", ar_70);
      fd.Add("default", ar_70);
      fd.Add("case", ar_70);
      fd = state_17.Actions;
      fd.Add("EOF\b", ar_70);
      fd.Add(";", ar_70);
      fd.Add("function", ar_70);
      fd.Add("if", ar_70);
      fd.Add("{", ar_70);
      fd.Add("while", ar_70);
      fd.Add("for", ar_70);
      fd.Add("foreach", ar_70);
      fd.Add("using", ar_70);
      fd.Add("switch", ar_70);
      fd.Add("try", ar_70);
      fd.Add("break", ar_70);
      fd.Add("continue", ar_70);
      fd.Add("return", ar_70);
      fd.Add("throw", ar_70);
      fd.Add("true", ar_70);
      fd.Add("false", ar_70);
      fd.Add("null", ar_70);
      fd.Add("string\b", ar_70);
      fd.Add("number\b", ar_70);
      fd.Add("idn\b", ar_70);
      fd.Add("var", ar_70);
      fd.Add("new", ar_70);
      fd.Add("[", ar_70);
      fd.Add("(", ar_70);
      fd.Add("<!", ar_70);
      fd.Add("~", ar_70);
      fd.Add("-", ar_70);
      fd.Add("!", ar_70);
      fd.Add("$", ar_70);
      fd.Add("ref", ar_70);
      fd.Add("out", ar_70);
      fd.Add("else", ar_70);
      fd.Add("}", ar_70);
      fd.Add("!>", ar_70);
      fd.Add("default", ar_70);
      fd.Add("case", ar_70);
      fd = state_18.Actions;
      ActionRecord ar_71 = new ActionRecord(ParserActionType.Shift, state_66, null, 0);
      fd.Add("(", ar_71);
      ActionRecord ar_72 = new ActionRecord(ParserActionType.Shift, state_67, null, 0);
      fd.Add("idn\b", ar_72);
      fd = state_19.Actions;
      ActionRecord ar_73 = new ActionRecord(ParserActionType.Shift, state_68, null, 0);
      fd.Add("Condition\b", ar_73);
      ActionRecord ar_74 = new ActionRecord(ParserActionType.Shift, state_69, null, 0);
      fd.Add("(", ar_74);
      fd = state_20.Actions;
      ActionRecord ar_75 = new ActionRecord(ParserActionType.Shift, state_70, null, 0);
      fd.Add("Condition\b", ar_75);
      fd.Add("(", ar_74);
      fd = state_21.Actions;
      ActionRecord ar_76 = new ActionRecord(ParserActionType.Shift, state_71, null, 0);
      fd.Add("(", ar_76);
      fd = state_22.Actions;
      ActionRecord ar_77 = new ActionRecord(ParserActionType.Shift, state_72, null, 0);
      fd.Add("(", ar_77);
      fd = state_23.Actions;
      ActionRecord ar_78 = new ActionRecord(ParserActionType.Shift, state_73, null, 0);
      fd.Add("(", ar_78);
      fd = state_24.Actions;
      ActionRecord ar_79 = new ActionRecord(ParserActionType.Shift, state_74, null, 0);
      fd.Add("(", ar_79);
      fd = state_25.Actions;
      ActionRecord ar_80 = new ActionRecord(ParserActionType.Shift, state_75, null, 0);
      fd.Add("Statements(Compound)\b", ar_80);
      ActionRecord ar_81 = new ActionRecord(ParserActionType.Reduce, null, Terms_45, 0);
      fd.Add("}", ar_81);
      fd.Add(";", ar_81);
      fd.Add("if", ar_81);
      fd.Add("{", ar_81);
      fd.Add("while", ar_81);
      fd.Add("for", ar_81);
      fd.Add("foreach", ar_81);
      fd.Add("using", ar_81);
      fd.Add("switch", ar_81);
      fd.Add("try", ar_81);
      fd.Add("break", ar_81);
      fd.Add("continue", ar_81);
      fd.Add("return", ar_81);
      fd.Add("throw", ar_81);
      fd.Add("true", ar_81);
      fd.Add("false", ar_81);
      fd.Add("null", ar_81);
      fd.Add("string\b", ar_81);
      fd.Add("number\b", ar_81);
      fd.Add("idn\b", ar_81);
      fd.Add("var", ar_81);
      fd.Add("new", ar_81);
      fd.Add("function", ar_81);
      fd.Add("[", ar_81);
      fd.Add("(", ar_81);
      fd.Add("<!", ar_81);
      fd.Add("~", ar_81);
      fd.Add("-", ar_81);
      fd.Add("!", ar_81);
      fd.Add("$", ar_81);
      fd.Add("ref", ar_81);
      fd.Add("out", ar_81);
      fd = state_26.Actions;
      ActionRecord ar_82 = new ActionRecord(ParserActionType.Shift, state_76, null, 0);
      fd.Add("BlockStatement\b", ar_82);
      fd.Add("{", ar_26);
      fd = state_27.Actions;
      ActionRecord ar_83 = new ActionRecord(ParserActionType.Shift, state_77, null, 0);
      fd.Add("BinOp\b", ar_83);
      ActionRecord ar_84 = new ActionRecord(ParserActionType.Shift, state_78, null, 0);
      fd.Add("is", ar_84);
      ActionRecord ar_85 = new ActionRecord(ParserActionType.Shift, state_79, null, 0);
      fd.Add(";", ar_85);
      ActionRecord ar_86 = new ActionRecord(ParserActionType.Shift, state_80, null, 0);
      fd.Add("+", ar_86);
      ActionRecord ar_87 = new ActionRecord(ParserActionType.Shift, state_81, null, 0);
      fd.Add("-", ar_87);
      ActionRecord ar_88 = new ActionRecord(ParserActionType.Shift, state_82, null, 0);
      fd.Add("*", ar_88);
      ActionRecord ar_89 = new ActionRecord(ParserActionType.Shift, state_83, null, 0);
      fd.Add("/", ar_89);
      ActionRecord ar_90 = new ActionRecord(ParserActionType.Shift, state_84, null, 0);
      fd.Add("%", ar_90);
      ActionRecord ar_91 = new ActionRecord(ParserActionType.Shift, state_85, null, 0);
      fd.Add("^", ar_91);
      ActionRecord ar_92 = new ActionRecord(ParserActionType.Shift, state_86, null, 0);
      fd.Add("&", ar_92);
      ActionRecord ar_93 = new ActionRecord(ParserActionType.Shift, state_87, null, 0);
      fd.Add("|", ar_93);
      ActionRecord ar_94 = new ActionRecord(ParserActionType.Shift, state_88, null, 0);
      fd.Add("&&", ar_94);
      ActionRecord ar_95 = new ActionRecord(ParserActionType.Shift, state_89, null, 0);
      fd.Add("||", ar_95);
      ActionRecord ar_96 = new ActionRecord(ParserActionType.Shift, state_90, null, 0);
      fd.Add("==", ar_96);
      ActionRecord ar_97 = new ActionRecord(ParserActionType.Shift, state_91, null, 0);
      fd.Add("!=", ar_97);
      ActionRecord ar_98 = new ActionRecord(ParserActionType.Shift, state_92, null, 0);
      fd.Add(">", ar_98);
      ActionRecord ar_99 = new ActionRecord(ParserActionType.Shift, state_93, null, 0);
      fd.Add("<", ar_99);
      ActionRecord ar_100 = new ActionRecord(ParserActionType.Shift, state_94, null, 0);
      fd.Add(">=", ar_100);
      ActionRecord ar_101 = new ActionRecord(ParserActionType.Shift, state_95, null, 0);
      fd.Add("<=", ar_101);
      fd = state_28.Actions;
      ActionRecord ar_102 = new ActionRecord(ParserActionType.Shift, state_96, null, 0);
      fd.Add(";", ar_102);
      fd = state_29.Actions;
      ActionRecord ar_103 = new ActionRecord(ParserActionType.Shift, state_97, null, 0);
      fd.Add(";", ar_103);
      fd = state_30.Actions;
      ActionRecord ar_104 = new ActionRecord(ParserActionType.Shift, state_98, null, 0);
      fd.Add("Expr\b", ar_104);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      ActionRecord ar_105 = new ActionRecord(ParserActionType.Shift, state_99, null, 0);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_31.Actions;
      ActionRecord ar_106 = new ActionRecord(ParserActionType.Shift, state_100, null, 0);
      fd.Add("Expr\b", ar_106);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_32.Actions;
      ActionRecord ar_107 = new ActionRecord(ParserActionType.Reduce, null, Terms_0, 1);
      fd.Add(";", ar_107);
      fd.Add("+", ar_107);
      fd.Add("-", ar_107);
      fd.Add("*", ar_107);
      fd.Add("/", ar_107);
      fd.Add("%", ar_107);
      fd.Add("^", ar_107);
      fd.Add("&", ar_107);
      fd.Add("|", ar_107);
      fd.Add("&&", ar_107);
      fd.Add("||", ar_107);
      fd.Add("==", ar_107);
      fd.Add("!=", ar_107);
      fd.Add(">", ar_107);
      fd.Add("<", ar_107);
      fd.Add(">=", ar_107);
      fd.Add("<=", ar_107);
      fd.Add("is", ar_107);
      fd.Add("]", ar_107);
      fd.Add(",", ar_107);
      fd.Add(")", ar_107);
      fd.Add(":", ar_107);
      fd = state_33.Actions;
      fd.Add(";", ar_107);
      fd.Add("+", ar_107);
      fd.Add("-", ar_107);
      fd.Add("*", ar_107);
      fd.Add("/", ar_107);
      fd.Add("%", ar_107);
      fd.Add("^", ar_107);
      fd.Add("&", ar_107);
      fd.Add("|", ar_107);
      fd.Add("&&", ar_107);
      fd.Add("||", ar_107);
      fd.Add("==", ar_107);
      fd.Add("!=", ar_107);
      fd.Add(">", ar_107);
      fd.Add("<", ar_107);
      fd.Add(">=", ar_107);
      fd.Add("<=", ar_107);
      fd.Add("is", ar_107);
      fd.Add("]", ar_107);
      fd.Add(",", ar_107);
      fd.Add(")", ar_107);
      fd.Add(":", ar_107);
      fd = state_34.Actions;
      fd.Add(";", ar_107);
      fd.Add("+", ar_107);
      fd.Add("-", ar_107);
      fd.Add("*", ar_107);
      fd.Add("/", ar_107);
      fd.Add("%", ar_107);
      fd.Add("^", ar_107);
      fd.Add("&", ar_107);
      fd.Add("|", ar_107);
      fd.Add("&&", ar_107);
      fd.Add("||", ar_107);
      fd.Add("==", ar_107);
      fd.Add("!=", ar_107);
      fd.Add(">", ar_107);
      fd.Add("<", ar_107);
      fd.Add(">=", ar_107);
      fd.Add("<=", ar_107);
      fd.Add("is", ar_107);
      fd.Add("]", ar_107);
      fd.Add(",", ar_107);
      fd.Add(")", ar_107);
      fd.Add(":", ar_107);
      fd = state_35.Actions;
      ActionRecord ar_108 = new ActionRecord(ParserActionType.Shift, state_101, null, 0);
      fd.Add(".", ar_108);
      ActionRecord ar_109 = new ActionRecord(ParserActionType.Shift, state_102, null, 0);
      fd.Add("=", ar_109);
      ActionRecord ar_110 = new ActionRecord(ParserActionType.Shift, state_103, null, 0);
      fd.Add("++", ar_110);
      ActionRecord ar_111 = new ActionRecord(ParserActionType.Shift, state_104, null, 0);
      fd.Add("--", ar_111);
      ActionRecord ar_112 = new ActionRecord(ParserActionType.Shift, state_105, null, 0);
      fd.Add(":=", ar_112);
      ActionRecord ar_113 = new ActionRecord(ParserActionType.Shift, state_106, null, 0);
      fd.Add("+=", ar_113);
      ActionRecord ar_114 = new ActionRecord(ParserActionType.Shift, state_107, null, 0);
      fd.Add("-=", ar_114);
      fd.Add(";", ar_107);
      fd.Add("+", ar_107);
      fd.Add("-", ar_107);
      fd.Add("*", ar_107);
      fd.Add("/", ar_107);
      fd.Add("%", ar_107);
      fd.Add("^", ar_107);
      fd.Add("&", ar_107);
      fd.Add("|", ar_107);
      fd.Add("&&", ar_107);
      fd.Add("||", ar_107);
      fd.Add("==", ar_107);
      fd.Add("!=", ar_107);
      fd.Add(">", ar_107);
      fd.Add("<", ar_107);
      fd.Add(">=", ar_107);
      fd.Add("<=", ar_107);
      fd.Add("is", ar_107);
      fd.Add("]", ar_107);
      fd.Add(",", ar_107);
      fd.Add(")", ar_107);
      fd.Add(":", ar_107);
      fd = state_36.Actions;
      fd.Add(";", ar_107);
      fd.Add("+", ar_107);
      fd.Add("-", ar_107);
      fd.Add("*", ar_107);
      fd.Add("/", ar_107);
      fd.Add("%", ar_107);
      fd.Add("^", ar_107);
      fd.Add("&", ar_107);
      fd.Add("|", ar_107);
      fd.Add("&&", ar_107);
      fd.Add("||", ar_107);
      fd.Add("==", ar_107);
      fd.Add("!=", ar_107);
      fd.Add(">", ar_107);
      fd.Add("<", ar_107);
      fd.Add(">=", ar_107);
      fd.Add("<=", ar_107);
      fd.Add("is", ar_107);
      fd.Add("]", ar_107);
      fd.Add(",", ar_107);
      fd.Add(")", ar_107);
      fd.Add(":", ar_107);
      fd = state_37.Actions;
      fd.Add(";", ar_107);
      fd.Add("+", ar_107);
      fd.Add("-", ar_107);
      fd.Add("*", ar_107);
      fd.Add("/", ar_107);
      fd.Add("%", ar_107);
      fd.Add("^", ar_107);
      fd.Add("&", ar_107);
      fd.Add("|", ar_107);
      fd.Add("&&", ar_107);
      fd.Add("||", ar_107);
      fd.Add("==", ar_107);
      fd.Add("!=", ar_107);
      fd.Add(">", ar_107);
      fd.Add("<", ar_107);
      fd.Add(">=", ar_107);
      fd.Add("<=", ar_107);
      fd.Add("is", ar_107);
      fd.Add("]", ar_107);
      fd.Add(",", ar_107);
      fd.Add(")", ar_107);
      fd.Add(":", ar_107);
      fd = state_38.Actions;
      fd.Add(";", ar_107);
      fd.Add("+", ar_107);
      fd.Add("-", ar_107);
      fd.Add("*", ar_107);
      fd.Add("/", ar_107);
      fd.Add("%", ar_107);
      fd.Add("^", ar_107);
      fd.Add("&", ar_107);
      fd.Add("|", ar_107);
      fd.Add("&&", ar_107);
      fd.Add("||", ar_107);
      fd.Add("==", ar_107);
      fd.Add("!=", ar_107);
      fd.Add(">", ar_107);
      fd.Add("<", ar_107);
      fd.Add(">=", ar_107);
      fd.Add("<=", ar_107);
      fd.Add("is", ar_107);
      fd.Add("]", ar_107);
      fd.Add(",", ar_107);
      fd.Add(")", ar_107);
      fd.Add(":", ar_107);
      fd = state_39.Actions;
      fd.Add(";", ar_107);
      fd.Add("+", ar_107);
      fd.Add("-", ar_107);
      fd.Add("*", ar_107);
      fd.Add("/", ar_107);
      fd.Add("%", ar_107);
      fd.Add("^", ar_107);
      fd.Add("&", ar_107);
      fd.Add("|", ar_107);
      fd.Add("&&", ar_107);
      fd.Add("||", ar_107);
      fd.Add("==", ar_107);
      fd.Add("!=", ar_107);
      fd.Add(">", ar_107);
      fd.Add("<", ar_107);
      fd.Add(">=", ar_107);
      fd.Add("<=", ar_107);
      fd.Add("is", ar_107);
      fd.Add("]", ar_107);
      fd.Add(",", ar_107);
      fd.Add(")", ar_107);
      fd.Add(":", ar_107);
      fd = state_40.Actions;
      fd.Add(";", ar_107);
      fd.Add("+", ar_107);
      fd.Add("-", ar_107);
      fd.Add("*", ar_107);
      fd.Add("/", ar_107);
      fd.Add("%", ar_107);
      fd.Add("^", ar_107);
      fd.Add("&", ar_107);
      fd.Add("|", ar_107);
      fd.Add("&&", ar_107);
      fd.Add("||", ar_107);
      fd.Add("==", ar_107);
      fd.Add("!=", ar_107);
      fd.Add(">", ar_107);
      fd.Add("<", ar_107);
      fd.Add(">=", ar_107);
      fd.Add("<=", ar_107);
      fd.Add("is", ar_107);
      fd.Add("]", ar_107);
      fd.Add(",", ar_107);
      fd.Add(")", ar_107);
      fd.Add(":", ar_107);
      fd = state_41.Actions;
      fd.Add(";", ar_107);
      fd.Add("+", ar_107);
      fd.Add("-", ar_107);
      fd.Add("*", ar_107);
      fd.Add("/", ar_107);
      fd.Add("%", ar_107);
      fd.Add("^", ar_107);
      fd.Add("&", ar_107);
      fd.Add("|", ar_107);
      fd.Add("&&", ar_107);
      fd.Add("||", ar_107);
      fd.Add("==", ar_107);
      fd.Add("!=", ar_107);
      fd.Add(">", ar_107);
      fd.Add("<", ar_107);
      fd.Add(">=", ar_107);
      fd.Add("<=", ar_107);
      fd.Add("is", ar_107);
      fd.Add("]", ar_107);
      fd.Add(",", ar_107);
      fd.Add(")", ar_107);
      fd.Add(":", ar_107);
      fd = state_42.Actions;
      fd.Add(";", ar_107);
      fd.Add("+", ar_107);
      fd.Add("-", ar_107);
      fd.Add("*", ar_107);
      fd.Add("/", ar_107);
      fd.Add("%", ar_107);
      fd.Add("^", ar_107);
      fd.Add("&", ar_107);
      fd.Add("|", ar_107);
      fd.Add("&&", ar_107);
      fd.Add("||", ar_107);
      fd.Add("==", ar_107);
      fd.Add("!=", ar_107);
      fd.Add(">", ar_107);
      fd.Add("<", ar_107);
      fd.Add(">=", ar_107);
      fd.Add("<=", ar_107);
      fd.Add("is", ar_107);
      fd.Add("]", ar_107);
      fd.Add(",", ar_107);
      fd.Add(")", ar_107);
      fd.Add(":", ar_107);
      fd = state_43.Actions;
      fd.Add(";", ar_107);
      fd.Add("+", ar_107);
      fd.Add("-", ar_107);
      fd.Add("*", ar_107);
      fd.Add("/", ar_107);
      fd.Add("%", ar_107);
      fd.Add("^", ar_107);
      fd.Add("&", ar_107);
      fd.Add("|", ar_107);
      fd.Add("&&", ar_107);
      fd.Add("||", ar_107);
      fd.Add("==", ar_107);
      fd.Add("!=", ar_107);
      fd.Add(">", ar_107);
      fd.Add("<", ar_107);
      fd.Add(">=", ar_107);
      fd.Add("<=", ar_107);
      fd.Add("is", ar_107);
      fd.Add("]", ar_107);
      fd.Add(",", ar_107);
      fd.Add(")", ar_107);
      fd.Add(":", ar_107);
      fd = state_44.Actions;
      fd.Add(";", ar_107);
      fd.Add("+", ar_107);
      fd.Add("-", ar_107);
      fd.Add("*", ar_107);
      fd.Add("/", ar_107);
      fd.Add("%", ar_107);
      fd.Add("^", ar_107);
      fd.Add("&", ar_107);
      fd.Add("|", ar_107);
      fd.Add("&&", ar_107);
      fd.Add("||", ar_107);
      fd.Add("==", ar_107);
      fd.Add("!=", ar_107);
      fd.Add(">", ar_107);
      fd.Add("<", ar_107);
      fd.Add(">=", ar_107);
      fd.Add("<=", ar_107);
      fd.Add("is", ar_107);
      fd.Add("]", ar_107);
      fd.Add(",", ar_107);
      fd.Add(")", ar_107);
      fd.Add(":", ar_107);
      fd = state_45.Actions;
      ActionRecord ar_115 = new ActionRecord(ParserActionType.Shift, state_108, null, 0);
      fd.Add("=", ar_115);
      fd.Add(";", ar_107);
      fd.Add("+", ar_107);
      fd.Add("-", ar_107);
      fd.Add("*", ar_107);
      fd.Add("/", ar_107);
      fd.Add("%", ar_107);
      fd.Add("^", ar_107);
      fd.Add("&", ar_107);
      fd.Add("|", ar_107);
      fd.Add("&&", ar_107);
      fd.Add("||", ar_107);
      fd.Add("==", ar_107);
      fd.Add("!=", ar_107);
      fd.Add(">", ar_107);
      fd.Add("<", ar_107);
      fd.Add(">=", ar_107);
      fd.Add("<=", ar_107);
      fd.Add("is", ar_107);
      fd.Add("]", ar_107);
      fd.Add(",", ar_107);
      fd.Add(")", ar_107);
      fd.Add(":", ar_107);
      fd = state_46.Actions;
      ActionRecord ar_116 = new ActionRecord(ParserActionType.Reduce, null, Terms_1, 1);
      fd.Add(";", ar_116);
      fd.Add("+", ar_116);
      fd.Add("-", ar_116);
      fd.Add("*", ar_116);
      fd.Add("/", ar_116);
      fd.Add("%", ar_116);
      fd.Add("^", ar_116);
      fd.Add("&", ar_116);
      fd.Add("|", ar_116);
      fd.Add("&&", ar_116);
      fd.Add("||", ar_116);
      fd.Add("==", ar_116);
      fd.Add("!=", ar_116);
      fd.Add(">", ar_116);
      fd.Add("<", ar_116);
      fd.Add(">=", ar_116);
      fd.Add("<=", ar_116);
      fd.Add("is", ar_116);
      fd.Add("]", ar_116);
      fd.Add(",", ar_116);
      fd.Add(")", ar_116);
      fd.Add(":", ar_116);
      fd = state_47.Actions;
      fd.Add(";", ar_116);
      fd.Add("+", ar_116);
      fd.Add("-", ar_116);
      fd.Add("*", ar_116);
      fd.Add("/", ar_116);
      fd.Add("%", ar_116);
      fd.Add("^", ar_116);
      fd.Add("&", ar_116);
      fd.Add("|", ar_116);
      fd.Add("&&", ar_116);
      fd.Add("||", ar_116);
      fd.Add("==", ar_116);
      fd.Add("!=", ar_116);
      fd.Add(">", ar_116);
      fd.Add("<", ar_116);
      fd.Add(">=", ar_116);
      fd.Add("<=", ar_116);
      fd.Add("is", ar_116);
      fd.Add("]", ar_116);
      fd.Add(",", ar_116);
      fd.Add(")", ar_116);
      fd.Add(":", ar_116);
      fd = state_48.Actions;
      fd.Add(";", ar_116);
      fd.Add("+", ar_116);
      fd.Add("-", ar_116);
      fd.Add("*", ar_116);
      fd.Add("/", ar_116);
      fd.Add("%", ar_116);
      fd.Add("^", ar_116);
      fd.Add("&", ar_116);
      fd.Add("|", ar_116);
      fd.Add("&&", ar_116);
      fd.Add("||", ar_116);
      fd.Add("==", ar_116);
      fd.Add("!=", ar_116);
      fd.Add(">", ar_116);
      fd.Add("<", ar_116);
      fd.Add(">=", ar_116);
      fd.Add("<=", ar_116);
      fd.Add("is", ar_116);
      fd.Add("]", ar_116);
      fd.Add(",", ar_116);
      fd.Add(")", ar_116);
      fd.Add(":", ar_116);
      fd = state_49.Actions;
      fd.Add(";", ar_116);
      fd.Add("+", ar_116);
      fd.Add("-", ar_116);
      fd.Add("*", ar_116);
      fd.Add("/", ar_116);
      fd.Add("%", ar_116);
      fd.Add("^", ar_116);
      fd.Add("&", ar_116);
      fd.Add("|", ar_116);
      fd.Add("&&", ar_116);
      fd.Add("||", ar_116);
      fd.Add("==", ar_116);
      fd.Add("!=", ar_116);
      fd.Add(">", ar_116);
      fd.Add("<", ar_116);
      fd.Add(">=", ar_116);
      fd.Add("<=", ar_116);
      fd.Add("is", ar_116);
      fd.Add("]", ar_116);
      fd.Add(",", ar_116);
      fd.Add(")", ar_116);
      fd.Add(":", ar_116);
      fd = state_50.Actions;
      fd.Add(";", ar_116);
      fd.Add("+", ar_116);
      fd.Add("-", ar_116);
      fd.Add("*", ar_116);
      fd.Add("/", ar_116);
      fd.Add("%", ar_116);
      fd.Add("^", ar_116);
      fd.Add("&", ar_116);
      fd.Add("|", ar_116);
      fd.Add("&&", ar_116);
      fd.Add("||", ar_116);
      fd.Add("==", ar_116);
      fd.Add("!=", ar_116);
      fd.Add(">", ar_116);
      fd.Add("<", ar_116);
      fd.Add(">=", ar_116);
      fd.Add("<=", ar_116);
      fd.Add("is", ar_116);
      fd.Add("]", ar_116);
      fd.Add(",", ar_116);
      fd.Add(")", ar_116);
      fd.Add(":", ar_116);
      fd = state_51.Actions;
      ActionRecord ar_117 = new ActionRecord(ParserActionType.Reduce, null, Terms_2, 1);
      fd.Add(";", ar_117);
      fd.Add("+", ar_117);
      fd.Add("-", ar_117);
      fd.Add("*", ar_117);
      fd.Add("/", ar_117);
      fd.Add("%", ar_117);
      fd.Add("^", ar_117);
      fd.Add("&", ar_117);
      fd.Add("|", ar_117);
      fd.Add("&&", ar_117);
      fd.Add("||", ar_117);
      fd.Add("==", ar_117);
      fd.Add("!=", ar_117);
      fd.Add(">", ar_117);
      fd.Add("<", ar_117);
      fd.Add(">=", ar_117);
      fd.Add("<=", ar_117);
      fd.Add("is", ar_117);
      fd.Add("]", ar_117);
      fd.Add(",", ar_117);
      fd.Add(")", ar_117);
      fd.Add(":", ar_117);
      fd = state_52.Actions;
      ActionRecord ar_118 = new ActionRecord(ParserActionType.Shift, state_109, null, 0);
      fd.Add("Expr\b", ar_118);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_53.Actions;
      ActionRecord ar_119 = new ActionRecord(ParserActionType.Shift, state_110, null, 0);
      fd.Add("*\b", ar_119);
      ActionRecord ar_120 = new ActionRecord(ParserActionType.Reduce, null, Terms_55, 0);
      fd.Add("<|", ar_120);
      fd.Add("[", ar_120);
      fd.Add("(", ar_120);
      fd.Add(".", ar_120);
      fd.Add("=", ar_120);
      fd.Add("++", ar_120);
      fd.Add("--", ar_120);
      fd.Add(":=", ar_120);
      fd.Add("+=", ar_120);
      fd.Add("-=", ar_120);
      fd.Add(";", ar_120);
      fd.Add("+", ar_120);
      fd.Add("-", ar_120);
      fd.Add("*", ar_120);
      fd.Add("/", ar_120);
      fd.Add("%", ar_120);
      fd.Add("^", ar_120);
      fd.Add("&", ar_120);
      fd.Add("|", ar_120);
      fd.Add("&&", ar_120);
      fd.Add("||", ar_120);
      fd.Add("==", ar_120);
      fd.Add("!=", ar_120);
      fd.Add(">", ar_120);
      fd.Add("<", ar_120);
      fd.Add(">=", ar_120);
      fd.Add("<=", ar_120);
      fd.Add("is", ar_120);
      fd.Add(")", ar_120);
      fd.Add("]", ar_120);
      fd.Add(",", ar_120);
      fd.Add(":", ar_120);
      fd = state_54.Actions;
      ActionRecord ar_121 = new ActionRecord(ParserActionType.Shift, state_111, null, 0);
      fd.Add("TypeConstructor\b", ar_121);
      ActionRecord ar_122 = new ActionRecord(ParserActionType.Shift, state_112, null, 0);
      fd.Add("TypeExpr\b", ar_122);
      ActionRecord ar_123 = new ActionRecord(ParserActionType.Shift, state_113, null, 0);
      fd.Add("idn\b", ar_123);
      fd = state_55.Actions;
      ActionRecord ar_124 = new ActionRecord(ParserActionType.Shift, state_114, null, 0);
      fd.Add("ExprList\b", ar_124);
      ActionRecord ar_125 = new ActionRecord(ParserActionType.Shift, state_115, null, 0);
      fd.Add("MObjectPart\b", ar_125);
      ActionRecord ar_126 = new ActionRecord(ParserActionType.Shift, state_116, null, 0);
      fd.Add("Expr\b", ar_126);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      ActionRecord ar_127 = new ActionRecord(ParserActionType.Shift, state_117, null, 0);
      fd.Add("idn\b", ar_127);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_56.Actions;
      ActionRecord ar_128 = new ActionRecord(ParserActionType.Shift, state_118, null, 0);
      fd.Add("Expr\b", ar_128);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_57.Actions;
      ActionRecord ar_129 = new ActionRecord(ParserActionType.Shift, state_119, null, 0);
      fd.Add("Elements\b", ar_129);
      fd.Add("!>", ar_2);
      fd.Add(";", ar_2);
      fd.Add("function", ar_2);
      fd.Add("if", ar_2);
      fd.Add("{", ar_2);
      fd.Add("while", ar_2);
      fd.Add("for", ar_2);
      fd.Add("foreach", ar_2);
      fd.Add("using", ar_2);
      fd.Add("switch", ar_2);
      fd.Add("try", ar_2);
      fd.Add("break", ar_2);
      fd.Add("continue", ar_2);
      fd.Add("return", ar_2);
      fd.Add("throw", ar_2);
      fd.Add("true", ar_2);
      fd.Add("false", ar_2);
      fd.Add("null", ar_2);
      fd.Add("string\b", ar_2);
      fd.Add("number\b", ar_2);
      fd.Add("idn\b", ar_2);
      fd.Add("var", ar_2);
      fd.Add("new", ar_2);
      fd.Add("[", ar_2);
      fd.Add("(", ar_2);
      fd.Add("<!", ar_2);
      fd.Add("~", ar_2);
      fd.Add("-", ar_2);
      fd.Add("!", ar_2);
      fd.Add("$", ar_2);
      fd.Add("ref", ar_2);
      fd.Add("out", ar_2);
      fd = state_58.Actions;
      ActionRecord ar_130 = new ActionRecord(ParserActionType.Shift, state_120, null, 0);
      fd.Add("idn\b", ar_130);
      fd = state_59.Actions;
      ActionRecord ar_131 = new ActionRecord(ParserActionType.Shift, state_121, null, 0);
      fd.Add("idn\b", ar_131);
      fd = state_60.Actions;
      ActionRecord ar_132 = new ActionRecord(ParserActionType.Reduce, null, Terms_16, 1);
      fd.Add("true", ar_132);
      fd.Add("false", ar_132);
      fd.Add("null", ar_132);
      fd.Add("string\b", ar_132);
      fd.Add("number\b", ar_132);
      fd.Add("idn\b", ar_132);
      fd.Add("var", ar_132);
      fd.Add("new", ar_132);
      fd.Add("function", ar_132);
      fd.Add("[", ar_132);
      fd.Add("(", ar_132);
      fd.Add("<!", ar_132);
      fd.Add("~", ar_132);
      fd.Add("-", ar_132);
      fd.Add("!", ar_132);
      fd.Add("$", ar_132);
      fd.Add("ref", ar_132);
      fd.Add("out", ar_132);
      fd = state_61.Actions;
      fd.Add("true", ar_132);
      fd.Add("false", ar_132);
      fd.Add("null", ar_132);
      fd.Add("string\b", ar_132);
      fd.Add("number\b", ar_132);
      fd.Add("idn\b", ar_132);
      fd.Add("var", ar_132);
      fd.Add("new", ar_132);
      fd.Add("function", ar_132);
      fd.Add("[", ar_132);
      fd.Add("(", ar_132);
      fd.Add("<!", ar_132);
      fd.Add("~", ar_132);
      fd.Add("-", ar_132);
      fd.Add("!", ar_132);
      fd.Add("$", ar_132);
      fd.Add("ref", ar_132);
      fd.Add("out", ar_132);
      fd = state_62.Actions;
      fd.Add("true", ar_132);
      fd.Add("false", ar_132);
      fd.Add("null", ar_132);
      fd.Add("string\b", ar_132);
      fd.Add("number\b", ar_132);
      fd.Add("idn\b", ar_132);
      fd.Add("var", ar_132);
      fd.Add("new", ar_132);
      fd.Add("function", ar_132);
      fd.Add("[", ar_132);
      fd.Add("(", ar_132);
      fd.Add("<!", ar_132);
      fd.Add("~", ar_132);
      fd.Add("-", ar_132);
      fd.Add("!", ar_132);
      fd.Add("$", ar_132);
      fd.Add("ref", ar_132);
      fd.Add("out", ar_132);
      fd = state_63.Actions;
      fd.Add("true", ar_132);
      fd.Add("false", ar_132);
      fd.Add("null", ar_132);
      fd.Add("string\b", ar_132);
      fd.Add("number\b", ar_132);
      fd.Add("idn\b", ar_132);
      fd.Add("var", ar_132);
      fd.Add("new", ar_132);
      fd.Add("function", ar_132);
      fd.Add("[", ar_132);
      fd.Add("(", ar_132);
      fd.Add("<!", ar_132);
      fd.Add("~", ar_132);
      fd.Add("-", ar_132);
      fd.Add("!", ar_132);
      fd.Add("$", ar_132);
      fd.Add("ref", ar_132);
      fd.Add("out", ar_132);
      fd = state_64.Actions;
      ActionRecord ar_133 = new ActionRecord(ParserActionType.Reduce, null, Terms_72, 1);
      fd.Add("idn\b", ar_133);
      fd = state_65.Actions;
      fd.Add("idn\b", ar_133);
      fd = state_66.Actions;
      ActionRecord ar_134 = new ActionRecord(ParserActionType.Shift, state_122, null, 0);
      fd.Add("ParamaterList\b", ar_134);
      ActionRecord ar_135 = new ActionRecord(ParserActionType.Shift, state_123, null, 0);
      fd.Add("idn+\b", ar_135);
      ActionRecord ar_136 = new ActionRecord(ParserActionType.Shift, state_124, null, 0);
      fd.Add("idn\b", ar_136);
      ActionRecord ar_137 = new ActionRecord(ParserActionType.Reduce, null, Terms_51, 0);
      fd.Add(")", ar_137);
      fd = state_67.Actions;
      ActionRecord ar_138 = new ActionRecord(ParserActionType.Shift, state_125, null, 0);
      fd.Add("(", ar_138);
      fd = state_68.Actions;
      ActionRecord ar_139 = new ActionRecord(ParserActionType.Shift, state_126, null, 0);
      fd.Add("Statement\b", ar_139);
      fd.Add(";", ar_8);
      fd.Add("IfStatement\b", ar_9);
      fd.Add("WhileStatement\b", ar_10);
      fd.Add("ForStatement\b", ar_11);
      fd.Add("ForEachStatement\b", ar_12);
      fd.Add("UsingStatement\b", ar_13);
      fd.Add("SwitchStatement\b", ar_14);
      fd.Add("BlockStatement\b", ar_15);
      fd.Add("TryCatchFinallyStatement\b", ar_16);
      fd.Add("ExprStatement\b", ar_17);
      fd.Add("FlowControl\b", ar_18);
      fd.Add("if", ar_20);
      fd.Add("while", ar_21);
      fd.Add("for", ar_22);
      fd.Add("foreach", ar_23);
      fd.Add("using", ar_24);
      fd.Add("switch", ar_25);
      fd.Add("{", ar_26);
      fd.Add("try", ar_27);
      fd.Add("Expr\b", ar_28);
      fd.Add("break", ar_29);
      fd.Add("continue", ar_30);
      fd.Add("return", ar_31);
      fd.Add("throw", ar_32);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_69.Actions;
      ActionRecord ar_140 = new ActionRecord(ParserActionType.Shift, state_127, null, 0);
      fd.Add("Expr\b", ar_140);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_70.Actions;
      ActionRecord ar_141 = new ActionRecord(ParserActionType.Shift, state_128, null, 0);
      fd.Add("Statement\b", ar_141);
      fd.Add(";", ar_8);
      fd.Add("IfStatement\b", ar_9);
      fd.Add("WhileStatement\b", ar_10);
      fd.Add("ForStatement\b", ar_11);
      fd.Add("ForEachStatement\b", ar_12);
      fd.Add("UsingStatement\b", ar_13);
      fd.Add("SwitchStatement\b", ar_14);
      fd.Add("BlockStatement\b", ar_15);
      fd.Add("TryCatchFinallyStatement\b", ar_16);
      fd.Add("ExprStatement\b", ar_17);
      fd.Add("FlowControl\b", ar_18);
      fd.Add("if", ar_20);
      fd.Add("while", ar_21);
      fd.Add("for", ar_22);
      fd.Add("foreach", ar_23);
      fd.Add("using", ar_24);
      fd.Add("switch", ar_25);
      fd.Add("{", ar_26);
      fd.Add("try", ar_27);
      fd.Add("Expr\b", ar_28);
      fd.Add("break", ar_29);
      fd.Add("continue", ar_30);
      fd.Add("return", ar_31);
      fd.Add("throw", ar_32);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_71.Actions;
      ActionRecord ar_142 = new ActionRecord(ParserActionType.Shift, state_129, null, 0);
      fd.Add("OptionalExpression\b", ar_142);
      ActionRecord ar_143 = new ActionRecord(ParserActionType.Shift, state_130, null, 0);
      fd.Add("Expr\b", ar_143);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      ActionRecord ar_144 = new ActionRecord(ParserActionType.Reduce, null, Terms_35, 0);
      fd.Add(";", ar_144);
      fd = state_72.Actions;
      ActionRecord ar_145 = new ActionRecord(ParserActionType.Shift, state_131, null, 0);
      fd.Add("idn\b", ar_145);
      fd = state_73.Actions;
      ActionRecord ar_146 = new ActionRecord(ParserActionType.Shift, state_132, null, 0);
      fd.Add("Expr\b", ar_146);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_74.Actions;
      ActionRecord ar_147 = new ActionRecord(ParserActionType.Shift, state_133, null, 0);
      fd.Add("Expr\b", ar_147);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_75.Actions;
      ActionRecord ar_148 = new ActionRecord(ParserActionType.Shift, state_134, null, 0);
      fd.Add("}", ar_148);
      ActionRecord ar_149 = new ActionRecord(ParserActionType.Shift, state_135, null, 0);
      fd.Add("Statement\b", ar_149);
      fd.Add(";", ar_8);
      fd.Add("IfStatement\b", ar_9);
      fd.Add("WhileStatement\b", ar_10);
      fd.Add("ForStatement\b", ar_11);
      fd.Add("ForEachStatement\b", ar_12);
      fd.Add("UsingStatement\b", ar_13);
      fd.Add("SwitchStatement\b", ar_14);
      fd.Add("BlockStatement\b", ar_15);
      fd.Add("TryCatchFinallyStatement\b", ar_16);
      fd.Add("ExprStatement\b", ar_17);
      fd.Add("FlowControl\b", ar_18);
      fd.Add("if", ar_20);
      fd.Add("while", ar_21);
      fd.Add("for", ar_22);
      fd.Add("foreach", ar_23);
      fd.Add("using", ar_24);
      fd.Add("switch", ar_25);
      fd.Add("{", ar_26);
      fd.Add("try", ar_27);
      fd.Add("Expr\b", ar_28);
      fd.Add("break", ar_29);
      fd.Add("continue", ar_30);
      fd.Add("return", ar_31);
      fd.Add("throw", ar_32);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_76.Actions;
      ActionRecord ar_150 = new ActionRecord(ParserActionType.Shift, state_136, null, 0);
      fd.Add("catch", ar_150);
      fd = state_77.Actions;
      ActionRecord ar_151 = new ActionRecord(ParserActionType.Shift, state_137, null, 0);
      fd.Add("Expr\b", ar_151);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_78.Actions;
      ActionRecord ar_152 = new ActionRecord(ParserActionType.Shift, state_138, null, 0);
      fd.Add("TypeExpr\b", ar_152);
      fd.Add("idn\b", ar_123);
      fd = state_79.Actions;
      ActionRecord ar_153 = new ActionRecord(ParserActionType.Reduce, null, Terms_43, 2);
      fd.Add("EOF\b", ar_153);
      fd.Add(";", ar_153);
      fd.Add("function", ar_153);
      fd.Add("if", ar_153);
      fd.Add("{", ar_153);
      fd.Add("while", ar_153);
      fd.Add("for", ar_153);
      fd.Add("foreach", ar_153);
      fd.Add("using", ar_153);
      fd.Add("switch", ar_153);
      fd.Add("try", ar_153);
      fd.Add("break", ar_153);
      fd.Add("continue", ar_153);
      fd.Add("return", ar_153);
      fd.Add("throw", ar_153);
      fd.Add("true", ar_153);
      fd.Add("false", ar_153);
      fd.Add("null", ar_153);
      fd.Add("string\b", ar_153);
      fd.Add("number\b", ar_153);
      fd.Add("idn\b", ar_153);
      fd.Add("var", ar_153);
      fd.Add("new", ar_153);
      fd.Add("[", ar_153);
      fd.Add("(", ar_153);
      fd.Add("<!", ar_153);
      fd.Add("~", ar_153);
      fd.Add("-", ar_153);
      fd.Add("!", ar_153);
      fd.Add("$", ar_153);
      fd.Add("ref", ar_153);
      fd.Add("out", ar_153);
      fd.Add("else", ar_153);
      fd.Add("}", ar_153);
      fd.Add("!>", ar_153);
      fd.Add("default", ar_153);
      fd.Add("case", ar_153);
      fd = state_80.Actions;
      ActionRecord ar_154 = new ActionRecord(ParserActionType.Reduce, null, Terms_15, 1);
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_81.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_82.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_83.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_84.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_85.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_86.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_87.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_88.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_89.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_90.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_91.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_92.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_93.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_94.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_95.Actions;
      fd.Add("true", ar_154);
      fd.Add("false", ar_154);
      fd.Add("null", ar_154);
      fd.Add("string\b", ar_154);
      fd.Add("number\b", ar_154);
      fd.Add("idn\b", ar_154);
      fd.Add("var", ar_154);
      fd.Add("new", ar_154);
      fd.Add("function", ar_154);
      fd.Add("[", ar_154);
      fd.Add("(", ar_154);
      fd.Add("<!", ar_154);
      fd.Add("~", ar_154);
      fd.Add("-", ar_154);
      fd.Add("!", ar_154);
      fd.Add("$", ar_154);
      fd.Add("ref", ar_154);
      fd.Add("out", ar_154);
      fd = state_96.Actions;
      ActionRecord ar_155 = new ActionRecord(ParserActionType.Reduce, null, Terms_42, 2);
      fd.Add("EOF\b", ar_155);
      fd.Add(";", ar_155);
      fd.Add("function", ar_155);
      fd.Add("if", ar_155);
      fd.Add("{", ar_155);
      fd.Add("while", ar_155);
      fd.Add("for", ar_155);
      fd.Add("foreach", ar_155);
      fd.Add("using", ar_155);
      fd.Add("switch", ar_155);
      fd.Add("try", ar_155);
      fd.Add("break", ar_155);
      fd.Add("continue", ar_155);
      fd.Add("return", ar_155);
      fd.Add("throw", ar_155);
      fd.Add("true", ar_155);
      fd.Add("false", ar_155);
      fd.Add("null", ar_155);
      fd.Add("string\b", ar_155);
      fd.Add("number\b", ar_155);
      fd.Add("idn\b", ar_155);
      fd.Add("var", ar_155);
      fd.Add("new", ar_155);
      fd.Add("[", ar_155);
      fd.Add("(", ar_155);
      fd.Add("<!", ar_155);
      fd.Add("~", ar_155);
      fd.Add("-", ar_155);
      fd.Add("!", ar_155);
      fd.Add("$", ar_155);
      fd.Add("ref", ar_155);
      fd.Add("out", ar_155);
      fd.Add("else", ar_155);
      fd.Add("}", ar_155);
      fd.Add("!>", ar_155);
      fd.Add("default", ar_155);
      fd.Add("case", ar_155);
      fd = state_97.Actions;
      fd.Add("EOF\b", ar_155);
      fd.Add(";", ar_155);
      fd.Add("function", ar_155);
      fd.Add("if", ar_155);
      fd.Add("{", ar_155);
      fd.Add("while", ar_155);
      fd.Add("for", ar_155);
      fd.Add("foreach", ar_155);
      fd.Add("using", ar_155);
      fd.Add("switch", ar_155);
      fd.Add("try", ar_155);
      fd.Add("break", ar_155);
      fd.Add("continue", ar_155);
      fd.Add("return", ar_155);
      fd.Add("throw", ar_155);
      fd.Add("true", ar_155);
      fd.Add("false", ar_155);
      fd.Add("null", ar_155);
      fd.Add("string\b", ar_155);
      fd.Add("number\b", ar_155);
      fd.Add("idn\b", ar_155);
      fd.Add("var", ar_155);
      fd.Add("new", ar_155);
      fd.Add("[", ar_155);
      fd.Add("(", ar_155);
      fd.Add("<!", ar_155);
      fd.Add("~", ar_155);
      fd.Add("-", ar_155);
      fd.Add("!", ar_155);
      fd.Add("$", ar_155);
      fd.Add("ref", ar_155);
      fd.Add("out", ar_155);
      fd.Add("else", ar_155);
      fd.Add("}", ar_155);
      fd.Add("!>", ar_155);
      fd.Add("default", ar_155);
      fd.Add("case", ar_155);
      fd = state_98.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_84);
      ActionRecord ar_156 = new ActionRecord(ParserActionType.Shift, state_139, null, 0);
      fd.Add(";", ar_156);
      fd.Add("+", ar_86);
      fd.Add("-", ar_87);
      fd.Add("*", ar_88);
      fd.Add("/", ar_89);
      fd.Add("%", ar_90);
      fd.Add("^", ar_91);
      fd.Add("&", ar_92);
      fd.Add("|", ar_93);
      fd.Add("&&", ar_94);
      fd.Add("||", ar_95);
      fd.Add("==", ar_96);
      fd.Add("!=", ar_97);
      fd.Add(">", ar_98);
      fd.Add("<", ar_99);
      fd.Add(">=", ar_100);
      fd.Add("<=", ar_101);
      fd = state_99.Actions;
      fd.Add("(", ar_71);
      fd = state_100.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_84);
      ActionRecord ar_157 = new ActionRecord(ParserActionType.Shift, state_140, null, 0);
      fd.Add(";", ar_157);
      fd.Add("+", ar_86);
      fd.Add("-", ar_87);
      fd.Add("*", ar_88);
      fd.Add("/", ar_89);
      fd.Add("%", ar_90);
      fd.Add("^", ar_91);
      fd.Add("&", ar_92);
      fd.Add("|", ar_93);
      fd.Add("&&", ar_94);
      fd.Add("||", ar_95);
      fd.Add("==", ar_96);
      fd.Add("!=", ar_97);
      fd.Add(">", ar_98);
      fd.Add("<", ar_99);
      fd.Add(">=", ar_100);
      fd.Add("<=", ar_101);
      fd = state_101.Actions;
      ActionRecord ar_158 = new ActionRecord(ParserActionType.Shift, state_141, null, 0);
      fd.Add("idn\b", ar_158);
      fd = state_102.Actions;
      ActionRecord ar_159 = new ActionRecord(ParserActionType.Shift, state_142, null, 0);
      fd.Add("Expr\b", ar_159);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_103.Actions;
      ActionRecord ar_160 = new ActionRecord(ParserActionType.Reduce, null, Terms_4, 2);
      fd.Add(";", ar_160);
      fd.Add("+", ar_160);
      fd.Add("-", ar_160);
      fd.Add("*", ar_160);
      fd.Add("/", ar_160);
      fd.Add("%", ar_160);
      fd.Add("^", ar_160);
      fd.Add("&", ar_160);
      fd.Add("|", ar_160);
      fd.Add("&&", ar_160);
      fd.Add("||", ar_160);
      fd.Add("==", ar_160);
      fd.Add("!=", ar_160);
      fd.Add(">", ar_160);
      fd.Add("<", ar_160);
      fd.Add(">=", ar_160);
      fd.Add("<=", ar_160);
      fd.Add("is", ar_160);
      fd.Add("]", ar_160);
      fd.Add(",", ar_160);
      fd.Add(")", ar_160);
      fd.Add(":", ar_160);
      fd = state_104.Actions;
      fd.Add(";", ar_160);
      fd.Add("+", ar_160);
      fd.Add("-", ar_160);
      fd.Add("*", ar_160);
      fd.Add("/", ar_160);
      fd.Add("%", ar_160);
      fd.Add("^", ar_160);
      fd.Add("&", ar_160);
      fd.Add("|", ar_160);
      fd.Add("&&", ar_160);
      fd.Add("||", ar_160);
      fd.Add("==", ar_160);
      fd.Add("!=", ar_160);
      fd.Add(">", ar_160);
      fd.Add("<", ar_160);
      fd.Add(">=", ar_160);
      fd.Add("<=", ar_160);
      fd.Add("is", ar_160);
      fd.Add("]", ar_160);
      fd.Add(",", ar_160);
      fd.Add(")", ar_160);
      fd.Add(":", ar_160);
      fd = state_105.Actions;
      ActionRecord ar_161 = new ActionRecord(ParserActionType.Shift, state_143, null, 0);
      fd.Add("Expr\b", ar_161);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_106.Actions;
      ActionRecord ar_162 = new ActionRecord(ParserActionType.Shift, state_144, null, 0);
      fd.Add("Expr\b", ar_162);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_107.Actions;
      ActionRecord ar_163 = new ActionRecord(ParserActionType.Shift, state_145, null, 0);
      fd.Add("Expr\b", ar_163);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_108.Actions;
      ActionRecord ar_164 = new ActionRecord(ParserActionType.Shift, state_146, null, 0);
      fd.Add("Expr\b", ar_164);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_109.Actions;
      fd.Add("BinOp\b", ar_83);
      ActionRecord ar_165 = new ActionRecord(ParserActionType.Operator, state_78, Terms_3, 2);
      fd.Add("is", ar_165);
      ActionRecord ar_166 = new ActionRecord(ParserActionType.Operator, state_80, Terms_3, 2);
      fd.Add("+", ar_166);
      ActionRecord ar_167 = new ActionRecord(ParserActionType.Operator, state_81, Terms_3, 2);
      fd.Add("-", ar_167);
      ActionRecord ar_168 = new ActionRecord(ParserActionType.Operator, state_82, Terms_3, 2);
      fd.Add("*", ar_168);
      ActionRecord ar_169 = new ActionRecord(ParserActionType.Operator, state_83, Terms_3, 2);
      fd.Add("/", ar_169);
      ActionRecord ar_170 = new ActionRecord(ParserActionType.Operator, state_84, Terms_3, 2);
      fd.Add("%", ar_170);
      ActionRecord ar_171 = new ActionRecord(ParserActionType.Operator, state_85, Terms_3, 2);
      fd.Add("^", ar_171);
      ActionRecord ar_172 = new ActionRecord(ParserActionType.Operator, state_86, Terms_3, 2);
      fd.Add("&", ar_172);
      ActionRecord ar_173 = new ActionRecord(ParserActionType.Operator, state_87, Terms_3, 2);
      fd.Add("|", ar_173);
      ActionRecord ar_174 = new ActionRecord(ParserActionType.Operator, state_88, Terms_3, 2);
      fd.Add("&&", ar_174);
      ActionRecord ar_175 = new ActionRecord(ParserActionType.Operator, state_89, Terms_3, 2);
      fd.Add("||", ar_175);
      ActionRecord ar_176 = new ActionRecord(ParserActionType.Operator, state_90, Terms_3, 2);
      fd.Add("==", ar_176);
      ActionRecord ar_177 = new ActionRecord(ParserActionType.Operator, state_91, Terms_3, 2);
      fd.Add("!=", ar_177);
      ActionRecord ar_178 = new ActionRecord(ParserActionType.Operator, state_92, Terms_3, 2);
      fd.Add(">", ar_178);
      ActionRecord ar_179 = new ActionRecord(ParserActionType.Operator, state_93, Terms_3, 2);
      fd.Add("<", ar_179);
      ActionRecord ar_180 = new ActionRecord(ParserActionType.Operator, state_94, Terms_3, 2);
      fd.Add(">=", ar_180);
      ActionRecord ar_181 = new ActionRecord(ParserActionType.Operator, state_95, Terms_3, 2);
      fd.Add("<=", ar_181);
      ActionRecord ar_182 = new ActionRecord(ParserActionType.Reduce, null, Terms_3, 2);
      fd.Add(";", ar_182);
      fd.Add("]", ar_182);
      fd.Add(",", ar_182);
      fd.Add(")", ar_182);
      fd.Add(":", ar_182);
      fd = state_110.Actions;
      ActionRecord ar_183 = new ActionRecord(ParserActionType.Shift, state_147, null, 0);
      fd.Add("\b", ar_183);
      ActionRecord ar_184 = new ActionRecord(ParserActionType.Shift, state_148, null, 0);
      fd.Add("GenericsPostfix\b", ar_184);
      ActionRecord ar_185 = new ActionRecord(ParserActionType.Shift, state_149, null, 0);
      fd.Add("ArrayResolution\b", ar_185);
      ActionRecord ar_186 = new ActionRecord(ParserActionType.Shift, state_150, null, 0);
      fd.Add("FunctionCall\b", ar_186);
      ActionRecord ar_187 = new ActionRecord(ParserActionType.Shift, state_151, null, 0);
      fd.Add("<|", ar_187);
      ActionRecord ar_188 = new ActionRecord(ParserActionType.Shift, state_152, null, 0);
      fd.Add("[", ar_188);
      ActionRecord ar_189 = new ActionRecord(ParserActionType.Shift, state_153, null, 0);
      fd.Add("(", ar_189);
      ActionRecord ar_190 = new ActionRecord(ParserActionType.Reduce, null, Terms_26, 2);
      fd.Add(".", ar_190);
      fd.Add("=", ar_190);
      fd.Add("++", ar_190);
      fd.Add("--", ar_190);
      fd.Add(":=", ar_190);
      fd.Add("+=", ar_190);
      fd.Add("-=", ar_190);
      fd.Add(";", ar_190);
      fd.Add("+", ar_190);
      fd.Add("-", ar_190);
      fd.Add("*", ar_190);
      fd.Add("/", ar_190);
      fd.Add("%", ar_190);
      fd.Add("^", ar_190);
      fd.Add("&", ar_190);
      fd.Add("|", ar_190);
      fd.Add("&&", ar_190);
      fd.Add("||", ar_190);
      fd.Add("==", ar_190);
      fd.Add("!=", ar_190);
      fd.Add(">", ar_190);
      fd.Add("<", ar_190);
      fd.Add(">=", ar_190);
      fd.Add("<=", ar_190);
      fd.Add("is", ar_190);
      fd.Add("]", ar_190);
      fd.Add(",", ar_190);
      fd.Add(")", ar_190);
      fd.Add(":", ar_190);
      fd = state_111.Actions;
      ActionRecord ar_191 = new ActionRecord(ParserActionType.Reduce, null, Terms_24, 2);
      fd.Add(";", ar_191);
      fd.Add("+", ar_191);
      fd.Add("-", ar_191);
      fd.Add("*", ar_191);
      fd.Add("/", ar_191);
      fd.Add("%", ar_191);
      fd.Add("^", ar_191);
      fd.Add("&", ar_191);
      fd.Add("|", ar_191);
      fd.Add("&&", ar_191);
      fd.Add("||", ar_191);
      fd.Add("==", ar_191);
      fd.Add("!=", ar_191);
      fd.Add(">", ar_191);
      fd.Add("<", ar_191);
      fd.Add(">=", ar_191);
      fd.Add("<=", ar_191);
      fd.Add("is", ar_191);
      fd.Add("]", ar_191);
      fd.Add(",", ar_191);
      fd.Add(")", ar_191);
      fd.Add(":", ar_191);
      fd = state_112.Actions;
      ActionRecord ar_192 = new ActionRecord(ParserActionType.Shift, state_154, null, 0);
      fd.Add(".", ar_192);
      ActionRecord ar_193 = new ActionRecord(ParserActionType.Shift, state_155, null, 0);
      fd.Add("FunctionCall\b", ar_193);
      ActionRecord ar_194 = new ActionRecord(ParserActionType.Shift, state_156, null, 0);
      fd.Add("ArrayResolution\b", ar_194);
      fd.Add("(", ar_189);
      fd.Add("[", ar_188);
      fd = state_113.Actions;
      ActionRecord ar_195 = new ActionRecord(ParserActionType.Shift, state_157, null, 0);
      fd.Add("\b", ar_195);
      ActionRecord ar_196 = new ActionRecord(ParserActionType.Shift, state_158, null, 0);
      fd.Add("GenericsPostfix\b", ar_196);
      fd.Add("<|", ar_187);
      ActionRecord ar_197 = new ActionRecord(ParserActionType.Reduce, null, Terms_60, 0);
      fd.Add("[", ar_197);
      fd.Add("(", ar_197);
      fd.Add(".", ar_197);
      fd.Add(";", ar_197);
      fd.Add("+", ar_197);
      fd.Add("-", ar_197);
      fd.Add("*", ar_197);
      fd.Add("/", ar_197);
      fd.Add("%", ar_197);
      fd.Add("^", ar_197);
      fd.Add("&", ar_197);
      fd.Add("|", ar_197);
      fd.Add("&&", ar_197);
      fd.Add("||", ar_197);
      fd.Add("==", ar_197);
      fd.Add("!=", ar_197);
      fd.Add(">", ar_197);
      fd.Add("<", ar_197);
      fd.Add(">=", ar_197);
      fd.Add("<=", ar_197);
      fd.Add("is", ar_197);
      fd.Add("|>", ar_197);
      fd.Add(",", ar_197);
      fd.Add("]", ar_197);
      fd.Add(")", ar_197);
      fd.Add(":", ar_197);
      fd = state_114.Actions;
      ActionRecord ar_198 = new ActionRecord(ParserActionType.Shift, state_159, null, 0);
      fd.Add(",", ar_198);
      ActionRecord ar_199 = new ActionRecord(ParserActionType.Shift, state_160, null, 0);
      fd.Add("]", ar_199);
      fd = state_115.Actions;
      ActionRecord ar_200 = new ActionRecord(ParserActionType.Shift, state_161, Terms_21, 1);
      fd.Add("]", ar_200);
      ActionRecord ar_201 = new ActionRecord(ParserActionType.Shift, state_162, Terms_21, 1);
      fd.Add(",", ar_201);
      fd = state_116.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_84);
      fd.Add("+", ar_86);
      fd.Add("-", ar_87);
      fd.Add("*", ar_88);
      fd.Add("/", ar_89);
      fd.Add("%", ar_90);
      fd.Add("^", ar_91);
      fd.Add("&", ar_92);
      fd.Add("|", ar_93);
      fd.Add("&&", ar_94);
      fd.Add("||", ar_95);
      fd.Add("==", ar_96);
      fd.Add("!=", ar_97);
      fd.Add(">", ar_98);
      fd.Add("<", ar_99);
      fd.Add(">=", ar_100);
      fd.Add("<=", ar_101);
      ActionRecord ar_202 = new ActionRecord(ParserActionType.Reduce, null, Terms_23, 1);
      fd.Add("]", ar_202);
      fd.Add(",", ar_202);
      fd.Add(")", ar_202);
      fd = state_117.Actions;
      fd.Add("*\b", ar_119);
      ActionRecord ar_203 = new ActionRecord(ParserActionType.Shift, state_163, null, 0);
      fd.Add("->", ar_203);
      fd.Add("<|", ar_120);
      fd.Add("[", ar_120);
      fd.Add("(", ar_120);
      fd.Add(".", ar_120);
      fd.Add("=", ar_120);
      fd.Add("++", ar_120);
      fd.Add("--", ar_120);
      fd.Add(":=", ar_120);
      fd.Add("+=", ar_120);
      fd.Add("-=", ar_120);
      fd.Add("+", ar_120);
      fd.Add("-", ar_120);
      fd.Add("*", ar_120);
      fd.Add("/", ar_120);
      fd.Add("%", ar_120);
      fd.Add("^", ar_120);
      fd.Add("&", ar_120);
      fd.Add("|", ar_120);
      fd.Add("&&", ar_120);
      fd.Add("||", ar_120);
      fd.Add("==", ar_120);
      fd.Add("!=", ar_120);
      fd.Add(">", ar_120);
      fd.Add("<", ar_120);
      fd.Add(">=", ar_120);
      fd.Add("<=", ar_120);
      fd.Add("is", ar_120);
      fd.Add("]", ar_120);
      fd.Add(",", ar_120);
      fd = state_118.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_84);
      ActionRecord ar_204 = new ActionRecord(ParserActionType.Shift, state_164, null, 0);
      fd.Add(")", ar_204);
      fd.Add("+", ar_86);
      fd.Add("-", ar_87);
      fd.Add("*", ar_88);
      fd.Add("/", ar_89);
      fd.Add("%", ar_90);
      fd.Add("^", ar_91);
      fd.Add("&", ar_92);
      fd.Add("|", ar_93);
      fd.Add("&&", ar_94);
      fd.Add("||", ar_95);
      fd.Add("==", ar_96);
      fd.Add("!=", ar_97);
      fd.Add(">", ar_98);
      fd.Add("<", ar_99);
      fd.Add(">=", ar_100);
      fd.Add("<=", ar_101);
      fd = state_119.Actions;
      fd.Add("Element\b", ar_5);
      ActionRecord ar_205 = new ActionRecord(ParserActionType.Shift, state_165, null, 0);
      fd.Add("!>", ar_205);
      fd.Add("Statement\b", ar_6);
      fd.Add("FuncDef\b", ar_7);
      fd.Add(";", ar_8);
      fd.Add("IfStatement\b", ar_9);
      fd.Add("WhileStatement\b", ar_10);
      fd.Add("ForStatement\b", ar_11);
      fd.Add("ForEachStatement\b", ar_12);
      fd.Add("UsingStatement\b", ar_13);
      fd.Add("SwitchStatement\b", ar_14);
      fd.Add("BlockStatement\b", ar_15);
      fd.Add("TryCatchFinallyStatement\b", ar_16);
      fd.Add("ExprStatement\b", ar_17);
      fd.Add("FlowControl\b", ar_18);
      fd.Add("function", ar_19);
      fd.Add("if", ar_20);
      fd.Add("while", ar_21);
      fd.Add("for", ar_22);
      fd.Add("foreach", ar_23);
      fd.Add("using", ar_24);
      fd.Add("switch", ar_25);
      fd.Add("{", ar_26);
      fd.Add("try", ar_27);
      fd.Add("Expr\b", ar_28);
      fd.Add("break", ar_29);
      fd.Add("continue", ar_30);
      fd.Add("return", ar_31);
      fd.Add("throw", ar_32);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_120.Actions;
      ActionRecord ar_206 = new ActionRecord(ParserActionType.Reduce, null, Terms_9, 2);
      fd.Add(";", ar_206);
      fd.Add("+", ar_206);
      fd.Add("-", ar_206);
      fd.Add("*", ar_206);
      fd.Add("/", ar_206);
      fd.Add("%", ar_206);
      fd.Add("^", ar_206);
      fd.Add("&", ar_206);
      fd.Add("|", ar_206);
      fd.Add("&&", ar_206);
      fd.Add("||", ar_206);
      fd.Add("==", ar_206);
      fd.Add("!=", ar_206);
      fd.Add(">", ar_206);
      fd.Add("<", ar_206);
      fd.Add(">=", ar_206);
      fd.Add("<=", ar_206);
      fd.Add("is", ar_206);
      fd.Add("]", ar_206);
      fd.Add(",", ar_206);
      fd.Add(")", ar_206);
      fd.Add(":", ar_206);
      fd = state_121.Actions;
      ActionRecord ar_207 = new ActionRecord(ParserActionType.Reduce, null, Terms_10, 2);
      fd.Add("=", ar_207);
      fd.Add(";", ar_207);
      fd.Add("+", ar_207);
      fd.Add("-", ar_207);
      fd.Add("*", ar_207);
      fd.Add("/", ar_207);
      fd.Add("%", ar_207);
      fd.Add("^", ar_207);
      fd.Add("&", ar_207);
      fd.Add("|", ar_207);
      fd.Add("&&", ar_207);
      fd.Add("||", ar_207);
      fd.Add("==", ar_207);
      fd.Add("!=", ar_207);
      fd.Add(">", ar_207);
      fd.Add("<", ar_207);
      fd.Add(">=", ar_207);
      fd.Add("<=", ar_207);
      fd.Add("is", ar_207);
      fd.Add("]", ar_207);
      fd.Add(",", ar_207);
      fd.Add(")", ar_207);
      fd.Add(":", ar_207);
      fd = state_122.Actions;
      ActionRecord ar_208 = new ActionRecord(ParserActionType.Shift, state_166, null, 0);
      fd.Add(")", ar_208);
      fd = state_123.Actions;
      ActionRecord ar_209 = new ActionRecord(ParserActionType.Shift, state_167, null, 0);
      fd.Add(",", ar_209);
      ActionRecord ar_210 = new ActionRecord(ParserActionType.Reduce, null, Terms_51, 1);
      fd.Add(")", ar_210);
      fd = state_124.Actions;
      ActionRecord ar_211 = new ActionRecord(ParserActionType.Reduce, null, Terms_58, 1);
      fd.Add(",", ar_211);
      fd.Add(")", ar_211);
      fd = state_125.Actions;
      ActionRecord ar_212 = new ActionRecord(ParserActionType.Shift, state_168, null, 0);
      fd.Add("ParamaterList\b", ar_212);
      fd.Add("idn+\b", ar_135);
      fd.Add("idn\b", ar_136);
      fd.Add(")", ar_137);
      fd = state_126.Actions;
      ActionRecord ar_213 = new ActionRecord(ParserActionType.Shift, state_169, null, 0);
      fd.Add("\b", ar_213);
      ActionRecord ar_214 = new ActionRecord(ParserActionType.Shift, state_170, Terms_73, 0);
      fd.Add("else", ar_214);
      ActionRecord ar_215 = new ActionRecord(ParserActionType.Reduce, null, Terms_73, 0);
      fd.Add("EOF\b", ar_215);
      fd.Add(";", ar_215);
      fd.Add("function", ar_215);
      fd.Add("if", ar_215);
      fd.Add("{", ar_215);
      fd.Add("while", ar_215);
      fd.Add("for", ar_215);
      fd.Add("foreach", ar_215);
      fd.Add("using", ar_215);
      fd.Add("switch", ar_215);
      fd.Add("try", ar_215);
      fd.Add("break", ar_215);
      fd.Add("continue", ar_215);
      fd.Add("return", ar_215);
      fd.Add("throw", ar_215);
      fd.Add("true", ar_215);
      fd.Add("false", ar_215);
      fd.Add("null", ar_215);
      fd.Add("string\b", ar_215);
      fd.Add("number\b", ar_215);
      fd.Add("idn\b", ar_215);
      fd.Add("var", ar_215);
      fd.Add("new", ar_215);
      fd.Add("[", ar_215);
      fd.Add("(", ar_215);
      fd.Add("<!", ar_215);
      fd.Add("~", ar_215);
      fd.Add("-", ar_215);
      fd.Add("!", ar_215);
      fd.Add("$", ar_215);
      fd.Add("ref", ar_215);
      fd.Add("out", ar_215);
      fd.Add("}", ar_215);
      fd.Add("!>", ar_215);
      fd.Add("default", ar_215);
      fd.Add("case", ar_215);
      fd = state_127.Actions;
      ActionRecord ar_216 = new ActionRecord(ParserActionType.Shift, state_171, null, 0);
      fd.Add(")", ar_216);
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_84);
      fd.Add("+", ar_86);
      fd.Add("-", ar_87);
      fd.Add("*", ar_88);
      fd.Add("/", ar_89);
      fd.Add("%", ar_90);
      fd.Add("^", ar_91);
      fd.Add("&", ar_92);
      fd.Add("|", ar_93);
      fd.Add("&&", ar_94);
      fd.Add("||", ar_95);
      fd.Add("==", ar_96);
      fd.Add("!=", ar_97);
      fd.Add(">", ar_98);
      fd.Add("<", ar_99);
      fd.Add(">=", ar_100);
      fd.Add("<=", ar_101);
      fd = state_128.Actions;
      ActionRecord ar_217 = new ActionRecord(ParserActionType.Reduce, null, Terms_32, 3);
      fd.Add("EOF\b", ar_217);
      fd.Add(";", ar_217);
      fd.Add("function", ar_217);
      fd.Add("if", ar_217);
      fd.Add("{", ar_217);
      fd.Add("while", ar_217);
      fd.Add("for", ar_217);
      fd.Add("foreach", ar_217);
      fd.Add("using", ar_217);
      fd.Add("switch", ar_217);
      fd.Add("try", ar_217);
      fd.Add("break", ar_217);
      fd.Add("continue", ar_217);
      fd.Add("return", ar_217);
      fd.Add("throw", ar_217);
      fd.Add("true", ar_217);
      fd.Add("false", ar_217);
      fd.Add("null", ar_217);
      fd.Add("string\b", ar_217);
      fd.Add("number\b", ar_217);
      fd.Add("idn\b", ar_217);
      fd.Add("var", ar_217);
      fd.Add("new", ar_217);
      fd.Add("[", ar_217);
      fd.Add("(", ar_217);
      fd.Add("<!", ar_217);
      fd.Add("~", ar_217);
      fd.Add("-", ar_217);
      fd.Add("!", ar_217);
      fd.Add("$", ar_217);
      fd.Add("ref", ar_217);
      fd.Add("out", ar_217);
      fd.Add("else", ar_217);
      fd.Add("}", ar_217);
      fd.Add("!>", ar_217);
      fd.Add("default", ar_217);
      fd.Add("case", ar_217);
      fd = state_129.Actions;
      ActionRecord ar_218 = new ActionRecord(ParserActionType.Shift, state_172, null, 0);
      fd.Add(";", ar_218);
      fd = state_130.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_84);
      fd.Add("+", ar_86);
      fd.Add("-", ar_87);
      fd.Add("*", ar_88);
      fd.Add("/", ar_89);
      fd.Add("%", ar_90);
      fd.Add("^", ar_91);
      fd.Add("&", ar_92);
      fd.Add("|", ar_93);
      fd.Add("&&", ar_94);
      fd.Add("||", ar_95);
      fd.Add("==", ar_96);
      fd.Add("!=", ar_97);
      fd.Add(">", ar_98);
      fd.Add("<", ar_99);
      fd.Add(">=", ar_100);
      fd.Add("<=", ar_101);
      ActionRecord ar_219 = new ActionRecord(ParserActionType.Reduce, null, Terms_35, 1);
      fd.Add(";", ar_219);
      fd.Add(")", ar_219);
      fd = state_131.Actions;
      ActionRecord ar_220 = new ActionRecord(ParserActionType.Shift, state_173, null, 0);
      fd.Add("in", ar_220);
      fd = state_132.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_84);
      ActionRecord ar_221 = new ActionRecord(ParserActionType.Shift, state_174, null, 0);
      fd.Add(")", ar_221);
      fd.Add("+", ar_86);
      fd.Add("-", ar_87);
      fd.Add("*", ar_88);
      fd.Add("/", ar_89);
      fd.Add("%", ar_90);
      fd.Add("^", ar_91);
      fd.Add("&", ar_92);
      fd.Add("|", ar_93);
      fd.Add("&&", ar_94);
      fd.Add("||", ar_95);
      fd.Add("==", ar_96);
      fd.Add("!=", ar_97);
      fd.Add(">", ar_98);
      fd.Add("<", ar_99);
      fd.Add(">=", ar_100);
      fd.Add("<=", ar_101);
      fd = state_133.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_84);
      ActionRecord ar_222 = new ActionRecord(ParserActionType.Shift, state_175, null, 0);
      fd.Add(")", ar_222);
      fd.Add("+", ar_86);
      fd.Add("-", ar_87);
      fd.Add("*", ar_88);
      fd.Add("/", ar_89);
      fd.Add("%", ar_90);
      fd.Add("^", ar_91);
      fd.Add("&", ar_92);
      fd.Add("|", ar_93);
      fd.Add("&&", ar_94);
      fd.Add("||", ar_95);
      fd.Add("==", ar_96);
      fd.Add("!=", ar_97);
      fd.Add(">", ar_98);
      fd.Add("<", ar_99);
      fd.Add(">=", ar_100);
      fd.Add("<=", ar_101);
      fd = state_134.Actions;
      ActionRecord ar_223 = new ActionRecord(ParserActionType.Reduce, null, Terms_44, 3);
      fd.Add("EOF\b", ar_223);
      fd.Add(";", ar_223);
      fd.Add("function", ar_223);
      fd.Add("if", ar_223);
      fd.Add("{", ar_223);
      fd.Add("while", ar_223);
      fd.Add("for", ar_223);
      fd.Add("foreach", ar_223);
      fd.Add("using", ar_223);
      fd.Add("switch", ar_223);
      fd.Add("try", ar_223);
      fd.Add("break", ar_223);
      fd.Add("continue", ar_223);
      fd.Add("return", ar_223);
      fd.Add("throw", ar_223);
      fd.Add("true", ar_223);
      fd.Add("false", ar_223);
      fd.Add("null", ar_223);
      fd.Add("string\b", ar_223);
      fd.Add("number\b", ar_223);
      fd.Add("idn\b", ar_223);
      fd.Add("var", ar_223);
      fd.Add("new", ar_223);
      fd.Add("[", ar_223);
      fd.Add("(", ar_223);
      fd.Add("<!", ar_223);
      fd.Add("~", ar_223);
      fd.Add("-", ar_223);
      fd.Add("!", ar_223);
      fd.Add("$", ar_223);
      fd.Add("ref", ar_223);
      fd.Add("out", ar_223);
      fd.Add("catch", ar_223);
      fd.Add("else", ar_223);
      fd.Add("}", ar_223);
      fd.Add("!>", ar_223);
      fd.Add("+", ar_223);
      fd.Add("*", ar_223);
      fd.Add("/", ar_223);
      fd.Add("%", ar_223);
      fd.Add("^", ar_223);
      fd.Add("&", ar_223);
      fd.Add("|", ar_223);
      fd.Add("&&", ar_223);
      fd.Add("||", ar_223);
      fd.Add("==", ar_223);
      fd.Add("!=", ar_223);
      fd.Add(">", ar_223);
      fd.Add("<", ar_223);
      fd.Add(">=", ar_223);
      fd.Add("<=", ar_223);
      fd.Add("is", ar_223);
      fd.Add("finally", ar_223);
      fd.Add("default", ar_223);
      fd.Add("case", ar_223);
      fd.Add("]", ar_223);
      fd.Add(",", ar_223);
      fd.Add(")", ar_223);
      fd.Add(":", ar_223);
      fd = state_135.Actions;
      ActionRecord ar_224 = new ActionRecord(ParserActionType.Reduce, null, Terms_45, 2);
      fd.Add("}", ar_224);
      fd.Add(";", ar_224);
      fd.Add("if", ar_224);
      fd.Add("{", ar_224);
      fd.Add("while", ar_224);
      fd.Add("for", ar_224);
      fd.Add("foreach", ar_224);
      fd.Add("using", ar_224);
      fd.Add("switch", ar_224);
      fd.Add("try", ar_224);
      fd.Add("break", ar_224);
      fd.Add("continue", ar_224);
      fd.Add("return", ar_224);
      fd.Add("throw", ar_224);
      fd.Add("true", ar_224);
      fd.Add("false", ar_224);
      fd.Add("null", ar_224);
      fd.Add("string\b", ar_224);
      fd.Add("number\b", ar_224);
      fd.Add("idn\b", ar_224);
      fd.Add("var", ar_224);
      fd.Add("new", ar_224);
      fd.Add("function", ar_224);
      fd.Add("[", ar_224);
      fd.Add("(", ar_224);
      fd.Add("<!", ar_224);
      fd.Add("~", ar_224);
      fd.Add("-", ar_224);
      fd.Add("!", ar_224);
      fd.Add("$", ar_224);
      fd.Add("ref", ar_224);
      fd.Add("out", ar_224);
      fd.Add("default", ar_224);
      fd.Add("case", ar_224);
      fd = state_136.Actions;
      ActionRecord ar_225 = new ActionRecord(ParserActionType.Shift, state_176, null, 0);
      fd.Add("(", ar_225);
      fd = state_137.Actions;
      fd.Add("BinOp\b", ar_83);
      ActionRecord ar_226 = new ActionRecord(ParserActionType.Operator, state_78, Terms_2, 3);
      fd.Add("is", ar_226);
      ActionRecord ar_227 = new ActionRecord(ParserActionType.Operator, state_80, Terms_2, 3);
      fd.Add("+", ar_227);
      ActionRecord ar_228 = new ActionRecord(ParserActionType.Operator, state_81, Terms_2, 3);
      fd.Add("-", ar_228);
      ActionRecord ar_229 = new ActionRecord(ParserActionType.Operator, state_82, Terms_2, 3);
      fd.Add("*", ar_229);
      ActionRecord ar_230 = new ActionRecord(ParserActionType.Operator, state_83, Terms_2, 3);
      fd.Add("/", ar_230);
      ActionRecord ar_231 = new ActionRecord(ParserActionType.Operator, state_84, Terms_2, 3);
      fd.Add("%", ar_231);
      ActionRecord ar_232 = new ActionRecord(ParserActionType.Operator, state_85, Terms_2, 3);
      fd.Add("^", ar_232);
      ActionRecord ar_233 = new ActionRecord(ParserActionType.Operator, state_86, Terms_2, 3);
      fd.Add("&", ar_233);
      ActionRecord ar_234 = new ActionRecord(ParserActionType.Operator, state_87, Terms_2, 3);
      fd.Add("|", ar_234);
      ActionRecord ar_235 = new ActionRecord(ParserActionType.Operator, state_88, Terms_2, 3);
      fd.Add("&&", ar_235);
      ActionRecord ar_236 = new ActionRecord(ParserActionType.Operator, state_89, Terms_2, 3);
      fd.Add("||", ar_236);
      ActionRecord ar_237 = new ActionRecord(ParserActionType.Operator, state_90, Terms_2, 3);
      fd.Add("==", ar_237);
      ActionRecord ar_238 = new ActionRecord(ParserActionType.Operator, state_91, Terms_2, 3);
      fd.Add("!=", ar_238);
      ActionRecord ar_239 = new ActionRecord(ParserActionType.Operator, state_92, Terms_2, 3);
      fd.Add(">", ar_239);
      ActionRecord ar_240 = new ActionRecord(ParserActionType.Operator, state_93, Terms_2, 3);
      fd.Add("<", ar_240);
      ActionRecord ar_241 = new ActionRecord(ParserActionType.Operator, state_94, Terms_2, 3);
      fd.Add(">=", ar_241);
      ActionRecord ar_242 = new ActionRecord(ParserActionType.Operator, state_95, Terms_2, 3);
      fd.Add("<=", ar_242);
      ActionRecord ar_243 = new ActionRecord(ParserActionType.Reduce, null, Terms_2, 3);
      fd.Add(";", ar_243);
      fd.Add("]", ar_243);
      fd.Add(",", ar_243);
      fd.Add(")", ar_243);
      fd.Add(":", ar_243);
      fd = state_138.Actions;
      fd.Add(".", ar_192);
      ActionRecord ar_244 = new ActionRecord(ParserActionType.Reduce, null, Terms_6, 3);
      fd.Add(";", ar_244);
      fd.Add("+", ar_244);
      fd.Add("-", ar_244);
      fd.Add("*", ar_244);
      fd.Add("/", ar_244);
      fd.Add("%", ar_244);
      fd.Add("^", ar_244);
      fd.Add("&", ar_244);
      fd.Add("|", ar_244);
      fd.Add("&&", ar_244);
      fd.Add("||", ar_244);
      fd.Add("==", ar_244);
      fd.Add("!=", ar_244);
      fd.Add(">", ar_244);
      fd.Add("<", ar_244);
      fd.Add(">=", ar_244);
      fd.Add("<=", ar_244);
      fd.Add("is", ar_244);
      fd.Add("]", ar_244);
      fd.Add(",", ar_244);
      fd.Add(")", ar_244);
      fd.Add(":", ar_244);
      fd = state_139.Actions;
      ActionRecord ar_245 = new ActionRecord(ParserActionType.Reduce, null, Terms_42, 3);
      fd.Add("EOF\b", ar_245);
      fd.Add(";", ar_245);
      fd.Add("function", ar_245);
      fd.Add("if", ar_245);
      fd.Add("{", ar_245);
      fd.Add("while", ar_245);
      fd.Add("for", ar_245);
      fd.Add("foreach", ar_245);
      fd.Add("using", ar_245);
      fd.Add("switch", ar_245);
      fd.Add("try", ar_245);
      fd.Add("break", ar_245);
      fd.Add("continue", ar_245);
      fd.Add("return", ar_245);
      fd.Add("throw", ar_245);
      fd.Add("true", ar_245);
      fd.Add("false", ar_245);
      fd.Add("null", ar_245);
      fd.Add("string\b", ar_245);
      fd.Add("number\b", ar_245);
      fd.Add("idn\b", ar_245);
      fd.Add("var", ar_245);
      fd.Add("new", ar_245);
      fd.Add("[", ar_245);
      fd.Add("(", ar_245);
      fd.Add("<!", ar_245);
      fd.Add("~", ar_245);
      fd.Add("-", ar_245);
      fd.Add("!", ar_245);
      fd.Add("$", ar_245);
      fd.Add("ref", ar_245);
      fd.Add("out", ar_245);
      fd.Add("else", ar_245);
      fd.Add("}", ar_245);
      fd.Add("!>", ar_245);
      fd.Add("default", ar_245);
      fd.Add("case", ar_245);
      fd = state_140.Actions;
      fd.Add("EOF\b", ar_245);
      fd.Add(";", ar_245);
      fd.Add("function", ar_245);
      fd.Add("if", ar_245);
      fd.Add("{", ar_245);
      fd.Add("while", ar_245);
      fd.Add("for", ar_245);
      fd.Add("foreach", ar_245);
      fd.Add("using", ar_245);
      fd.Add("switch", ar_245);
      fd.Add("try", ar_245);
      fd.Add("break", ar_245);
      fd.Add("continue", ar_245);
      fd.Add("return", ar_245);
      fd.Add("throw", ar_245);
      fd.Add("true", ar_245);
      fd.Add("false", ar_245);
      fd.Add("null", ar_245);
      fd.Add("string\b", ar_245);
      fd.Add("number\b", ar_245);
      fd.Add("idn\b", ar_245);
      fd.Add("var", ar_245);
      fd.Add("new", ar_245);
      fd.Add("[", ar_245);
      fd.Add("(", ar_245);
      fd.Add("<!", ar_245);
      fd.Add("~", ar_245);
      fd.Add("-", ar_245);
      fd.Add("!", ar_245);
      fd.Add("$", ar_245);
      fd.Add("ref", ar_245);
      fd.Add("out", ar_245);
      fd.Add("else", ar_245);
      fd.Add("}", ar_245);
      fd.Add("!>", ar_245);
      fd.Add("default", ar_245);
      fd.Add("case", ar_245);
      fd = state_141.Actions;
      ActionRecord ar_246 = new ActionRecord(ParserActionType.Shift, state_177, null, 0);
      fd.Add("*\b", ar_246);
      ActionRecord ar_247 = new ActionRecord(ParserActionType.Reduce, null, Terms_56, 0);
      fd.Add("<|", ar_247);
      fd.Add("[", ar_247);
      fd.Add("(", ar_247);
      fd.Add(".", ar_247);
      fd.Add("=", ar_247);
      fd.Add("++", ar_247);
      fd.Add("--", ar_247);
      fd.Add(":=", ar_247);
      fd.Add("+=", ar_247);
      fd.Add("-=", ar_247);
      fd.Add(";", ar_247);
      fd.Add("+", ar_247);
      fd.Add("-", ar_247);
      fd.Add("*", ar_247);
      fd.Add("/", ar_247);
      fd.Add("%", ar_247);
      fd.Add("^", ar_247);
      fd.Add("&", ar_247);
      fd.Add("|", ar_247);
      fd.Add("&&", ar_247);
      fd.Add("||", ar_247);
      fd.Add("==", ar_247);
      fd.Add("!=", ar_247);
      fd.Add(">", ar_247);
      fd.Add("<", ar_247);
      fd.Add(">=", ar_247);
      fd.Add("<=", ar_247);
      fd.Add("is", ar_247);
      fd.Add("]", ar_247);
      fd.Add(",", ar_247);
      fd.Add(")", ar_247);
      fd.Add(":", ar_247);
      fd = state_142.Actions;
      fd.Add("BinOp\b", ar_83);
      ActionRecord ar_248 = new ActionRecord(ParserActionType.Operator, state_78, Terms_4, 3);
      fd.Add("is", ar_248);
      ActionRecord ar_249 = new ActionRecord(ParserActionType.Operator, state_80, Terms_4, 3);
      fd.Add("+", ar_249);
      ActionRecord ar_250 = new ActionRecord(ParserActionType.Operator, state_81, Terms_4, 3);
      fd.Add("-", ar_250);
      ActionRecord ar_251 = new ActionRecord(ParserActionType.Operator, state_82, Terms_4, 3);
      fd.Add("*", ar_251);
      ActionRecord ar_252 = new ActionRecord(ParserActionType.Operator, state_83, Terms_4, 3);
      fd.Add("/", ar_252);
      ActionRecord ar_253 = new ActionRecord(ParserActionType.Operator, state_84, Terms_4, 3);
      fd.Add("%", ar_253);
      ActionRecord ar_254 = new ActionRecord(ParserActionType.Operator, state_85, Terms_4, 3);
      fd.Add("^", ar_254);
      ActionRecord ar_255 = new ActionRecord(ParserActionType.Operator, state_86, Terms_4, 3);
      fd.Add("&", ar_255);
      ActionRecord ar_256 = new ActionRecord(ParserActionType.Operator, state_87, Terms_4, 3);
      fd.Add("|", ar_256);
      ActionRecord ar_257 = new ActionRecord(ParserActionType.Operator, state_88, Terms_4, 3);
      fd.Add("&&", ar_257);
      ActionRecord ar_258 = new ActionRecord(ParserActionType.Operator, state_89, Terms_4, 3);
      fd.Add("||", ar_258);
      ActionRecord ar_259 = new ActionRecord(ParserActionType.Operator, state_90, Terms_4, 3);
      fd.Add("==", ar_259);
      ActionRecord ar_260 = new ActionRecord(ParserActionType.Operator, state_91, Terms_4, 3);
      fd.Add("!=", ar_260);
      ActionRecord ar_261 = new ActionRecord(ParserActionType.Operator, state_92, Terms_4, 3);
      fd.Add(">", ar_261);
      ActionRecord ar_262 = new ActionRecord(ParserActionType.Operator, state_93, Terms_4, 3);
      fd.Add("<", ar_262);
      ActionRecord ar_263 = new ActionRecord(ParserActionType.Operator, state_94, Terms_4, 3);
      fd.Add(">=", ar_263);
      ActionRecord ar_264 = new ActionRecord(ParserActionType.Operator, state_95, Terms_4, 3);
      fd.Add("<=", ar_264);
      ActionRecord ar_265 = new ActionRecord(ParserActionType.Reduce, null, Terms_4, 3);
      fd.Add(";", ar_265);
      fd.Add("]", ar_265);
      fd.Add(",", ar_265);
      fd.Add(")", ar_265);
      fd.Add(":", ar_265);
      fd = state_143.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_248);
      fd.Add("+", ar_249);
      fd.Add("-", ar_250);
      fd.Add("*", ar_251);
      fd.Add("/", ar_252);
      fd.Add("%", ar_253);
      fd.Add("^", ar_254);
      fd.Add("&", ar_255);
      fd.Add("|", ar_256);
      fd.Add("&&", ar_257);
      fd.Add("||", ar_258);
      fd.Add("==", ar_259);
      fd.Add("!=", ar_260);
      fd.Add(">", ar_261);
      fd.Add("<", ar_262);
      fd.Add(">=", ar_263);
      fd.Add("<=", ar_264);
      fd.Add(";", ar_265);
      fd.Add("]", ar_265);
      fd.Add(",", ar_265);
      fd.Add(")", ar_265);
      fd.Add(":", ar_265);
      fd = state_144.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_248);
      fd.Add("+", ar_249);
      fd.Add("-", ar_250);
      fd.Add("*", ar_251);
      fd.Add("/", ar_252);
      fd.Add("%", ar_253);
      fd.Add("^", ar_254);
      fd.Add("&", ar_255);
      fd.Add("|", ar_256);
      fd.Add("&&", ar_257);
      fd.Add("||", ar_258);
      fd.Add("==", ar_259);
      fd.Add("!=", ar_260);
      fd.Add(">", ar_261);
      fd.Add("<", ar_262);
      fd.Add(">=", ar_263);
      fd.Add("<=", ar_264);
      fd.Add(";", ar_265);
      fd.Add("]", ar_265);
      fd.Add(",", ar_265);
      fd.Add(")", ar_265);
      fd.Add(":", ar_265);
      fd = state_145.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_248);
      fd.Add("+", ar_249);
      fd.Add("-", ar_250);
      fd.Add("*", ar_251);
      fd.Add("/", ar_252);
      fd.Add("%", ar_253);
      fd.Add("^", ar_254);
      fd.Add("&", ar_255);
      fd.Add("|", ar_256);
      fd.Add("&&", ar_257);
      fd.Add("||", ar_258);
      fd.Add("==", ar_259);
      fd.Add("!=", ar_260);
      fd.Add(">", ar_261);
      fd.Add("<", ar_262);
      fd.Add(">=", ar_263);
      fd.Add("<=", ar_264);
      fd.Add(";", ar_265);
      fd.Add("]", ar_265);
      fd.Add(",", ar_265);
      fd.Add(")", ar_265);
      fd.Add(":", ar_265);
      fd = state_146.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_248);
      fd.Add("+", ar_249);
      fd.Add("-", ar_250);
      fd.Add("*", ar_251);
      fd.Add("/", ar_252);
      fd.Add("%", ar_253);
      fd.Add("^", ar_254);
      fd.Add("&", ar_255);
      fd.Add("|", ar_256);
      fd.Add("&&", ar_257);
      fd.Add("||", ar_258);
      fd.Add("==", ar_259);
      fd.Add("!=", ar_260);
      fd.Add(">", ar_261);
      fd.Add("<", ar_262);
      fd.Add(">=", ar_263);
      fd.Add("<=", ar_264);
      fd.Add(";", ar_265);
      fd.Add("]", ar_265);
      fd.Add(",", ar_265);
      fd.Add(")", ar_265);
      fd.Add(":", ar_265);
      fd = state_147.Actions;
      ActionRecord ar_266 = new ActionRecord(ParserActionType.Reduce, null, Terms_55, 2);
      fd.Add("<|", ar_266);
      fd.Add("[", ar_266);
      fd.Add("(", ar_266);
      fd.Add(".", ar_266);
      fd.Add("=", ar_266);
      fd.Add("++", ar_266);
      fd.Add("--", ar_266);
      fd.Add(":=", ar_266);
      fd.Add("+=", ar_266);
      fd.Add("-=", ar_266);
      fd.Add(";", ar_266);
      fd.Add("+", ar_266);
      fd.Add("-", ar_266);
      fd.Add("*", ar_266);
      fd.Add("/", ar_266);
      fd.Add("%", ar_266);
      fd.Add("^", ar_266);
      fd.Add("&", ar_266);
      fd.Add("|", ar_266);
      fd.Add("&&", ar_266);
      fd.Add("||", ar_266);
      fd.Add("==", ar_266);
      fd.Add("!=", ar_266);
      fd.Add(">", ar_266);
      fd.Add("<", ar_266);
      fd.Add(">=", ar_266);
      fd.Add("<=", ar_266);
      fd.Add("is", ar_266);
      fd.Add("]", ar_266);
      fd.Add(",", ar_266);
      fd.Add(")", ar_266);
      fd.Add(":", ar_266);
      fd = state_148.Actions;
      ActionRecord ar_267 = new ActionRecord(ParserActionType.Reduce, null, Terms_63, 1);
      fd.Add("<|", ar_267);
      fd.Add("[", ar_267);
      fd.Add("(", ar_267);
      fd.Add(".", ar_267);
      fd.Add("=", ar_267);
      fd.Add("++", ar_267);
      fd.Add("--", ar_267);
      fd.Add(":=", ar_267);
      fd.Add("+=", ar_267);
      fd.Add("-=", ar_267);
      fd.Add(";", ar_267);
      fd.Add("+", ar_267);
      fd.Add("-", ar_267);
      fd.Add("*", ar_267);
      fd.Add("/", ar_267);
      fd.Add("%", ar_267);
      fd.Add("^", ar_267);
      fd.Add("&", ar_267);
      fd.Add("|", ar_267);
      fd.Add("&&", ar_267);
      fd.Add("||", ar_267);
      fd.Add("==", ar_267);
      fd.Add("!=", ar_267);
      fd.Add(">", ar_267);
      fd.Add("<", ar_267);
      fd.Add(">=", ar_267);
      fd.Add("<=", ar_267);
      fd.Add("is", ar_267);
      fd.Add("]", ar_267);
      fd.Add(",", ar_267);
      fd.Add(")", ar_267);
      fd.Add(":", ar_267);
      fd = state_149.Actions;
      fd.Add("<|", ar_267);
      fd.Add("[", ar_267);
      fd.Add("(", ar_267);
      fd.Add(".", ar_267);
      fd.Add("=", ar_267);
      fd.Add("++", ar_267);
      fd.Add("--", ar_267);
      fd.Add(":=", ar_267);
      fd.Add("+=", ar_267);
      fd.Add("-=", ar_267);
      fd.Add(";", ar_267);
      fd.Add("+", ar_267);
      fd.Add("-", ar_267);
      fd.Add("*", ar_267);
      fd.Add("/", ar_267);
      fd.Add("%", ar_267);
      fd.Add("^", ar_267);
      fd.Add("&", ar_267);
      fd.Add("|", ar_267);
      fd.Add("&&", ar_267);
      fd.Add("||", ar_267);
      fd.Add("==", ar_267);
      fd.Add("!=", ar_267);
      fd.Add(">", ar_267);
      fd.Add("<", ar_267);
      fd.Add(">=", ar_267);
      fd.Add("<=", ar_267);
      fd.Add("is", ar_267);
      fd.Add("]", ar_267);
      fd.Add(",", ar_267);
      fd.Add(")", ar_267);
      fd.Add(":", ar_267);
      fd = state_150.Actions;
      fd.Add("<|", ar_267);
      fd.Add("[", ar_267);
      fd.Add("(", ar_267);
      fd.Add(".", ar_267);
      fd.Add("=", ar_267);
      fd.Add("++", ar_267);
      fd.Add("--", ar_267);
      fd.Add(":=", ar_267);
      fd.Add("+=", ar_267);
      fd.Add("-=", ar_267);
      fd.Add(";", ar_267);
      fd.Add("+", ar_267);
      fd.Add("-", ar_267);
      fd.Add("*", ar_267);
      fd.Add("/", ar_267);
      fd.Add("%", ar_267);
      fd.Add("^", ar_267);
      fd.Add("&", ar_267);
      fd.Add("|", ar_267);
      fd.Add("&&", ar_267);
      fd.Add("||", ar_267);
      fd.Add("==", ar_267);
      fd.Add("!=", ar_267);
      fd.Add(">", ar_267);
      fd.Add("<", ar_267);
      fd.Add(">=", ar_267);
      fd.Add("<=", ar_267);
      fd.Add("is", ar_267);
      fd.Add("]", ar_267);
      fd.Add(",", ar_267);
      fd.Add(")", ar_267);
      fd.Add(":", ar_267);
      fd = state_151.Actions;
      ActionRecord ar_268 = new ActionRecord(ParserActionType.Shift, state_178, null, 0);
      fd.Add("TypeList\b", ar_268);
      ActionRecord ar_269 = new ActionRecord(ParserActionType.Shift, state_179, null, 0);
      fd.Add("TypeExpr\b", ar_269);
      fd.Add("idn\b", ar_123);
      fd = state_152.Actions;
      ActionRecord ar_270 = new ActionRecord(ParserActionType.Shift, state_180, null, 0);
      fd.Add("ExprList\b", ar_270);
      fd.Add("Expr\b", ar_126);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_153.Actions;
      ActionRecord ar_271 = new ActionRecord(ParserActionType.Shift, state_181, null, 0);
      fd.Add("\b", ar_271);
      ActionRecord ar_272 = new ActionRecord(ParserActionType.Shift, state_182, null, 0);
      fd.Add("ExprList\b", ar_272);
      fd.Add("Expr\b", ar_126);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      ActionRecord ar_273 = new ActionRecord(ParserActionType.Reduce, null, Terms_64, 0);
      fd.Add(")", ar_273);
      fd = state_154.Actions;
      ActionRecord ar_274 = new ActionRecord(ParserActionType.Shift, state_183, null, 0);
      fd.Add("\b", ar_274);
      ActionRecord ar_275 = new ActionRecord(ParserActionType.Shift, state_184, null, 0);
      fd.Add("idn\b", ar_275);
      fd = state_155.Actions;
      ActionRecord ar_276 = new ActionRecord(ParserActionType.Reduce, null, Terms_12, 2);
      fd.Add(";", ar_276);
      fd.Add("+", ar_276);
      fd.Add("-", ar_276);
      fd.Add("*", ar_276);
      fd.Add("/", ar_276);
      fd.Add("%", ar_276);
      fd.Add("^", ar_276);
      fd.Add("&", ar_276);
      fd.Add("|", ar_276);
      fd.Add("&&", ar_276);
      fd.Add("||", ar_276);
      fd.Add("==", ar_276);
      fd.Add("!=", ar_276);
      fd.Add(">", ar_276);
      fd.Add("<", ar_276);
      fd.Add(">=", ar_276);
      fd.Add("<=", ar_276);
      fd.Add("is", ar_276);
      fd.Add("]", ar_276);
      fd.Add(",", ar_276);
      fd.Add(")", ar_276);
      fd.Add(":", ar_276);
      fd = state_156.Actions;
      ActionRecord ar_277 = new ActionRecord(ParserActionType.Reduce, null, Terms_25, 3);
      fd.Add(";", ar_277);
      fd.Add("+", ar_277);
      fd.Add("-", ar_277);
      fd.Add("*", ar_277);
      fd.Add("/", ar_277);
      fd.Add("%", ar_277);
      fd.Add("^", ar_277);
      fd.Add("&", ar_277);
      fd.Add("|", ar_277);
      fd.Add("&&", ar_277);
      fd.Add("||", ar_277);
      fd.Add("==", ar_277);
      fd.Add("!=", ar_277);
      fd.Add(">", ar_277);
      fd.Add("<", ar_277);
      fd.Add(">=", ar_277);
      fd.Add("<=", ar_277);
      fd.Add("is", ar_277);
      fd.Add("]", ar_277);
      fd.Add(",", ar_277);
      fd.Add(")", ar_277);
      fd.Add(":", ar_277);
      fd = state_157.Actions;
      ActionRecord ar_278 = new ActionRecord(ParserActionType.Reduce, null, Terms_11, 2);
      fd.Add("[", ar_278);
      fd.Add("(", ar_278);
      fd.Add(".", ar_278);
      fd.Add(";", ar_278);
      fd.Add("+", ar_278);
      fd.Add("-", ar_278);
      fd.Add("*", ar_278);
      fd.Add("/", ar_278);
      fd.Add("%", ar_278);
      fd.Add("^", ar_278);
      fd.Add("&", ar_278);
      fd.Add("|", ar_278);
      fd.Add("&&", ar_278);
      fd.Add("||", ar_278);
      fd.Add("==", ar_278);
      fd.Add("!=", ar_278);
      fd.Add(">", ar_278);
      fd.Add("<", ar_278);
      fd.Add(">=", ar_278);
      fd.Add("<=", ar_278);
      fd.Add("is", ar_278);
      fd.Add("|>", ar_278);
      fd.Add(",", ar_278);
      fd.Add("]", ar_278);
      fd.Add(")", ar_278);
      fd.Add(":", ar_278);
      fd = state_158.Actions;
      ActionRecord ar_279 = new ActionRecord(ParserActionType.Reduce, null, Terms_60, 1);
      fd.Add("[", ar_279);
      fd.Add("(", ar_279);
      fd.Add(".", ar_279);
      fd.Add(";", ar_279);
      fd.Add("+", ar_279);
      fd.Add("-", ar_279);
      fd.Add("*", ar_279);
      fd.Add("/", ar_279);
      fd.Add("%", ar_279);
      fd.Add("^", ar_279);
      fd.Add("&", ar_279);
      fd.Add("|", ar_279);
      fd.Add("&&", ar_279);
      fd.Add("||", ar_279);
      fd.Add("==", ar_279);
      fd.Add("!=", ar_279);
      fd.Add(">", ar_279);
      fd.Add("<", ar_279);
      fd.Add(">=", ar_279);
      fd.Add("<=", ar_279);
      fd.Add("is", ar_279);
      fd.Add("|>", ar_279);
      fd.Add(",", ar_279);
      fd.Add("]", ar_279);
      fd.Add(")", ar_279);
      fd.Add(":", ar_279);
      fd = state_159.Actions;
      ActionRecord ar_280 = new ActionRecord(ParserActionType.Shift, state_185, null, 0);
      fd.Add("Expr\b", ar_280);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_160.Actions;
      ActionRecord ar_281 = new ActionRecord(ParserActionType.Reduce, null, Terms_18, 3);
      fd.Add(";", ar_281);
      fd.Add("+", ar_281);
      fd.Add("-", ar_281);
      fd.Add("*", ar_281);
      fd.Add("/", ar_281);
      fd.Add("%", ar_281);
      fd.Add("^", ar_281);
      fd.Add("&", ar_281);
      fd.Add("|", ar_281);
      fd.Add("&&", ar_281);
      fd.Add("||", ar_281);
      fd.Add("==", ar_281);
      fd.Add("!=", ar_281);
      fd.Add(">", ar_281);
      fd.Add("<", ar_281);
      fd.Add(">=", ar_281);
      fd.Add("<=", ar_281);
      fd.Add("is", ar_281);
      fd.Add("]", ar_281);
      fd.Add(",", ar_281);
      fd.Add(")", ar_281);
      fd.Add(":", ar_281);
      fd = state_161.Actions;
      ActionRecord ar_282 = new ActionRecord(ParserActionType.Reduce, null, Terms_19, 3);
      fd.Add(";", ar_282);
      fd.Add("+", ar_282);
      fd.Add("-", ar_282);
      fd.Add("*", ar_282);
      fd.Add("/", ar_282);
      fd.Add("%", ar_282);
      fd.Add("^", ar_282);
      fd.Add("&", ar_282);
      fd.Add("|", ar_282);
      fd.Add("&&", ar_282);
      fd.Add("||", ar_282);
      fd.Add("==", ar_282);
      fd.Add("!=", ar_282);
      fd.Add(">", ar_282);
      fd.Add("<", ar_282);
      fd.Add(">=", ar_282);
      fd.Add("<=", ar_282);
      fd.Add("is", ar_282);
      fd.Add("]", ar_282);
      fd.Add(",", ar_282);
      fd.Add(")", ar_282);
      fd.Add(":", ar_282);
      fd = state_162.Actions;
      ActionRecord ar_283 = new ActionRecord(ParserActionType.Shift, state_186, null, 0);
      fd.Add("MObjectPart\b", ar_283);
      ActionRecord ar_284 = new ActionRecord(ParserActionType.Shift, state_187, null, 0);
      fd.Add("idn\b", ar_284);
      fd = state_163.Actions;
      ActionRecord ar_285 = new ActionRecord(ParserActionType.Shift, state_188, null, 0);
      fd.Add("Expr\b", ar_285);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_164.Actions;
      ActionRecord ar_286 = new ActionRecord(ParserActionType.Shift, state_189, null, 0);
      fd.Add("\b", ar_286);
      ActionRecord ar_287 = new ActionRecord(ParserActionType.Shift, state_190, null, 0);
      fd.Add("Expr\b", ar_287);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      ActionRecord ar_288 = new ActionRecord(ParserActionType.Operator, state_61, Terms_71, 0);
      fd.Add("-", ar_288);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      ActionRecord ar_289 = new ActionRecord(ParserActionType.Reduce, null, Terms_71, 0);
      fd.Add(";", ar_289);
      fd.Add("+", ar_289);
      fd.Add("*", ar_289);
      fd.Add("/", ar_289);
      fd.Add("%", ar_289);
      fd.Add("^", ar_289);
      fd.Add("&", ar_289);
      fd.Add("|", ar_289);
      fd.Add("&&", ar_289);
      fd.Add("||", ar_289);
      fd.Add("==", ar_289);
      fd.Add("!=", ar_289);
      fd.Add(">", ar_289);
      fd.Add("<", ar_289);
      fd.Add(">=", ar_289);
      fd.Add("<=", ar_289);
      fd.Add("is", ar_289);
      fd.Add("]", ar_289);
      fd.Add(",", ar_289);
      fd.Add(")", ar_289);
      fd.Add(":", ar_289);
      fd = state_165.Actions;
      ActionRecord ar_290 = new ActionRecord(ParserActionType.Reduce, null, Terms_7, 3);
      fd.Add(";", ar_290);
      fd.Add("+", ar_290);
      fd.Add("-", ar_290);
      fd.Add("*", ar_290);
      fd.Add("/", ar_290);
      fd.Add("%", ar_290);
      fd.Add("^", ar_290);
      fd.Add("&", ar_290);
      fd.Add("|", ar_290);
      fd.Add("&&", ar_290);
      fd.Add("||", ar_290);
      fd.Add("==", ar_290);
      fd.Add("!=", ar_290);
      fd.Add(">", ar_290);
      fd.Add("<", ar_290);
      fd.Add(">=", ar_290);
      fd.Add("<=", ar_290);
      fd.Add("is", ar_290);
      fd.Add("]", ar_290);
      fd.Add(",", ar_290);
      fd.Add(")", ar_290);
      fd.Add(":", ar_290);
      fd = state_166.Actions;
      ActionRecord ar_291 = new ActionRecord(ParserActionType.Shift, state_191, null, 0);
      fd.Add("\b", ar_291);
      ActionRecord ar_292 = new ActionRecord(ParserActionType.Shift, state_192, null, 0);
      fd.Add("GlobalList\b", ar_292);
      ActionRecord ar_293 = new ActionRecord(ParserActionType.Shift, state_193, null, 0);
      fd.Add("global", ar_293);
      ActionRecord ar_294 = new ActionRecord(ParserActionType.Reduce, null, Terms_66, 0);
      fd.Add("{", ar_294);
      fd.Add("[", ar_294);
      fd = state_167.Actions;
      ActionRecord ar_295 = new ActionRecord(ParserActionType.Shift, state_194, null, 0);
      fd.Add("idn\b", ar_295);
      fd = state_168.Actions;
      ActionRecord ar_296 = new ActionRecord(ParserActionType.Shift, state_195, null, 0);
      fd.Add(")", ar_296);
      fd = state_169.Actions;
      ActionRecord ar_297 = new ActionRecord(ParserActionType.Reduce, null, Terms_31, 4);
      fd.Add("EOF\b", ar_297);
      fd.Add(";", ar_297);
      fd.Add("function", ar_297);
      fd.Add("if", ar_297);
      fd.Add("{", ar_297);
      fd.Add("while", ar_297);
      fd.Add("for", ar_297);
      fd.Add("foreach", ar_297);
      fd.Add("using", ar_297);
      fd.Add("switch", ar_297);
      fd.Add("try", ar_297);
      fd.Add("break", ar_297);
      fd.Add("continue", ar_297);
      fd.Add("return", ar_297);
      fd.Add("throw", ar_297);
      fd.Add("true", ar_297);
      fd.Add("false", ar_297);
      fd.Add("null", ar_297);
      fd.Add("string\b", ar_297);
      fd.Add("number\b", ar_297);
      fd.Add("idn\b", ar_297);
      fd.Add("var", ar_297);
      fd.Add("new", ar_297);
      fd.Add("[", ar_297);
      fd.Add("(", ar_297);
      fd.Add("<!", ar_297);
      fd.Add("~", ar_297);
      fd.Add("-", ar_297);
      fd.Add("!", ar_297);
      fd.Add("$", ar_297);
      fd.Add("ref", ar_297);
      fd.Add("out", ar_297);
      fd.Add("else", ar_297);
      fd.Add("}", ar_297);
      fd.Add("!>", ar_297);
      fd.Add("default", ar_297);
      fd.Add("case", ar_297);
      fd = state_170.Actions;
      ActionRecord ar_298 = new ActionRecord(ParserActionType.Shift, state_196, null, 0);
      fd.Add("Statement\b", ar_298);
      fd.Add(";", ar_8);
      fd.Add("IfStatement\b", ar_9);
      fd.Add("WhileStatement\b", ar_10);
      fd.Add("ForStatement\b", ar_11);
      fd.Add("ForEachStatement\b", ar_12);
      fd.Add("UsingStatement\b", ar_13);
      fd.Add("SwitchStatement\b", ar_14);
      fd.Add("BlockStatement\b", ar_15);
      fd.Add("TryCatchFinallyStatement\b", ar_16);
      fd.Add("ExprStatement\b", ar_17);
      fd.Add("FlowControl\b", ar_18);
      fd.Add("if", ar_20);
      fd.Add("while", ar_21);
      fd.Add("for", ar_22);
      fd.Add("foreach", ar_23);
      fd.Add("using", ar_24);
      fd.Add("switch", ar_25);
      fd.Add("{", ar_26);
      fd.Add("try", ar_27);
      fd.Add("Expr\b", ar_28);
      fd.Add("break", ar_29);
      fd.Add("continue", ar_30);
      fd.Add("return", ar_31);
      fd.Add("throw", ar_32);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_171.Actions;
      ActionRecord ar_299 = new ActionRecord(ParserActionType.Reduce, null, Terms_29, 3);
      fd.Add(";", ar_299);
      fd.Add("if", ar_299);
      fd.Add("{", ar_299);
      fd.Add("while", ar_299);
      fd.Add("for", ar_299);
      fd.Add("foreach", ar_299);
      fd.Add("using", ar_299);
      fd.Add("switch", ar_299);
      fd.Add("try", ar_299);
      fd.Add("break", ar_299);
      fd.Add("continue", ar_299);
      fd.Add("return", ar_299);
      fd.Add("throw", ar_299);
      fd.Add("true", ar_299);
      fd.Add("false", ar_299);
      fd.Add("null", ar_299);
      fd.Add("string\b", ar_299);
      fd.Add("number\b", ar_299);
      fd.Add("idn\b", ar_299);
      fd.Add("var", ar_299);
      fd.Add("new", ar_299);
      fd.Add("function", ar_299);
      fd.Add("[", ar_299);
      fd.Add("(", ar_299);
      fd.Add("<!", ar_299);
      fd.Add("~", ar_299);
      fd.Add("-", ar_299);
      fd.Add("!", ar_299);
      fd.Add("$", ar_299);
      fd.Add("ref", ar_299);
      fd.Add("out", ar_299);
      fd = state_172.Actions;
      ActionRecord ar_300 = new ActionRecord(ParserActionType.Shift, state_197, null, 0);
      fd.Add("OptionalExpression\b", ar_300);
      fd.Add("Expr\b", ar_143);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd.Add(";", ar_144);
      fd = state_173.Actions;
      ActionRecord ar_301 = new ActionRecord(ParserActionType.Shift, state_198, null, 0);
      fd.Add("Expr\b", ar_301);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_174.Actions;
      ActionRecord ar_302 = new ActionRecord(ParserActionType.Shift, state_199, null, 0);
      fd.Add("BlockStatement\b", ar_302);
      fd.Add("{", ar_26);
      fd = state_175.Actions;
      ActionRecord ar_303 = new ActionRecord(ParserActionType.Shift, state_200, null, 0);
      fd.Add("{", ar_303);
      fd = state_176.Actions;
      ActionRecord ar_304 = new ActionRecord(ParserActionType.Shift, state_201, null, 0);
      fd.Add("idn\b", ar_304);
      fd = state_177.Actions;
      ActionRecord ar_305 = new ActionRecord(ParserActionType.Shift, state_202, null, 0);
      fd.Add("\b", ar_305);
      ActionRecord ar_306 = new ActionRecord(ParserActionType.Shift, state_203, null, 0);
      fd.Add("GenericsPostfix\b", ar_306);
      ActionRecord ar_307 = new ActionRecord(ParserActionType.Shift, state_204, null, 0);
      fd.Add("ArrayResolution\b", ar_307);
      ActionRecord ar_308 = new ActionRecord(ParserActionType.Shift, state_205, null, 0);
      fd.Add("FunctionCall\b", ar_308);
      fd.Add("<|", ar_187);
      fd.Add("[", ar_188);
      fd.Add("(", ar_189);
      ActionRecord ar_309 = new ActionRecord(ParserActionType.Reduce, null, Terms_26, 4);
      fd.Add(".", ar_309);
      fd.Add("=", ar_309);
      fd.Add("++", ar_309);
      fd.Add("--", ar_309);
      fd.Add(":=", ar_309);
      fd.Add("+=", ar_309);
      fd.Add("-=", ar_309);
      fd.Add(";", ar_309);
      fd.Add("+", ar_309);
      fd.Add("-", ar_309);
      fd.Add("*", ar_309);
      fd.Add("/", ar_309);
      fd.Add("%", ar_309);
      fd.Add("^", ar_309);
      fd.Add("&", ar_309);
      fd.Add("|", ar_309);
      fd.Add("&&", ar_309);
      fd.Add("||", ar_309);
      fd.Add("==", ar_309);
      fd.Add("!=", ar_309);
      fd.Add(">", ar_309);
      fd.Add("<", ar_309);
      fd.Add(">=", ar_309);
      fd.Add("<=", ar_309);
      fd.Add("is", ar_309);
      fd.Add("]", ar_309);
      fd.Add(",", ar_309);
      fd.Add(")", ar_309);
      fd.Add(":", ar_309);
      fd = state_178.Actions;
      ActionRecord ar_310 = new ActionRecord(ParserActionType.Shift, state_206, null, 0);
      fd.Add("|>", ar_310);
      ActionRecord ar_311 = new ActionRecord(ParserActionType.Shift, state_207, null, 0);
      fd.Add(",", ar_311);
      fd = state_179.Actions;
      fd.Add(".", ar_192);
      ActionRecord ar_312 = new ActionRecord(ParserActionType.Reduce, null, Terms_22, 1);
      fd.Add("|>", ar_312);
      fd.Add(",", ar_312);
      fd = state_180.Actions;
      ActionRecord ar_313 = new ActionRecord(ParserActionType.Shift, state_208, null, 0);
      fd.Add("]", ar_313);
      fd.Add(",", ar_198);
      fd = state_181.Actions;
      ActionRecord ar_314 = new ActionRecord(ParserActionType.Shift, state_209, null, 0);
      fd.Add(")", ar_314);
      fd.Add("idn\b", ar_130);
      fd = state_182.Actions;
      fd.Add(",", ar_198);
      ActionRecord ar_315 = new ActionRecord(ParserActionType.Reduce, null, Terms_64, 1);
      fd.Add(")", ar_315);
      fd = state_183.Actions;
      ActionRecord ar_316 = new ActionRecord(ParserActionType.Reduce, null, Terms_11, 3);
      fd.Add("[", ar_316);
      fd.Add("(", ar_316);
      fd.Add(".", ar_316);
      fd.Add(";", ar_316);
      fd.Add("+", ar_316);
      fd.Add("-", ar_316);
      fd.Add("*", ar_316);
      fd.Add("/", ar_316);
      fd.Add("%", ar_316);
      fd.Add("^", ar_316);
      fd.Add("&", ar_316);
      fd.Add("|", ar_316);
      fd.Add("&&", ar_316);
      fd.Add("||", ar_316);
      fd.Add("==", ar_316);
      fd.Add("!=", ar_316);
      fd.Add(">", ar_316);
      fd.Add("<", ar_316);
      fd.Add(">=", ar_316);
      fd.Add("<=", ar_316);
      fd.Add("is", ar_316);
      fd.Add("|>", ar_316);
      fd.Add(",", ar_316);
      fd.Add("]", ar_316);
      fd.Add(")", ar_316);
      fd.Add(":", ar_316);
      fd = state_184.Actions;
      ActionRecord ar_317 = new ActionRecord(ParserActionType.Shift, state_210, null, 0);
      fd.Add("\b", ar_317);
      ActionRecord ar_318 = new ActionRecord(ParserActionType.Shift, state_211, null, 0);
      fd.Add("GenericsPostfix\b", ar_318);
      fd.Add("<|", ar_187);
      ActionRecord ar_319 = new ActionRecord(ParserActionType.Reduce, null, Terms_62, 0);
      fd.Add("[", ar_319);
      fd.Add("(", ar_319);
      fd.Add(".", ar_319);
      fd.Add(";", ar_319);
      fd.Add("+", ar_319);
      fd.Add("-", ar_319);
      fd.Add("*", ar_319);
      fd.Add("/", ar_319);
      fd.Add("%", ar_319);
      fd.Add("^", ar_319);
      fd.Add("&", ar_319);
      fd.Add("|", ar_319);
      fd.Add("&&", ar_319);
      fd.Add("||", ar_319);
      fd.Add("==", ar_319);
      fd.Add("!=", ar_319);
      fd.Add(">", ar_319);
      fd.Add("<", ar_319);
      fd.Add(">=", ar_319);
      fd.Add("<=", ar_319);
      fd.Add("is", ar_319);
      fd.Add("|>", ar_319);
      fd.Add(",", ar_319);
      fd.Add("]", ar_319);
      fd.Add(")", ar_319);
      fd.Add(":", ar_319);
      fd = state_185.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_84);
      fd.Add("+", ar_86);
      fd.Add("-", ar_87);
      fd.Add("*", ar_88);
      fd.Add("/", ar_89);
      fd.Add("%", ar_90);
      fd.Add("^", ar_91);
      fd.Add("&", ar_92);
      fd.Add("|", ar_93);
      fd.Add("&&", ar_94);
      fd.Add("||", ar_95);
      fd.Add("==", ar_96);
      fd.Add("!=", ar_97);
      fd.Add(">", ar_98);
      fd.Add("<", ar_99);
      fd.Add(">=", ar_100);
      fd.Add("<=", ar_101);
      ActionRecord ar_320 = new ActionRecord(ParserActionType.Reduce, null, Terms_23, 3);
      fd.Add("]", ar_320);
      fd.Add(",", ar_320);
      fd.Add(")", ar_320);
      fd = state_186.Actions;
      ActionRecord ar_321 = new ActionRecord(ParserActionType.Reduce, null, Terms_21, 3);
      fd.Add("]", ar_321);
      fd.Add(",", ar_321);
      fd = state_187.Actions;
      fd.Add("->", ar_203);
      fd = state_188.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_84);
      fd.Add("+", ar_86);
      fd.Add("-", ar_87);
      fd.Add("*", ar_88);
      fd.Add("/", ar_89);
      fd.Add("%", ar_90);
      fd.Add("^", ar_91);
      fd.Add("&", ar_92);
      fd.Add("|", ar_93);
      fd.Add("&&", ar_94);
      fd.Add("||", ar_95);
      fd.Add("==", ar_96);
      fd.Add("!=", ar_97);
      fd.Add(">", ar_98);
      fd.Add("<", ar_99);
      fd.Add(">=", ar_100);
      fd.Add("<=", ar_101);
      ActionRecord ar_322 = new ActionRecord(ParserActionType.Reduce, null, Terms_20, 3);
      fd.Add("]", ar_322);
      fd.Add(",", ar_322);
      fd = state_189.Actions;
      fd.Add("idn\b", ar_130);
      ActionRecord ar_323 = new ActionRecord(ParserActionType.Reduce, null, Terms_5, 4);
      fd.Add(";", ar_323);
      fd.Add("+", ar_323);
      fd.Add("-", ar_323);
      fd.Add("*", ar_323);
      fd.Add("/", ar_323);
      fd.Add("%", ar_323);
      fd.Add("^", ar_323);
      fd.Add("&", ar_323);
      fd.Add("|", ar_323);
      fd.Add("&&", ar_323);
      fd.Add("||", ar_323);
      fd.Add("==", ar_323);
      fd.Add("!=", ar_323);
      fd.Add(">", ar_323);
      fd.Add("<", ar_323);
      fd.Add(">=", ar_323);
      fd.Add("<=", ar_323);
      fd.Add("is", ar_323);
      fd.Add("]", ar_323);
      fd.Add(",", ar_323);
      fd.Add(")", ar_323);
      fd.Add(":", ar_323);
      fd = state_190.Actions;
      fd.Add("BinOp\b", ar_83);
      ActionRecord ar_324 = new ActionRecord(ParserActionType.Operator, state_78, Terms_71, 1);
      fd.Add("is", ar_324);
      ActionRecord ar_325 = new ActionRecord(ParserActionType.Operator, state_80, Terms_71, 1);
      fd.Add("+", ar_325);
      ActionRecord ar_326 = new ActionRecord(ParserActionType.Operator, state_81, Terms_71, 1);
      fd.Add("-", ar_326);
      ActionRecord ar_327 = new ActionRecord(ParserActionType.Operator, state_82, Terms_71, 1);
      fd.Add("*", ar_327);
      ActionRecord ar_328 = new ActionRecord(ParserActionType.Operator, state_83, Terms_71, 1);
      fd.Add("/", ar_328);
      ActionRecord ar_329 = new ActionRecord(ParserActionType.Operator, state_84, Terms_71, 1);
      fd.Add("%", ar_329);
      ActionRecord ar_330 = new ActionRecord(ParserActionType.Operator, state_85, Terms_71, 1);
      fd.Add("^", ar_330);
      ActionRecord ar_331 = new ActionRecord(ParserActionType.Operator, state_86, Terms_71, 1);
      fd.Add("&", ar_331);
      ActionRecord ar_332 = new ActionRecord(ParserActionType.Operator, state_87, Terms_71, 1);
      fd.Add("|", ar_332);
      ActionRecord ar_333 = new ActionRecord(ParserActionType.Operator, state_88, Terms_71, 1);
      fd.Add("&&", ar_333);
      ActionRecord ar_334 = new ActionRecord(ParserActionType.Operator, state_89, Terms_71, 1);
      fd.Add("||", ar_334);
      ActionRecord ar_335 = new ActionRecord(ParserActionType.Operator, state_90, Terms_71, 1);
      fd.Add("==", ar_335);
      ActionRecord ar_336 = new ActionRecord(ParserActionType.Operator, state_91, Terms_71, 1);
      fd.Add("!=", ar_336);
      ActionRecord ar_337 = new ActionRecord(ParserActionType.Operator, state_92, Terms_71, 1);
      fd.Add(">", ar_337);
      ActionRecord ar_338 = new ActionRecord(ParserActionType.Operator, state_93, Terms_71, 1);
      fd.Add("<", ar_338);
      ActionRecord ar_339 = new ActionRecord(ParserActionType.Operator, state_94, Terms_71, 1);
      fd.Add(">=", ar_339);
      ActionRecord ar_340 = new ActionRecord(ParserActionType.Operator, state_95, Terms_71, 1);
      fd.Add("<=", ar_340);
      ActionRecord ar_341 = new ActionRecord(ParserActionType.Reduce, null, Terms_71, 1);
      fd.Add(";", ar_341);
      fd.Add("]", ar_341);
      fd.Add(",", ar_341);
      fd.Add(")", ar_341);
      fd.Add(":", ar_341);
      fd = state_191.Actions;
      ActionRecord ar_342 = new ActionRecord(ParserActionType.Shift, state_212, null, 0);
      fd.Add("\b", ar_342);
      ActionRecord ar_343 = new ActionRecord(ParserActionType.Shift, state_213, null, 0);
      fd.Add("FuncContract\b", ar_343);
      ActionRecord ar_344 = new ActionRecord(ParserActionType.Shift, state_214, null, 0);
      fd.Add("[", ar_344);
      ActionRecord ar_345 = new ActionRecord(ParserActionType.Reduce, null, Terms_67, 0);
      fd.Add("{", ar_345);
      fd = state_192.Actions;
      ActionRecord ar_346 = new ActionRecord(ParserActionType.Reduce, null, Terms_66, 1);
      fd.Add("{", ar_346);
      fd.Add("[", ar_346);
      fd = state_193.Actions;
      ActionRecord ar_347 = new ActionRecord(ParserActionType.Shift, state_215, null, 0);
      fd.Add("(", ar_347);
      fd = state_194.Actions;
      ActionRecord ar_348 = new ActionRecord(ParserActionType.Reduce, null, Terms_58, 3);
      fd.Add(",", ar_348);
      fd.Add(")", ar_348);
      fd = state_195.Actions;
      ActionRecord ar_349 = new ActionRecord(ParserActionType.Shift, state_216, null, 0);
      fd.Add("\b", ar_349);
      ActionRecord ar_350 = new ActionRecord(ParserActionType.Shift, state_217, null, 0);
      fd.Add("GlobalList\b", ar_350);
      fd.Add("global", ar_293);
      ActionRecord ar_351 = new ActionRecord(ParserActionType.Reduce, null, Terms_75, 0);
      fd.Add("{", ar_351);
      fd.Add("[", ar_351);
      fd = state_196.Actions;
      ActionRecord ar_352 = new ActionRecord(ParserActionType.Reduce, null, Terms_73, 2);
      fd.Add("EOF\b", ar_352);
      fd.Add(";", ar_352);
      fd.Add("function", ar_352);
      fd.Add("if", ar_352);
      fd.Add("{", ar_352);
      fd.Add("while", ar_352);
      fd.Add("for", ar_352);
      fd.Add("foreach", ar_352);
      fd.Add("using", ar_352);
      fd.Add("switch", ar_352);
      fd.Add("try", ar_352);
      fd.Add("break", ar_352);
      fd.Add("continue", ar_352);
      fd.Add("return", ar_352);
      fd.Add("throw", ar_352);
      fd.Add("true", ar_352);
      fd.Add("false", ar_352);
      fd.Add("null", ar_352);
      fd.Add("string\b", ar_352);
      fd.Add("number\b", ar_352);
      fd.Add("idn\b", ar_352);
      fd.Add("var", ar_352);
      fd.Add("new", ar_352);
      fd.Add("[", ar_352);
      fd.Add("(", ar_352);
      fd.Add("<!", ar_352);
      fd.Add("~", ar_352);
      fd.Add("-", ar_352);
      fd.Add("!", ar_352);
      fd.Add("$", ar_352);
      fd.Add("ref", ar_352);
      fd.Add("out", ar_352);
      fd.Add("else", ar_352);
      fd.Add("}", ar_352);
      fd.Add("!>", ar_352);
      fd.Add("default", ar_352);
      fd.Add("case", ar_352);
      fd = state_197.Actions;
      ActionRecord ar_353 = new ActionRecord(ParserActionType.Shift, state_218, null, 0);
      fd.Add(";", ar_353);
      fd = state_198.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_84);
      ActionRecord ar_354 = new ActionRecord(ParserActionType.Shift, state_219, null, 0);
      fd.Add(")", ar_354);
      fd.Add("+", ar_86);
      fd.Add("-", ar_87);
      fd.Add("*", ar_88);
      fd.Add("/", ar_89);
      fd.Add("%", ar_90);
      fd.Add("^", ar_91);
      fd.Add("&", ar_92);
      fd.Add("|", ar_93);
      fd.Add("&&", ar_94);
      fd.Add("||", ar_95);
      fd.Add("==", ar_96);
      fd.Add("!=", ar_97);
      fd.Add(">", ar_98);
      fd.Add("<", ar_99);
      fd.Add(">=", ar_100);
      fd.Add("<=", ar_101);
      fd = state_199.Actions;
      ActionRecord ar_355 = new ActionRecord(ParserActionType.Reduce, null, Terms_40, 5);
      fd.Add("EOF\b", ar_355);
      fd.Add(";", ar_355);
      fd.Add("function", ar_355);
      fd.Add("if", ar_355);
      fd.Add("{", ar_355);
      fd.Add("while", ar_355);
      fd.Add("for", ar_355);
      fd.Add("foreach", ar_355);
      fd.Add("using", ar_355);
      fd.Add("switch", ar_355);
      fd.Add("try", ar_355);
      fd.Add("break", ar_355);
      fd.Add("continue", ar_355);
      fd.Add("return", ar_355);
      fd.Add("throw", ar_355);
      fd.Add("true", ar_355);
      fd.Add("false", ar_355);
      fd.Add("null", ar_355);
      fd.Add("string\b", ar_355);
      fd.Add("number\b", ar_355);
      fd.Add("idn\b", ar_355);
      fd.Add("var", ar_355);
      fd.Add("new", ar_355);
      fd.Add("[", ar_355);
      fd.Add("(", ar_355);
      fd.Add("<!", ar_355);
      fd.Add("~", ar_355);
      fd.Add("-", ar_355);
      fd.Add("!", ar_355);
      fd.Add("$", ar_355);
      fd.Add("ref", ar_355);
      fd.Add("out", ar_355);
      fd.Add("else", ar_355);
      fd.Add("}", ar_355);
      fd.Add("!>", ar_355);
      fd.Add("default", ar_355);
      fd.Add("case", ar_355);
      fd = state_200.Actions;
      ActionRecord ar_356 = new ActionRecord(ParserActionType.Shift, state_220, null, 0);
      fd.Add("SwitchStatements\b", ar_356);
      ActionRecord ar_357 = new ActionRecord(ParserActionType.Shift, state_221, null, 0);
      fd.Add("SwitchCaseStatement*\b", ar_357);
      ActionRecord ar_358 = new ActionRecord(ParserActionType.Reduce, null, Terms_57, 0);
      fd.Add("default", ar_358);
      fd.Add("case", ar_358);
      fd.Add("}", ar_358);
      fd = state_201.Actions;
      ActionRecord ar_359 = new ActionRecord(ParserActionType.Shift, state_222, null, 0);
      fd.Add(")", ar_359);
      fd = state_202.Actions;
      ActionRecord ar_360 = new ActionRecord(ParserActionType.Reduce, null, Terms_56, 2);
      fd.Add("<|", ar_360);
      fd.Add("[", ar_360);
      fd.Add("(", ar_360);
      fd.Add(".", ar_360);
      fd.Add("=", ar_360);
      fd.Add("++", ar_360);
      fd.Add("--", ar_360);
      fd.Add(":=", ar_360);
      fd.Add("+=", ar_360);
      fd.Add("-=", ar_360);
      fd.Add(";", ar_360);
      fd.Add("+", ar_360);
      fd.Add("-", ar_360);
      fd.Add("*", ar_360);
      fd.Add("/", ar_360);
      fd.Add("%", ar_360);
      fd.Add("^", ar_360);
      fd.Add("&", ar_360);
      fd.Add("|", ar_360);
      fd.Add("&&", ar_360);
      fd.Add("||", ar_360);
      fd.Add("==", ar_360);
      fd.Add("!=", ar_360);
      fd.Add(">", ar_360);
      fd.Add("<", ar_360);
      fd.Add(">=", ar_360);
      fd.Add("<=", ar_360);
      fd.Add("is", ar_360);
      fd.Add("]", ar_360);
      fd.Add(",", ar_360);
      fd.Add(")", ar_360);
      fd.Add(":", ar_360);
      fd = state_203.Actions;
      ActionRecord ar_361 = new ActionRecord(ParserActionType.Reduce, null, Terms_65, 1);
      fd.Add("<|", ar_361);
      fd.Add("[", ar_361);
      fd.Add("(", ar_361);
      fd.Add(".", ar_361);
      fd.Add("=", ar_361);
      fd.Add("++", ar_361);
      fd.Add("--", ar_361);
      fd.Add(":=", ar_361);
      fd.Add("+=", ar_361);
      fd.Add("-=", ar_361);
      fd.Add(";", ar_361);
      fd.Add("+", ar_361);
      fd.Add("-", ar_361);
      fd.Add("*", ar_361);
      fd.Add("/", ar_361);
      fd.Add("%", ar_361);
      fd.Add("^", ar_361);
      fd.Add("&", ar_361);
      fd.Add("|", ar_361);
      fd.Add("&&", ar_361);
      fd.Add("||", ar_361);
      fd.Add("==", ar_361);
      fd.Add("!=", ar_361);
      fd.Add(">", ar_361);
      fd.Add("<", ar_361);
      fd.Add(">=", ar_361);
      fd.Add("<=", ar_361);
      fd.Add("is", ar_361);
      fd.Add("]", ar_361);
      fd.Add(",", ar_361);
      fd.Add(")", ar_361);
      fd.Add(":", ar_361);
      fd = state_204.Actions;
      fd.Add("<|", ar_361);
      fd.Add("[", ar_361);
      fd.Add("(", ar_361);
      fd.Add(".", ar_361);
      fd.Add("=", ar_361);
      fd.Add("++", ar_361);
      fd.Add("--", ar_361);
      fd.Add(":=", ar_361);
      fd.Add("+=", ar_361);
      fd.Add("-=", ar_361);
      fd.Add(";", ar_361);
      fd.Add("+", ar_361);
      fd.Add("-", ar_361);
      fd.Add("*", ar_361);
      fd.Add("/", ar_361);
      fd.Add("%", ar_361);
      fd.Add("^", ar_361);
      fd.Add("&", ar_361);
      fd.Add("|", ar_361);
      fd.Add("&&", ar_361);
      fd.Add("||", ar_361);
      fd.Add("==", ar_361);
      fd.Add("!=", ar_361);
      fd.Add(">", ar_361);
      fd.Add("<", ar_361);
      fd.Add(">=", ar_361);
      fd.Add("<=", ar_361);
      fd.Add("is", ar_361);
      fd.Add("]", ar_361);
      fd.Add(",", ar_361);
      fd.Add(")", ar_361);
      fd.Add(":", ar_361);
      fd = state_205.Actions;
      fd.Add("<|", ar_361);
      fd.Add("[", ar_361);
      fd.Add("(", ar_361);
      fd.Add(".", ar_361);
      fd.Add("=", ar_361);
      fd.Add("++", ar_361);
      fd.Add("--", ar_361);
      fd.Add(":=", ar_361);
      fd.Add("+=", ar_361);
      fd.Add("-=", ar_361);
      fd.Add(";", ar_361);
      fd.Add("+", ar_361);
      fd.Add("-", ar_361);
      fd.Add("*", ar_361);
      fd.Add("/", ar_361);
      fd.Add("%", ar_361);
      fd.Add("^", ar_361);
      fd.Add("&", ar_361);
      fd.Add("|", ar_361);
      fd.Add("&&", ar_361);
      fd.Add("||", ar_361);
      fd.Add("==", ar_361);
      fd.Add("!=", ar_361);
      fd.Add(">", ar_361);
      fd.Add("<", ar_361);
      fd.Add(">=", ar_361);
      fd.Add("<=", ar_361);
      fd.Add("is", ar_361);
      fd.Add("]", ar_361);
      fd.Add(",", ar_361);
      fd.Add(")", ar_361);
      fd.Add(":", ar_361);
      fd = state_206.Actions;
      ActionRecord ar_362 = new ActionRecord(ParserActionType.Reduce, null, Terms_27, 3);
      fd.Add("<|", ar_362);
      fd.Add("[", ar_362);
      fd.Add("(", ar_362);
      fd.Add(".", ar_362);
      fd.Add("=", ar_362);
      fd.Add("++", ar_362);
      fd.Add("--", ar_362);
      fd.Add(":=", ar_362);
      fd.Add("+=", ar_362);
      fd.Add("-=", ar_362);
      fd.Add(";", ar_362);
      fd.Add("+", ar_362);
      fd.Add("-", ar_362);
      fd.Add("*", ar_362);
      fd.Add("/", ar_362);
      fd.Add("%", ar_362);
      fd.Add("^", ar_362);
      fd.Add("&", ar_362);
      fd.Add("|", ar_362);
      fd.Add("&&", ar_362);
      fd.Add("||", ar_362);
      fd.Add("==", ar_362);
      fd.Add("!=", ar_362);
      fd.Add(">", ar_362);
      fd.Add("<", ar_362);
      fd.Add(">=", ar_362);
      fd.Add("<=", ar_362);
      fd.Add("is", ar_362);
      fd.Add("]", ar_362);
      fd.Add(",", ar_362);
      fd.Add(")", ar_362);
      fd.Add(":", ar_362);
      fd.Add("|>", ar_362);
      fd = state_207.Actions;
      ActionRecord ar_363 = new ActionRecord(ParserActionType.Shift, state_223, null, 0);
      fd.Add("TypeExpr\b", ar_363);
      fd.Add("idn\b", ar_123);
      fd = state_208.Actions;
      ActionRecord ar_364 = new ActionRecord(ParserActionType.Reduce, null, Terms_14, 3);
      fd.Add("<|", ar_364);
      fd.Add("[", ar_364);
      fd.Add("(", ar_364);
      fd.Add(".", ar_364);
      fd.Add("=", ar_364);
      fd.Add("++", ar_364);
      fd.Add("--", ar_364);
      fd.Add(":=", ar_364);
      fd.Add("+=", ar_364);
      fd.Add("-=", ar_364);
      fd.Add(";", ar_364);
      fd.Add("+", ar_364);
      fd.Add("-", ar_364);
      fd.Add("*", ar_364);
      fd.Add("/", ar_364);
      fd.Add("%", ar_364);
      fd.Add("^", ar_364);
      fd.Add("&", ar_364);
      fd.Add("|", ar_364);
      fd.Add("&&", ar_364);
      fd.Add("||", ar_364);
      fd.Add("==", ar_364);
      fd.Add("!=", ar_364);
      fd.Add(">", ar_364);
      fd.Add("<", ar_364);
      fd.Add(">=", ar_364);
      fd.Add("<=", ar_364);
      fd.Add("is", ar_364);
      fd.Add("]", ar_364);
      fd.Add(",", ar_364);
      fd.Add(")", ar_364);
      fd.Add(":", ar_364);
      fd = state_209.Actions;
      ActionRecord ar_365 = new ActionRecord(ParserActionType.Reduce, null, Terms_13, 3);
      fd.Add("<|", ar_365);
      fd.Add("[", ar_365);
      fd.Add("(", ar_365);
      fd.Add(".", ar_365);
      fd.Add("=", ar_365);
      fd.Add("++", ar_365);
      fd.Add("--", ar_365);
      fd.Add(":=", ar_365);
      fd.Add("+=", ar_365);
      fd.Add("-=", ar_365);
      fd.Add(";", ar_365);
      fd.Add("+", ar_365);
      fd.Add("-", ar_365);
      fd.Add("*", ar_365);
      fd.Add("/", ar_365);
      fd.Add("%", ar_365);
      fd.Add("^", ar_365);
      fd.Add("&", ar_365);
      fd.Add("|", ar_365);
      fd.Add("&&", ar_365);
      fd.Add("||", ar_365);
      fd.Add("==", ar_365);
      fd.Add("!=", ar_365);
      fd.Add(">", ar_365);
      fd.Add("<", ar_365);
      fd.Add(">=", ar_365);
      fd.Add("<=", ar_365);
      fd.Add("is", ar_365);
      fd.Add("]", ar_365);
      fd.Add(",", ar_365);
      fd.Add(")", ar_365);
      fd.Add(":", ar_365);
      fd = state_210.Actions;
      ActionRecord ar_366 = new ActionRecord(ParserActionType.Reduce, null, Terms_61, 2);
      fd.Add("[", ar_366);
      fd.Add("(", ar_366);
      fd.Add(".", ar_366);
      fd.Add(";", ar_366);
      fd.Add("+", ar_366);
      fd.Add("-", ar_366);
      fd.Add("*", ar_366);
      fd.Add("/", ar_366);
      fd.Add("%", ar_366);
      fd.Add("^", ar_366);
      fd.Add("&", ar_366);
      fd.Add("|", ar_366);
      fd.Add("&&", ar_366);
      fd.Add("||", ar_366);
      fd.Add("==", ar_366);
      fd.Add("!=", ar_366);
      fd.Add(">", ar_366);
      fd.Add("<", ar_366);
      fd.Add(">=", ar_366);
      fd.Add("<=", ar_366);
      fd.Add("is", ar_366);
      fd.Add("|>", ar_366);
      fd.Add(",", ar_366);
      fd.Add("]", ar_366);
      fd.Add(")", ar_366);
      fd.Add(":", ar_366);
      fd = state_211.Actions;
      ActionRecord ar_367 = new ActionRecord(ParserActionType.Reduce, null, Terms_62, 1);
      fd.Add("[", ar_367);
      fd.Add("(", ar_367);
      fd.Add(".", ar_367);
      fd.Add(";", ar_367);
      fd.Add("+", ar_367);
      fd.Add("-", ar_367);
      fd.Add("*", ar_367);
      fd.Add("/", ar_367);
      fd.Add("%", ar_367);
      fd.Add("^", ar_367);
      fd.Add("&", ar_367);
      fd.Add("|", ar_367);
      fd.Add("&&", ar_367);
      fd.Add("||", ar_367);
      fd.Add("==", ar_367);
      fd.Add("!=", ar_367);
      fd.Add(">", ar_367);
      fd.Add("<", ar_367);
      fd.Add(">=", ar_367);
      fd.Add("<=", ar_367);
      fd.Add("is", ar_367);
      fd.Add("|>", ar_367);
      fd.Add(",", ar_367);
      fd.Add("]", ar_367);
      fd.Add(")", ar_367);
      fd.Add(":", ar_367);
      fd = state_212.Actions;
      ActionRecord ar_368 = new ActionRecord(ParserActionType.Shift, state_224, null, 0);
      fd.Add("BlockStatement\b", ar_368);
      fd.Add("{", ar_26);
      fd = state_213.Actions;
      ActionRecord ar_369 = new ActionRecord(ParserActionType.Reduce, null, Terms_67, 1);
      fd.Add("{", ar_369);
      fd = state_214.Actions;
      ActionRecord ar_370 = new ActionRecord(ParserActionType.Shift, state_225, null, 0);
      fd.Add("Pre Conditions\b", ar_370);
      ActionRecord ar_371 = new ActionRecord(ParserActionType.Shift, state_226, null, 0);
      fd.Add("pre", ar_371);
      fd = state_215.Actions;
      ActionRecord ar_372 = new ActionRecord(ParserActionType.Shift, state_227, null, 0);
      fd.Add("ParamaterList\b", ar_372);
      fd.Add("idn+\b", ar_135);
      fd.Add("idn\b", ar_136);
      fd.Add(")", ar_137);
      fd = state_216.Actions;
      ActionRecord ar_373 = new ActionRecord(ParserActionType.Shift, state_228, null, 0);
      fd.Add("\b", ar_373);
      ActionRecord ar_374 = new ActionRecord(ParserActionType.Shift, state_229, null, 0);
      fd.Add("FuncContract\b", ar_374);
      fd.Add("[", ar_344);
      ActionRecord ar_375 = new ActionRecord(ParserActionType.Reduce, null, Terms_76, 0);
      fd.Add("{", ar_375);
      fd = state_217.Actions;
      ActionRecord ar_376 = new ActionRecord(ParserActionType.Reduce, null, Terms_75, 1);
      fd.Add("{", ar_376);
      fd.Add("[", ar_376);
      fd = state_218.Actions;
      ActionRecord ar_377 = new ActionRecord(ParserActionType.Shift, state_230, null, 0);
      fd.Add("OptionalExpression\b", ar_377);
      fd.Add("Expr\b", ar_143);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd.Add(")", ar_144);
      fd = state_219.Actions;
      ActionRecord ar_378 = new ActionRecord(ParserActionType.Shift, state_231, null, 0);
      fd.Add("Statement\b", ar_378);
      fd.Add(";", ar_8);
      fd.Add("IfStatement\b", ar_9);
      fd.Add("WhileStatement\b", ar_10);
      fd.Add("ForStatement\b", ar_11);
      fd.Add("ForEachStatement\b", ar_12);
      fd.Add("UsingStatement\b", ar_13);
      fd.Add("SwitchStatement\b", ar_14);
      fd.Add("BlockStatement\b", ar_15);
      fd.Add("TryCatchFinallyStatement\b", ar_16);
      fd.Add("ExprStatement\b", ar_17);
      fd.Add("FlowControl\b", ar_18);
      fd.Add("if", ar_20);
      fd.Add("while", ar_21);
      fd.Add("for", ar_22);
      fd.Add("foreach", ar_23);
      fd.Add("using", ar_24);
      fd.Add("switch", ar_25);
      fd.Add("{", ar_26);
      fd.Add("try", ar_27);
      fd.Add("Expr\b", ar_28);
      fd.Add("break", ar_29);
      fd.Add("continue", ar_30);
      fd.Add("return", ar_31);
      fd.Add("throw", ar_32);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_220.Actions;
      ActionRecord ar_379 = new ActionRecord(ParserActionType.Shift, state_232, null, 0);
      fd.Add("}", ar_379);
      fd = state_221.Actions;
      ActionRecord ar_380 = new ActionRecord(ParserActionType.Shift, state_233, null, 0);
      fd.Add("\b", ar_380);
      ActionRecord ar_381 = new ActionRecord(ParserActionType.Shift, state_234, null, 0);
      fd.Add("SwitchCaseStatement\b", ar_381);
      ActionRecord ar_382 = new ActionRecord(ParserActionType.Shift, state_235, null, 0);
      fd.Add("SwitchDefaultStatement\b", ar_382);
      ActionRecord ar_383 = new ActionRecord(ParserActionType.Shift, state_236, null, 0);
      fd.Add("case", ar_383);
      ActionRecord ar_384 = new ActionRecord(ParserActionType.Shift, state_237, null, 0);
      fd.Add("default", ar_384);
      ActionRecord ar_385 = new ActionRecord(ParserActionType.Reduce, null, Terms_74, 0);
      fd.Add("}", ar_385);
      fd = state_222.Actions;
      ActionRecord ar_386 = new ActionRecord(ParserActionType.Shift, state_238, null, 0);
      fd.Add("BlockStatement\b", ar_386);
      fd.Add("{", ar_26);
      fd = state_223.Actions;
      fd.Add(".", ar_192);
      ActionRecord ar_387 = new ActionRecord(ParserActionType.Reduce, null, Terms_22, 3);
      fd.Add("|>", ar_387);
      fd.Add(",", ar_387);
      fd = state_224.Actions;
      ActionRecord ar_388 = new ActionRecord(ParserActionType.Reduce, null, Terms_8, 7);
      fd.Add(";", ar_388);
      fd.Add("+", ar_388);
      fd.Add("-", ar_388);
      fd.Add("*", ar_388);
      fd.Add("/", ar_388);
      fd.Add("%", ar_388);
      fd.Add("^", ar_388);
      fd.Add("&", ar_388);
      fd.Add("|", ar_388);
      fd.Add("&&", ar_388);
      fd.Add("||", ar_388);
      fd.Add("==", ar_388);
      fd.Add("!=", ar_388);
      fd.Add(">", ar_388);
      fd.Add("<", ar_388);
      fd.Add(">=", ar_388);
      fd.Add("<=", ar_388);
      fd.Add("is", ar_388);
      fd.Add("]", ar_388);
      fd.Add(",", ar_388);
      fd.Add(")", ar_388);
      fd.Add(":", ar_388);
      fd = state_225.Actions;
      ActionRecord ar_389 = new ActionRecord(ParserActionType.Shift, state_239, null, 0);
      fd.Add(";", ar_389);
      fd = state_226.Actions;
      ActionRecord ar_390 = new ActionRecord(ParserActionType.Shift, state_240, null, 0);
      fd.Add("(", ar_390);
      fd = state_227.Actions;
      ActionRecord ar_391 = new ActionRecord(ParserActionType.Shift, state_241, null, 0);
      fd.Add(")", ar_391);
      fd = state_228.Actions;
      ActionRecord ar_392 = new ActionRecord(ParserActionType.Shift, state_242, null, 0);
      fd.Add("BlockStatement\b", ar_392);
      fd.Add("{", ar_26);
      fd = state_229.Actions;
      ActionRecord ar_393 = new ActionRecord(ParserActionType.Reduce, null, Terms_76, 1);
      fd.Add("{", ar_393);
      fd = state_230.Actions;
      ActionRecord ar_394 = new ActionRecord(ParserActionType.Shift, state_243, null, 0);
      fd.Add(")", ar_394);
      fd = state_231.Actions;
      ActionRecord ar_395 = new ActionRecord(ParserActionType.Reduce, null, Terms_34, 7);
      fd.Add("EOF\b", ar_395);
      fd.Add(";", ar_395);
      fd.Add("function", ar_395);
      fd.Add("if", ar_395);
      fd.Add("{", ar_395);
      fd.Add("while", ar_395);
      fd.Add("for", ar_395);
      fd.Add("foreach", ar_395);
      fd.Add("using", ar_395);
      fd.Add("switch", ar_395);
      fd.Add("try", ar_395);
      fd.Add("break", ar_395);
      fd.Add("continue", ar_395);
      fd.Add("return", ar_395);
      fd.Add("throw", ar_395);
      fd.Add("true", ar_395);
      fd.Add("false", ar_395);
      fd.Add("null", ar_395);
      fd.Add("string\b", ar_395);
      fd.Add("number\b", ar_395);
      fd.Add("idn\b", ar_395);
      fd.Add("var", ar_395);
      fd.Add("new", ar_395);
      fd.Add("[", ar_395);
      fd.Add("(", ar_395);
      fd.Add("<!", ar_395);
      fd.Add("~", ar_395);
      fd.Add("-", ar_395);
      fd.Add("!", ar_395);
      fd.Add("$", ar_395);
      fd.Add("ref", ar_395);
      fd.Add("out", ar_395);
      fd.Add("else", ar_395);
      fd.Add("}", ar_395);
      fd.Add("!>", ar_395);
      fd.Add("default", ar_395);
      fd.Add("case", ar_395);
      fd = state_232.Actions;
      ActionRecord ar_396 = new ActionRecord(ParserActionType.Reduce, null, Terms_36, 7);
      fd.Add("EOF\b", ar_396);
      fd.Add(";", ar_396);
      fd.Add("function", ar_396);
      fd.Add("if", ar_396);
      fd.Add("{", ar_396);
      fd.Add("while", ar_396);
      fd.Add("for", ar_396);
      fd.Add("foreach", ar_396);
      fd.Add("using", ar_396);
      fd.Add("switch", ar_396);
      fd.Add("try", ar_396);
      fd.Add("break", ar_396);
      fd.Add("continue", ar_396);
      fd.Add("return", ar_396);
      fd.Add("throw", ar_396);
      fd.Add("true", ar_396);
      fd.Add("false", ar_396);
      fd.Add("null", ar_396);
      fd.Add("string\b", ar_396);
      fd.Add("number\b", ar_396);
      fd.Add("idn\b", ar_396);
      fd.Add("var", ar_396);
      fd.Add("new", ar_396);
      fd.Add("[", ar_396);
      fd.Add("(", ar_396);
      fd.Add("<!", ar_396);
      fd.Add("~", ar_396);
      fd.Add("-", ar_396);
      fd.Add("!", ar_396);
      fd.Add("$", ar_396);
      fd.Add("ref", ar_396);
      fd.Add("out", ar_396);
      fd.Add("else", ar_396);
      fd.Add("}", ar_396);
      fd.Add("!>", ar_396);
      fd.Add("default", ar_396);
      fd.Add("case", ar_396);
      fd = state_233.Actions;
      ActionRecord ar_397 = new ActionRecord(ParserActionType.Reduce, null, Terms_37, 2);
      fd.Add("}", ar_397);
      fd = state_234.Actions;
      ActionRecord ar_398 = new ActionRecord(ParserActionType.Reduce, null, Terms_57, 2);
      fd.Add("default", ar_398);
      fd.Add("case", ar_398);
      fd.Add("}", ar_398);
      fd = state_235.Actions;
      ActionRecord ar_399 = new ActionRecord(ParserActionType.Reduce, null, Terms_74, 1);
      fd.Add("}", ar_399);
      fd = state_236.Actions;
      ActionRecord ar_400 = new ActionRecord(ParserActionType.Shift, state_244, null, 0);
      fd.Add("Expr\b", ar_400);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_237.Actions;
      ActionRecord ar_401 = new ActionRecord(ParserActionType.Shift, state_245, null, 0);
      fd.Add(":", ar_401);
      fd = state_238.Actions;
      ActionRecord ar_402 = new ActionRecord(ParserActionType.Shift, state_246, null, 0);
      fd.Add("finally", ar_402);
      fd = state_239.Actions;
      ActionRecord ar_403 = new ActionRecord(ParserActionType.Shift, state_247, null, 0);
      fd.Add("Post Conditions\b", ar_403);
      ActionRecord ar_404 = new ActionRecord(ParserActionType.Shift, state_248, null, 0);
      fd.Add("post", ar_404);
      fd = state_240.Actions;
      ActionRecord ar_405 = new ActionRecord(ParserActionType.Shift, state_249, null, 0);
      fd.Add("\b", ar_405);
      ActionRecord ar_406 = new ActionRecord(ParserActionType.Shift, state_250, null, 0);
      fd.Add("ExprList\b", ar_406);
      fd.Add("Expr\b", ar_126);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      ActionRecord ar_407 = new ActionRecord(ParserActionType.Reduce, null, Terms_68, 0);
      fd.Add(")", ar_407);
      fd = state_241.Actions;
      ActionRecord ar_408 = new ActionRecord(ParserActionType.Reduce, null, Terms_28, 4);
      fd.Add("{", ar_408);
      fd.Add("[", ar_408);
      fd = state_242.Actions;
      ActionRecord ar_409 = new ActionRecord(ParserActionType.Reduce, null, Terms_49, 8);
      fd.Add("EOF\b", ar_409);
      fd.Add(";", ar_409);
      fd.Add("function", ar_409);
      fd.Add("if", ar_409);
      fd.Add("{", ar_409);
      fd.Add("while", ar_409);
      fd.Add("for", ar_409);
      fd.Add("foreach", ar_409);
      fd.Add("using", ar_409);
      fd.Add("switch", ar_409);
      fd.Add("try", ar_409);
      fd.Add("break", ar_409);
      fd.Add("continue", ar_409);
      fd.Add("return", ar_409);
      fd.Add("throw", ar_409);
      fd.Add("true", ar_409);
      fd.Add("false", ar_409);
      fd.Add("null", ar_409);
      fd.Add("string\b", ar_409);
      fd.Add("number\b", ar_409);
      fd.Add("idn\b", ar_409);
      fd.Add("var", ar_409);
      fd.Add("new", ar_409);
      fd.Add("[", ar_409);
      fd.Add("(", ar_409);
      fd.Add("<!", ar_409);
      fd.Add("~", ar_409);
      fd.Add("-", ar_409);
      fd.Add("!", ar_409);
      fd.Add("$", ar_409);
      fd.Add("ref", ar_409);
      fd.Add("out", ar_409);
      fd.Add("!>", ar_409);
      fd = state_243.Actions;
      ActionRecord ar_410 = new ActionRecord(ParserActionType.Shift, state_251, null, 0);
      fd.Add("Statement\b", ar_410);
      fd.Add(";", ar_8);
      fd.Add("IfStatement\b", ar_9);
      fd.Add("WhileStatement\b", ar_10);
      fd.Add("ForStatement\b", ar_11);
      fd.Add("ForEachStatement\b", ar_12);
      fd.Add("UsingStatement\b", ar_13);
      fd.Add("SwitchStatement\b", ar_14);
      fd.Add("BlockStatement\b", ar_15);
      fd.Add("TryCatchFinallyStatement\b", ar_16);
      fd.Add("ExprStatement\b", ar_17);
      fd.Add("FlowControl\b", ar_18);
      fd.Add("if", ar_20);
      fd.Add("while", ar_21);
      fd.Add("for", ar_22);
      fd.Add("foreach", ar_23);
      fd.Add("using", ar_24);
      fd.Add("switch", ar_25);
      fd.Add("{", ar_26);
      fd.Add("try", ar_27);
      fd.Add("Expr\b", ar_28);
      fd.Add("break", ar_29);
      fd.Add("continue", ar_30);
      fd.Add("return", ar_31);
      fd.Add("throw", ar_32);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      fd = state_244.Actions;
      fd.Add("BinOp\b", ar_83);
      fd.Add("is", ar_84);
      ActionRecord ar_411 = new ActionRecord(ParserActionType.Shift, state_252, null, 0);
      fd.Add(":", ar_411);
      fd.Add("+", ar_86);
      fd.Add("-", ar_87);
      fd.Add("*", ar_88);
      fd.Add("/", ar_89);
      fd.Add("%", ar_90);
      fd.Add("^", ar_91);
      fd.Add("&", ar_92);
      fd.Add("|", ar_93);
      fd.Add("&&", ar_94);
      fd.Add("||", ar_95);
      fd.Add("==", ar_96);
      fd.Add("!=", ar_97);
      fd.Add(">", ar_98);
      fd.Add("<", ar_99);
      fd.Add(">=", ar_100);
      fd.Add("<=", ar_101);
      fd = state_245.Actions;
      ActionRecord ar_412 = new ActionRecord(ParserActionType.Shift, state_253, null, 0);
      fd.Add("Statements(Compound)\b", ar_412);
      fd.Add(";", ar_81);
      fd.Add("if", ar_81);
      fd.Add("{", ar_81);
      fd.Add("while", ar_81);
      fd.Add("for", ar_81);
      fd.Add("foreach", ar_81);
      fd.Add("using", ar_81);
      fd.Add("switch", ar_81);
      fd.Add("try", ar_81);
      fd.Add("break", ar_81);
      fd.Add("continue", ar_81);
      fd.Add("return", ar_81);
      fd.Add("throw", ar_81);
      fd.Add("true", ar_81);
      fd.Add("false", ar_81);
      fd.Add("null", ar_81);
      fd.Add("string\b", ar_81);
      fd.Add("number\b", ar_81);
      fd.Add("idn\b", ar_81);
      fd.Add("var", ar_81);
      fd.Add("new", ar_81);
      fd.Add("function", ar_81);
      fd.Add("[", ar_81);
      fd.Add("(", ar_81);
      fd.Add("<!", ar_81);
      fd.Add("~", ar_81);
      fd.Add("-", ar_81);
      fd.Add("!", ar_81);
      fd.Add("$", ar_81);
      fd.Add("ref", ar_81);
      fd.Add("out", ar_81);
      fd.Add("}", ar_81);
      fd = state_246.Actions;
      ActionRecord ar_413 = new ActionRecord(ParserActionType.Shift, state_254, null, 0);
      fd.Add("BlockStatement\b", ar_413);
      fd.Add("{", ar_26);
      fd = state_247.Actions;
      ActionRecord ar_414 = new ActionRecord(ParserActionType.Shift, state_255, null, 0);
      fd.Add(";", ar_414);
      fd = state_248.Actions;
      ActionRecord ar_415 = new ActionRecord(ParserActionType.Shift, state_256, null, 0);
      fd.Add("(", ar_415);
      fd = state_249.Actions;
      ActionRecord ar_416 = new ActionRecord(ParserActionType.Shift, state_257, null, 0);
      fd.Add(")", ar_416);
      fd.Add("idn\b", ar_130);
      fd = state_250.Actions;
      fd.Add(",", ar_198);
      ActionRecord ar_417 = new ActionRecord(ParserActionType.Reduce, null, Terms_68, 1);
      fd.Add(")", ar_417);
      fd = state_251.Actions;
      ActionRecord ar_418 = new ActionRecord(ParserActionType.Reduce, null, Terms_33, 9);
      fd.Add("EOF\b", ar_418);
      fd.Add(";", ar_418);
      fd.Add("function", ar_418);
      fd.Add("if", ar_418);
      fd.Add("{", ar_418);
      fd.Add("while", ar_418);
      fd.Add("for", ar_418);
      fd.Add("foreach", ar_418);
      fd.Add("using", ar_418);
      fd.Add("switch", ar_418);
      fd.Add("try", ar_418);
      fd.Add("break", ar_418);
      fd.Add("continue", ar_418);
      fd.Add("return", ar_418);
      fd.Add("throw", ar_418);
      fd.Add("true", ar_418);
      fd.Add("false", ar_418);
      fd.Add("null", ar_418);
      fd.Add("string\b", ar_418);
      fd.Add("number\b", ar_418);
      fd.Add("idn\b", ar_418);
      fd.Add("var", ar_418);
      fd.Add("new", ar_418);
      fd.Add("[", ar_418);
      fd.Add("(", ar_418);
      fd.Add("<!", ar_418);
      fd.Add("~", ar_418);
      fd.Add("-", ar_418);
      fd.Add("!", ar_418);
      fd.Add("$", ar_418);
      fd.Add("ref", ar_418);
      fd.Add("out", ar_418);
      fd.Add("else", ar_418);
      fd.Add("}", ar_418);
      fd.Add("!>", ar_418);
      fd.Add("default", ar_418);
      fd.Add("case", ar_418);
      fd = state_252.Actions;
      ActionRecord ar_419 = new ActionRecord(ParserActionType.Shift, state_258, null, 0);
      fd.Add("Statements(Compound)\b", ar_419);
      fd.Add(";", ar_81);
      fd.Add("if", ar_81);
      fd.Add("{", ar_81);
      fd.Add("while", ar_81);
      fd.Add("for", ar_81);
      fd.Add("foreach", ar_81);
      fd.Add("using", ar_81);
      fd.Add("switch", ar_81);
      fd.Add("try", ar_81);
      fd.Add("break", ar_81);
      fd.Add("continue", ar_81);
      fd.Add("return", ar_81);
      fd.Add("throw", ar_81);
      fd.Add("true", ar_81);
      fd.Add("false", ar_81);
      fd.Add("null", ar_81);
      fd.Add("string\b", ar_81);
      fd.Add("number\b", ar_81);
      fd.Add("idn\b", ar_81);
      fd.Add("var", ar_81);
      fd.Add("new", ar_81);
      fd.Add("function", ar_81);
      fd.Add("[", ar_81);
      fd.Add("(", ar_81);
      fd.Add("<!", ar_81);
      fd.Add("~", ar_81);
      fd.Add("-", ar_81);
      fd.Add("!", ar_81);
      fd.Add("$", ar_81);
      fd.Add("ref", ar_81);
      fd.Add("out", ar_81);
      fd.Add("default", ar_81);
      fd.Add("case", ar_81);
      fd.Add("}", ar_81);
      fd = state_253.Actions;
      fd.Add("Statement\b", ar_149);
      fd.Add(";", ar_8);
      fd.Add("IfStatement\b", ar_9);
      fd.Add("WhileStatement\b", ar_10);
      fd.Add("ForStatement\b", ar_11);
      fd.Add("ForEachStatement\b", ar_12);
      fd.Add("UsingStatement\b", ar_13);
      fd.Add("SwitchStatement\b", ar_14);
      fd.Add("BlockStatement\b", ar_15);
      fd.Add("TryCatchFinallyStatement\b", ar_16);
      fd.Add("ExprStatement\b", ar_17);
      fd.Add("FlowControl\b", ar_18);
      fd.Add("if", ar_20);
      fd.Add("while", ar_21);
      fd.Add("for", ar_22);
      fd.Add("foreach", ar_23);
      fd.Add("using", ar_24);
      fd.Add("switch", ar_25);
      fd.Add("{", ar_26);
      fd.Add("try", ar_27);
      fd.Add("Expr\b", ar_28);
      fd.Add("break", ar_29);
      fd.Add("continue", ar_30);
      fd.Add("return", ar_31);
      fd.Add("throw", ar_32);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      ActionRecord ar_420 = new ActionRecord(ParserActionType.Reduce, null, Terms_39, 3);
      fd.Add("}", ar_420);
      fd = state_254.Actions;
      ActionRecord ar_421 = new ActionRecord(ParserActionType.Reduce, null, Terms_41, 9);
      fd.Add("EOF\b", ar_421);
      fd.Add(";", ar_421);
      fd.Add("function", ar_421);
      fd.Add("if", ar_421);
      fd.Add("{", ar_421);
      fd.Add("while", ar_421);
      fd.Add("for", ar_421);
      fd.Add("foreach", ar_421);
      fd.Add("using", ar_421);
      fd.Add("switch", ar_421);
      fd.Add("try", ar_421);
      fd.Add("break", ar_421);
      fd.Add("continue", ar_421);
      fd.Add("return", ar_421);
      fd.Add("throw", ar_421);
      fd.Add("true", ar_421);
      fd.Add("false", ar_421);
      fd.Add("null", ar_421);
      fd.Add("string\b", ar_421);
      fd.Add("number\b", ar_421);
      fd.Add("idn\b", ar_421);
      fd.Add("var", ar_421);
      fd.Add("new", ar_421);
      fd.Add("[", ar_421);
      fd.Add("(", ar_421);
      fd.Add("<!", ar_421);
      fd.Add("~", ar_421);
      fd.Add("-", ar_421);
      fd.Add("!", ar_421);
      fd.Add("$", ar_421);
      fd.Add("ref", ar_421);
      fd.Add("out", ar_421);
      fd.Add("else", ar_421);
      fd.Add("}", ar_421);
      fd.Add("!>", ar_421);
      fd.Add("default", ar_421);
      fd.Add("case", ar_421);
      fd = state_255.Actions;
      ActionRecord ar_422 = new ActionRecord(ParserActionType.Shift, state_259, null, 0);
      fd.Add("Invariant Conditions\b", ar_422);
      ActionRecord ar_423 = new ActionRecord(ParserActionType.Shift, state_260, null, 0);
      fd.Add("invariant", ar_423);
      fd = state_256.Actions;
      ActionRecord ar_424 = new ActionRecord(ParserActionType.Shift, state_261, null, 0);
      fd.Add("\b", ar_424);
      ActionRecord ar_425 = new ActionRecord(ParserActionType.Shift, state_262, null, 0);
      fd.Add("ExprList\b", ar_425);
      fd.Add("Expr\b", ar_126);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      ActionRecord ar_426 = new ActionRecord(ParserActionType.Reduce, null, Terms_69, 0);
      fd.Add(")", ar_426);
      fd = state_257.Actions;
      ActionRecord ar_427 = new ActionRecord(ParserActionType.Reduce, null, Terms_52, 4);
      fd.Add(";", ar_427);
      fd = state_258.Actions;
      fd.Add("Statement\b", ar_149);
      fd.Add(";", ar_8);
      fd.Add("IfStatement\b", ar_9);
      fd.Add("WhileStatement\b", ar_10);
      fd.Add("ForStatement\b", ar_11);
      fd.Add("ForEachStatement\b", ar_12);
      fd.Add("UsingStatement\b", ar_13);
      fd.Add("SwitchStatement\b", ar_14);
      fd.Add("BlockStatement\b", ar_15);
      fd.Add("TryCatchFinallyStatement\b", ar_16);
      fd.Add("ExprStatement\b", ar_17);
      fd.Add("FlowControl\b", ar_18);
      fd.Add("if", ar_20);
      fd.Add("while", ar_21);
      fd.Add("for", ar_22);
      fd.Add("foreach", ar_23);
      fd.Add("using", ar_24);
      fd.Add("switch", ar_25);
      fd.Add("{", ar_26);
      fd.Add("try", ar_27);
      fd.Add("Expr\b", ar_28);
      fd.Add("break", ar_29);
      fd.Add("continue", ar_30);
      fd.Add("return", ar_31);
      fd.Add("throw", ar_32);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("\b", ar_59);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      ActionRecord ar_428 = new ActionRecord(ParserActionType.Reduce, null, Terms_38, 4);
      fd.Add("default", ar_428);
      fd.Add("case", ar_428);
      fd.Add("}", ar_428);
      fd = state_259.Actions;
      ActionRecord ar_429 = new ActionRecord(ParserActionType.Shift, state_263, null, 0);
      fd.Add(";", ar_429);
      fd = state_260.Actions;
      ActionRecord ar_430 = new ActionRecord(ParserActionType.Shift, state_264, null, 0);
      fd.Add("(", ar_430);
      fd = state_261.Actions;
      ActionRecord ar_431 = new ActionRecord(ParserActionType.Shift, state_265, null, 0);
      fd.Add(")", ar_431);
      fd.Add("idn\b", ar_130);
      fd = state_262.Actions;
      fd.Add(",", ar_198);
      ActionRecord ar_432 = new ActionRecord(ParserActionType.Reduce, null, Terms_69, 1);
      fd.Add(")", ar_432);
      fd = state_263.Actions;
      ActionRecord ar_433 = new ActionRecord(ParserActionType.Shift, state_266, null, 0);
      fd.Add("]", ar_433);
      fd = state_264.Actions;
      ActionRecord ar_434 = new ActionRecord(ParserActionType.Shift, state_267, null, 0);
      fd.Add("\b", ar_434);
      ActionRecord ar_435 = new ActionRecord(ParserActionType.Shift, state_268, null, 0);
      fd.Add("ExprList\b", ar_435);
      fd.Add("Expr\b", ar_126);
      fd.Add("ConstExpr\b", ar_33);
      fd.Add("BinExpr\b", ar_34);
      fd.Add("UnaryExpr\b", ar_35);
      fd.Add("QualifiedName\b", ar_36);
      fd.Add("AssignExpr\b", ar_37);
      fd.Add("NewStmt\b", ar_38);
      fd.Add("FuncDefExpr\b", ar_39);
      fd.Add("NewArrStmt\b", ar_40);
      fd.Add("ArrayConstructor\b", ar_41);
      fd.Add("MObjectConstructor\b", ar_42);
      fd.Add("TypeConvertExpr\b", ar_43);
      fd.Add("MetaExpr\b", ar_44);
      fd.Add("RefExpr\b", ar_45);
      fd.Add("VarExpr\b", ar_46);
      fd.Add("true", ar_47);
      fd.Add("false", ar_48);
      fd.Add("null", ar_49);
      fd.Add("string\b", ar_50);
      fd.Add("number\b", ar_51);
      fd.Add("IsExpr\b", ar_52);
      fd.Add("LUnOp\b", ar_53);
      fd.Add("idn\b", ar_54);
      fd.Add("new", ar_55);
      fd.Add("function", ar_105);
      fd.Add("[", ar_56);
      fd.Add("(", ar_57);
      fd.Add("<!", ar_58);
      fd.Add("var", ar_60);
      fd.Add("~", ar_61);
      fd.Add("-", ar_62);
      fd.Add("!", ar_63);
      fd.Add("$", ar_64);
      fd.Add("ref", ar_65);
      fd.Add("out", ar_66);
      ActionRecord ar_436 = new ActionRecord(ParserActionType.Reduce, null, Terms_70, 0);
      fd.Add(")", ar_436);
      fd = state_265.Actions;
      ActionRecord ar_437 = new ActionRecord(ParserActionType.Reduce, null, Terms_53, 4);
      fd.Add(";", ar_437);
      fd = state_266.Actions;
      ActionRecord ar_438 = new ActionRecord(ParserActionType.Reduce, null, Terms_50, 8);
      fd.Add("{", ar_438);
      fd = state_267.Actions;
      ActionRecord ar_439 = new ActionRecord(ParserActionType.Shift, state_269, null, 0);
      fd.Add(")", ar_439);
      fd.Add("idn\b", ar_130);
      fd = state_268.Actions;
      fd.Add(",", ar_198);
      ActionRecord ar_440 = new ActionRecord(ParserActionType.Reduce, null, Terms_70, 1);
      fd.Add(")", ar_440);
      fd = state_269.Actions;
      ActionRecord ar_441 = new ActionRecord(ParserActionType.Reduce, null, Terms_54, 4);
      fd.Add(";", ar_441);
      InitialState = state_0;
      FinalState = state_1;
      TerminalList tl;
      NumberLiteral n = new NumberLiteral();
      IdentifierTerminal v = new IdentifierTerminal();
      ITerminal s = new StringLiteral();
      ITerminal Comment = new CommentTerminal("Comment", "/*", "*/");
      ITerminal LineComment = new CommentTerminal("LineComment", "//", "\n");

      tl = new TerminalList() { SymbolTerminal.GetSymbol("-="), SymbolTerminal.GetSymbol("->"), SymbolTerminal.GetSymbol("--"), SymbolTerminal.GetSymbol("-"), };
      Scanner.TerminalsLookup.Add((char)45, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("!>"), SymbolTerminal.GetSymbol("!="), SymbolTerminal.GetSymbol("!"), };
      Scanner.TerminalsLookup.Add((char)33, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("$"), };
      Scanner.TerminalsLookup.Add((char)36, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("%"), };
      Scanner.TerminalsLookup.Add((char)37, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("&&"), SymbolTerminal.GetSymbol("&"), };
      Scanner.TerminalsLookup.Add((char)38, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("("), };
      Scanner.TerminalsLookup.Add((char)40, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol(")"), };
      Scanner.TerminalsLookup.Add((char)41, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("*"), };
      Scanner.TerminalsLookup.Add((char)42, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol(","), };
      Scanner.TerminalsLookup.Add((char)44, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("."), };
      Scanner.TerminalsLookup.Add((char)46, tl);
      tl = new TerminalList() { LineComment, Comment, SymbolTerminal.GetSymbol("/"), };
      Scanner.TerminalsLookup.Add((char)47, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol(":="), SymbolTerminal.GetSymbol(":"), };
      Scanner.TerminalsLookup.Add((char)58, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol(";"), };
      Scanner.TerminalsLookup.Add((char)59, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("["), };
      Scanner.TerminalsLookup.Add((char)91, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("]"), };
      Scanner.TerminalsLookup.Add((char)93, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("^"), };
      Scanner.TerminalsLookup.Add((char)94, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("{"), };
      Scanner.TerminalsLookup.Add((char)123, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("|>"), SymbolTerminal.GetSymbol("||"), SymbolTerminal.GetSymbol("|"), };
      Scanner.TerminalsLookup.Add((char)124, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("}"), };
      Scanner.TerminalsLookup.Add((char)125, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("~"), };
      Scanner.TerminalsLookup.Add((char)126, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("+="), SymbolTerminal.GetSymbol("++"), SymbolTerminal.GetSymbol("+"), };
      Scanner.TerminalsLookup.Add((char)43, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("<|"), SymbolTerminal.GetSymbol("<="), SymbolTerminal.GetSymbol("<!"), SymbolTerminal.GetSymbol("<"), };
      Scanner.TerminalsLookup.Add((char)60, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol("=="), SymbolTerminal.GetSymbol("="), };
      Scanner.TerminalsLookup.Add((char)61, tl);
      tl = new TerminalList() { SymbolTerminal.GetSymbol(">="), SymbolTerminal.GetSymbol(">"), };
      Scanner.TerminalsLookup.Add((char)62, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("break"), };
      Scanner.TerminalsLookup.Add((char)98, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("continue"), SymbolTerminal.GetSymbol("catch"), SymbolTerminal.GetSymbol("case"), };
      Scanner.TerminalsLookup.Add((char)99, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("default"), };
      Scanner.TerminalsLookup.Add((char)100, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("else"), };
      Scanner.TerminalsLookup.Add((char)101, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("function"), SymbolTerminal.GetSymbol("foreach"), SymbolTerminal.GetSymbol("finally"), SymbolTerminal.GetSymbol("false"), SymbolTerminal.GetSymbol("for"), };
      Scanner.TerminalsLookup.Add((char)102, tl);
      tl = new TerminalList() { v, v, SymbolTerminal.GetSymbol("global"), };
      Scanner.TerminalsLookup.Add((char)103, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)65, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)66, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)67, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)68, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)69, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)70, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)71, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)72, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)73, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)74, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)75, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)76, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)77, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)78, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)79, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)80, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)81, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)82, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)83, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)84, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)85, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)86, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)87, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)88, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)89, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)90, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)97, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)104, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("invariant"), SymbolTerminal.GetSymbol("is"), SymbolTerminal.GetSymbol("if"), SymbolTerminal.GetSymbol("in"), };
      Scanner.TerminalsLookup.Add((char)105, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)106, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)107, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)108, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)109, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("null"), SymbolTerminal.GetSymbol("new"), };
      Scanner.TerminalsLookup.Add((char)110, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("out"), };
      Scanner.TerminalsLookup.Add((char)111, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("post"), SymbolTerminal.GetSymbol("pre"), };
      Scanner.TerminalsLookup.Add((char)112, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)113, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("return"), SymbolTerminal.GetSymbol("ref"), };
      Scanner.TerminalsLookup.Add((char)114, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("switch"), };
      Scanner.TerminalsLookup.Add((char)115, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("throw"), SymbolTerminal.GetSymbol("true"), SymbolTerminal.GetSymbol("try"), };
      Scanner.TerminalsLookup.Add((char)116, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("using"), };
      Scanner.TerminalsLookup.Add((char)117, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("var"), };
      Scanner.TerminalsLookup.Add((char)118, tl);
      tl = new TerminalList() { v, SymbolTerminal.GetSymbol("while"), };
      Scanner.TerminalsLookup.Add((char)119, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)120, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)121, tl);
      tl = new TerminalList() { v, };
      Scanner.TerminalsLookup.Add((char)122, tl);
      tl = new TerminalList() { n, n, };
      Scanner.TerminalsLookup.Add((char)48, tl);
      tl = new TerminalList() { n, };
      Scanner.TerminalsLookup.Add((char)49, tl);
      tl = new TerminalList() { n, };
      Scanner.TerminalsLookup.Add((char)50, tl);
      tl = new TerminalList() { n, };
      Scanner.TerminalsLookup.Add((char)51, tl);
      tl = new TerminalList() { n, };
      Scanner.TerminalsLookup.Add((char)52, tl);
      tl = new TerminalList() { n, };
      Scanner.TerminalsLookup.Add((char)53, tl);
      tl = new TerminalList() { n, };
      Scanner.TerminalsLookup.Add((char)54, tl);
      tl = new TerminalList() { n, };
      Scanner.TerminalsLookup.Add((char)55, tl);
      tl = new TerminalList() { n, };
      Scanner.TerminalsLookup.Add((char)56, tl);
      tl = new TerminalList() { n, };
      Scanner.TerminalsLookup.Add((char)57, tl);
      tl = new TerminalList() { s, };
      Scanner.TerminalsLookup.Add((char)39, tl);
      tl = new TerminalList() { s, };
      Scanner.TerminalsLookup.Add((char)34, tl);
      tl = new TerminalList() { s, };
      Scanner.TerminalsLookup.Add((char)64, tl);
      SymbolTerminal.RegisterPunctuation("(", ")", "[", "]", "{", "}", ",", ";");
      SymbolTerminal.RegisterOperators(1, "=", "+=", "-=", ":=");
      SymbolTerminal.RegisterOperators(2, "|", "||");
      SymbolTerminal.RegisterOperators(3, "&", "&&");
      SymbolTerminal.RegisterOperators(4, "==", "!=", ">", "<", ">=", "<=");
      SymbolTerminal.RegisterOperators(5, "is");
      SymbolTerminal.RegisterOperators(6, "+", "-");
      SymbolTerminal.RegisterOperators(7, "*", "/", "%");
      SymbolTerminal.RegisterOperators(8, Associativity.Right, "^");
      SymbolTerminal.RegisterOperators(9, "~", "!", "$", "++", "--");
      SymbolTerminal.RegisterOperators(10, ".");
      SymbolTerminal.ClearSymbols();

    }
示例#7
0
    private AstNode CreateNode(ActionRecord reduceAction, SourceSpan sourceSpan, AstNodeList childNodes)
    {
      IGrammarTerm nonTeminal = reduceAction.NonTerminal;
      AstNode result;

      AstNodeArgs args = new AstNodeArgs(nonTeminal, sourceSpan, childNodes);
 
      Type ntNodeType = nonTeminal.NodeType ?? typeof(AstNode);

      bool isList = nonTeminal.IsSet(TermOptions.IsList);
      if (isList && childNodes.Count > 1 && childNodes[0].Term == nonTeminal)
      {
        result = childNodes[0];
        AstNode newChild = childNodes[childNodes.Count - 1];
        newChild.Parent = result;
        result.ChildNodes.Add(newChild);
        return result;
      }

      if (nonTeminal.IsSet(TermOptions.IsStarList) && childNodes.Count == 1)
      {
        childNodes = childNodes[0].ChildNodes;
      }

      if (!isList && !nonTeminal.IsSet(TermOptions.IsPunctuation) && childNodes.Count == 1)
      {
        Type childNodeType = childNodes[0].Term.NodeType ?? typeof(AstNode);
        if (childNodeType == ntNodeType || childNodeType.IsSubclassOf(ntNodeType))
          return childNodes[0];
      }

      result = null;
      if (ntNodeType == typeof(AstNode))
      {
        result = new AstNode(args);
      }
      else
      {
        ConstructorInfo ctor = ntNodeType.GetConstructor(new Type[] { typeof(AstNodeArgs) });
        if (ctor == null)
          throw new Exception("Failed to located constructor: " + ntNodeType.ToString() + "(AstNodeArgs args)");

        result = (AstNode)ctor.Invoke(new object[] { args });
      }

      return result;
    }
示例#8
0
    private void ExecuteReduceAction(ActionRecord action)
    {
      ParserState oldState = _currentState;
      int popCnt = action.PopCount;

      AstNodeList childNodes = new AstNodeList();
      for (int i = 0; i < action.PopCount; i++)
      {
        AstNode child = _stack[_stack.Count - popCnt + i].Node;
        if (!child.Term.IsSet(TermOptions.IsPunctuation))
          childNodes.Add(child);
      }

      SourceSpan newNodeSpan;
      if (popCnt == 0)
      {
        newNodeSpan = new SourceSpan(_currentToken.Location, 0);
      }
      else
      {
        SourceLocation firstPopLoc = _stack[_stack.Count - popCnt].Node.Location;
        int lastPopEndPos = _stack[_stack.Count - 1].Node.Span.EndPos;
        newNodeSpan = new SourceSpan(firstPopLoc, lastPopEndPos - firstPopLoc.Position);
        _currentState = _stack[_stack.Count - popCnt].State;
        _stack.Pop(popCnt);
      }
      
      AstNode node = CreateNode(action, newNodeSpan, childNodes);
      _stack.Push(node, _currentState);

      ActionRecord gotoAction;
      if (_currentState.Actions.TryGetValue(action.NonTerminal.Key, out gotoAction))
      {
        _currentState = gotoAction.NewState;
      }
      else
        throw new CompilerException(string.Format("Cannot find transition for input {0}; state: {1}, popped state: {2}",
              action.NonTerminal, oldState, _currentState));
    }
示例#9
0
 private void ExecuteShiftAction(ActionRecord action)
 {
   _stack.Push(_currentToken, _currentState);
   _currentState = action.NewState;
   NextToken();
 }