14 VARLIST = '<variable-list>' DEFVAR * '</variable-list>'
15 CMDLIST = '<command-list>' COMMAND * '</command-list>'
16 MODULELIST = '<module-list>' MODULE * '</module-list>'
17 MACROLIST = '<macro-list>' DEFUN * '</macro-list>'
18 MAPLIST = '<map-list>' MAP * '</map-list>'
19 STATELIST = '<state-list>' STATE * '</state-list>'
21 MODULE = '<module>' DEFUN-NAME + '</module>'
22 DEFUN-NAME = '<defun fname="' FNAME '"/>'
25 = '<defcmd cname="' COMMANDNAME '">'
30 MAP = '<map id="' MAPNAME '">' RULE * '</map>'
32 RULE = '<rule>' [ KEYSEQ | CMDREF ] FUNCALL * '</rule>'
34 CMDREF = '<command cname="' COMMANDNAME '"/>'
36 STATE = '<state id="' STATENAME '">' BRANCH * '</state>'
41 PREDEFINED += MIM-PREDEFEIND
43 MIM-TERM = KEYSEQ | MARKER
45 KEYSEQ = '<keyseq>' [ INTTERM | STRTERM | SYMTERM ] + '</keyseq>'
46 KEYSEQTERM = KEYSEQ | VAR (value is KEYSEQ) | FUNCALL (return KEYSEQ)
48 MARKER = '<marker>' SYMTERM '</marker>'
49 MARKERTERM = MARKER | VAR (value is MARKER) | FUNCALL (return MARKER)
51 SELECTOR = '<selector>' SYMTERM '</selector>'
52 SELECTORTERM = SELECTOR | VAR (value is SELECTOR) | FUNCALL (return SELECTOR)
55 = INSERT | CANDIDATES | DELETE | SELECT | SHOW | HIDE
56 | MARK | MOVE | PUSHBACK | POP | UNDO | COMMIT | UNHANDLE
59 INSERT = '<insert>' [ INTTERM | STRTERM ] '</insert>'
60 CANDIDATES = '<insert-candidates>' [ STRTERM | LISTTERM ] '</insert-candiates>'
61 DELETE = '<delete>' [ MARKERTERM | INTTERM ] '</delete>'
62 SELECT = '<select>' [ SELECTTERM | INTTERM ] '</select>'
63 SHOW = '<show-candidates/>'
64 HIDE = '<hide-candidates/>'
65 MOVE = '<move>' [ MARKERTERM | INTTERM ] '</move>'
66 MARK = '<mark>' MARKERTERM '</mark>'
67 PUSHBACK = '<pushback>' [ KEYSEQTERM | INTTERM ] '</pushback>'
69 UNDO = '<undo>' INTTERM ? '</undo>'
71 UNHANDLE = '<unhandle/>'
72 SHIFT = '<shift>' SYMTERM '</shift>'
73 SHIFTBACK = '<shiftback/>'