-/* Copyright (C) 2003, 2004
+/* Copyright (C) 2003, 2004, 2005
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H15PRO112
See the end for copying conditions. */
¥¤¥ë¤ä¥¹¥È¥ê¡¼¥à¤«¤éÄêµÁ¤ò¥í¡¼¥É¤·¡¢¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤Î·Á¼°¤ËÊÑ´¹¤¹¤ë¡£
@verbatim
-INPUT-METHOD ::= TITLE MAP-LIST MACRO-LIST ? MODULE-LIST ? STATE-LIST
-
-TITLE ::= '(' 'title' MTEXT ')'
+INPUT-METHOD ::=
+ IM-DECLARATION ? DESCRIPTION ? VARIABLE-LIST ? COMMAND-LIST ?
+ TITLE MAP-LIST MACRO-LIST ? MODULE-LIST ? STATE-LIST
+
+IM-DECLARATION ::= '(' 'input-method' LANGUAGE NAME ')'
+DESCRIPTION ::= '(' 'description' MTEXT ')'
+VARIABLE-LIST ::= '(' 'variable' VARIABLE-DECLARATION * ')'
+COMMAND-LIST ::= '(' 'command' COMMAND-DECLARATION * ')'
+TITLE ::= '(' 'title' TITLE-TEXT ')'
+
+VARIABLE-DECLARATION ::=
+ '(' VAR-NAME [ VAR-DESCRIPTION | nil ] VALUE VALUE-CANDIDATE * ')'
+
+COMMAND-DECLARATION ::=
+ '(' CMD-NAME [ CMD-DESCRIPTION | nil ] KEYSEQ * ')'
+
+LANGUAGE ::= SYMBOL
+NAME ::= SYMBOL
+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 MTEXT ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤¬Í¸ú¤ÊºÝ¥¹¥¯¥ê¡¼¥ó¾å¤Ëɽ¼¨¤µ¤ì¤ë¥Æ¥¥¹¥È¤Ç¤¢¤ë ¡£
+@c IM-DECLARATION ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤Î¸À¸ì¤È̾Á°¤ò»ØÄꤹ¤ë¡£
+
+@c DESCRIPTION ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤ÎÀâÌÀ¤Ç¤¢¤ë @c MTEXT ¤ò»ØÄꤹ¤ë¡£
+
+@c VARIABLE-DECLARATION ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤Ç»ÈÍѤµ¤ì¤ëÊÑ¿ô¤òÀë¸À¤¹¤ë¡£
+ÊÑ¿ô¤ò¥Ç¥Õ¥©¥ë¥ÈÃͤ˽é´ü²½¤·¤¿¤ê¡¢¥æ¡¼¥¶¤¬¥«¥¹¥¿¥Þ¥¤¥º¤·¤¿¤ê¤¹¤ë¾ì¹ç¤Ë
+¤Ï¡¢¤³¤³¤ÇÀë¸À¤µ¤ì¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
+
+@c COMMAND-DECLARATION ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤Ç»ÈÍѤµ¤ì¤ë¥³¥Þ¥ó¥É¤òÀë¸À¤¹¤ë¡£
+¥³¥Þ¥ó¥É¤ò¥Ç¥Õ¥©¥ë¥È¥¡¼¥·¡¼¥±¥ó¥¹¤Ë³ä¤êÅö¤Æ¤¿¤ê¡¢¥æ¡¼¥¶¤¬¥«¥¹¥¿¥Þ¥¤¥º
+¤·¤¿¤ê¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¤³¤³¤ÇÀë¸À¤µ¤ì¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
+
+@c TITLE-TEXT ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤¬Í¸ú¤Ê»þ¡¢¥¹¥¯¥ê¡¼¥ó¾å¤Ëɽ¼¨¤µ¤ì¤ë¥Æ
+¥¥¹¥È¤Ç¤¢¤ë¡£
@verbatim
MAP-LIST ::= '(' 'map' MAP * ')'
¤é¤Ê¤¤¡£
@c KEYSEQ ÄêµÁÃæ¤Î @c MTEXT ¤Ï¡¢¥¡¼¥Ü¡¼¥É¤«¤éÀ¸À®¤Ç¤¤ëʸ»ú¤Ç¹½À®¤µ¤ì
-¤ë¡£¤¹¤Ê¤ï¤Á @c MTEXT ¤ÏÄ̾ïASCII ʸ»ú¤Î¤ß¤ò´Þ¤à¡£¤·¤«¤·¡¢ÆþÎϥ᥽¥Ã¥É
+¤ë¡£¤¹¤Ê¤ï¤Á @c MTEXT ¤ÏÄ̾ï ASCII ʸ»ú¤Î¤ß¤ò´Þ¤à¡£¤·¤«¤·¡¢ÆþÎϥ᥽¥Ã¥É
¤¬¤¿¤È¤¨¤ÐÀ¾¥è¡¼¥í¥Ã¥ÑÍÑ¥¡¼¥Ü¡¼¥É¤ò»È¤¦¤³¤È¤òÁÛÄꤷ¤¿¤â¤Î¤Ç¤¢¤ì¤Ð¡¢@c
MTEXT ¤Ï Latin-1 ʸ»ú¤ò´Þ¤ó¤Ç¤â¤è¤¤¡£
@verbatim
MAP-ACTION ::= ACTION
-ACTION ::= INSERT | DELETE | SELECT | MOVE | MARK |
- | SHOW | HIDE | PUSHBACK | UNDO | SHIFT | CALL
- | SET | IF | '(' MACRO-NAME ')'
-
+ACTION ::= INSERT | DELETE | SELECT | MOVE | MARK
+ | SHOW | HIDE | PUSHBACK | UNDO | UNHANDLE | SHIFT | CALL
+ | SET | IF | COND | '(' MACRO-NAME ')'
PREDEFINED-SYMBOL ::=
- '@0' | '@1' | '@2' | '@3' | '@4' |
- '@5' | '@6' | '@7' | '@8' | '@9' |
- '@<' | '@=' | '@>' | '@-' | '@+' | '@[' | '@]'
+ '@0' | '@1' | '@2' | '@3' | '@4'
+ | '@5' | '@6' | '@7' | '@8' | '@9'
+ | '@<' | '@=' | '@>' | '@-' | '@+' | '@[' | '@]'
+ | '@@
@endverbatim
@verbatim
MACRO-LIST ::= '(' 'macro' MACRO * ')'
FUNCTION ::= SYMBOL
@endverbatim
-³Æ @c MODULE ¤Ï³°Éô¥â¥¸¥å¡¼¥ë (ưŪ¥é¥¤¥Ö¥é¥ê) ¤Î̾Á°¤È¤½¤Î¥â¥¸¥å¡¼¥ë
-¤¬¸ø³«¤¹¤ë´Ø¿ô̾¤òÀë¸À¤¹¤ë¡£@c FUNCTION ¤¬ "init" ¤È¤¤¤¦Ì¾Á°¤Ç¤¢¤ì¤Ð¡¢
-¤³¤ÎÆþÎϥ᥽¥Ã¥ÉÍѤÎÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬À¸À®¤µ¤ì¤ëºÝ¤Ë¤Î¤ß¡¢¥Ç¥Õ¥©¥ë¥È¤Î
-°ú¿ô (@c CALL ¤ÎÀỲ¾È) ¤È¤È¤â¤Ë¸Æ¤Ð¤ì¤ë¡£ @c FUNCTION ¤¬ "fini" ¤È¤¤
-¤¦Ì¾Á°¤ò»ý¤Æ¤Ð, ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬Ç˲õ¤µ¤ì¤ëºÝ¤Ë¤Î¤ß¡¢¥Ç¥Õ¥©¥ë¥È¤Î°ú¿ô
-¤È¤È¤â¤Ë¸Æ¤Ð¤ì¤ë¡£
+³Æ @c MODULE ¤Ï³°Éô¥â¥¸¥å¡¼¥ë (ưŪ¥é¥¤¥Ö¥é¥ê) ¤Î̾Á°¤È¤½¤Î¥â¥¸¥å¡¼¥ë¤¬
+¸ø³«¤·¤Æ¤¤¤ë´Ø¿ô̾¤òÀë¸À¤¹¤ë¡£@c FUNCTION ¤¬ "init" ¤È¤¤¤¦Ì¾Á°¤Ç¤¢¤ì¤Ð¡¢
+¤³¤ÎÆþÎϥ᥽¥Ã¥ÉÍѤÎÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬À¸À®¤µ¤ì¤ëºÝ¤Ë¡¢¥Ç¥Õ¥©¥ë¥È¤Î°ú¿ô
+(@c CALL ¤ÎÀỲ¾È) ¤Î¤ß¤È¤È¤â¤Ë¸Æ¤Ð¤ì¤ë¡£ @c FUNCTION ¤¬ "fini" ¤È¤¤¤¦
+̾Á°¤ò»ý¤Æ¤Ð, ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬Ç˲õ¤µ¤ì¤ëºÝ¤Ë¡¢¥Ç¥Õ¥©¥ë¥È¤Î°ú¿ô¤Î¤ß¤È
+¤È¤â¤Ë¸Æ¤Ð¤ì¤ë¡£
@verbatim
STATE-LIST ::= '(' 'state' STATE * ')'
| '(' t BRANCH-ACTION * ')'
@endverbatim
-@c BRANCH ¤ÎºÇ½é¤Î·Á¼°¤Ç¤Ï¡¢@c MAP-NAME ¤Ï @c MAP ¤Ë¸½¤ï¤ì¤ë¤â¤Î¤Ç¤Ê¤¯
-¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¤³¤Î¾ì¹ç¡¢@c MAP-NAME ¤Î @c KEYSEQ ¤Î°ì¤Ä¤Ë¹çÃפ¹¤ë¥¡¼
-Î󤬥¿¥¤¥×¤µ¤ì¤ì¤Ð¡¢ @c BRANCH-ACTION ¤¬¼Â¹Ô¤µ¤ì¤ë¡£
+@c BRANCH ¤ÎÂè°ì¤Î·Á¼°¤Ç¤Ï¡¢@c MAP-NAME ¤Ï @c MAP ¤Ë¸½¤ï¤ì¤ë¤â¤Î¤Ç¤Ê¤¯
+¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¤³¤Î¾ì¹ç¡¢@c MAP-NAME ¤Î @c KEYSEQ ¤Î°ì¤Ä¤Ë¹çÃפ¹¤ë¥¡¼Îó
+¤¬¥¿¥¤¥×¤µ¤ì¤ì¤Ð¡¢ @c BRANCH-ACTION ¤¬¼Â¹Ô¤µ¤ì¤ë¡£
-@c BRANCH ¤ÎÆó¤ÄÌܤηÁ¼°¤Ç¤Ï¡¢¤½¤Î»þÅÀ¤Î¾õÂ֤Τ¤¤º¤ì¤Î @c BRANCH ¤Ë¤â
-¹çÃפ·¤Ê¤¤¥¡¼Î󤬥¿¥¤¥×¤µ¤ì¤ì¤Ð¡¢@c BRANCH-ACTION¤¬¼Â¹Ô¤µ¤ì¤ë¡£
+@c BRANCH ¤ÎÂèÆó¤Î·Á¼°¤Ç¤Ï¡¢¤½¤Î»þÅÀ¤Î¾õÂ֤Τ¤¤º¤ì¤Î @c BRANCH ¤Ë¤â¹çÃ×
+¤·¤Ê¤¤¥¡¼Î󤬥¿¥¤¥×¤µ¤ì¤ì¤Ð¡¢@c BRANCH-ACTION¤¬¼Â¹Ô¤µ¤ì¤ë¡£
-@c BRANCH ¤Î»°¤ÄÌܤηÁ¼°¤Ç¤Ï¡¢¤¹¤Ù¤Æ¤Î¥¡¼¤ò½èÍý¤·¤¿¸å¤Ç¤½¤Î¾õÂ֤˰ÜÆ°
-¤·¤¿¾ì¹ç¤Ë @c BRANCH-ACTION ¤¬¼Â¹Ô¤µ¤ì¤ë¡£¤â¤·½é´ü¾õÂ֤Ǥ¢¤ì¤Ð¡¢ÆþÎÏ¥á
-¥½¥Ã¥É¤ÎÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÀ¸À®¤·¤¿Ä¾¸å¤Ë @c BRANCH-ACTION ¤ò¼Â¹Ô¤¹¤ë¡£
+@c BRANCH ¤ÎÂè»°¤Î·Á¼°¤Ç¤Ï¡¢¤½¤Î¾õÂ֤˰ÜÆ°¤·¤¿»þÅÀ¤Ç @c BRANCH-ACTION
+¤¬¼Â¹Ô¤µ¤ì¤ë¡£¤â¤·½é´ü¾õÂ֤Ǥ¢¤ì¤Ð¡¢ÆþÎϥ᥽¥Ã¥É¤ÎÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÀ¸
+À®¤·¤¿»þÅÀ¤Ç @c BRANCH-ACTION ¤ò¼Â¹Ô¤¹¤ë¡£
@verbatim
BRANCH-ACTION ::= ACTION
@endverbatim
-ÆþÎϥ᥽¥Ã¥É¤Ï¼¡¤ÎÆó¤Ä¤Î¥·¥ó¥Ü¥ë¤Î¥ê¥¹¥È¤ò»ý¤Ä¡£
+ÆþÎϥ᥽¥Ã¥É¤Ï¥·¥ó¥Ü¥ë¤Î¥ê¥¹¥È¤òÆó¤Ä»ý¤Ä¡£
<ul>
<li> ¥Þ¡¼¥«¥ê¥¹¥È
¥Þ¡¼¥«¤Ï preediting ¥Æ¥¥¹¥ÈÃæ¤Ç¤Îʸ»ú°ÌÃÖ¤ò¼¨¤¹¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¡£@c
-MARK ¥¢¥¯¥·¥ç¥ó¤Ï¥Þ¡¼¥«¤ò¤¢¤ë°ÌÃÖ¤ËÀßÄꤹ¤ë¡£@c MOVE ¤È @c DELETE ¥¢¥¯
-¥·¥ç¥ó¤Ï¥Þ¡¼¥«¤Î°ÌÃÖ¤ò»²¾È¤¹¤ë¡£
+MARK ¥¢¥¯¥·¥ç¥ó¤Ï¥Þ¡¼¥«¤òÆÃÄê¤Î°ÌÃÖ¤ËÀßÄꤹ¤ë¡£@c MOVE ¤È @c DELETE ¥¢
+¥¯¥·¥ç¥ó¤Ï¥Þ¡¼¥«¤Î°ÌÃÖ¤ò»²¾È¤¹¤ë¡£
<li> ÊÑ¿ô¥ê¥¹¥È
-ÊÑ¿ô¤ÏÀ°¿ô¤ÎÃͤò»ý¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¡£ÃͤÏ@c SET ¥¢¥¯¥·¥ç¥ó¤Ë¤è¤Ã¤ÆÀßÄê
-¤µ¤ì¡¢@c SET, @c INSERT, @c IF ¤Ë»²¾È¤µ¤ì¤ë¡£¤¹¤Ù¤Æ¤ÎÊÑ¿ô¤Î½é´üÃÍ¤Ï 0
-¤Ç¤¢¤ë¡£
+ÊÑ¿ô¤ÏÀ°¿ô¤ÎÃͤò»ý¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¡£ÃͤÏ@c SET ¥¢¥¯¥·¥ç¥ó¤Ë¤è¤Ã¤ÆÀßÄꤵ
+¤ì¡¢@c SET, @c INSERT, @c IF ¤Ë»²¾È¤µ¤ì¤ë¡£¤¹¤Ù¤Æ¤ÎÊÑ¿ô¤Î½é´üÃͤϡʰÅÌÛ
+¤Ë¡Ë 0 ¤Ç¤¢¤ë¡£
</ul>
-@c PREDEFINED-SYMBOL ¤Ï¥Þ¡¼¥«¤È¤·¤ÆÍѤ¤¤é¤ì¤¿¾ì¹çÆÃÊ̤ʰÕÌ£¤ò»ý¤Ä¡£
+³Æ @c PREDEFINED-SYMBOL ¤Ï¥Þ¡¼¥«¤È¤·¤ÆÍѤ¤¤é¤ì¤¿¾ì¹çÆÃÊ̤ʰÕÌ£¤ò»ý¤Ä¡£
<ul>
<li> @c @@0, @c @@1, @c @@2, @c @@3, @c @@4, @c @@5, @c @@6, @c @@7, @c @@8, @c @@9
-¤½¤ì¤¾¤ì£°ÈÖÌܤ«¤é£¹ÈÖÌܤΰÌÃÖ
+¤½¤ì¤¾¤ì 0 ÈÖÌܤ«¤é 9 ÈÖÌܤΰÌÃÖ
<li> @c @@<, @c @@=, @c @@>
¸õÊä¥ê¥¹¥È¤¬ÊѲ½¤¹¤ëºÝ¤ÎÁ°¤È¼¡¤Î°ÌÃÖ
</ul>
-@c PREDEFINED-SYMBOL ¤Ï @c SELECT ¥¢¥¯¥·¥ç¥óÃæ¤Ç¸õÊä¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤È¤·
-¤ÆÍѤ¤¤é¤ì¤¿ºÝÆÃÊ̤ʰÕÌ£¤ò»ý¤Ä¡£
+@c PREDEFINED-SYMBOL ¤Î¤¤¤¯¤Ä¤«¤Ï¡¢ @c SELECT ¥¢¥¯¥·¥ç¥óÃæ¤Ç¸õÊä¤Î¥¤¥ó
+¥Ç¥Ã¥¯¥¹¤È¤·¤ÆÍѤ¤¤é¤ì¤¿ºÝÆÃÊ̤ʰÕÌ£¤ò»ý¤Ä¡£
<ul>
<li> @c @@<, @c @@=, @c @@>
¤â¤Î¡£
</ul>
+¤Þ¤¿¡¢¤³¤ì¤âÆÃÊ̤ʰÕÌ£¤ò»ý¤Ä¡£
+
+<ul>
+<li> @c @@@
+
+¤½¤Î»þÅÀ¤Ç½èÍý¤µ¤ì¤Æ¤¤¤ë¥¡¼¤Î¿ô¡£
+
+</ul>
+
³Æ¥¢¥¯¥·¥ç¥ó¤Î°ú¿ô¤È¿¶Éñ¤¤¤Ï°Ê²¼¤ÎÄ̤ꡣ
@verbatim
Âè»°¤Î·Á¼°¤Ï¡¢Ê¸»ú @c INTEGER ¤ò¸½ºß¤Î°ÌÃÖ¤ÎÁ°¤ËÁÞÆþ¤¹¤ë¡£
-Âè»Í¤Î·Á¼°¤Ï¡¢@c SYMBOL ¤òÊÑ¿ô¤È¤·¤Æ°·¤¤¡¢¤½¤ÎÃͤ¬Àµ¤·¤¤Ê¸»ú¥³¡¼¥É¤Ç
-¤¢¤ì¤Ð¸½ºß¤Î°ÌÃÖ¤ÎÁ°¤ËÁÞÆþ¤¹¤ë¡£
+Âè»Í¤Î·Á¼°¤Ï¡¢@c SYMBOL ¤òÊÑ¿ô¤È¤·¤Æ°·¤¤¡¢¤½¤ÎÃͤ¬Àµ¤·¤¤Ê¸»ú¥³¡¼¥É¤Ç¤¢
+¤ì¤Ð¸½ºß¤Î°ÌÃÖ¤ÎÁ°¤ËÁÞÆþ¤¹¤ë¡£
Âè¸Þ¡¢ÂèÏ»¤Î·Á¼°¤Ç¤Ï¡¢@c CANDIDATES ¤Ï¸õÊ䥰¥ë¡¼¥×¤òɽ¤·¡¢@c
-CANDIDATES ¤Î³ÆÍ×ÁǤ¬¸õÊä¤òɽ¤¹¡£¤Ä¤Þ¤ê@c CANDIDATES ¤¬ M-text ¤Ç¤¢¤ì
-¤Ð¡¢¸õÊä¤Ï¤½¤ÎM-text Ãæ¤Îʸ»ú¤Ç¤¢¤ê¡¢@c CANDIDATES ¤¬ M-text ¤Î¥ê¥¹¥È
-¤Ç¤¢¤ì¤Ð¡¢¸õÊä¤Ï¤½¤ì¤é¤Î M-text ¤Ç¤¢¤ë¡£
+CANDIDATES ¤Î³ÆÍ×ÁǤ¬¸õÊä¤òɽ¤¹¡£¤Ä¤Þ¤ê@c CANDIDATES ¤¬ M-text ¤Ç¤¢¤ì¤Ð¡¢
+¸õÊä¤Ï¤½¤ÎM-text Ãæ¤Îʸ»ú¤Ç¤¢¤ê¡¢@c CANDIDATES ¤¬ M-text ¤Î¥ê¥¹¥È¤Ç¤¢¤ì
+¤Ð¡¢¸õÊä¤Ï¤½¤ì¤é¤Î M-text ¤Ç¤¢¤ë¡£
¤³¤ì¤é¤Î·Á¼°¤Ï¸½ºß¤Î°ÌÃ֤ξÁ°¤ËºÇ½é¤Î¸õÊä¤òÁÞÆþ¤¹¤ë¡£ÁÞÆþ¤µ¤ì¤¿Ê¸»úÎó
¤Ë¤Ï¡¢¸õÊä¤Î¥ê¥¹¥È¤È¸½ºßÁªÂò¤µ¤ì¤Æ¤¤¤ë¸õÊä¤ò»Ø¤¹¾ðÊó¤¬Éղ䵤ì¤Æ¤¤¤ë¡£
¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ï @c SYMBOL ¤ò¥Þ¡¼¥«¤È¤·¤Æ¡¢¤½¤ì¤ò¸½ºß¤Î°ÌÃÖ¤ËÀßÄꤹ¤ë¡£
@c SYMBOL ¤Ï @c PREDEFINED-SYMBOL ¤Ç¤¢¤Ã¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
+@verbatim
+PUSHBACK :: = '(' 'pushback' INTEGER ')'
+ | '(' 'pushback' KEYSEQ ')'
+@endverbatim
+
+Âè°ì¤Î·Á¼°¤Ï¡¢@c INTEGER ¤ÎÃͤ¬Àµ¤Ê¤é¤ÐºÇ¿·¤Î @c INTEGER ¸Ä¤Î¥¡¼¥¤¥Ù¥ó
+¥È¤ò¥¤¥Ù¥ó¥È¥¥å¡¼¤Ëº¹¤·Ì᤹¡£0 ¤Ê¤é¤Ð¤¹¤Ù¤Æ¤Î¥¡¼¥¤¥Ù¥ó¥È¤òº¹¤·Ì᤹¡£
+
+ÂèÆó¤Î·Á¼°¤Ï¡¢@c KEYSEQ Ãæ¤Î¥¡¼¤ò¥¤¥Ù¥ó¥È¥¥å¡¼¤Ëº¹¤·Ì᤹¡£
@verbatim
-PUSHBACK :: = '(pushback INTEGER)'
+UNDO :: = '(' 'undo' [ INTEGER | SYMBOL ] ')'
@endverbatim
-¤³¤Î¥¢¥¯¥·¥ç¥ó¤ÏºÇ¿·¤Î¥¡¼¥¤¥Ù¥ó¥È¤ò¥¤¥Ù¥ó¥È¥¥å¡¼¤ËÌ᤹¡£
+°ú¿ô¤¬Ìµ¤¤¾ì¹ç¡¢¤³¤Î¥¢¥¯¥·¥ç¥ó¤ÏºÇ¿·¤ÎÆó¤Ä¤Î¥¡¼¥¤¥Ù¥ó¥È¡¢¤¹¤Ê¤ï¤Á¤³¤Î
+¥³¥Þ¥ó¥É¤Ë¤è¤Ã¤Æ°ú¤µ¯¤³¤µ¤ì¤¿¤â¤Î¤È¤½¤ÎľÁ°¤Î¤â¤Î¡¢¤ò¥¥ã¥ó¥»¥ë¤¹¤ë¡£
+
+À°¿ôÃͤΰú¿ô NUM ¤¬¤¢¤ë¾ì¹ç¡¢¤½¤ì¤ÏÀµ¤«Éé¤Ç¤¢¤ê 0 ¤Ç¤¢¤Ã¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
+Àµ¤Ê¤é¤ÐºÇ¿·¤Î¤â¤Î¤«¤é¿ô¤¨¤Æ NUM ¸ÄÌܤΥ¤¥Ù¥ó¥È¤ò¥¥ã¥ó¥»¥ë¤¹¤ë¡£Éé¤Ê¤é
+¤ÐºÇ¿·¤Î(- NUM) ¸Ä¤Î¥¤¥Ù¥ó¥È¤ò¥¥ã¥ó¥»¥ë¤¹¤ë¡£
+
+¥·¥ó¥Ü¥ë¤Î°ú¿ô¤¬¤¢¤ë¾ì¹ç¡¢¤½¤ì¤ÏÀ°¿ô¤Ëµ¢Ã夵¤ì¤Ê¤¯¤Æ¤Ï¤Ê¤é¤º¡¢¤½¤ÎÃͤ¬
+¾åµ¤ÎÀµ¿ôÃÍ°ú¿ô¤Î¾ì¹ç¤ÈƱÍͤ˼è¤ê°·¤ï¤ì¤ë¡£
@verbatim
-UNDO :: = '(undo)'
+UNHANDLE :: = '(unhandle)'
@endverbatim
-¤³¤Î¥¢¥¯¥·¥ç¥ó¤ÏºÇ¸å¤Î¥¡¼¥¤¥Ù¥ó¥È¤ò¼è¤ê¾Ã¤¹¡£
+¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ï¸½ºß¤Î preediting ¥Æ¥¥¹¥È¤ò¥³¥ß¥Ã¥È¤·¡¢ºÇ¿·¤Î¥¡¼¤ò̤
+½èÍý¤È¤·¤ÆÊÖ¤¹¡£
@verbatim
SHIFT :: = '(' 'shift' STATE-NAME ')'
*) ·¿¤ÎÃͤòÊÖ¤µ¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
@verbatim
-SET ::= '(' OPERAND SYMBOL1 [ INTEGER | SYMBOL2 ] ')'
+SET ::= '(' CMD SYMBOL1 EXPRESSION ')'
+
+CMD ::= 'set' | 'add' | 'sub' | 'mul' | 'div'
+
+EXPRESSION ::= INTEGER | SYMBOL2 | '(' OPERAND EXPRESSION * ')'
+
+OPERAND ::= '+' | '-' | '*' | '/' | '|' | '&' | '!'
+ | '=' | '<' | '>' | '<=' | '>='
-OPERAND ::= 'set' | 'add' | 'sub' | 'mul' | 'div'
@endverbatim
¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ï @c SYMBOL1 ¤È @c SYMBOL2 ¤òÊÑ¿ô¤È¤·¤Æ¡¢@c SYMBOL1 ¤Î
Ãͤò°Ê²¼¤Î¤è¤¦¤ËÀßÄꤹ¤ë¡£
-@c OPERAND ¤¬ 'set' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃÍ¤Ï @c INTEGER ¤Þ¤¿¤Ï @c
-SYMBOL2 ¤ËÀßÄꤵ¤ì¤ë¡£
+@c CMD ¤¬ 'set' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃͤò @c EXPRESSION ¤ÎÃͤËÀßÄꤹ¤ë¡£
-@c OPERAND ¤¬ 'add' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃͤò @c INTEGER ¤Þ¤¿¤Ï @c
-SYMBOL2 ¤ÎÃͤÀ¤±Áý¤ä¤¹¡£
+@c CMD ¤¬ 'add' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃͤò @c EXPRESSION ¤ÎÃͤÀ¤±Áý¤ä¤¹¡£
-@c OPERAND ¤¬ 'sub' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃͤò @c INTEGER ¤Þ¤¿¤Ï @c
-SYMBOL2 ¤ÎÃͤÀ¤±¸º¤é¤¹¡£
+@c CMD ¤¬ 'sub' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃͤò @c EXPRESSION ¤ÎÃͤÀ¤±¸º¤é¤¹¡£
-@c OPERAND ¤¬ 'mul' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃÍ¤Ë @c INTEGER ¤Þ¤¿¤Ï @c
-SYMBOL2 ¤ÎÃͤò³Ý¤±¤ë¡£
+@c CMD ¤¬ 'mul' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃͤò @c EXPRESSION ¤ÎÃͤò³Ý¤±¤¿¤â
+¤Î¤Ë¤¹¤ë¡£
-@c OPERAND ¤¬ 'div' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃͤò @c INTEGER ¤Þ¤¿¤Ï @c
-SYMBOL2 ¤ÎÃͤdzä¤ë¡£
+@c CMD ¤¬ 'div' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃͤò @c EXPRESSION ¤ÎÃͤdzä¤Ã¤¿¤â
+¤Î¤Ë¤¹¤ë¡£
@verbatim
-IF ::= '(' 'if' CONDITION ACTION-LIST1 ACTION-LIST2 * ')'
+IF ::= '(' CONDITION ACTION-LIST1 ACTION-LIST2 ')'
-CONDITION ::= '(' OPERAND VAL1 VAL2 ')'
+CONDITION ::= [ '=' | '<' | '>' | '<=' | '>=' ] EXPRESSION1 EXPRESSION2
ACTION-LIST1 ::= '(' ACTION * ')'
ACTION-LIST2 ::= '(' ACTION * ')'
-
-OPERAND ::= '=' '<' '>'
-
-VAL1 ::= [ INTEGER1 | SYMBOL1 ]
-
-VAL2 ::= [ INTEGER2 | SYMBOL2 ]
@endverbatim
¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ï¡¢ @c CONDITION ¤¬¿¿¤Ç¤¢¤ì¤Ð @c ACTION-LIST1 ¤ò¼Â¹Ô¤·¡¢
@c SYMBOL1 ¤È @c SYMBOL2 ¤ÏÊÑ¿ô¤È¤·¤Æ°·¤ï¤ì¤ë¡£
+@verbatim
+COND ::= '(' 'cond' [ '(' EXPRESSION ACTION * ') ] * ')'
+@endverbatim
+
+¤³¤Î¥¢¥¯¥·¥ç¥ó¤ÏÂбþ¤¹¤ë @c EXPRESSION ¤¬ 0 ¤Ç¤Ê¤¤Ãͤò¤È¤ëºÇ½é¤Î¥¢¥¯¥·¥ç
+¥ó @c ACTION ¤ò¼Â¹Ô¤¹¤ë¡£
+
@ifnot FOR-MAN
@section im-seealso SEE ALSO
*/
/*
-Copyright (C) 2003, 2004
+Copyright (C) 2003, 2004, 2005
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H15PRO112
@section im-format SYNTAX and SEMANTICS
-The following data format defines an input method. The driver loads
-a definition from a file, a stream, etc. A definitions is converted
+The following data format defines an input method. The driver loads a
+definition from a file, a stream, etc. The definition is converted
into the form of plist in the driver.
@verbatim
@c IM-DECLARATION specifies the language and name of this input
method.
-@c DESCRIPTION specifies the description text of this input method by
-MTEXT.
+@c DESCRIPTION specifies @c MTEXT as the description text of this
+input method.
@c VARIABLE-DECLARATION declares a variable used in this input method.
-If a variable must be initialized from the default value, or is to be
+If a variable must be initialized to the default value, or is to be
customized by a user, it must be declared here.
@c COMMAND-DECLARATION declares a command used in this input method.
| '(' t BRANCH-ACTION * ')'
@endverbatim
-In the first form of @c BRANCH, @c MAP-NAME must be an item that appears
-in @c MAP. In this case, if a key sequence matching one of @c
+In the first form of @c BRANCH, @c MAP-NAME must be an item that
+appears in @c MAP. In this case, if a key sequence matching one of @c
KEYSEQs of @c MAP-NAME is typed, @c BRANCH-ACTIONs are executed.
In the second form of @c BRANCH, @c BRANCH-ACTIONs are executed if a
key sequence that doesn't match any of @c Branch's of the current
state is typed.
-In the third form of @c BRANCH, @c BRANCH-ACTIONs are executed when we
-shift to the current state. If the current state is the initial
+In the third form of @c BRANCH, @c BRANCH-ACTIONs are executed when
+shifted to the current state. If the current state is the initial
state, @c BRANCH-ACTIONs are executed also when an input context of
the input method is created.
Number of handled keys at that moment.
-</ulL
+</ul>
The arguments and the behavior of each action are listed below.
This action treats @c SYMBOL as a marker, and sets its position to the
current position. @c SYMBOL must not be a @c PREDEFINED-SYMBOL.
-
@verbatim
PUSHBACK :: = '(' 'pushback' INTEGER ')'
| '(' 'pushback' KEYSEQ ')'
to the event queue if @c INTEGER is positive, and pushes back all key
events if @c INTEGER is zero.
-The second form pushes back keys in KEYSEQ to the event queue.
+The second form pushes back keys in @c KEYSEQ to the event queue.
@verbatim
UNDO :: = '(' 'undo' [ INTEGER | SYMBOL ] ')'
If there's an integer argument NUM, it must be positive or negative
(not zero). If positive, the NUMth event to the last one are
-cancelled. If negative the last (- NUM) events are cancelled.
+canceled. If negative the last (- NUM) events are canceled.
If there's a symbol argument, it must be resolved to an integer number
and the number is treated as the actual argument as above.
COND ::= '(' 'cond' [ '(' EXPRESSION ACTION * ') ] * ')'
@endverbatim
-This action performs the first actions @c ACTION whose corresponding
+This action performs the first action @c ACTION whose corresponding
@c EXPRESSION has nonzero value.
@ifnot FOR-MAN