Пример #1
0
CoutStatementNode * Parser::Cout(){
	CoutStatementNode * coutnode = new CoutStatementNode();
	Match(COUT_TOKEN);
	Match(INSERTION_TOKEN);
	ExpressionNode * expr = Expression();
	coutnode->AddCnode(expr);
	while(true){	
		Token next = scan->PeekNextToken();
		if(next.GetTokenType() == INSERTION_TOKEN){
			Match(next.GetTokenType());
			Token nNext = scan->PeekNextToken();
			if(nNext.GetTokenType() == ENDL_TOKEN){
				Match(ENDL_TOKEN);
				coutnode->AddCnode(NULL);
			}
			else{
				ExpressionNode * nexpr = Expression();
				coutnode->AddCnode(nexpr);
			}
		}
		else{
			if(next.GetTokenType() == ENDL_TOKEN){
				Match(ENDL_TOKEN);
				coutnode->AddCnode(NULL);
			}
			Match(SEMICOLIN_TOKEN);
			break;
		}
	}
	MSG("Creating a CoutStatementNode.");
	return coutnode;
}