Next: Lexical Tie-ins, Up: Context Dependency [Contents][Index]
C¸À¸ì¤Ïʸ̮°Í¸À¤ò¤â¤Ã¤Æ¤¤¤Þ¤¹¡£ ¤¹¤Ê¤ï¤Á¡¢¼±Ê̻ҤλȤï¤ìÊý¤Ï¡¢¤½¤ì¤Î¸½ºß¤Î°ÕÌ£¤Ë°Í¸¤·¤Þ¤¹¡£ ¼¡¤ÎÎã¤ò¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
foo (x);
¤³¤ì¤Ï¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹Ê¸¤Î¤è¤¦¤Ë¸«¤¨¤Þ¤¹¡£
¤·¤«¤·¡¢¤â¤·¡¢foo
¤¬typedef
¤µ¤ì¤¿·¿Ì¾¤Ê¤é¤Ð¡¢
¤³¤Îʸ¤Ïx
¤ÎÀë¸À¤Ë¤Ê¤ê¤Þ¤¹¡£
C¸À¸ì¤ËÂФ¹¤ëBison¹½Ê¸²òÀÏ´ï¤Ï¡¢¤³¤ÎÆþÎϤò¹½Ê¸²òÀϤ¹¤ëÊýË¡¤ò
¤É¤Î¤è¤¦¤Ë·èÄê¤Ç¤¤ë¤Ç¤·¤ç¤¦¤«¡£
GNU C¤Ç»È¤Ã¤Æ¤¤¤ëÊýË¡¤Ï¡¢IDENTIFIER
¤ÈTYPENAME
¤È¤¤¤¦¡¢
2¼ïÎà¤Î°Û¤Ê¤ë¥È¡¼¥¯¥ó·¿¤ò»È¤¦¤³¤È¤Ç¤¹¡£
yylex
¤¬¼±Ê̻Ҥò¸«¤Ä¤±¤ë¤È¡¢¤É¤Á¤é¤Î¥È¡¼¥¯¥ó·¿¤òÊÖ¤¹¤«·è¤á¤ë¤¿¤á¤Ë¡¢
¼±Ê̻Ҥθ½ºß¤ÎÀë¸À¤ò¸¡º÷¤·¡¢typedef
¤È¤·¤ÆÀë¸À¤µ¤ì¤Æ¤¤¤ì¤Ð
TYPENAME
¤òÊÖ¤·¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤ÐIDENTIFIER
¤òÊÖ¤·¤Þ¤¹¡£
¤½¤·¤Æ¡¢Ç§¼±¤¹¤ë¥È¡¼¥¯¥ó·¿¤òÁª¤Ö¤³¤È¤Ë¤è¤Ã¤Æ¡¢
ʸˡµ¬Â§¤Ïʸ̮°Í¸À¤òɽ¸½¤Ç¤¤Þ¤¹¡£
IDENTIFIER
¤Ï¡¢¼°¤È¤·¤Æ¼õ¤±Æþ¤ì¤é¤ì¤Þ¤¹¤¬¡¢
TYPENAME
¤Ï¼õ¤±Æþ¤ì¤é¤ì¤Þ¤»¤ó¡£
TYPENAME
¤Ï¡¢Àë¸À¤Î»Ï¤Þ¤ê¤È¤·¤Æ¼õ¤±Æþ¤ì¤é¤ì¤Þ¤¹¤¬¡¢
IDENTIFIER
¤Ï¼õ¤±Æþ¤ì¤é¤ì¤Þ¤»¤ó¡£
¼±Ê̻ҤΰÕÌ£¤Î¶èÊ̤¬É¬ÍפΤʤ¤Ê¸Ì®¡¢
¤¿¤È¤¨¤Ðtypedef
̾¤ò±£¤¹Àë¸À¤ÎÃæ¤Ç¤Ï¡¢
TYPENAME
¤ÈIDENTIFIER
¤ÎξÊý¤¬¼õ¤±Æþ¤ì¤é¤ì¤Þ¤¹¡£
¤¹¤Ê¤ï¤Á¡¢2¸Ä¤Î¥È¡¼¥¯¥ó·¿¤ËÂФ·¤Æ¤½¤ì¤¾¤ì1¸Ä¤Îµ¬Â§¤ò½ñ¤¯¤³¤È¤¬²Äǽ¤Ç¤¹¡£
¤³¤ÎÊýË¡¤Ï¡¢¤É¤Î¼ïÎà¤Î¼±Ê̻Ҥ¬µö¤µ¤ì¤ë¤«¤ÎȽÃǤ¬¡¢
¤½¤Î¼±Ê̻Ҥ¬¹½Ê¸²òÀϤµ¤ì¤ë¾ì½ê¤Î¶á¤¯¤Ç¹Ô¤ï¤ì¤ë¤Ê¤é¤Ð¡¢
ñ½ã¤Ë»È¤¨¤Þ¤¹¡£
¤·¤«¤·¡¢C¸À¸ì¤Ç¡¢¤¤¤Ä¤â¤½¤¦¤Ç¤¢¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£
¼¡¤ÎÎã¤Î¤è¤¦¤Ë¡¢°ÊÁ°¤Ë»ØÄꤵ¤ì¤¿ÌÀ¼¨Åª¤Ê·¿¤Ëµ¬Äꤵ¤ì¤¿typedef
̾¤Î
ºÆÀë¸À¤¬µö¤µ¤ì¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£
typedef int foo, bar, lose; static foo (bar); /*bar
¤òÀÅŪÊÑ¿ô¤È¤·¤ÆºÆÀë¸À¤¹¤ë¡£ */ static int foo (lose); /*foo
¤ò´Ø¿ô¤È¤·¤ÆºÆÀë¸À¤¹¤ë¡£ */
ÉÔ¹¬¤Ë¤â¡¢¹þ¤ßÆþ¤Ã¤¿Ê¸Ë¡¹½Â¤¡ÖÀë¸À»Ò(declarator)¡×¤Ë¤è¤Ã¤Æ¡¢ Àë¸À¤µ¤ì¤¿Ì¾Á°¤Ï¡¢¤½¤ÎÀë¸À¤Î¹½Â¤¼«¿È¤«¤éÀÚ¤êÎ¥¤µ¤ì¤Þ¤¹¡£
·ë²Ì¤È¤·¤Æ¡¢C¸À¸ì¤ËÂФ¹¤ëBison¹½Ê¸²òÀÏ´ï¤Ï¡¢
¤¹¤Ù¤Æ¤ÎÈó½ªÃ¼µ¹æ¤Î̾Á°¤òÊѤ¨¤Æ¡¢Æó½Å²½¤µ¤ì¤Þ¤·¤¿¡£
Âè1¤Ï¡¢typedef
̾¤¬ºÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤Àë¸À¤ò¹½Ê¸²òÀϤ·¡¢
Âè2¤Ï¡¢ºÆÄêµÁ¤¬µ¯¤³¤ê¤¨¤Ê¤¤Àë¸À¤ò¹½Ê¸²òÀϤ·¤Þ¤¹¡£
Æó½Å²½¤·¤¿¤â¤Î¤Î°ìÉôʬ¤ò¡¢´Êñ¤Ë¤¹¤ë¤¿¤á¤Ë¥¢¥¯¥·¥ç¥ó¤ò¾Êά¤·¤Æ¡¢¼¨¤·¤Þ¤¹¡£
initdcl: declarator maybeasm '=' init | declarator maybeasm ; notype_initdcl: notype_declarator maybeasm '=' init | notype_declarator maybeasm ;
¤³¤³¤Ç¡¢initdcl
¤Ïtypedef
̾¤òºÆÀë¸À¤Ç¤¤Þ¤¹¤¬¡¢
notype_initdcl
¤ÏºÆÀë¸À¤Ç¤¤Þ¤»¤ó¡£
declarator
¤Ènotype_declarator
¤Î°ã¤¤¤âƱÍͤǤ¹¡£
Á°½Ò¤Îµ»½Ñ¤È¡¢¸å½Ò¤Î»ú¶ç²òÀÏ·ë¤ÓÉÕ¤¤Ë¤Ï¡¢ »ú¶ç²òÀϤ˱ƶÁ¤¹¤ë¾ðÊ󤬯þÎϤÎÊ̤ÎÉôʬ¤ò¹½Ê¸²òÀϤ·¤Æ¤¤¤ë¤È¤¤Ë ÊѲ½¤µ¤»¤é¤ì¤ë¤È¤¤¤¦¡¢¶¦ÄÌÅÀ¤¬¤¢¤ê¤Þ¤¹¡£ Á°¼Ô¤Ç¤Ï¡¢¾ðÊ󤬹°èŪ¤Ç¡¢¥×¥í¥°¥é¥à14¤ÎÊ̤ÎÌÜŪ¤Ë »È¤ï¤ì¤ë¤³¤È¤¬°Û¤Ê¤ê¤Þ¤¹¡£ ËÜÅö¤Î»ú¶ç²òÀÏ·ë¤ÓÉÕ¤¤Ï¡¢Ê¸Ì®¤Ë¤è¤Ã¤ÆÀ©¸æ¤µ¤ì¤ë¡¢ ÆÃÊ̤ÎÌÜŪ¤Î¥Õ¥é¥°¤ò»ý¤Á¤Þ¤¹¡£