STRTERM = STR | VAR (value is STR) | FUNCALL (return STR)
SYMTERM = SYMBOL | VAR (value is SYMBOL) | FUNCALL (return SYMBOL)
LISTTERM = LIST | VAR (value is LIST) | FUNCALL (return LIST)
-ANYTERM = TERM
;; Here after, when an argument is TERM, it is given to a function
;; without being evaluted. Otherwise, an evaluated term is given.
-SET = '<set vname="' VNAME '">' ANYTERM '</set>'
+SET = '<set vname="' VNAME '">' TERM '</set>'
ADD = '<add>' INTTERM + '</add>'
| '<add vname="' VNAME '">' INTTERM + '</add>'
SUB = '<sub>' INTTERM + '</sub>'
NOTEQ = '<noteq>' INTTERM INTTERM '</noteq>'
GE = '<ge>' INTTERM INTTERM '</ge>'
GT ='<gt>' INTTERM INTTERM '</gt>'
-APPEND = '<append>' ANYTERM + '</append>'
- | '<append vname=" VNAME '">' ANYTERM + '</append>'
+APPEND = '<append>' TERM + '</append>'
+ | '<append vname=" VNAME '">' TERM + '</append>'
CONCAT = '<concat>' [ INTTERM | STRTERM | LISTTERM ] + '</concat>'
| '<concat vname=" VNAME '">' [ INTTERM | STRTERM | LISTTERM ] + '</concat>'
LENGTH = '<length>' [ STRTERM | LISTTERM ] '</length>'
LOOP = '<loop>' TERM + '</loop>'
WHILE = '<while>' TERM + '</while>'
FOREACH = '<foreach vname="' VNAME '">' TERM + '</foreach>'
-BREAK = '<break>' ANYTERM ? '</break>'
-RETURN = '<return>' ANYTERM ? '</return>'
+BREAK = '<break>' TERM ? '</break>'
+RETURN = '<return>' TERM ? '</return>'
QUOTE = '<quote>' TERM '</quote>'
EVAL = '<eval>' TERM '</eval>'
-TYPE = '<type>' ANYTERM '</type>'
+TYPE = '<type>' TERM '</type>'