Next: Mfcalc Symtab, Previous: Mfcalc Decl, Up: Multi-function Calc
mfcalc
のための文法規則多機能電卓のための文法規則を示します。
大部分は、calc
の文法規則からの複写です。
VAR
、FUNCT
に関連する3つの規則が新しいものです。
input: /* 空 */ | input line ; line: '\n' | exp '\n' { printf ("\t%.10g\n", $1); } | error '\n' { yyerrok; } ; exp: NUM { $$ = $1; } | VAR { $$ = $1->value.var; } | VAR '=' exp { $$ = $3; $1->value.var = $3; } | FNCT '(' exp ')' { $$ = (*($1->value.fnctptr))($3); } | exp '+' exp { $$ = $1 + $3; } | exp '-' exp { $$ = $1 - $3; } | exp '*' exp { $$ = $1 * $3; } | exp '/' exp { $$ = $1 / $3; } | '-' exp %prec NEG { $$ = -$2; } | exp '^' exp { $$ = pow ($1, $3); } | '(' exp ')' { $$ = $2; } ; /* 文法の終わり */ %%