Next: , Up: Lexical   [Contents][Index]


4.2.1 yylex¤ò¸Æ¤Ó½Ð¤¹ÊýË¡

yylex¤¬ÊÖ¤¹Ãͤϡ¢¸«¤Ä¤«¤Ã¤¿¥È¡¼¥¯¥ó¤Î·¿¤ËÂФ¹¤ëÈÖ¹æ¤Ç¡¢ ÆþÎÏ¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤Ë㤷¤¿¾ì¹ç¤Ë¤Ï0¤òÊÖ¤·¤Þ¤¹¡£

¥È¡¼¥¯¥ó¤¬Ê¸Ë¡µ¬Â§¤ÎÃæ¤Ç̾Á°¤Ç»²¾È¤µ¤ì¤ë¾ì¹ç¡¢ ¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç¤Î¤½¤Î̾Á°¤Ï¡¢ ¥È¡¼¥¯¥ó·¿¤ËÂФ¹¤ëŬÀÚ¤ÊÈÖ¹æ¤ËC¤Î¥Þ¥¯¥í¤È¤·¤ÆÄêµÁ¤µ¤ì¤Þ¤¹¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢yylex¤Ï·¿¤ò¼¨¤¹¤¿¤á¤Ë¤½¤Î̾Á°¤ò»ÈÍѤǤ­¤Þ¤¹¡£ See Symbols¡£

ʸˡµ¬Â§¤ÎÃæ¤Ç¥È¡¼¥¯¥ó¤¬1ʸ»ú¥ê¥Æ¥é¥ë¤È¤·¤Æ»²¾È¤µ¤ì¤ë¾ì¹ç¤Ë¤Ï¡¢ ¤½¤Îʸ»ú¤Îʸ»úÉ乿¤¬¥È¡¼¥¯¥ó·¿¤ËÂФ¹¤ëÈÖ¹æ¤Ç¤â¤¢¤ê¤Þ¤¹¡£ ¤½¤³¤Ç¡¢yylex¤Ï¡¢Ã±½ã¤Ëʸ»úÉ乿¤òÊÖ¤·¤Þ¤¹¡£ ¤·¤«¤·¡¢Ìá¤êÃÍ0¤ÏÆþÎÏ¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤ò°ÕÌ£¤¹¤ë¤Î¤Ç¡¢ ¥Ì¥ëʸ»ú¡Ê'\0'¡Ë¤Îʸ»úÉ乿¤òÊÖ¤·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£

°Ê²¼¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£

yylex ()
{
  …
  if (c == EOF)     /* ¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤«Ä´¤Ù¤ë¡£ */
    return 0;
  …
  if (c == '+' || c == '-')
    return c;      /* `+' ¤ËÂФ¹¤ë¥È¡¼¥¯¥ó·¿¤¬ '+' ¤Ç¤¢¤ë¤È²¾Äꤹ¤ë¡£ */
  …
  return INT;      /* ¥È¡¼¥¯¥ó·¿¤òÊÖ¤¹¡£ */
  …
}

¤³¤Î¤è¤¦¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ï¡¢ lex¤¬À¸À®¤·¤¿»ú¶ç²òÀÏ´ï¤ò¡¢ yylex¤ÎÄêµÁ¤òÊѤ¨¤º¤Ë»È¤¨¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤¹¡£

ʸˡµ¬Â§¤¬Ê¸»úÎó¥ê¥Æ¥é¥ë¥È¡¼¥¯¥ó¤ò»È¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ yylex¤¬¤½¤ì¤ËÂФ¹¤ë¥È¡¼¥¯¥ó·¿ÈÖ¹æ¤ò»È¤¦¡¢ 2¤Ä¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£