ProgrammingLanguageNr1.Parser.declarationAndAssignment C# (CSharp) Method

declarationAndAssignment() private method

private declarationAndAssignment ( ) : ProgrammingLanguageNr1.AST
return ProgrammingLanguageNr1.AST
        private AST declarationAndAssignment()
        {
            #if WRITE_DEBUG_INFO
            Console.WriteLine("declaration and assignment");
            #endif

            AST_VariableDeclaration declarationTree = declaration();
            Token assignmentToken = match(Token.TokenType.ASSIGNMENT);
            AST expressionTree = expression();

            if(expressionTree != null) {
                AST_Assignment assignmentTree = new AST_Assignment(assignmentToken, declarationTree.Name);

                assignmentTree.addChild(expressionTree);

                AST declarationAndAssignmentTree =
                        new AST(new Token(Token.TokenType.STATEMENT_LIST, "<DECLARATION_AND_ASSIGNMENT>", declarationTree.getToken().LineNr, declarationTree.getToken().LinePosition));
                declarationAndAssignmentTree.addChild(declarationTree);
                declarationAndAssignmentTree.addChild(assignmentTree);

                return declarationAndAssignmentTree;
            } else {
                throw new Error("The expression after = makes no sense", Error.ErrorType.SYNTAX,
                    lookAhead(1).LineNr, lookAhead(1).LinePosition);
            }
        }