Previous: Error Reporting, Up: Interface   [Contents][Index]


4.4 ¥¢¥¯¥·¥ç¥óÃæ¤Ç»È¤¨¤ëÆÃÊ̤ʵ¡Ç½

¤³¤³¤Îɽ¤Ç¤Ï¡¢¥¢¥¯¥·¥ç¥óÃæ¤ÇÍ­ÍѤʡ¢Bison¤Î¹½Â¤Êª¡¢ÊÑ¿ô¡¢ ¥Þ¥¯¥í¤ò¼¨¤·¤Þ¤¹¡£

$$

¸½ºß¤Îµ¬Â§¤Çºî¤é¤ì¤ë¥°¥ë¡¼¥×¤ËÂФ¹¤ë°ÕÌ£ÃͤòÊÝ»ý¤¹¤ëÊÑ¿ô¤Î¤è¤¦¤ËƯ¤­¤Þ¤¹¡£ See Actions¡£

$n

¸½ºß¤Îµ¬Â§¤ÎnÈÖÌܤι½À®Í×ÁǤËÂФ¹¤ë°ÕÌ£ÃͤòÊÝ»ý¤¹¤ëÊÑ¿ô¤Î¤è¤¦¤Ë Ư¤­¤Þ¤¹¡£See Actions¡£

$<typealt>$

$$¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢%unionÀë¸À¤Ç»ØÄꤵ¤ì¤¿¶¦ÍÑÂΤÎÃæ¤Î typealt¤òÁª¤Ó¤Þ¤¹¡£ See Data Types of Values in Actions¡£

$<typealt>n

$n¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢%unionÀë¸À¤Ç»ØÄꤵ¤ì¤¿¶¦ÍÑÂΤÎÃæ¤Î typealt¤òÁª¤Ó¤Þ¤¹¡£ See Data Types of Values in Actions¡£

YYABORT;

yyparse¤«¤é¤¿¤À¤Á¤ËÌá¤ê¡¢¼ºÇÔ¤ò¼¨¤·¤Þ¤¹¡£ See The Parser Function yyparse¡£

YYACCEPT;

yyparse¤«¤é¤¿¤À¤Á¤ËÌá¤ê¡¢À®¸ù¤ò¼¨¤·¤Þ¤¹¡£ See The Parser Function yyparse¡£

YYBACKUP (token, value);

¥È¡¼¥¯¥ó¤òµÕ¥·¥Õ¥È¤·¤Þ¤¹¡£ 1¸Ä¤ÎÃͤò´Ô¸µ¤¹¤ëµ¬Â§¤ÎÃæ¤Ç¡¢ÀèÆÉ¤ß¥È¡¼¥¯¥ó¤¬¤Ê¤¤¾ì¹ç¤Ë¤Î¤ß¡¢ ¤³¤Î¥Þ¥¯¥í¤¬»È¤¨¤Þ¤¹¡£ ¤³¤Î¥Þ¥¯¥í¤Ï¡¢¥È¡¼¥¯¥ó·¿¤¬token¤Ç°ÕÌ£Ãͤ¬value¤Î¥È¡¼¥¯¥ó¤ò¡¢ ÀèÆÉ¤ß¥È¡¼¥¯¥ó¤È¤·¤Æ³ÊǼ¤·¡¢¤³¤Îµ¬Â§¤Ç´Ô¸µ¤µ¤ì¤ë¤Ï¤º¤À¤Ã¤¿Ãͤò¼Î¤Æ¤Þ¤¹¡£

ÀèÆÉ¤ß¥È¡¼¥¯¥ó¤¬¤¹¤Ç¤Ë¤¢¤ë¤è¤¦¤Ê¡¢¤³¤Î¥Þ¥¯¥í¤¬Ìµ¸ú¤Ê¾õ¶·¤Ç ¤³¤Î¥Þ¥¯¥í¤ò»È¤¦¤È¡¢¥á¥Ã¥»¡¼¥¸‘cannnot back up’¤ò¤È¤â¤Ê¤¦ ʸˡ¥¨¥é¡¼¤¬Êó¹ð¤µ¤ì¡¢Ä̾ï¤Î¥¨¥é¡¼²óÉü¤¬¹Ô¤ï¤ì¤Þ¤¹¡£

¤É¤Á¤é¤Î¾ì¹ç¤â¡¢¥¢¥¯¥·¥ç¥ó¤Î»Ä¤ê¤ÎÉôʬ¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£

YYEMPTY

ÀèÆÉ¤ß¥È¡¼¥¯¥ó¤¬¤Ê¤¤¾ì¹ç¤Ë¡¢ÊÑ¿ôyychar¤Ëµ­²±¤µ¤ì¤Æ¤¤¤ëÃͤǤ¹¡£

YYERROR;

¤¿¤À¤Á¤Ëʸˡ¥¨¥é¡¼¤òȯÀ¸¤µ¤»¤Þ¤¹¡£¤³¤Îʸ¤Ï¡¢¹½Ê¸²òÀϴ郎¥¨¥é¡¼¤ò¸¡½Ð¤·¤¿¤è¤¦¤Ë ¥¨¥é¡¼²óÉü¤ò»Ï¤á¤Þ¤¹¤¬¡¢yyerror¤ò¸Æ¤Ó½Ð¤µ¤º¡¢ ¥á¥Ã¥»¡¼¥¸¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£ ¤â¤·¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤¿¤±¤ì¤Ð¡¢‘YYERROR’ʸ¤è¤ê¤âÀè¤Ë¡¢ ÌÀ¼¨Åª¤Ëyyerror¤ò¸Æ¤Ó½Ð¤·¤Æ¤¯¤À¤µ¤¤¡£ See Error Recovery¡£

YYRECOVERING

¤³¤Î¥Þ¥¯¥í¤ÎÃͤϡ¢»ú¶ç²òÀϴ郎ʸˡ¥¨¥é¡¼¤«¤é¤Î²óÉüÃæ¤Ê¤é¤Ð1¡¢ ¤½¤¦¤Ç¤Ê¤±¤ì¤Ð0¤Ç¤¹¡£ See Error Recovery¡£

yychar

¸½ºß¤ÎÀèÆÉ¤ß¥È¡¼¥¯¥ó¤ò´Þ¤ó¤Ç¤¤¤ëÊÑ¿ô¤Ç¤¹ ¡ÊºÆÆþ²Äǽ¹½Ê¸²òÀÏ´ï¤Ç¤Ï¡¢yyparse¤Î¶É½êÊÑ¿ô¤Ç¤¹¡Ë¡£ ÀèÆÉ¤ß¥È¡¼¥¯¥ó¤¬¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¤³¤ÎÊÑ¿ô¤Ë YYEMPTY¤È¤¤¤¦Ãͤ¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£ See Look-Ahead Tokens¡£

yyclearin;

¸½ºß¤ÎÀèÆÉ¤ß¥È¡¼¥¯¥ó¤ò¼Î¤Æ¤Þ¤¹¡£¥¨¥é¡¼µ¬Â§¤ÎÃæ¤ÇÍ­ÍѤǤ¹¡£ See Error Recovery¡£

yyerrok;

¸å¤Ë³¤¯Ê¸Ë¡¥¨¥é¡¼¤ËÂФ·¤Æ¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ÎÀ¸À®¤òºÆ³«¤·¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢¥¨¥é¡¼µ¬Â§¤ÇÆÃ¤Ë½ÅÍפǤ¹¡£ See Error Recovery¡£

@n

¸½ºß¤Îµ¬Â§¤ÎÂènÍ×ÁǤΡ¢¹ÔÈÖ¹æ¤ÈÎóÈÖ¹æ¤ò´Þ¤à¡¢ ÇÛÎóÊÑ¿ô¤Î¤è¤¦¤ËƯ¤­¤Þ¤¹¡£ ¼¡¤Î¤è¤¦¤Ê¥á¥ó¥Ð¤¬¤¢¤ê¤Þ¤¹¡£

struct {
  int first_line, last_line;
  int first_column, last_column;
};

¤¿¤È¤¨¤Ð¡¢Âè3Í×ÁǤγ«»Ï¹ÔÈÖ¹æ¤òÃΤë¤Ë¤Ï¡¢ ‘@3.first_line’¤È¤·¤Þ¤¹¡£

¤³¤Î¹½Â¤ÂΤΥá¥ó¥Ð¤òÍ­¸ú¤Ê¾ðÊó¤Ë¤¹¤ë¤¿¤á¤Ë¤Ï¡¢ yylex¤¬¤½¤ì¤¾¤ì¤Î¥È¡¼¥¯¥ó¤ËÂФ·¤Æ¡¢ ¾ðÊó¤òÄ󶡤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ °ìÉôʬ¤Î¥á¥ó¥Ð¤À¤±¤¬É¬Íפʤé¤Ð¡¢ yylex¤Ï¤½¤Î¥á¥ó¥Ð¤ÎÃͤòÀßÄꤹ¤ë¤À¤±¤Ç¤«¤Þ¤¤¤Þ¤»¤ó¡£ 13

¤³¤Îµ¡Ç½¤ò»È¤¦¤È¡¢»ú¶ç²òÀÏ´ï¤¬Ãø¤·¤¯ÃÙ¤¯¤Ê¤ê¤Þ¤¹¡£


Footnotes

(13)

¡ÚÌõÃí¡Ûyylex¤Ï¡¢ÊÑ¿ôyylloc¤Ë¡¢ ¥È¡¼¥¯¥ó¤Î°ÌÃÖ¾ðÊó¤òÂåÆþ¤·¤Þ¤¹¡£