-;; FILE-FORMAT ::=
-;; TITLE MAP-LIST MODULE-LIST ? STATE-LIST
-;;
-;; TITLE ::=
-;; '(' title MTEXT ')'
-;;
-;; MAP-LIST ::=
-;; '(' 'map' MAP * ')'
-;;
-;; MAP ::=
-;; '(' MAP-NAME RULE * ')'
-;;
-;; MAP-NAME ::=
-;; SYMBOL
-;;
-;; RULE ::=
-;; '(' KEYSEQ MAP-ACTION * ')'
-;;
-;; KEYSEQ ::=
-;; MTEXT | '(' [ SYMBOL | INTEGER ] * ')'
-;;
-;; MAP-ACTION ::=
-;; ACTION
-;;
-;; ACTION ::=
-;; MTEXT | CANDIDATES | '(' ACTION-NAME ACTION-ARG * ')'
-;;
-;; CANDIDATES ::=
-;; '(' CANDIDATE-GROUP * ')'
-;;
-;; (in ASCTION,
-;; MTEXT is a short form of "(insert MTEXT)"
-;; CANDIDATES is a short form of "(candidates CANDIDATE-GROUP *)")
-;;
-;; ACTION-NAME ::=
-;; 'insert' | 'candidates' | 'delete' | 'select' | 'select-group'
-;; | 'move' | 'mark' | 'pushback' | 'undo' | 'shift' | 'call'
-;;
-;; ACTION-ARG ::=
-;; INTEGER | SYMBOL | MTEXT | CANDIDATE-GROUP
-;;
-;; CANDIDATE-GROUP ::=
-;; MTEXT | '(' MTEXT * ')'
-;;
-;; PREDEFINED-SYMBOL ::=
-;; '@0' | '@1' | '@2' | '@3' | '@4' | '@5' | '@6' | '@7' | '@8' | '@9'
-;; | '@<' | '@=' | '@>' | '@-' | '@+'
-;;
-;; MARKER ::=
-;; PREDEFINED-SYMBOL | SYMBOL
-;;
-;; CANDIDATE-INDEX ::=
-;; PREDEFINED-SYMBOL
-;;
-;; CANDIDATE-GROUP-INDEX ::=
-;; PREDEFINED-SYMBOL
-
-;; ;; The first five actions ('insert' .. 'select-group') are for
-;; ;; editing a text in the preediting buffer. The buffer can keep
-;; ;; multiple markers. Each marker is represented by a symbol, and
-;; ;; keeps a position between characters in the preediting buffer.
-
-;; ;; PREDEFINED-SYMBOL has special meanings when used as MARKER:
-;; ;; '@0', '@1', ... '@9'
-;; ;; The 0th, 1th, ... 9th position.
-;; ;; '@<', '@=', '@>'
-;; ;; The first, current, and end position.
-;; ;; '@-', '@+'
-;; ;; The previous and next position.
-
-;; ;; PREDEFINED-SYMBOL has special meanings when used as CANDIDATE-INDEX:
-;; ;; '@0', '@1', ... '@9'
-;; ;; The 0th, 1th, ... 9th candidate of the current candidate group.
-;; ;; '@<', '@=', '@>'
-;; ;; The first, current, and end candidate of the current candidate
-;; ;; group.
-;; ;; '@-'
-;; ;; The previous candidate. If the current candidate is the
-;; ;; first of the current candidate group, the last candidate of
-;; ;; the previous candidate group.
-;; ;; '@+'
-;; ;; The next candidate. If the current candidate is the last of
-;; ;; the current candidate group, the first candidate of the
-;; ;; previous candidate group.
-
-;; ;; PREDEFINED-SYMBOL has special meanings when used as CANDIDATE-INDEX:
-;; ;; '@0', '@1', ... '@9'
-;; ;; The 0th, 1th, ... 9th candidate of the current candidate group.
-;; ;; '@<', '@=', '@>'
-;; ;; The first, current, and end candidate of the current candidate
-;; ;; group.
-;; ;; '@-'
-;; ;; The previous candidate. If the current candidate is the
-;; ;; first of the current candidate group, the last candidate of
-;; ;; the previous candidate group.
-;; ;; '@+'
-;; ;; The next candidate. If the current candidate is the last of
-;; ;; the current candidate group, the first candidate of the
-;; ;; previous candidate group.
-
-;; ;; PREDEFINED-SYMBOL has special meanings when used as
-;; ;; CANDIDATE-GROUP-INDEX:
-;; ;; '@0', '@1', ... '@9'
-;; ;; The 0th, 1th, ... 9th candidate group.
-;; ;; '@<', '@=', '@>'
-;; ;; The first, current, and end candidate group.
-;; ;; '@-', '@+'
-;; ;; The previous and the next candidate group.
-
-;; ;; (insert MTEXT) inserts MTEXT before @=.
-
-;; ;; (candidates CANDIDATE-GROUP *) set the current candidates list
-;; ;; to the list of arguments, set the current candidate group to the
-;; ;; first argument, insert the first candidate of the current group
-;; ;; before @=, and mark the inserted text as the current candidate.
-;; ;; Each element of CANDIDATE-GROUP represents a candidate, i.e. if
-;; ;; CANDIDATE-GROUP is MTEXT, each character in MTEXT is a
-;; ;; candidate, if CANDIDATE-GROUP is a list of MTEXT, each MTEXT is
-;; ;; a candidate.
-
-;; ;; (select CANDIDATE-INDEX) replaces the current candidate with
-;; ;; what specified by CANDIDATE-INDEX. If a candidate of the
-;; ;; different candidate group is specified, set the current
-;; ;; candidate group to that group.
-
-;; ;; (select-group CANDIDATE-GROUP-INDEX) sets the current candidate
-;; ;; group to a group indicated by CANDIDATE-GROUP-INDEX, and relaces
-;; ;; the current candiate with the candiate of the same index in the
-;; ;; new group.
-
-;; ;; (delete MARKER) deletes characters between @= and the position
-;; ;; specified by MARKER.
-
-;; ;; (move MARKER) sets @= to the position of specified by MARKER.
-
-;; ;; (mark MARKER) sets MARKER to the position of @=. MARKER must
-;; ;; not be PREDEFINED-SYMBOL.
-
-;; ;; (pushback) pushbacks the latest key events to the event queue.
-
-;; ;; (undo) cancels the last key events.
-
-;; ;; (shift STATE-NAME) shifts the current state to the state
-;; ;; specified by STATE-NAME.
-
-;; ;; (call FUNCTION ARG *) calls the function FUNCTION of an external
-;; ;; module. FUNCTION must be defined in MODULE-LIST.
-
-;; ;; The function is called with a property list (MPlist *) that has
-;; ;; these properties in this order.
-;; ;; KEY VALUE
-;; ;; --- -----
-;; ;; mtext The current preedit text.
-;; ;; symbol The current state name (MSymbol).
-;; ;; The remaining properties (if any) are ARGs.
-;; ;;
-;; ;; The function must return a property list (MPlist *) that
-;; ;; represents a list of ACTIONs to take.
-
-;; MODULE-LIST ::=
-;; '(' 'module' MODULE * ')'
-;;
-;; MODULE ::=
-;; '(' MODULE-NAME FUNCTION * ')'
-;;
-;; MODULE-NAME ::=
-;; MTEXT
-;;
-;; FUNCTION ::=
-;; SYMBOL
-
-;; STATE-LIST ::=
-;; '(' 'state' STATE * ')'
-;;
-;; STATE ::=
-;; '(' STATE-NAME BRANCH * ')'
-;;
-;; STATE-NAME ::=
-;; SYMBOL
-;;
-;; BRANCH ::=
-;; '(' [ MAP-NAME | 'nil' ] BRANCH-ACTION * ')'
-
-;; ;; If MAP-NAME is specified, it must be a name of a map defined in
-;; ;; MAP-LIST. Otherwise, BRANCH is the default branch of STATE.
-
-;; BRANCH-ACTION ::=
-;; ACTION
+INPUT-METDHO ::=
+ '(' TITLE MAP-LIST MODULE-LIST ? STATE-LIST ')'
+
+TITLE ::=
+ '(' title MTEXT ')'
+
+MAP-LIST ::=
+ '(' 'map' MAP * ')'
+
+MAP ::=
+ '(' MAP-NAME RULE * ')'
+
+MAP-NAME ::=
+ symbol
+
+RULE ::=
+ '(' KEYSEQ MAP-ACTION * ')'
+
+KEYSEQ ::=
+ mtext | '(' [ symbol | integer ] * ')'
+
+MAP-ACTION ::=
+ ACTION
+
+ACTION ::=
+ mtext | CANDIDATES | '(' ACTION-NAME ACTION-ARG * ')'
+
+CANDIDATES ::=
+ '(' CANDIDATE-GROUP * ')'
+
+ (in ASCTION,
+ MTEXT is a short form of "(insert MTEXT)"
+ CANDIDATES is a short form of "(candidates CANDIDATE-GROUP *)")
+
+ACTION-NAME ::=
+ 'insert' | 'candidates' | 'delete' | 'select' | 'select-group'
+ | 'move' | 'mark' | 'pushback' | 'undo' | 'shift' | 'call'
+
+ACTION-ARG ::=
+ integer | symbol | mtext | CANDIDATE-GROUP
+
+CANDIDATE-GROUP ::=
+ mtext | '(' mtext * ')'
+
+PREDEFINED-SYMBOL ::=
+ '@0' | '@1' | '@2' | '@3' | '@4' | '@5' | '@6' | '@7' | '@8' | '@9'
+ | '@<' | '@=' | '@>' | '@-' | '@+'
+
+MARKER ::=
+ PREDEFINED-SYMBOL | symbol
+
+CANDIDATE-INDEX ::=
+ PREDEFINED-SYMBOL
+
+CANDIDATE-GROUP-INDEX ::=
+ PREDEFINED-SYMBOL
+
+;; The first five actions ('insert' .. 'select-group') are for
+;; editing a text in the preediting buffer. The buffer can keep
+;; multiple markers. Each marker is represented by a symbol, and
+;; keeps a position between characters in the preediting buffer.
+
+;; PREDEFINED-SYMBOL has special meanings when used as MARKER:
+;; '@0', '@1', ... '@9'
+;; The 0th, 1th, ... 9th position.
+;; '@<', '@=', '@>'
+;; The first, current, and end position.
+;; '@-', '@+'
+;; The previous and next position.
+
+;; PREDEFINED-SYMBOL has special meanings when used as CANDIDATE-INDEX:
+;; '@0', '@1', ... '@9'
+;; The 0th, 1th, ... 9th candidate of the current candidate group.
+;; '@<', '@=', '@>'
+;; The first, current, and end candidate of the current candidate
+;; group.
+;; '@-'
+;; The previous candidate. If the current candidate is the
+;; first of the current candidate group, the last candidate of
+;; the previous candidate group.
+;; '@+'
+;; The next candidate. If the current candidate is the last of
+;; the current candidate group, the first candidate of the
+;; previous candidate group.
+
+;; PREDEFINED-SYMBOL has special meanings when used as CANDIDATE-INDEX:
+;; '@0', '@1', ... '@9'
+;; The 0th, 1th, ... 9th candidate of the current candidate group.
+;; '@<', '@=', '@>'
+;; The first, current, and end candidate of the current candidate
+;; group.
+;; '@-'
+;; The previous candidate. If the current candidate is the
+;; first of the current candidate group, the last candidate of
+;; the previous candidate group.
+;; '@+'
+;; The next candidate. If the current candidate is the last of
+;; the current candidate group, the first candidate of the
+;; previous candidate group.
+
+;; PREDEFINED-SYMBOL has special meanings when used as
+;; CANDIDATE-GROUP-INDEX:
+;; '@0', '@1', ... '@9'
+;; The 0th, 1th, ... 9th candidate group.
+;; '@<', '@=', '@>'
+;; The first, current, and end candidate group.
+;; '@-', '@+'
+;; The previous and the next candidate group.
+
+;; (insert MTEXT) inserts MTEXT before @=.
+
+;; (candidates CANDIDATE-GROUP *) set the current candidates list
+;; to the list of arguments, set the current candidate group to the
+;; first argument, insert the first candidate of the current group
+;; before @=, and mark the inserted text as the current candidate.
+;; Each element of CANDIDATE-GROUP represents a candidate, i.e. if
+;; CANDIDATE-GROUP is MTEXT, each character in MTEXT is a
+;; candidate, if CANDIDATE-GROUP is a list of MTEXT, each MTEXT is
+;; a candidate.
+
+;; (select CANDIDATE-INDEX) replaces the current candidate with
+;; what specified by CANDIDATE-INDEX. If a candidate of the
+;; different candidate group is specified, set the current
+;; candidate group to that group.
+
+;; (select-group CANDIDATE-GROUP-INDEX) sets the current candidate
+;; group to a group indicated by CANDIDATE-GROUP-INDEX, and relaces
+;; the current candiate with the candiate of the same index in the
+;; new group.
+
+;; (delete MARKER) deletes characters between @= and the position
+;; specified by MARKER.
+
+;; (move MARKER) sets @= to the position of specified by MARKER.
+
+;; (mark MARKER) sets MARKER to the position of @=. MARKER must
+;; not be PREDEFINED-SYMBOL.
+
+;; (pushback) pushbacks the latest key events to the event queue.
+
+;; (undo) cancels the last key events.
+
+;; (shift STATE-NAME) shifts the current state to the state
+;; specified by STATE-NAME.
+
+;; (call FUNCTION ARG *) calls the function FUNCTION of an external
+;; module. FUNCTION must be defined in MODULE-LIST.
+
+;; The function is called with a property list (MPlist *) that has
+;; these properties in this order.
+;; KEY VALUE
+;; --- -----
+;; mtext The current preedit text.
+;; symbol The current state name (MSymbol).
+;; The remaining properties (if any) are ARGs.
+;;
+;; The function must return a property list (MPlist *) that
+;; represents a list of ACTIONs to take.
+
+MODULE-LIST ::=
+ '(' 'module' MODULE * ')'
+
+MODULE ::=
+ '(' MODULE-NAME FUNCTION * ')'
+
+MODULE-NAME ::=
+ mtext
+
+FUNCTION ::=
+ symbol
+
+STATE-LIST ::=
+ '(' 'state' STATE * ')'
+
+STATE ::=
+ '(' STATE-NAME BRANCH * ')'
+
+STATE-NAME ::=
+ symbol
+
+BRANCH ::=
+ '(' [ MAP-NAME | 'nil' ] BRANCH-ACTION * ')'
+
+;; If MAP-NAME is specified, it must be a name of a map defined in
+;; MAP-LIST. Otherwise, BRANCH is the default branch of STATE.
+
+BRANCH-ACTION ::=
+ ACTION
;; Example: