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-MACRO-SYMBOL '>' TERM * '' 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'