示例#1
0
        // Appends NFunDef to nFunDefList
        public void FunDef(NFunDefList nFunDefList)
        {
            NFunDef nFunDef = new NFunDef()
            {
                AnchorToken = Expect(TokenCategory.IDENTIFIER)
            };
            NParameterList nParameterList = new NParameterList();

            Expect(TokenCategory.PARENTHESIS_LEFT);
            if (CurrentToken == TokenCategory.IDENTIFIER)
            {
                nParameterList.Add(new NParameter()
                {
                    AnchorToken = Expect(TokenCategory.IDENTIFIER)
                });
                while (CurrentToken == TokenCategory.COMMA)
                {
                    Expect(TokenCategory.COMMA);
                    nParameterList.Add(new NParameter()
                    {
                        AnchorToken = Expect(TokenCategory.IDENTIFIER)
                    });
                }
            }
            Expect(TokenCategory.PARENTHESIS_RIGHT);
            Expect(TokenCategory.CURLY_BRACE_LEFT);
            NVarDefList nVarDefList = (NVarDefList)VarDefList();
            NStmtList   nStmtList   = (NStmtList)StmtList();

            Expect(TokenCategory.CURLY_BRACE_RIGHT);
            nFunDef.Add(nParameterList);
            nFunDef.Add(nVarDefList);
            nFunDef.Add(nStmtList);
            nFunDefList.Add(nFunDef);
        }
        public string Visit(NParameterList nParameterList)
        {
            string retVal        = "";
            int    childrenCount = nParameterList.children.Count;

            for (int i = 0; i < childrenCount; ++i)
            {
                retVal += Visit((dynamic)nParameterList[i]);
                if (i != childrenCount - 1)
                {
                    retVal += ", ";
                }
            }
            return(retVal);
        }
示例#3
0
        public void Visit(NParameterList node)
        {
            Console.WriteLine($"+++++++++++++++ NPARAMETERLIST ++++++++++++++++");

            VisitChildren(node);
        }