+INPUT-METHOD ::=
+ IM-DECLARATION ? DESCRIPTION ? TITLE ?
+ VARIABLE-LIST ? COMMAND-LIST ? MODULE-LIST ?
+ MACRO-LIST ? MAP-LIST ? STATE-LIST ?
+
+IM-DECLARATION ::= '(' 'input-method' LANGUAGE NAME EXTRA-ID ? VERSION ? ')'
+VERSION ::= '(' 'version' VERSION-NUMBER ')'
+DESCRIPTION ::= '(' 'description' [ MTEXT-OR-GETTEXT | nil] ')'
+VARIABLE-LIST ::= '(' 'variable' VARIABLE-DECLARATION * ')'
+COMMAND-LIST ::= '(' 'command' COMMAND-DECLARATION * ')'
+TITLE ::= '(' 'title' TITLE-TEXT ')'
+
+VARIABLE-DECLARATION ::=
+ '(' VAR-NAME [ MTEXT-OR-GETTEXT | nil ] VALUE VALUE-CANDIDATE * ')'
+
+COMMAND-DECLARATION ::=
+ '(' CMD-NAME [ MTEXT-OR-GETTEXT | nil ] KEYSEQ * ')'
+
+MTEXT-OR-GETTEXT ::=
+ [ MTEXT | '(' '_' MTEXT ')']
+
+LANGUAGE ::= SYMBOL
+NAME ::= SYMBOL
+EXTRA-ID ::= SYMBOL
+VERSION ::= MTEXT
+IM-DESCRIPTION ::= MTEXT
+VAR-NAME ::= SYMBOL
+VAR-DESCRIPTION ::= MTEXT
+VALUE ::= MTEXT | SYMBOL | INTEGER
+VALUE-CANDIDATE ::= VALUE | '(' RANGE-FROM RANGE-TO ')'
+RANGE-FROM ::= INTEGER
+RANGE-TO ::= INTEGER
+CMD-NAME ::= SYMBOL
+CMD-DESCRIPTION ::= MTEXT
+TITLE-TEXT ::= MTEXT
+@endverbatim
+
+@c IM-DECLARATION ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤Î¸À¸ì¤È̾Á°¤ò»ØÄꤹ¤ë¡£
+
+@c LANGUAGE ¤¬ @c t ¤Î¾ì¹ç¡¢¤³¤ÎÆþÎϥ᥽¥Ã¥É¤ÏÊ£¿ô¤Î¸À¸ì¤ÇÍøÍѤµ¤ì¤ë¡£
+
+@c NAME ¤¬ @c nil ¤Î¾ì¹ç¡¢¤³¤ÎÆþÎϥ᥽¥Ã¥É¤ÏñÆȤÇÍѤ¤¤é¤ì¤ë¤â¤Î¤Ç¤Ï¤Ê
+¤¯¡¢Â¾¤ÎÆþÎϥ᥽¥Ã¥É¤«¤éÍøÍѤ¹¤ë¤³¤È¤òÁÛÄꤷ¤Æ¤¤¤ë¡£¤³¤Î¾ì¹ç¡¢ÆþÎÏ¥á
+¥½¥Ã¥É¤òÆÃÄꤹ¤ë¤¿¤á¤Ë @c EXTRA-ID ¤¬É¬ÍפǤ¢¤ë¡£
+
+@c VERSION ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤¬É¬ÍפȤ¹¤ë m17n ¥é¥¤¥Ö¥é¥ê¤ÎºÇ¾®¥Ð¡¼¥¸¥ç
+¥ó¤ò»ØÄꤹ¤ë¡£¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï "XX.YY.ZZ" ¤Ç¤¢¤ê¡¢XX ¤Ï¥á¥¸¥ã¡¼¥Ð¡¼¥¸¥ç
+¥ó¡¢ YY ¤Ï¥Þ¥¤¥Ê¡¼¥Ð¡¼¥¸¥ç¥ó¡¢ZZ ¤Ï¥Ñ¥Ã¥Á¥ì¥Ù¥ë¤òɽ¤¹¡£
+
+@c DESCRIPTION ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤ÎÀâÌÀ¤ò @c MTEXT-OR-GETTEXT ¤Ç»ØÄꤹ
+¤ë¡£¤â¤·¤³¤ì¤¬£²ÈÖÌܤηÁ¼°¤ò¼è¤Ã¤Æ¤¤¤ì¤Ð¡¢ @c MTEXT ¤Ï¸½ºß¤Î¥í¥±¡¼¥ë¤Ë
+½¾¤Ã¤Æ "gettext" ¤Ë¤è¤Ã¤ÆËÝÌõ¤µ¤ì¤ë¡ÊËÝÌõʸ¤¬Ä󶡤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡Ë¡£
+
+@c TITLE-TEXT ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤¬Í¸ú¤Ê»þ¡¢¥¹¥¯¥ê¡¼¥ó¾å¤Ëɽ¼¨¤µ¤ì¤ë¥Æ
+¥¥¹¥È¤Ç¤¢¤ë¡£
+
+"global.mim" ¤È¤¤¤¦ÆÃÊ̤ʥե¡¥¤¥ë¤¬¤¢¤ê¡¢¶¦Ä̤¹¤ëÊÑ¿ô¤ä¥³¥Þ¥ó¥É¤¬ÄêµÁ¤µ
+¤ì¤Æ¤¤¤ë¡£ÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤ÏËè²ó¤³¤Î¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤·¡¢Â¾¤ÎÆþÎÏ¥á
+¥½¥Ã¥É¤Ï¤³¤³¤ÇÄêµÁ¤µ¤ì¤¿ÊÑ¿ô¤ä¥³¥Þ¥ó¥É¤ò·Ñ¾µ¤Ç¤¤ë¡£
+
+@c VARIABLE-DECLARATION ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤Ç»ÈÍѤµ¤ì¤ëÊÑ¿ô¤òÀë¸À¤¹¤ë¡£
+ÊÑ¿ô¤ò¥Ç¥Õ¥©¥ë¥ÈÃͤ˽é´ü²½¤·¤¿¤ê¡¢¥æ¡¼¥¶¤¬¥«¥¹¥¿¥Þ¥¤¥º¤·¤¿¤ê¤¹¤ë¾ì¹ç¤Ë
+¤Ï¡¢¤³¤³¤ÇÀë¸À¤µ¤ì¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¤³¤ÎÀë¸À¤ÏÆóÄ̤ê¤ËÍøÍѤµ¤ì¤ë¡£°ì¤Ä
+¤á¤Ï¿·¤·¤¤ÊÑ¿ô¤òƳÆþ¤¹¤ë¤¿¤á¤Ç¤¢¤ê¡¢¤³¤Î¾ì¹ç @c VALUE ¤Ï¾Êά¤Ç¤¤Ê¤¤¡£
+¤â¤¦°ì¤Ä¤Ï "global.mim" ¤ÇÀë¸À¤µ¤ì¤¿ÊÑ¿ô¤ò·Ñ¾µ¤·¡¢°ã¤Ã¤¿¥Ç¥Õ¥©¥ë¥ÈÃͤò
+»ØÄꤷ¤¿¤ê¡¢¤³¤ÎÆþÎϥ᥽¥Ã¥ÉÍѤ˥«¥¹¥¿¥Þ¥¤¥º²Äǽ¤Ë¤·¤¿¤ê¤¹¤ë¤¿¤á¤Ç¤¢¤ë¡£
+¤³¤Î¾ì¹ç¤Ë¤Ï @c VALUE ¤Ï¾Êά¤Ç¤¤ë¡£
+
+@c COMMAND-DECLARATION ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤Ç»ÈÍѤµ¤ì¤ë¥³¥Þ¥ó¥É¤òÀë¸À¤¹¤ë¡£
+¥³¥Þ¥ó¥É¤ò¥Ç¥Õ¥©¥ë¥È¥¡¼¥·¡¼¥±¥ó¥¹¤Ë³ä¤êÅö¤Æ¤¿¤ê¡¢¥æ¡¼¥¶¤¬¥«¥¹¥¿¥Þ¥¤¥º
+¤·¤¿¤ê¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¤³¤³¤ÇÀë¸À¤µ¤ì¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£@c
+VARIABLE-DECLARATION ƱÍÍ¡¢¤³¤ÎÀë¸À¤ÏÆóÄ̤ê¤ËÍøÍѤµ¤ì¤ë¡£°ì¤Ä¤á¤Ï¿·¤·¤¤
+¥³¥Þ¥ó¥É¤òƳÆþ¤¹¤ë¤¿¤á¤Ç¤¢¤ê¡¢¤³¤Î¾ì¹ç @c KEYSEQ ¤Ï¾Êά¤Ç¤¤Ê¤¤¡£¤â¤¦°ì
+¤Ä¤Ï "global.mim" ¤ÇÀë¸À¤µ¤ì¤¿¥³¥Þ¥ó¥É¤ò·Ñ¾µ¤·¡¢°ã¤Ã¤¿¥¡¼¥Ð¥¤¥ó¥Ç¥£¥ó
+¥°¤ò»ØÄꤷ¤¿¤ê¡¢¤³¤ÎÆþÎϥ᥽¥Ã¥ÉÍѤ˥«¥¹¥¿¥Þ¥¤¥º²Äǽ¤Ë¤·¤¿¤ê¤¹¤ë¤¿¤á¤Ç
+¤¢¤ë¡£¤³¤Î¾ì¹ç¤Ë¤Ï @c KEYSEQ ¤Ï¾Êά¤Ç¤¤ë¡£
+
+@verbatim
+MODULE-LIST ::= '(' 'module' MODULE * ')'