*** empty log message ***
[m17n/m17n-lib-cs.git] / xex.txt
1 EXPR =
2   '<expr>' [ DEFUN | DEFMACRO | DEFVAR | TERM ] * '</expr>'
3
4 TERM = [ VAR | DIRECT | FUNCALL ]
5
6 TYPE = 'integer' | 'string' | 'boolean' | 'symbol' | 'list'
7
8 DEFUN =
9   '<defun fname="' FUNCNAME ? ">'
10   ARGS ?
11   BODY ?
12   '</defun>'
13
14 ARGS =
15   '<args>' SYMBOL * OPTIONAL ? REST ? '</args>'
16   | '<args-unevalled>' SYMBOL * OPTIONAL ? REST ? '</args-unevalled>'
17
18 OPTIONAL =
19   '<optional/>' SYMBOL *
20
21 REST =
22   '<rest/>' SYMBOL
23
24 BODY =
25   '<body>' TERM * '</body>'
26
27 DEFVAR = DEFVAR-INT DEFVAR-STR DEFVAR-BOOL
28
29 DEFVAR-INT =
30   '<defvar vname="' VARNAME '">'
31   DESCRIPTION ?
32   INT ?
33   <possible-value>[ INT | '<range>' INT INT '</range>' ] *</possible-value>
34   '</defvar>'
35
36 DEFVAR-STR =
37   '<defvar vname"' VARNAME '">'
38   DESCRIPTION ?
39   STR ?
40   <possible-value> STR * </possible-value>
41   '</defvar>'
42
43 DEFVAR-BOOL =
44   '<defvar vname"' VARNAME '">'
45   DESCRIPTION ?
46   BOOL ?
47   '</defvar>'
48
49 DESCRIPTION =
50   '<description>' TEXT '</description>'
51
52 VAR =
53   '<variable vname="' NAME '"/>'
54
55 DIRECT = INT STR BOOL SYMBOL LIST
56
57 INT =
58   '<integer>' INTEGER '</integer>'
59 STR =
60   '<string>' STRING '</string>'
61 BOOL =
62   '<boolean>' [ 'true' | 'false' ] </boolean>
63 SYMBOL =
64   '<symbol>' NAME '</symbol>'
65 LIST =
66   '<list>' TERM * '</list>' | <list/>
67 TYPE =
68   '<type>' 
69   [ 'integer' | 'string' | 'boolean' | 'symbol' | 'list'
70     | 'variable' | 'funcall' ]
71   '</type>'
72
73 FUNCALL =
74   '<funcall fname="' PREDEFINED-FUNC-NAME '">' TERM * '</funcall>'
75   | '<' PREDEFINED-FUNC-SYMBOL '>' TERM * '</' PREDEFINED-FUNC-SYMBOL '>'
76
77 PREDEFINED-FUNC-SYMBOL =
78   'set'
79   | 'and' | 'or' | 'not'
80   | 'lt' | 'le' | 'eq' | 'ge' | 'gt'
81   | 'noteq'
82   | 'add' | 'sub' | 'mul' | 'div' | 'mod'
83   | 'add-set' | 'sub-set' | 'mul-set' | 'div-set' | 'mod-set'
84   | 'logand' | 'logior' | 'logxor' | 'lsh'
85   | 'logand-set' | 'logior-set' | 'logxor-set' | 'lsh-set'
86   | 'append' | 'concat' | 'substr'
87   | 'tolist' | 'tostring'
88   | 'cons' | 'car' | 'cdr' | 'nth' | 'copy' | 'ins' | 'del'
89   | 'case' | 'cond' | 'if' | 'progn' | 'when'
90   | 'while' | 'for' | 'foreach'
91   | 'typeof'
92
93 PREDEFINED-FUNC-NAME =
94   PREDEFINED-FUNC-SYMBOL
95   | '='
96   | '&&' | '||' | '!'
97   | '<' | '<=' | '==' | '>=' | '>'
98   | '!='
99   | '+' | '-' | '*' | '/' | '%'
100   | '+=' | '-=' | '*=' | '/=' | '%='
101   | '&=' | '|=' | '~=' | '<<=' | '>>='
102
103 (set SYMBOL TERM)
104 (and TERM *) (or TERM *) (not TERM)
105
106 ARITH =
107   'add' | 'sub' | 'mul' | 'div' | 'mod' | 'add' | 'sub' | 'mul' | 'div' | 'mod'
108   | 'logand' | 'logior' | 'logxor' | 'lsh'
109   
110 ARITH-SET =
111   'add-set' | 'sub-set' | 'mul-set' | 'div-set' | 'mod-set'
112   | 'logand-set' | 'logior-set' | 'logxor-set' | 'lsh-set'
113
114 ARITH-ARG = [ INT | VAR | FUNCALL ]
115
116 (lt ARITH-ARG *) (le ARITH-ARG *) (eq ARITH-ARG *)
117   (ge ARITH-ARG *) (gt ARITH-ARG *)
118 (add ARITH-ARG *) (sub ARITH-ARG *) (mul ARITH-ARG *) (div ARITH-ARG *)
119   (mod ARITH-ARG *)
120 (add-set SYMBOL ARITH-ARG *) (sub-set SYMBOL ARITH-ARG *)
121   (mul-set SYMBOL ARITH-ARG *) (div-set SYMBOL ARITH-ARG *)
122   (mod-set SYMBOL ARITH-ARG *)
123 (logand ARITH-ARG