Next: , Previous: Rpcalc Decls, Up: RPN Calc   [Contents][Index]


2.1.2 rpcalc¤Î¤¿¤á¤Îʸˡµ¬Â§

µÕ¥Ý¡¼¥é¥ó¥Éµ­Ë¡ÅÅÂî¤Î¤¿¤á¤Îʸˡµ¬Â§¤ò¼¨¤·¤Þ¤¹¡£

input:    /* ¶õ */
        | input line
;

line:     '\n'
        | exp '\n'  { printf ("\t%.10g\n", $1); }
;

exp:      NUM             { $$ = $1;         }
        | exp exp '+'     { $$ = $1 + $2;    }
        | exp exp '-'     { $$ = $1 - $2;    }
        | exp exp '*'     { $$ = $1 * $2;    }
        | exp exp '/'     { $$ = $1 / $2;    }
      /* ¤Ù¤­¾è´Ø¿ô */
        | exp exp '^'     { $$ = pow ($1, $2); }
      /* ñ¹à¤Î¥Þ¥¤¥Ê¥¹    */
        | exp 'n'         { $$ = -$1;        }
;
%%

¤³¤³¤ÇÄêµÁ¤µ¤ì¤ërpcalc¡Ö¸À¸ì¡×¤Î¥°¥ë¡¼¥×¤Ï¡¢ ¼°¡Êexp¡Ë¤È¡¢ÆþÎϹԡÊline¡Ë¤È¡¢ ´°Á´¤ÊÆþÎϤμ̤·¡Êinput¡Ë¤Ç¤¹¡£ ¤³¤ì¤é¤ÎÈó½ªÃ¼µ­¹æ¤Ë¤Ï¡¢¡ÖÏÀÍýÏ¡פȤ¤¤¦‘|’µ­¹æ¤Ç¶èÀÚ¤é¤ì¤¿¡¢ ¤¤¤¯¤Ä¤«¤Îµ¬Â§¤¬¤¢¤ê¤Þ¤¹¡£ °Ê²¼¤Î¹à¤Ç¡¢¤³¤ì¤é¤Îµ¬Â§¤Î°ÕÌ£¤òÀâÌÀ¤·¤Þ¤¹¡£

¸À¸ì¤Î°ÕÌ£¤Ï¡¢¥°¥ë¡¼¥×¤¬Ç§¼±¤µ¤ì¤¿¤È¤­¤Î¥¢¥¯¥·¥ç¥ó¤Ë¤è¤Ã¤Æ·è¤Þ¤ê¤Þ¤¹¡£ ¥¢¥¯¥·¥ç¥ó¤È¤Ï¡¢¥Ö¥ì¡¼¥¹¤Ç°Ï¤Þ¤ì¤¿C¤Î¥×¥í¥°¥é¥à¤Ç¤¹¡£ See Actions¡£

¤³¤ì¤é¤Î¥¢¥¯¥·¥ç¥ó¤òC¤Ç½ñ¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¤¬¡¢ Bison¤Ë¤Ïµ¬Â§¤Î´Ö¤Ç°ÕÌ£Ãͤò¼õ¤±ÅϤ·¤¹¤ëÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£ ¤½¤ì¤¾¤ì¤Î¥¢¥¯¥·¥ç¥ó¤Ç¡¢µ¼»÷ÊÑ¿ô$$¤Ï¡¢ ¤½¤Îµ¬Â§¤¬¹½À®¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¥°¥ë¡¼¥×¤Î°ÕÌ£Ãͤò¼¨¤·¤Þ¤¹¡£ $$¤ËÃͤòÂåÆþ¤¹¤ë¤³¤È¤¬¡¢¥¢¥¯¥·¥ç¥ó¤Î¼ç¤Ê»Å»ö¤Ç¤¹¡£ µ¬Â§¤ÎÉôÉʤΰÕÌ£Ãͤϡ¢$1¡¢$2¤Ê¤É¤Î ̾Á°¤Ç»²¾È¤µ¤ì¤Þ¤¹¡£