コード例 #1
0
        private ActionSequenceNode ParseElseifStatements()
        {
            ActionSequenceNode itsAST;
            SourceCodePosition itsPos    = _currentToken.SourcePosition;
            ActionNode         itsAction = ParseElseifStatement();

            if (_currentToken.Type == Token.TokenType.Elseif)
            {
                ActionSequenceNode itsNextActions = ParseElseifStatements();
                itsAST = new MultipleActionSequenceNode(itsAction, itsNextActions, itsPos);
            }
            else
            {
                itsAST = new SingleActionSequenceNode(itsAction, itsPos);
            }
            return(itsAST);
        }
コード例 #2
0
        private ActionSequenceNode ParseActionStatements()
        {
            ActionSequenceNode itsAST;
            SourceCodePosition itsPos    = _currentToken.SourcePosition;
            ActionNode         itsAction = ParseActionStatement();

            if (Array.Exists(_actionStatementFirstSet, e => e == _currentToken.Type))
            {
                ActionSequenceNode itsNextActions = ParseActionStatements();
                itsAST = new MultipleActionSequenceNode(itsAction, itsNextActions, itsPos);
            }
            else
            {
                itsAST = new SingleActionSequenceNode(itsAction, itsPos);
            }
            return(itsAST);
        }
コード例 #3
0
 public object Visit(MultipleActionSequenceNode n, object o)
 {
     n.Action.Accept(this, null);
     n.Actions.Accept(this, null);
     return(null);
 }