89263606fba67a31dc256201ba4a1a7213983127
[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   TERM *
12   '</defun>'
13
14 ARGS =
15   '<args>' SYMBOL * OPTIONAL ? REST ? '</args>'
16   | '<unevaled-args>' SYMBOL * OPTIONAL ? REST ? '</args>'
17
18 OPTIONAL =
19   '<optional/>' SYMBOL *
20
21 REST =
22   '<rest/>' SYMBOL
23
24 DEFVAR = DEFVAR-INT DEFVAR-STR DEFVAR-BOOL
25
26 DEFVAR-INT =
27   '<defvar vname="' VARNAME '">'
28   DESCRIPTION ?
29   INT ?
30   <possible-value>[ INT | '<range>' INT INT '</range>' ] *</possible-value>
31   '</defvar>'
32
33 DEFVAR-STR =
34   '<defvar vname"' VARNAME '">'
35   DESCRIPTION ?
36   STR ?
37   <possible-value> STR * </possible-value>
38   '</defvar>'
39
40 DEFVAR-BOOL =
41   '<defvar vname"' VARNAME '">'
42   DESCRIPTION ?
43   BOOL ?
44   '</defvar>'
45
46 DESCRIPTION =
47   '<description>' TEXT '</description>'
48
49 VAR =
50   '<variable vname="' NAME '"/>'
51
52 DIRECT = INT STR BOOL SYMBOL LIST
53
54 INT =
55   '<integer>' INTEGER '</integer>'
56 STR =
57   '<string>' STRING '</string>'
58 BOOL =
59   '<boolean>' [ 'true' | 'false' ] </boolean>
60 SYMBOL =
61   '<symbol>' NAME '</symbol>'
62 LIST =
63   '<list>' DIRECT * '</list>' | <list/>
64
65 FUNCALL =
66   '<funcall fname="' PREDEFINED-FUNC-NAME '">' TERM * '</funcall>'
67   | '<' PREDEFINED-FUNC-SYMBOL '>' TERM * '</' PREDEFINED-FUNC-SYMBOL '>'
68   | '<' PREDEFINED-MACRO-SYMBOL '>' TERM * '</' PREDEFINED-MACRO-SYMBOL '>'
69
70 PREDEFINED-FUNC-SYMBOL =
71   'set'
72   | 'and' | 'or' | 'not'
73   | 'lt' | 'le' | 'eq' | 'ge' | 'gt'
74   | 'noteq'
75   | 'add' | 'sub' | 'mul' | 'div' | 'mod'
76   | 'add-set' | 'sub-set' | 'mul-set' | 'div-set' | 'mod-set'
77   | 'logand' | 'logior' | 'logxor' | 'lsh'
78   | 'logand-set' | 'logior-set' | 'logxor-set' | 'lsh-set'
79   | 'append' | 'concat' | 'substr'
80   | 'cons' | 'car' | 'cdr' | 'nth'
81
82 PREDEFINED-FUNC-NAME =
83   PREDEFINED-FUNC-SYMBOL
84   | '='
85   | '&&' | '||' | '!'
86   | '<' | '<=' | '==' | '>=' | '>'
87   | '!='
88   | '+' | '-' | '*' | '/' | '%'
89   | '+=' | '-=' | '*=' | '/=' | '%='
90   | '&=' | '|=' | '~=' | '<<=' | '>>='
91
92 PREDEFINED-MACRO-SYMBOL =
93   'case' | 'cond' | 'if' | 'progn' | 'when' | 'while'
94
95 PREDEFINED-MACRO-NAME = PREDEFINED-MACRO-SYMBOL