X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=xex.txt;h=f09c0479fbface466a542639f87dac395c5c2294;hb=2191c6e2bd1fd2f13744a6a42f7004b43f38b5d2;hp=fce2ebd5c1848f6be23a24ae7384c31d60e906a1;hpb=3b60cbb4badfce6230a70ca54bfcb9d6ae4f5708;p=m17n%2Fm17n-lib-cs.git diff --git a/xex.txt b/xex.txt index fce2ebd..f09c047 100644 --- a/xex.txt +++ b/xex.txt @@ -1,5 +1,5 @@ EXPR = - '' [ DEFUN | DEFVAR | TERM ] * '' + '' [ DEFUN | DEFMACRO | DEFVAR | TERM ] * '' TERM = [ INT | STRING | SYMBOL | LIST | VAR | FUNCALL ] @@ -9,9 +9,14 @@ DEFUN = TERM * '' +DEFMACRO = + '' + ARGS ? + TERM * + '' + ARGS = '' FIXED ? OPTIONAL ? REST ? '' - | '' FIXED ? OPTIONAL ? REST ? '' FIXED = ' VAR + '' @@ -22,22 +27,35 @@ OPTIONAL = REST = '' VAR '' -DEFVAR = DEFVAR-INT DEFVAR-STR +DEFVAR = DEFVAR-INT DEFVAR-STR DEFVAR-SYM DEFVAR-INT = '' DESCRIPTION ? - INT ? - [ INT | '' INT INT '' ] * + [ INT POSSIBLE-INT-VALUE ? ] ? '' +POSSIBLE-INT-VALUE = + [ INT | '' INT INT '' ] + + DEFVAR-STR = '' DESCRIPTION ? - STR ? - STR * + [ STR DEFVAR-STR_VALUE ? ] ? + '' + +DEFVAR-STR_VALUE = + STR + + +DEFVAR-SYM = + '' + DESCRIPTION ? + [ SYMBOL POSSIBLE-SYM-VALUE ? ] ? '' +POSSIBLE-SYM-VALUE = + SYMBOL + + DESCRIPTION = '' [ TEXT | GETTEXT ] '' @@ -58,19 +76,18 @@ VAR = FUNCALL = '' TERM * '' - | '<' PREDEFINED '>' TERM * '' - | '<' PREDEFINED 'vname="' VNAME '">' TERM * '' + | PREDEFINED PREDEFINED = - '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' - | 'loop' | 'break' | 'while' | 'foreach' - | 'quote' | 'eval' | 'type' + SET + | AND | OR | NOT + | LT | LE | EQ | GE | GT | NOTEQ + | ADD | SUB | MUL | DIV | MOD + | LOGAND | LOGIOR | LOGXOR | LSH + | APPEND | CONCAT | LENGTH | NTH | COPY | INS | DEL + | PROGN | IF | WHEN | COND + | LOOP | WHILE | FOREACH | BREAK | RETURN + | QUOTE | EVAL | TYPE ;; TERM has a value, and is evaluated to a TERM as below. ;; INT has an integer value, and is evaluated to itself . @@ -84,53 +101,58 @@ PREDEFINED = INTTERM = INT | VAR (value is INT) | FUNCALL (return INT) 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. -'' ANYTERM '' -'' INTTERM + '' -'' INTTERM + '' -'' INTTERM + '' -'' INTTERM + '' -'' INTTERM + '' -'' INTTERM + '' -'
' INTTERM + '
' -'
' INTTERM + '
' -'' INTTERM INTTERM '' -'' INTTERM '' -' INTTERM + '' -'' INTTERM + '' -' INTTERM + '' -' vname="' VNAME '">' INTTERM + '' -' INTTERM + '' -' vname="' VNAME '">' INTTERM + '' -'' INTTERM INTTERM '' -'' INTTERM '' -'' INTTERM INTTERM '' -'' INTTERM INTTERM '' -'' INTTERM INTTERM '' -'' INTTERM INTTERM '' -'' INTTERM INTTERM '' -'' INTTERM INTTERM '' -'' ANYTERM + '' -'' [ INTTERM | STRTERM | LISTTERM ] + '' -'' INTTERM [ STRTERM | LISTTERM ] '' -'' LISTTERM '' -'' INTTERM [ STRTERM | LISTTERM ] '' -'' INTTERM INTTERM '' -'' TERM + '' -'' TERM + '' -'' TERM '' -'' TERM * '' -'' TERM TERM TERM ? '' -'' TERM TERM * '' -'' LIST + '' -'' TERM + '' -'' TERM + '' -'' TERM + '' -'' TERM '' -'' TERM '' -'' ANYTERM '' +SET = '' TERM '' +ADD = '' INTTERM + '' + | '' INTTERM + '' +SUB = '' INTTERM + '' + | '' INTTERM + '' +MUL = '' INTTERM + '' + | '' INTTERM + '' +DIB = '
' INTTERM + '
' + | '
' INTTERM + '
' +MOD = '' INTTERM INTTERM '' + | '' INTTERM '' +LOGAND = ' INTTERM + '' + | '' INTTERM + '' +LOGIOR = ' INTTERM + '' + | '' INTTERM + '' +LOGXOR = ' INTTERM + '' + | '' INTTERM + '' +LSH = '' INTTERM INTTERM '' + | '' INTTERM '' +LT = '' INTTERM INTTERM '' +LE = '' INTTERM INTTERM '' +EQ = '' INTTERM INTTERM '' +NOTEQ = '' INTTERM INTTERM '' +GE = '' INTTERM INTTERM '' +GT ='' INTTERM INTTERM '' +APPEND = '' TERM + '' + | '' TERM + '' +CONCAT = '' [ INTTERM | STRTERM | LISTTERM ] + '' + | '' [ INTTERM | STRTERM | LISTTERM ] + '' +LENGTH = '' [ STRTERM | LISTTERM ] '' +NTH = '' INTTERM [ STRTERM | LISTTERM ] '' +COPY = '' LISTTERM '' +INS = '' INTTERM [ STRTERM | LISTTERM ] '' +DEL = '' INTTERM INTTERM '' +AND = '' TERM + '' +OR = '' TERM + '' +NOT = '' TERM '' +PROGN = '' TERM * '' +IF = '' TERM TERM TERM ? '' +WHEN = '' TERM TERM * '' +COND = '' LIST + '' +LOOP = '' TERM + '' +WHILE = '' TERM + '' +FOREACH = '' TERM + '' +BREAK = '' TERM ? '' +RETURN = '' TERM ? '' +QUOTE = '' TERM '' +EVAL = '' TERM '' +TYPE = '' TERM ''