Previous: Error Reporting, Up: Interface [Contents][Index]
¤³¤³¤Îɽ¤Ç¤Ï¡¢¥¢¥¯¥·¥ç¥óÃæ¤ÇÍÍѤʡ¢Bison¤Î¹½Â¤Êª¡¢ÊÑ¿ô¡¢ ¥Þ¥¯¥í¤ò¼¨¤·¤Þ¤¹¡£
¸½ºß¤Îµ¬Â§¤Çºî¤é¤ì¤ë¥°¥ë¡¼¥×¤ËÂФ¹¤ë°ÕÌ£ÃͤòÊÝ»ý¤¹¤ëÊÑ¿ô¤Î¤è¤¦¤ËƯ¤¤Þ¤¹¡£ See Actions¡£
¸½ºß¤Îµ¬Â§¤ÎnÈÖÌܤι½À®Í×ÁǤËÂФ¹¤ë°ÕÌ£ÃͤòÊÝ»ý¤¹¤ëÊÑ¿ô¤Î¤è¤¦¤Ë Ư¤¤Þ¤¹¡£See Actions¡£
$$
¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢%union
Àë¸À¤Ç»ØÄꤵ¤ì¤¿¶¦ÍÑÂΤÎÃæ¤Î
typealt¤òÁª¤Ó¤Þ¤¹¡£
See Data Types of Values in Actions¡£
$n
¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢%union
Àë¸À¤Ç»ØÄꤵ¤ì¤¿¶¦ÍÑÂΤÎÃæ¤Î
typealt¤òÁª¤Ó¤Þ¤¹¡£
See Data Types of Values in Actions¡£
yyparse
¤«¤é¤¿¤À¤Á¤ËÌá¤ê¡¢¼ºÇÔ¤ò¼¨¤·¤Þ¤¹¡£
See The Parser Function yyparse
¡£
yyparse
¤«¤é¤¿¤À¤Á¤ËÌá¤ê¡¢À®¸ù¤ò¼¨¤·¤Þ¤¹¡£
See The Parser Function yyparse
¡£
¥È¡¼¥¯¥ó¤òµÕ¥·¥Õ¥È¤·¤Þ¤¹¡£ 1¸Ä¤ÎÃͤò´Ô¸µ¤¹¤ëµ¬Â§¤ÎÃæ¤Ç¡¢ÀèÆÉ¤ß¥È¡¼¥¯¥ó¤¬¤Ê¤¤¾ì¹ç¤Ë¤Î¤ß¡¢ ¤³¤Î¥Þ¥¯¥í¤¬»È¤¨¤Þ¤¹¡£ ¤³¤Î¥Þ¥¯¥í¤Ï¡¢¥È¡¼¥¯¥ó·¿¤¬token¤Ç°ÕÌ£Ãͤ¬value¤Î¥È¡¼¥¯¥ó¤ò¡¢ ÀèÆÉ¤ß¥È¡¼¥¯¥ó¤È¤·¤Æ³ÊǼ¤·¡¢¤³¤Îµ¬Â§¤Ç´Ô¸µ¤µ¤ì¤ë¤Ï¤º¤À¤Ã¤¿Ãͤò¼Î¤Æ¤Þ¤¹¡£
ÀèÆÉ¤ß¥È¡¼¥¯¥ó¤¬¤¹¤Ç¤Ë¤¢¤ë¤è¤¦¤Ê¡¢¤³¤Î¥Þ¥¯¥í¤¬Ìµ¸ú¤Ê¾õ¶·¤Ç ¤³¤Î¥Þ¥¯¥í¤ò»È¤¦¤È¡¢¥á¥Ã¥»¡¼¥¸‘cannnot back up’¤ò¤È¤â¤Ê¤¦ ʸˡ¥¨¥é¡¼¤¬Êó¹ð¤µ¤ì¡¢Ä̾ï¤Î¥¨¥é¡¼²óÉü¤¬¹Ô¤ï¤ì¤Þ¤¹¡£
¤É¤Á¤é¤Î¾ì¹ç¤â¡¢¥¢¥¯¥·¥ç¥ó¤Î»Ä¤ê¤ÎÉôʬ¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£
ÀèÆÉ¤ß¥È¡¼¥¯¥ó¤¬¤Ê¤¤¾ì¹ç¤Ë¡¢ÊÑ¿ôyychar
¤Ëµ²±¤µ¤ì¤Æ¤¤¤ëÃͤǤ¹¡£
¤¿¤À¤Á¤Ëʸˡ¥¨¥é¡¼¤òȯÀ¸¤µ¤»¤Þ¤¹¡£¤³¤Îʸ¤Ï¡¢¹½Ê¸²òÀϴ郎¥¨¥é¡¼¤ò¸¡½Ð¤·¤¿¤è¤¦¤Ë
¥¨¥é¡¼²óÉü¤ò»Ï¤á¤Þ¤¹¤¬¡¢yyerror
¤ò¸Æ¤Ó½Ð¤µ¤º¡¢
¥á¥Ã¥»¡¼¥¸¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£
¤â¤·¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤¿¤±¤ì¤Ð¡¢‘YYERROR’ʸ¤è¤ê¤âÀè¤Ë¡¢
ÌÀ¼¨Åª¤Ëyyerror
¤ò¸Æ¤Ó½Ð¤·¤Æ¤¯¤À¤µ¤¤¡£
See Error Recovery¡£
¤³¤Î¥Þ¥¯¥í¤ÎÃͤϡ¢»ú¶ç²òÀϴ郎ʸˡ¥¨¥é¡¼¤«¤é¤Î²óÉüÃæ¤Ê¤é¤Ð1¡¢ ¤½¤¦¤Ç¤Ê¤±¤ì¤Ð0¤Ç¤¹¡£ See Error Recovery¡£
¸½ºß¤ÎÀèÆÉ¤ß¥È¡¼¥¯¥ó¤ò´Þ¤ó¤Ç¤¤¤ëÊÑ¿ô¤Ç¤¹
¡ÊºÆÆþ²Äǽ¹½Ê¸²òÀÏ´ï¤Ç¤Ï¡¢yyparse
¤Î¶É½êÊÑ¿ô¤Ç¤¹¡Ë¡£
ÀèÆÉ¤ß¥È¡¼¥¯¥ó¤¬¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¤³¤ÎÊÑ¿ô¤Ë
YYEMPTY
¤È¤¤¤¦Ãͤ¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£
See Look-Ahead Tokens¡£
¸½ºß¤ÎÀèÆÉ¤ß¥È¡¼¥¯¥ó¤ò¼Î¤Æ¤Þ¤¹¡£¥¨¥é¡¼µ¬Â§¤ÎÃæ¤ÇÍÍѤǤ¹¡£ See Error Recovery¡£
¸å¤Ë³¤¯Ê¸Ë¡¥¨¥é¡¼¤ËÂФ·¤Æ¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ÎÀ¸À®¤òºÆ³«¤·¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢¥¨¥é¡¼µ¬Â§¤ÇÆÃ¤Ë½ÅÍפǤ¹¡£ See Error Recovery¡£
¸½ºß¤Îµ¬Â§¤ÎÂènÍ×ÁǤΡ¢¹ÔÈÖ¹æ¤ÈÎóÈÖ¹æ¤ò´Þ¤à¡¢ ÇÛÎóÊÑ¿ô¤Î¤è¤¦¤ËƯ¤¤Þ¤¹¡£ ¼¡¤Î¤è¤¦¤Ê¥á¥ó¥Ð¤¬¤¢¤ê¤Þ¤¹¡£
struct { int first_line, last_line; int first_column, last_column; };
¤¿¤È¤¨¤Ð¡¢Âè3Í×ÁǤγ«»Ï¹ÔÈÖ¹æ¤òÃΤë¤Ë¤Ï¡¢ ‘@3.first_line’¤È¤·¤Þ¤¹¡£
¤³¤Î¹½Â¤ÂΤΥá¥ó¥Ð¤ò͸ú¤Ê¾ðÊó¤Ë¤¹¤ë¤¿¤á¤Ë¤Ï¡¢
yylex
¤¬¤½¤ì¤¾¤ì¤Î¥È¡¼¥¯¥ó¤ËÂФ·¤Æ¡¢
¾ðÊó¤òÄ󶡤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
°ìÉôʬ¤Î¥á¥ó¥Ð¤À¤±¤¬É¬Íפʤé¤Ð¡¢
yylex
¤Ï¤½¤Î¥á¥ó¥Ð¤ÎÃͤòÀßÄꤹ¤ë¤À¤±¤Ç¤«¤Þ¤¤¤Þ¤»¤ó¡£
13
¤³¤Îµ¡Ç½¤ò»È¤¦¤È¡¢»ú¶ç²òÀÏ´ï¤¬Ãø¤·¤¯ÃÙ¤¯¤Ê¤ê¤Þ¤¹¡£