X-Git-Url: http://git.chise.org/gitweb/?p=m17n%2Fm17n-docs.git;a=blobdiff_plain;f=data-usr%2Fim.txt;h=99a4292db6b5a7d9860d6f3bcd74a6d85a0a9329;hp=a107b4ce63f287d39315defee14fe20503e3b7a9;hb=7fb643c0c6fc60e1f61b3ec6fe8d00087f37ee2b;hpb=2dbf661e686b887d3519a9dc348fd57fb73cd30b diff --git a/data-usr/im.txt b/data-usr/im.txt index a107b4c..99a4292 100644 --- a/data-usr/im.txt +++ b/data-usr/im.txt @@ -1,191 +1,191 @@ -;; 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: