Next: Mfcalc Rules, Up: Multi-function Calc [Contents][Index]
mfcalc
¤Î¤¿¤á¤ÎÄêµÁ°Ê²¼¤Ë¤Ï¡¢Â¿µ¡Ç½ÅÅÂî¤Î¤¿¤á¤Î¡¢C¤ÈBison¤ÎÀë¸À¤¬¤¢¤ê¤Þ¤¹¡£
%{ #include <math.h> /* cos(), sin()¤Ê¤É¤Î¿ô³Ø´Ø¿ô¤Î¤¿¤á */ #include "calc.h" /* `symrec'¤ÎÄêµÁ¤ò´Þ¤à */ %} %union { double val; /* ¿ôÃͤòÊÖ¤¹¤¿¤á */ symrec *tptr; /* µ¹æÉ½¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¤¿¤á */ } %token <val> NUM /* ñ½ã¤ÊÇÜÀºÅÙ¿ôÃÍ */ %token <tptr> VAR FNCT /* ÊÑ¿ô¤È´Ø¿ô */ %type <val> exp %right '=' %left '-' '+' %left '*' '/' %left NEG /* ÈÝÄê -- ñ¹à¤ÎÉé */ %right '^' /* ¤Ù¤¾è */ /* ʸˡ¤¬Â³¤¯ */ %%
¤³¤Îʸˡ¤ÎƳÆþÉôʬ¤Ç¤Ï¡¢Bison¸À¸ì¤Î¿·¤·¤¤2¤Ä¤Îµ¡Ç½¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£ ¤³¤ì¤é¤Îµ¡Ç½¤Ë¤è¤Ã¤Æ¡¢°ÕÌ£Ãͤ¬¤¤¤í¤¤¤í¤Ê¥Ç¡¼¥¿·¿¤ò»ý¤Æ¤Þ¤¹ ¡Êsee More Than One Value Type¡Ë¡£
%union
Àë¸À¤Ï¡¢YYSTYPE
¤ÎÄêµÁ¤ÎÂå¤ï¤ê¤Ç¡¢
²Äǽ¤Ê·¿¤Î°ìÍ÷¤ò»ØÄꤷ¤Þ¤¹¡£
¤³¤³¤Çµö¤µ¤ì¤ë·¿¤Ï¡¢¡Êexp
¤ÈNUM
¤Î¤¿¤á¤Î¡ËÇÜÀºÅÙÉâÆ°¾®¿ôÅÀ·¿¤È¡¢
µ¹æÉ½¤Î¹àÌܤؤΥݥ¤¥ó¥¿¤Ç¤¹¡£
See The Collection of Value Types¡£
Ãͤ¬¤¤¤í¤¤¤í¤Ê·¿¤ò»ý¤Ä¤³¤È¤¬¤Ç¤¤ë¤Î¤Ç¡¢
°ÕÌ£Ãͤò»È¤¦¤½¤ì¤¾¤ì¤Îʸˡµ¹æ¤ËÂФ·¤Æ¡¢
·¿¤ò´ØÏ¢¤Å¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¤³¤ì¤é¤Îµ¹æ¤ÏNUM
¡¢VAR
¡¢FNCT
¡¢exp
¤Ç¤¹¡£
¤½¤ì¤é¤ÎÀë¸À¤Ï¡¢ÉÔÅù¹æ¤Ç°Ï¤Þ¤ì¤¿¡Ê‘<...>’¡Ë¥Ç¡¼¥¿·¿¤Ë´Ø¤¹¤ë
¾ðÊó¤òÉղäµ¤ì¤Æ¤¤¤Þ¤¹¡£
Bison¤Ï¡¢¤Á¤ç¤¦¤É%token
¤¬¥È¡¼¥¯¥ó·¿¤ÎÀë¸À¤Ë»È¤ï¤ì¤ë¤Î¤ÈƱ¤¸¤è¤¦¤Ë¡¢
%type
¤¬Èó½ªÃ¼µ¹æ¤ÎÀë¸À¤Ë»È¤ï¤ì¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
Èó½ªÃ¼µ¹æ¤ÏÄ̾綠¤ì¤é¤òÄêµÁ¤¹¤ëµ¬Â§¤Ë¤è¤Ã¤Æ°ÅÌÛ¤ËÀë¸À¤µ¤ì¤ë¤Î¤Ç¡¢
%type
¤ò¤½¤Îµ¬Â§¤è¤ê¤âÀè¤Ë»È¤Ã¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£
¤·¤«¤·¡¢exp
¤Ï¡¢¤½¤ÎÃͤη¿¤ò»ØÄꤹ¤ë¤Î¤Ç¡¢
ÌÀ¼¨Åª¤ËÀë¸À¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
See Nonterminal Symbols¡£