X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=xex.txt;h=4a36efe4828558a8414268a2a03788490782674c;hb=773db3df0debc60901f68cb8d97e59f2a314cdde;hp=575304fc5968bdf67f54cc9b7380ae44cdde4e97;hpb=1704d070aeebba69ffaa116451f5028adffb3095;p=m17n%2Fm17n-lib-cs.git diff --git a/xex.txt b/xex.txt index 575304f..4a36efe 100644 --- a/xex.txt +++ b/xex.txt @@ -1,9 +1,7 @@ EXPR = '' [ DEFUN | DEFMACRO | DEFVAR | TERM ] * '' -TERM = [ VAR | DIRECT | FUNCALL ] - -TYPE = 'integer' | 'string' | 'boolean' | 'symbol' | 'list' +TERM = [ VAR | INT | STRING | SYMBOL | LIST | FUNCALL ] DEFUN = '' @@ -12,19 +10,19 @@ DEFUN = '' ARGS = - '' SYMBOL * OPTIONAL ? REST ? '' - | '' SYMBOL * OPTIONAL ? REST ? '' + '' VAR * OPTIONAL ? REST ? '' + | '' VAR * OPTIONAL ? REST ? '' OPTIONAL = - '' SYMBOL * + '' VAR * REST = - '' SYMBOL + '' VAR BODY = '' TERM * '' -DEFVAR = DEFVAR-INT DEFVAR-STR DEFVAR-BOOL +DEFVAR = DEFVAR-INT DEFVAR-STR DEFVAR-INT = '' @@ -40,55 +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 = '' TERM * '' | -TYPE = - '' - [ 'integer' | 'string' | 'boolean' | 'symbol' | 'list' - | 'variable' | 'funcall' ] - '' FUNCALL = '' TERM * '' | '<' PREDEFINED-FUNC-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' - | 'tolist' | 'tostring' - | 'cons' | 'car' | 'cdr' | 'nth' | 'copy' | 'ins' | 'del' - | 'case' | 'cond' | 'if' | 'progn' | 'when' - | 'while' | 'for' | 'foreach' - | 'typeof' + 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 @@ -100,24 +81,39 @@ PREDEFINED-FUNC-NAME = | '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '~=' | '<<=' | '>>=' -(set SYMBOL TERM) -(and TERM *) (or TERM *) (not TERM) +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 ... '' -ARITH = - 'add' | 'sub' | 'mul' | 'div' | 'mod' | 'add' | 'sub' | 'mul' | 'div' | 'mod' + | 'and' | 'or' | 'not' + | 'lt' | 'le' | 'eq' | 'ge' | 'gt' + | 'noteq' + | 'add' | 'sub' | 'mul' | 'div' | 'mod' | 'logand' | 'logior' | 'logxor' | 'lsh' - -ARITH-SET = - 'add-set' | 'sub-set' | 'mul-set' | 'div-set' | 'mod-set' - | 'logand-set' | 'logior-set' | 'logxor-set' | 'lsh-set' - -ARITH-ARG = [ INT | VAR | FUNCALL ] - -(lt ARITH-ARG *) (le ARITH-ARG *) (eq ARITH-ARG *) - (ge ARITH-ARG *) (gt ARITH-ARG *) -(add ARITH-ARG *) (sub ARITH-ARG *) (mul ARITH-ARG *) (div ARITH-ARG *) - (mod ARITH-ARG *) -(add-set SYMBOL ARITH-ARG *) (sub-set SYMBOL ARITH-ARG *) - (mul-set SYMBOL ARITH-ARG *) (div-set SYMBOL ARITH-ARG *) - (mod-set SYMBOL ARITH-ARG *) -(logand ARITH-ARG + | 'append' | 'concat' | 'nth' | 'copy' | 'ins' | 'del' + | 'progn' | 'if' | 'when' | 'cond' + | 'while' | 'for' | 'foreach' + | 'eval' | 'type'