Ejemplo n.º 1
0
ParseTree* Parser::DECL()
{
	ParseTree* retTree = new ParseTree();
    
	if(!(*parser).Advance()) ThrowParserError();
    
	(*retTree).SetLeaf1(ID_LIST(false)->getLeaf());
    
	if(!((*parser).get().token == SEMI_COLON)) ThrowParserError();

	if(!(*parser).Advance()) ThrowParserError();
    
	return retTree;
}
Ejemplo n.º 2
0
int PROG_BODY(){
	printf("	Program body begins\n");
	if(getNextToken()==VAR){
		printf("		declaration begins\n");
		sa_index++;
		if(ID_LIST()==TRUE){
			if(getNextToken()==SEMICOLON){
				printf("		declaration ends\n");
				sa_index++;
				if(STMT_LIST()==TRUE){
					printf("	Program body ends\n");
					return TRUE;
				}
				return FALSE;
			}
			return FALSE;
		}
		return FALSE;
	}

	return FALSE;
}
Ejemplo n.º 3
0
ParseTree* Parser::ID_LIST(bool in)
{
	ParseTree* retTree = new ParseTree();
    
	if(!((*parser).get().token == ID))
    {
		ThrowParserError();
	}
	if(in)
    {
		if(!isin((*parser).get().string))
        {
			ThrowParserError();
		}
	}
    else
    {
		if(isin((*parser).get().string))
        {
			ThrowParserError();
		}
	}

	(*retTree).SetLeaf1(ID_TERMINAL()->getLeaf());
    
	if((*parser).get().token == COMMA)
    {
		if(!(*parser).Advance()) ThrowParserError();
		(*retTree).SetLeaf2(ID_LIST(in)->getLeaf());
		(*retTree).setAlt(2);
	}
    else
    {
		(*retTree).setAlt(1);
	}
	return retTree;

}