?? main.c
字號:
case ifsym: printf("ConditionStatement-->\n"); printspace(lev+iden); printf("keyword:if\n"); getsymdo; if (sym == lparen) { printspace(lev+iden); printf("lparen:(\n"); getsymdo; condition(lev+iden); if (sym == rparen) { printspace(lev+iden); printf("rparen:)\n"); getsymdo; statement(lev+iden); while (sym == elsesym) { printspace(lev+iden); printf("keyword:else\n"); getsymdo; if (sym == ifsym) { printspace(lev+iden); printf("keyword:if\n"); getsymdo; if (sym == lparen) { printspace(lev+iden); printf("lparen:(\n"); getsymdo; condition(lev+iden); if (sym == rparen) { printspace(lev+iden); printf("rparen:)\n"); getsymdo; statement(lev+iden); } } } else { statement(lev+iden); } } } } break; case whilesym: printf("WhileStatement-->\n"); printspace(lev+iden); printf("keyword:while\n"); getsymdo; if (sym == lparen) { printspace(lev+iden); printf("lparen:(\n"); getsymdo; condition(lev+iden); if (sym == rparen) { printspace(lev+iden); printf("rparen:)\n"); getsymdo; statement(lev+iden); } } break; case readsym: printf("ReadStatement-->\n"); printspace(lev+iden); printf("keyword:read\n"); getsymdo; if (sym == lparen) { printspace(lev+iden); printf("lparen:(\n"); getsymdo; if (sym == ident) { printspace(lev+iden); printf("identifier:%s\n",id); getsymdo; } while (sym == comma) { printspace(lev+iden); printf("comma:,\n"); getsymdo; if (sym == ident) { printspace(lev+iden); printf("identifier:%s\n",id); getsymdo; } } if (sym == rparen) { printspace(lev+iden); printf("rparen:)\n"); getsymdo; if (sym == semicolon) { printspace(lev+iden); printf("semicolon:;\n"); getsymdo; } } } break; case lbrace: printf("CompoundStatement-->\n"); printspace(lev+iden); printf("lbrace:{\n"); getsymdo; while (sym != rbrace) { statement(lev+iden); } if (sym == rbrace) { printspace(lev+iden); printf("rbrace:}\n"); getsymdo; } break; case writesym: printf("WriteStatement-->\n"); printspace(lev+iden); printf("keyword:write\n"); getsymdo; if (sym == lparen) { printspace(lev+iden); printf("lparen:(\n"); getsymdo; expression(lev+iden); while(sym == comma) { printspace(lev+iden); printf("comma:,\n"); getsymdo; expression(lev+iden); } if (sym == rparen) { printspace(lev+iden); printf("rparen:)\n"); getsymdo; if (sym == semicolon) { printspace(lev+iden); printf("semicolon:;\n"); getsymdo; } } } default: break; }}int condition(int lev){ printspace(lev); printf("Condition-->\n"); expression(lev+iden); switch (sym) { case eql: printspace(lev+iden); printf("equall: ==\n"); getsymdo; break; case neq: printspace(lev+iden); printf("not equal: !=\n"); getsymdo; ;break; case gtr: printspace(lev+iden); printf("greater than:>\n"); getsymdo; ;break; case geq: printspace(lev+iden); printf("greater or equal:>=\n"); getsymdo; ;break; case lss: printspace(lev+iden); printf("less than:<\n"); getsymdo; ;break; case leq: printspace(lev+iden); printf("less or equal:<=\n"); getsymdo; ;break; default: break; } expression(lev+iden);}int vardeclaration(int lev) { printspace(lev); printf("VarDeclaration-->\n"); printspace(lev+iden); if (sym == intsym) printf("keyword:int\n"); else printf("keyword:real\n"); getsymdo; while (sym != semicolon) { vardeclarationid(lev+iden); if (sym == assign) { printspace(lev+iden); printf("assign operator:=\n"); getsymdo; varinitializer(lev+iden); if(sym == comma) { printspace(lev+iden); printf("comma:,\n"); getsymdo; } } } if (sym == semicolon) { printspace(lev+iden); printf("semicolon:;\n"); getsymdo; }} int vardeclarationid(int lev){ printspace(lev); printf("VarDeclarationid-->\n"); if (sym == ident) { printspace(lev+iden); printf("identifier:%s\n",id); getsymdo; while (sym == lbracket) { printspace(lev+iden); printf("lbracket:[\n"); getsymdo; if (sym == rbracket) { printspace(lev+iden); printf("rbracket:]\n"); getsymdo; } } }}int varinitializer(int lev){ printspace(lev); printf("VarInitializer-->\n"); if (sym == lbrace) { arrayinitializer(lev+iden); } else{ expression(lev+iden); }}int arrayinitializer(int lev) { printspace(lev); printf("ArrayInitializer-->\n"); printspace(lev+iden); printf("lbrace:{\n"); getsymdo; while(sym != rbrace) { varinitializer(lev+iden); if (sym == comma) { printspace(lev+iden); printf("comma:,\n"); getsymdo; } } if (sym == rbrace) { printspace(lev+iden); printf("rbrace:}\n"); getsymdo; }}int expression(int lev) { printspace(lev); printf("Expression-->\n"); item(lev+iden); while (sym == plus || sym == minus) { printspace(lev+iden); if (sym == plus) printf("plus:+\n"); else printf("minus:-\n"); getsymdo; item(lev+iden); }}int item(int lev) { printspace(lev); printf("Item-->\n"); factor(lev+iden); while (sym == times || sym == slash) { printspace(lev+iden); if (sym == times) printf("times:*\n"); else printf("slash:/\n"); getsymdo; factor(iden+lev); }}int factor(int lev) { printspace(lev); printf("Factor-->\n"); printspace(lev+iden); switch(sym) { case ident: printf("identifier:%s\n",id); getsymdo; break; case number: printf("number:%d\n",num); getsymdo; break; case real: printf("real:%f\n",realvalue); getsymdo; break; case minus: printf("minus:-\n"); getsymdo; factor(lev+iden); break; case lparen: printf("lparen:(\n"); getsymdo; expression(lev+iden); if (sym == rparen) { printspace(lev+iden); printf("rparen:)\n"); getsymdo; } break; default:break; }}int constdeclaration(int lev) { printspace(lev); printf("ConstDeclaration\n"); printspace(lev+iden); printf("keyword:const\n"); getsymdo; if (sym == intsym || sym == realsym) { printspace(lev+iden); if (sym == intsym) printf("keyword:int\n"); else printf("keyword:real\n"); getsymdo; while (sym != semicolon) { if (sym == ident) { printspace(lev+iden); printf("identifier:%s\n",id); getsymdo; if (sym == assign) { printspace(lev+iden); printf("assign operator:=\n"); getsymdo; printspace(lev+iden); if (sym == number) { printf("number:%d\n",num); } else if (sym == real) { printf("real:%f\n",realvalue); } getsymdo; if (sym == comma) { printspace(lev+iden); printf("comma:,\n"); getsymdo; } } } } if (sym == semicolon) { printspace(lev+iden); printf("semicolon:;\n"); getsymdo; } }}int error(int eid){ switch(eid){ }}void printspace(int n) { int i = n; for (i = 0; i < n; i++) { printf(" "); }}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -