⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grammar.y

📁 用YACC实现的一个小的编译工具
💻 Y
字号:
%start ROOT%token EQ%token NE%token LT%token LE%token GT%token GE%token PLUS%token MINUS%token MULT%token DIVIDE%token RPAREN%token LPAREN%token ASSIGN%token SEMICOLON%token IF%token THEN%token ELSE%token FI%token WHILE%token DO%token OD%token PRINT%token NUMBER%token NAME%%ROOT:  stmtseq { execute($1); } ;statement:  designator ASSIGN expression { $$ = assignment($1, $3); } | PRINT expression { $$ = print($2); } | IF expression THEN stmtseq ELSE stmtseq FI { $$ = ifstmt($2, $4, $6); }| IF expression THEN stmtseq FI { $$ = ifstmt($2, $4, empty()); }| WHILE expression DO stmtseq OD { $$ = whilestmt($2, $4); };stmtseq:  stmtseq SEMICOLON statement { $$ = seq($1, $3); }| statement { $$ = $1; };expression:  expr2 { $$ = $1; } | expr2 EQ expr2 { $$ = eq($1, $3); }| expr2 NE expr2 { $$ = ne($1, $3); }| expr2 LT expr2 { $$ = le($1, $3); }| expr2 LE expr2 { $$ = le($1, $3); }| expr2 GT expr2 { $$ = gt($1, $3); }| expr2 GE expr2 { $$ = gt($1, $3); };expr2:  expr3 { $$ == $1; }| expr2 PLUS expr3 { $$ = plus($1, $3); }| expr2 MINUS expr3 { $$ = minus($1, $3); };expr3:  expr4 { $$ = $1; }| expr3 MULT expr4 { $$ = mult($1, $3); }| expr3 DIVIDE expr4 { $$ = divide ($1, $3); };expr4:  PLUS expr4 { $$ = $2; }| MINUS expr4 { $$ = neg($2); }| LPAREN expression RPAREN { $$ = $2; }| NUMBER { $$ = number($1); }| designator { $$ = $1; };designator:  NAME { $$ = name($1); };

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -