X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=xex.txt;h=4a36efe4828558a8414268a2a03788490782674c;hb=773db3df0debc60901f68cb8d97e59f2a314cdde;hp=ced1f8006fe9b8580e7812f75b3c7c417c92ec89;hpb=a00c135c6ed03fcb7e77dd090cd19dc1347cac72;p=m17n%2Fm17n-lib-cs.git
diff --git a/xex.txt b/xex.txt
index ced1f80..4a36efe 100644
--- a/xex.txt
+++ b/xex.txt
@@ -1,26 +1,28 @@
EXPR =
'' [ DEFUN | DEFMACRO | DEFVAR | TERM ] * ''
-TERM = [ VAR | DIRECT | FUNCALL ]
-
-TYPE = 'integer' | 'string' | 'boolean' | 'symbol' | 'list'
+TERM = [ VAR | INT | STRING | SYMBOL | LIST | FUNCALL ]
DEFUN =
- ''
+ ''
ARGS ?
- TERM *
+ BODY ?
''
ARGS =
- '' [ SYMBOL | VAR ] * OPTIONAL ? REST ? ''
+ '' VAR * OPTIONAL ? REST ? ''
+ | '' VAR * OPTIONAL ? REST ? ''
OPTIONAL =
- '' [ SYMBOL | VAR ] *
+ '' VAR *
REST =
- '' [ SYMBOL | VAR ]
+ '' VAR
+
+BODY =
+ '' TERM * ''
-DEFVAR = DEFVAR-INT DEFVAR-STR DEFVAR-BOOL
+DEFVAR = DEFVAR-INT DEFVAR-STR
DEFVAR-INT =
''
@@ -36,47 +38,38 @@ DEFVAR-STR =
STR *
''
-DEFVAR-BOOL =
- ''
- DESCRIPTION ?
- BOOL ?
- ''
-
DESCRIPTION =
- '' TEXT ''
+ '' [ TEXT | GETTEXT ] ''
+
+GETTEXT =
+ '' TEXT ''
VAR =
''
-
-DIRECT = INT STR BOOL SYMBOL LIST
-
INT =
'' INTEGER ''
STR =
'' STRING ''
-BOOL =
- '' [ 'true' | 'false' ]
SYMBOL =
'' NAME ''
LIST =
- '' DIRECT * '
' |
+ '' TERM * '
' |
FUNCALL =
'' TERM * ''
| '<' PREDEFINED-FUNC-SYMBOL '>' TERM * '' PREDEFINED-FUNC-SYMBOL '>'
- | '<' PREDEFINED-MACRO-SYMBOL '>' TERM * '' PREDEFINED-MACRO-SYMBOL '>'
PREDEFINED-FUNC-SYMBOL =
- 'set'
- | 'and' | 'or' | 'not'
- | 'lt' | 'le' | 'eq' | 'ge' | 'gt'
- | 'noteq'
- | 'add' | 'sub' | 'mul' | 'div' | 'mod'
- | 'add-set' | 'sub-set' | 'mul-set' | 'div-set' | 'mod-set'
- | 'logand' | 'logior' | 'logxor' | 'lsh'
- | 'logand-set' | 'logior-set' | 'logxor-set' | 'lsh-set'
- | 'append' | 'concat' | 'substr'
- | 'cons' | 'car' | 'cdr' | 'nth'
+ SET
+ | AND | OR | NOT
+ | LT | LE | EQ | GE | GT
+ | NOTEQ
+ | ADD | SUB | MUL | DIV | MOD
+ | LOGAND | LOGIOR | LOGXOR | LSH
+ | APPEND | CONCAT | NTH | COPY | INS | DEL
+ | PROGN | IF | WHEN | COND
+ | WHILE | FOR | FOREACH
+ | EVAL | TYPE
PREDEFINED-FUNC-NAME =
PREDEFINED-FUNC-SYMBOL
@@ -88,7 +81,39 @@ PREDEFINED-FUNC-NAME =
| '+=' | '-=' | '*=' | '/=' | '%='
| '&=' | '|=' | '~=' | '<<=' | '>>='
-PREDEFINED-MACRO-SYMBOL =
- 'case' | 'cond' | 'if' | 'progn' | 'when' | 'while'
+TRUE =
+ '0'
+FALSE =
+ '1'
+
+;; TERM is evaluated to a TERM.
+;; INT is evaluated to itself.
+;; STRING is evaluated to itself.
+;; SYMBOL is evaluated to itself.
+;; LIST is evaluated to itself.
+;; VAR is evaluated to TERM that is set to that variable.
+;; FUNCALL is evaluated to TERM returned by that function.
+
+SET =
+ '' TERM ''
+;; Set the variable of name VARNAME to TERM.
+
+AND = ;; arguments unevalled
+ ' TERM ...
+OR (unevalled-arg ...) =
+ ' TERM ...
+NOT (arg) =
+ ' TERM
+
+LT (arg ...) =
+ '' TERM ... ''
-PREDEFINED-MACRO-NAME = PREDEFINED-MACRO-SYMBOL
+ | 'and' | 'or' | 'not'
+ | 'lt' | 'le' | 'eq' | 'ge' | 'gt'
+ | 'noteq'
+ | 'add' | 'sub' | 'mul' | 'div' | 'mod'
+ | 'logand' | 'logior' | 'logxor' | 'lsh'
+ | 'append' | 'concat' | 'nth' | 'copy' | 'ins' | 'del'
+ | 'progn' | 'if' | 'when' | 'cond'
+ | 'while' | 'for' | 'foreach'
+ | 'eval' | 'type'