*** empty log message ***
[m17n/m17n-lib-cs.git] / input.txt
index 0e626ce..6537e65 100644 (file)
--- a/input.txt
+++ b/input.txt
@@ -11,39 +11,84 @@ INPUT-METHOD =
   STATELIST ?
   '</input-method>'
 
-VARLIST = '<variable-list>' DEFVAR * '</variable-list>'
-CMDLIST = '<command-list>' COMMAND * '</command-list>'
-MODULELIST = '<module-list>' MODULE * '</module-list>'
-MACROLIST = '<macro-list>' DEFUN * '</macro-list>'
-MAPLIST = '<map-list>' MAP * '</map-list>'
-STATELIST = '<state-list>' STATE * '</state-list>'
+TAGS = '<tags>' LANG NAME EXTRA ? '</tags>'
 
-MODULE = '<module>' DEFUN-NAME + '</module>'
-DEFUN-NAME = '<defun fname=">' FNAME '"/>'
+LANG = '<language>' LANGNAME '</language>'
+NAME = '<name>' NAME '</name>'
+EXTRA = '<extra-id>' EXTRANAME '</extra-id>'
 
-MAP = '<map id="' MAPNAME '">' RULE * '</map>'
+VARLIST = '<variable-list>' DEFVAR + '</variable-list>'
+CMDLIST = '<command-list>' COMMAND + '</command-list>'
+MODULELIST = '<module-list>' MODULE + '</module-list>'
+MACROLIST = '<macro-list>' DEFUN + '</macro-list>'
+MAPLIST = '<map-list>' MAP + '</map-list>'
+STATELIST = '<state-list>' STATE + '</state-list>'
 
-RULE = '<rule>' [ KEYSEQ | COMMAND-REF ] FUNCALL * '</rule>'
+MODULE = '<module id="' MODULENAME '">' DEFUN-NAME + '</module>'
+DEFUN-NAME = '<defun fname="' FNAME '"/>'
 
-STATE = '<state id="' STATENAME '">' BRANCH * '</state>'
+COMMAND
+  = '<defcmd cname="' COMMANDNAME '">'
+    DESCRIPTION ?
+    KEYSEQ *
+    '</defcmd>'
 
-BRANCH = ...
+MAP = '<map mname="' MAPNAME '">' RULE * '</map>'
+
+RULE = '<rule>' [ KEYSEQ | CMDREF ] FUNCALL * '</rule>'
+
+CMDREF = '<command cname="' COMMANDNAME '"/>'
+
+STATE = '<state sname="' STATENAME '">' 
+        TITLE ? 
+       [ HOOK BRANCH CATCHALL ] * 
+       '</state>'
+
+HOOK = '<state-hook>' FUNCALL + '</state-hook>'
+
+BRANCH = '<branch mname="' MAPNAME '">' FUNCALL * '</branch>'
+
+CATCHALL = '<catch-all-branch>' FUNCALL * '</catch-all-branch>'
 
 TERM += MIM-TERM
 PREDEFINED += MIM-PREDEFEIND
 
-MIM-TERM = KEYSEQ MARKER 
+MIM-TERM = KEYSEQ | MARKER | SELECTOR
 
-KEYSEQ = '<keyseq>' [ INTTERM | STRTERM | SYMTERM ] + '</keyseq>'
+KEYSEQ = '<keyseq>' [ STRTERM | LISTTERM ] '</keyseq>'
 KEYSEQTERM = KEYSEQ | VAR (value is KEYSEQ) | FUNCALL (return KEYSEQ)
 
-MARKER = '<marker>' SYMTERM '</marker>'
+MARKER = '<marker>' STRING '</marker>'
 MARKERTERM = MARKER | VAR (value is MARKER) | FUNCALL (return MARKER)
 
+SELECTOR = '<selector>' "@..." '</selector>'
+SELECTORTERM = SELECTOR | VAR (value is SELECTOR) | FUNCALL (return SELECTOR)
 
-MIM-PREDEFINED = MARK MOVE PUSHBACK ...
+MIM-PREDEFINED
+  = INSERT | CANDIDATES | DELETE | SELECT | SHOW | HIDE
+    | MARK | MOVE | PUSHBACK | POP | UNDO | COMMIT | UNHANDLE
+    | SHIFT | SHIFTBACK | CHAR-AT | KEY-COUNT | SURROUNDING-TEXT-FLAG
 
+INSERT = '<insert>' [ INTTERM | STRTERM ] '</insert>'
+CANDIDATES = '<insert-candidates>' [ STRTERM | LISTTERM ]+ '</insert-candiates>'
+DELETE = '<delete>' [ MARKERTERM | INTTERM ] '</delete>'
+SELECT = '<select>' [ SELECTORTERM | INTTERM ] '</select>'
+SHOW = '<show-candidates/>'
+HIDE = '<hide-candidates/>'
 MOVE = '<move>' [ MARKERTERM | INTTERM ] '</move>'
 MARK = '<mark>' MARKERTERM '</mark>'
 PUSHBACK = '<pushback>' [ KEYSEQTERM | INTTERM ] '</pushback>'
-...
+POP = '<pop/>'
+UNDO = '<undo>' INTTERM ? '</undo>'
+COMMIT = '<commit/>'
+UNHANDLE = '<unhandle/>'
+SHIFT = '<shift>' SYMTERM '</shift>'
+SHIFTBACK = '<shiftback/>'
+CHAR-AT = '<char-at>' MARKERTERM '</char-at>'
+  => <integer>C</integer>, where C is the character in the preedit text
+     or the surrounding text at the postion specified by MARKERTERM.
+KEY-COUNT = '<key-count/>'
+  => <integer>N</integer>, where N is the number of currently handled keys
+SURROUNDING-TEXT-FLAG = '<surrounding-text-flag/>'
+  => <integer>1</integer> if surrounding text handling is supported
+     or <integer>0</integer> if not.