public AstIntermediateInitializerCode(InitializerNode parseTree)
 {
     if (parseTree == null)
         throw new ArgumentNullException();
     this.ParseTree = parseTree;
 }
Esempio n. 2
0
        protected virtual InitializerNode ParseInitializer()
        {
            // PARSE: <initializer definition> ::= [<temporaries>] [<statements>]
            InitializerNode result = new InitializerNode();
            Token token = this.GetNextTokenxx(Preference.VerticalBar | Preference.NegativeSign);

            // PARSE: [<temporaries>]
            ParseTemporariesResult ptr = this.ParseTemporaries(result, token);

            // PARSE: <statements>
            token = this.GetNextTokenxx(Preference.NegativeSign);
            StatementNode statements = this.ParseStatement(result, token);

            // Should be done.
            token = this.GetNextTokenxx(Preference.Default);
            if (!(token is EofToken))
                this.ReportParserError(result, SemanticErrors.UnexpectedCodeAfterInitializer, token);

            result.SetContents(ptr.LeftBar, ptr.Temporaries, ptr.RightBar, statements);
            return result;
        }