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);
}
}