diff --git a/parser/calc/parser.y b/parser/calc/parser.y --- a/parser/calc/parser.y +++ b/parser/calc/parser.y @@ -7,9 +7,9 @@ #include #include - int regs[26]; + int regs[26]; int base; - + int yyerror(); int yylex(); %} @@ -20,65 +20,67 @@ %left UMINUS %% -list : /* empty */ - | list stat '\n' +list: + /* empty */ + | list stat '\n' | list error '\n' { yyerrok; }; -stat : - expr { (void) printf( "RESULT: %d\n", $1 ); } +stat: + expr { (void) printf( "RESULT: %d\n", $1 ); } | LETTER '=' expr { regs[$1] = $3; } ; - expr : '(' expr ')' - { - $$ = $2; - } - | expr PLUS expr - { - $$ = $1 + $3; - } - | expr MINUS expr - { - $$ = $1 - $3; - } - | expr MUL expr - { - $$ = $1 * $3; - } - | expr DIV expr - { - $$ = $1 / $3; - } - | MINUS expr %prec UMINUS - { - $$ = -$2; - } - | LETTER - { - $$ = regs[$1]; - } - | number - ; +expr: + '(' expr ')' + { + $$ = $2; + } + | expr PLUS expr + { + $$ = $1 + $3; + } + | expr MINUS expr + { + $$ = $1 - $3; + } + | expr MUL expr + { + $$ = $1 * $3; + } + | expr DIV expr + { + $$ = $1 / $3; + } + | MINUS expr %prec UMINUS + { + $$ = -$2; + } + | LETTER + { + $$ = regs[$1]; + } + | number + ; - number : DIGIT - { - $$ = $1; base = ($1==0) ? 8 : 10; - } - | number DIGIT - { - $$ = base * $1 + $2; - } - ; - +number: + DIGIT + { + $$ = $1; base = ($1==0) ? 8 : 10; + } + | number DIGIT + { + $$ = base * $1 + $2; + } + ; %% -int yyerror() +int yyerror() { printf("ERROR\n"); return 0; } -int yywrap() +int yywrap() { return 1; }