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>'
+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>'
MODULE = '<module>' DEFUN-NAME + '</module>'
DEFUN-NAME = '<defun fname="' FNAME '"/>'
KEYSEQ *
'</defcmd>'
-MAP = '<map id="' MAPNAME '">' RULE * '</map>'
+MAP = '<map mname="' MAPNAME '">' RULE * '</map>'
RULE = '<rule>' [ KEYSEQ | CMDREF ] FUNCALL * '</rule>'
CMDREF = '<command cname="' COMMANDNAME '"/>'
-STATE = '<state id="' STATENAME '">' BRANCH * '</state>'
+STATE = '<state sname="' STATENAME '">' HOOK BRANCH CATCHALL * '</state>'
-BRANCH = ...
+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
LOGAND = '<logand> INTTERM + '</logand>'
| '<logand vname="' VNAME '">' INTTERM + '</logand>'
LOGIOR = '<logior> INTTERM + '</logior>'
- | '<logior> vname="' VNAME '">' INTTERM + '</logior>'
+ | '<logior vname="' VNAME '">' INTTERM + '</logior>'
LOGXOR = '<logxor> INTTERM + '</logxor>'
- | '<logxor> vname="' VNAME '">' INTTERM + '</logxor>'
+ | '<logxor vname="' VNAME '">' INTTERM + '</logxor>'
LSH = '<lsh>' INTTERM INTTERM '</lsh>'
| '<lsh vname="' VNAME '">' INTTERM '</mul>'
LT = '<lt>' INTTERM INTTERM '</lt>'
GE = '<ge>' INTTERM INTTERM '</ge>'
GT ='<gt>' INTTERM INTTERM '</gt>'
APPEND = '<append>' ANYTERM + '</append>'
+ | '<append vname=" VNAME '">' ANYTERM + '</append>'
CONCAT = '<concat>' [ INTTERM | STRTERM | LISTTERM ] + '</concat>'
+ | '<concat vname=" VNAME '">' [ INTTERM | STRTERM | LISTTERM ] + '</concat>'
LENGTH = '<length>' [ STRTERM | LISTTERM ] '</length>'
NTH = '<nth>' INTTERM [ STRTERM | LISTTERM ] '</nth>'
COPY = '<copy>' LISTTERM '</nth>'