EXPR =
- '<expr>' [ DEFUN | DEFVAR | TERM ] * '</expr>'
+ '<expr>' [ DEFUN | DEFMACRO | DEFVAR | TERM ] * '</expr>'
TERM = [ INT | STRING | SYMBOL | LIST | VAR | FUNCALL ]
TERM *
'</defun>'
+DEFMACRO =
+ '<defmacro fname="' FNAME ? ">'
+ ARGS ?
+ TERM *
+ '</defmacro>'
+
ARGS =
'<args>' FIXED ? OPTIONAL ? REST ? '</args>'
- | '<args-unevalled>' FIXED ? OPTIONAL ? REST ? '</args-unevalled>'
FIXED =
'<fixed> VAR + '</fixed>'