*** empty log message ***
[m17n/m17n-lib-cs.git] / xex.txt
1 EXPR =
2   '<expr>' [ DEFUN | DEFMACRO | DEFVAR | TERM ] * '</expr>'
3
4 TERM = [ VAR | INT | STRING | SYMBOL | LIST | FUNCALL ]
5
6 DEFUN =
7   '<defun fname="' FUNCNAME ? ">'
8   ARGS ?
9   BODY ?
10   '</defun>'
11
12 ARGS =
13   '<args>' VAR * OPTIONAL ? REST ? '</args>'
14   | '<args-unevalled>' VAR * OPTIONAL ? REST ? '</args-unevalled>'
15
16 OPTIONAL =
17   '<optional/>' VAR *
18
19 REST =
20   '<rest/>' VAR
21
22 BODY =
23   '<body>' TERM * '</body>'
24
25 DEFVAR = DEFVAR-INT DEFVAR-STR
26
27 DEFVAR-INT =
28   '<defvar vname="' VARNAME '">'
29   DESCRIPTION ?
30   INT ?
31   <possible-value>[ INT | '<range>' INT INT '</range>' ] *</possible-value>
32   '</defvar>'
33
34 DEFVAR-STR =
35   '<defvar vname"' VARNAME '">'
36   DESCRIPTION ?
37   STR ?
38   <possible-value> STR * </possible-value>
39   '</defvar>'
40
41 DESCRIPTION =
42   '<description>' [ TEXT | GETTEXT ] '</description>'
43
44 GETTEXT =
45   '<gettext>' TEXT '</gettext>'
46
47 VAR =
48   '<variable vname="' NAME '"/>'
49 INT =
50   '<integer>' INTEGER '</integer>'
51 STR =
52   '<string>' STRING '</string>'
53 SYMBOL =
54   '<symbol>' NAME '</symbol>'
55 LIST =
56   '<list>' TERM * '</list>' | <list/>
57
58 FUNCALL =
59   '<funcall fname="' PREDEFINED-FUNC-NAME '">' TERM * '</funcall>'
60   | '<' PREDEFINED-FUNC-SYMBOL '>' TERM * '</' PREDEFINED-FUNC-SYMBOL '>'
61
62 PREDEFINED-FUNC-SYMBOL =
63   SET
64   | AND | OR | NOT
65   | LT | LE | EQ | GE | GT
66   | NOTEQ
67   | ADD | SUB | MUL | DIV | MOD
68   | LOGAND | LOGIOR | LOGXOR | LSH
69   | APPEND | CONCAT | NTH  | COPY | INS | DEL
70   | PROGN | IF | WHEN | COND
71   | WHILE | FOR | FOREACH
72   | EVAL | TYPE
73
74 PREDEFINED-FUNC-NAME =
75   PREDEFINED-FUNC-SYMBOL
76   | '='
77   | '&&' | '||' | '!'
78   | '<' | '<=' | '==' | '>=' | '>'
79   | '!='
80   | '+' | '-' | '*' | '/' | '%'
81   | '+=' | '-=' | '*=' | '/=' | '%='
82   | '&=' | '|=' | '~=' | '<<=' | '>>='
83
84 TRUE =
85   '<integer>0</integer>' 
86 FALSE =
87   '<integer>1</integer>' 
88
89 ;; TERM is evaluated to a TERM.
90 ;; INT is evaluated to itself.
91 ;; STRING is evaluated to itself.
92 ;; SYMBOL is evaluated to itself.
93 ;; LIST is evaluated to itself.
94 ;; VAR is evaluated to TERM that is set to that variable.
95 ;; FUNCALL is evaluated to TERM returned by that function.
96
97 SET =
98   '<set vname="' VARNAME '">' TERM '</set>'
99 ;; Set the variable of name VARNAME to TERM.
100
101 AND =   ;; arguments unevalled
102   '<and> TERM ... </and>
103 OR (unevalled-arg ...) =
104   '<or> TERM ... </or>
105 NOT (arg) =
106   '<not> TERM </not>
107
108 LT (arg ...) =
109   '<lt>' TERM ... '</lt>'
110
111   | 'and' | 'or' | 'not'
112   | 'lt' | 'le' | 'eq' | 'ge' | 'gt'
113   | 'noteq'
114   | 'add' | 'sub' | 'mul' | 'div' | 'mod'
115   | 'logand' | 'logior' | 'logxor' | 'lsh'
116   | 'append' | 'concat' | 'nth'  | 'copy' | 'ins' | 'del'
117   | 'progn' | 'if' | 'when' | 'cond'
118   | 'while' | 'for' | 'foreach'
119   | 'eval' | 'type'