Esempio n. 1
0
        internal void ParseMethod(Token tok)
        {
            Advance(); //past 'method
            Token nameToken = CurrentToken;

            Advance(); //past name
            //
            ExpertDef parent    = (ExpertDef)CurrentNode;
            TaskDef   methodDef = parent.CreateTaskDef(nameToken, AstNodeKind.TaskDef);

            //
            ParseTrigger(methodDef);
            ParseProperties(methodDef);
            //
            if (CurrentToken == null)
            {
                return;
            }
            //else
            PushTaskDef(methodDef);
            PushNode(methodDef.ProcedureDef);
            do
            {
                CreateState(CurrentList);
                ParseMethodItem(methodDef);
                PopState();
            } while (Advance());
            PopNode();
            PopTaskDef();
        }
Esempio n. 2
0
        internal void ParseExpert(Token tok)
        {
            Advance();//past expert
            Token name = CurrentToken;

            Advance();//past name
            //
            Token baseName = TokenInstance.CSharp.EXPERT;

            if (CurrentToken.Kind == TokenKind.RoundList)
            {
                TokenList tokList = CurrentList;
                if (tokList.Count != 0)
                {
                    baseName = tokList[0];
                }
                Advance();//past base name
            }
            //
            ExpertDef def = new ExpertDef(name, baseName);

            CurrentNode.AddChild(def);
            ParseLines(def);
        }