INPUT-METHOD =
''
TAGS
DESCRIPTION ?
TITLE ?
VARLIST ?
CMDLIST ?
MODULELIST ?
MACROLIST ?
MAPLIST ?
STATELIST ?
''
TAGS = '' LANG NAME EXTRA ? ''
LANG = '' LANGNAME ''
NAME = '' NAME ''
EXTRA = '' EXTRANAME ''
VARLIST = '' DEFVAR + ''
CMDLIST = '' COMMAND + ''
MODULELIST = '' MODULE + ''
MACROLIST = '' DEFUN + ''
MAPLIST = '' MAP + ''
STATELIST = '' STATE + ''
MODULE = '' DEFUN-NAME + ''
DEFUN-NAME = ''
COMMAND
= ''
DESCRIPTION ?
KEYSEQ *
''
MAP = ''
RULE = '' [ KEYSEQ | CMDREF ] FUNCALL * ''
CMDREF = ''
STATE = ''
TITLE ?
[ HOOK BRANCH CATCHALL ] *
''
HOOK = '' FUNCALL + ''
BRANCH = '' FUNCALL * ''
CATCHALL = '' FUNCALL * ''
TERM += MIM-TERM
PREDEFINED += MIM-PREDEFEIND
MIM-TERM = KEYSEQ | MARKER | SELECTOR
KEYSEQ = '' [ STRTERM | LISTTERM ] ''
KEYSEQTERM = KEYSEQ | VAR (value is KEYSEQ) | FUNCALL (return KEYSEQ)
MARKER = '' STRING ''
MARKERTERM = MARKER | VAR (value is MARKER) | FUNCALL (return MARKER)
SELECTOR = '' "@..." ''
SELECTORTERM = SELECTOR | VAR (value is SELECTOR) | FUNCALL (return SELECTOR)
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 = '' [ INTTERM | STRTERM ] ''
CANDIDATES = '' [ STRTERM | LISTTERM ]+ ''
DELETE = '' [ MARKERTERM | INTTERM ] ''
SELECT = ''
SHOW = ''
HIDE = ''
MOVE = '' [ MARKERTERM | INTTERM ] ''
MARK = '' MARKERTERM ''
PUSHBACK = '' [ KEYSEQTERM | INTTERM ] ''
POP = ''
UNDO = '' INTTERM ? ''
COMMIT = ''
UNHANDLE = ''
SHIFT = '' SYMTERM ''
SHIFTBACK = ''
CHAR-AT = '' MARKERTERM ''
=> C, where C is the character in the preedit text
or the surrounding text at the postion specified by MARKERTERM.
KEY-COUNT = ''
=> N, where N is the number of currently handled keys
SURROUNDING-TEXT-FLAG = ''
=> 1 if surrounding text handling is supported
or 0 if not.