Esempio n. 1
0
//**//
void statementlists(){
	if (lookahead == IF){
		//分支语句
		switchStatement();
	}
	else if (lookahead == id){
		//赋值语句
		assignment();
	}
	else if (lookahead == WHILE){
		//while语句
		loopStatement();
	}
	else if (lookahead == input){
		//输入语句
		inputStatement();
	}
	else if (lookahead == output){
		//输出
		outputStatement();
	}
	else if (lookahead == call){
		//函数调用
		functioncall();
	}
	else if (lookahead == var){
		//变量定义
		varDefinition();
	}
	else if (lookahead == begin){
		//复合语句
		complexStatementlists();
	}
}
Esempio n. 2
0
int main(){
	
	inputStatement(stdin, CHUNK, '\n'); // read input
	advance(); // move to first symbol
	E();
	if(!match(END)){
		printf("\n Invalid Input\n");
	}
	else{
		int i;
		for (i = 0; i <= op_index; i += 1)
		{
			printf("%s ",output[i].lexeme);
		}
	}
	
	return 0;
}
Esempio n. 3
0
int main(int argc, char* argv[])
{	
    if (argc != 1)
    {
        printf("Usage: ReversePolish\n");
        return 1;
    }
    char* infix = inputStatement(CHUNK,'\n');
    int i;
	if(!validate(infix)){
		printf("invalid input\n");
	}
	else{
		generate_postfix();
		for(i = 0; i <= postfix_index; i++){
			printf("%s ",postfix[i].lexeme);
		}
		clear_Stack();
		evaluate();
	}	
    return 0;
}