609284751f6183ad734a8d43fb6fd37e90c0d2cb
[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 DEFMACRO =
15   '<defmacro mname="' MACRONAME '">'
16   ARGS ?
17   TERM *
18   '</defmacro>'
19
20 ARGS =
21   '<args>' SYMBOL * '</args>' | '<args/>'
22
23 DEFVAR = DEFVAR-INT DEFVAR-STR DEFVAR-BOOL
24
25 DEFVAR-INT =
26   '<defvar vname="' VARNAME '">'
27   DESCRIPTION ?
28   INT ?
29   <possible-value>[ INT | '<range>' INT INT '</range>' ] *</possible-value>
30   '</defvar>'
31
32 DEFVAR-STR =
33   '<defvar vname"' VARNAME '">'
34   DESCRIPTION ?
35   STR ?
36   <possible-value> STR * </possible-value>
37   '</defvar>'
38
39 DEFVAR-BOOL =
40   '<defvar vname"' VARNAME '">'
41   DESCRIPTION ?
42   BOOL ?
43   <possible-value> BOOL </possible-value>
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   '<const type="integer">' INTEGER '</const>'
56 STR =
57   '<const type="string">' STRING '</const>'
58 BOOL =
59   '<const type="boolean">' [ 'true' | 'false' ] </const>
60 SYMBOL =
61   '<const type="symbol">' NAME '</const>'
62 LIST =
63   '<const type="list">' DIRECT * '</const>' | <const type="list"/>
64
65 FUNCALL =
66   '<funcall id="' [ FUNCNAME | MACRONAME ] '">' TERM * '</funcall>'
67   | '<funcall fname="' PREDEFINED-FUNC-NAME '">' TERM * '</funcall>'
68   | '<funcall mname="' PREDEFINED-MACRO-NAME '">' TERM * '</funcall>'
69   | '<' PREDEFINED-FUNC-SYMBOL '>' TERM * '</' PREDEFINED-FUNC-SYMBOL '>'
70   | '<' PREDEFINED-MACRO-SYMBOL '>' TERM * '</' PREDEFINED-MACRO-SYMBOL '>'
71
72 PREDEFINED-FUNC-SYMBOL =
73   'set'
74   | 'and' | 'or' | 'not'
75   | 'lt' | 'le' | 'eq' | 'ge' | 'gt'
76   | 'noteq'
77   | 'add' | 'sub' | 'mul' | 'div' | 'mod'
78   | 'add-set' | 'sub-set' | 'mul-set' | 'div-set' | 'mod-set'
79   | 'logand' | 'logior' | 'logxor' | 'lsh'
80   | 'logand-set' | 'logior-set' | 'logxor-set' | 'lsh-set'
81   | 'append' | 'concat' | 'substr'
82   | 'cons' | 'car' | 'cdr' | 'nth'
83
84 PREDEFINED-FUNC-NAME =
85   PREDEFINED-FUNC-SYMBOL
86   | '='
87   | '&&' | '||' | '!'
88   | '<' | '<=' | '==' | '>=' | '>'
89   | '!='
90   | '+' | '-' | '*' | '/' | '%'
91   | '+=' | '-=' | '*=' | '/=' | '%='
92   | '&=' | '|=' | '~=' | '<<=' | '>>='
93
94 PREDEFINED-MACRO-SYMBOL =
95   'case' | 'cond' | 'if' | 'progn' | 'when' | 'while'
96
97 PREDEFINED-MACRO-NAME = PREDEFINED-MACRO-SYMBOL