Added upstream from http://ftp.icm.edu.pl/pub/loglan/
[loglan.git] / utils / editor.dos / grammar0
1 productions\r
2 ID = id(STRING) -> id(STRING)\r
3 ID_LIST = ID_LIST1 -> id_list(ID_LIST1)\r
4 ID_LIST1 = ID+ separator comma\r
5 \r
6 VAR_LIST = VAR_LIST1 -> var_list(VAR_LIST1)\r
7 VAR_LIST1 = VAR+ separator comma\r
8 \r
9 VAL_LIST = VAL_LIST1 -> val_list(VAL_LIST1)\r
10 VAL_LIST1 = VAL+ separator comma\r
11 \r
12 AP_LIST = lpar AP_LIST1 rpar -> aplist(AP_LIST1)\r
13 AP_LIST1 = APAR+ separator comma\r
14 \r
15 INDICES = A_EXPR+ separator comma\r
16 \r
17 EXF_LIST = WR_EXPR+ separator comma\r
18 WR_EXPR = VAR_FUN  WR_EXPR1 -> wr_exp(VAR_FUN,WR_EXPR1)\r
19 WR_EXPR1 = colon A_EXPR WR_EXPR2 -> wr_exp1(A_EXPR,WR_EXPR2),\r
20           -> wr_exp11\r
21 WR_EXPR2 = colon A_EXPR -> wr_exp2(A_EXPR),\r
22           -> wr_exp22\r
23          \r
24 \r
25 VAL = id(STRING) -> id(STRING),\r
26       int(INTEGER) -> int(INTEGER),\r
27       char(CHAR) -> char(CHAR)\r
28 \r
29 APAR = integer -> integer,\r
30        real -> real,\r
31        boolean -> boolean,\r
32        character -> character,\r
33        string -> string,\r
34        semaphore -> semaphore,\r
35        coroutine -> coroutine,\r
36        process -> process,\r
37        EXPR -> expr(EXPR)\r
38 \r
39 CS_TYPE = coroutine ->coroutine,\r
40           process -> process,\r
41           id(STRING) -> id(STRING)\r
42   \r
43 A_EXPR = A_EXPR plus A_EXPR -> plus(A_EXPR,A_EXPR),\r
44         A_EXPR minus A_EXPR -> minus(A_EXPR,A_EXPR)\r
45         --\r
46         A_EXPR times A_EXPR -> times(A_EXPR,A_EXPR),\r
47         A_EXPR divides A_EXPR -> divides(A_EXPR,A_EXPR),\r
48         A_EXPR div A_EXPR -> div(A_EXPR,A_EXPR),\r
49         A_EXPR mod A_EXPR -> mod(A_EXPR,A_EXPR)\r
50         --\r
51         minus A_EXPR -> min(A_EXPR),\r
52         lpar A_EXPR rpar -> A_EXPR,\r
53         int(INTEGER) -> int(INTEGER),\r
54         r(REAL) -> r(REAL),\r
55         VAR_FUN -> var_fun(VAR_FUN)\r
56 \r
57 \r
58 B_EXPR = B_EXPR or_ B_EXPR -> or_(B_EXPR,B_EXPR)\r
59         --\r
60         B_EXPR and_ B_EXPR -> and_(B_EXPR,B_EXPR)\r
61         --\r
62         ACO_EXPR nequal ACO_EXPR -> nequal(ACO_EXPR,ACO_EXPR),\r
63         ACO_EXPR equal ACO_EXPR -> equal(ACO_EXPR,ACO_EXPR),\r
64         A_EXPR lesseq A_EXPR -> lesseq(A_EXPR,A_EXPR),\r
65         A_EXPR less A_EXPR -> less(A_EXPR,A_EXPR),\r
66         A_EXPR greatereq A_EXPR -> greatereq(A_EXPR,A_EXPR),\r
67         A_EXPR greater A_EXPR -> greater(A_EXPR,A_EXPR),\r
68         O_EXPR is CS_TYPE -> is(O_EXPR,CS_TYPE),\r
69         O_EXPR in CS_TYPE -> in(O_EXPR,CS_TYPE)\r
70         --\r
71         not_ B_EXPR -> not_(B_EXPR),\r
72         lpar B_EXPR rpar -> B_EXPR,\r
73         ts lpar VAR rpar -> ts(VAR),\r
74         VAR_FUN -> var_fun(VAR_FUN),\r
75         true_ -> true_,\r
76         false_ -> false_\r
77         \r
78 \r
79 C_EXPR = VAR_FUN -> var_fun(VAR_FUN)\r
80         --\r
81         char(CHAR) -> char(CHAR)\r
82         \r
83 O_EXPR = none -> none,\r
84         wait -> wait,\r
85         THIS dot O_EXPR1 -> dot(THIS,O_EXPR1),\r
86         this ID -> this(ID),\r
87         O_EXPR1 -> o_exp1(O_EXPR1)\r
88 O_EXPR1 = O_EXPR2 dot O_EXPR1 -> dot(O_EXPR2,O_EXPR1),\r
89          O_EXPR3 -> o_exp3(O_EXPR3)\r
90 O_EXPR2 = VAR_FUN2 qua ID -> qua(VAR_FUN2,ID),\r
91          O_EXPR3 -> o_exp3(O_EXPR3)\r
92 O_EXPR3 = new ID lpar AP_LIST1 rpar ->new(ID,AP_LIST1),\r
93          new ID -> new1(ID),\r
94          VAR_FUN2 -> var_fun2(VAR_FUN2)\r
95 \r
96 AC_EXPR = A_EXPR -> a_exp(A_EXPR),\r
97          C_EXPR -> c_exp(C_EXPR)\r
98 \r
99 ACO_EXPR = A_EXPR -> a_exp(A_EXPR),\r
100           C_EXPR -> c_exp(C_EXPR),\r
101           O_EXPR -> o_exp(O_EXPR)\r
102 \r
103 EXPR = A_EXPR -> a_exp(A_EXPR),\r
104       B_EXPR -> b_exp(B_EXPR),\r
105       C_EXPR -> c_exp(C_EXPR),\r
106       O_EXPR -> o_exp(O_EXPR)\r
107 \r
108 THIS = this ID -> this(ID)\r
109 \r
110 VAR_FUN = THIS dot VAR_FUN1 -> dot(THIS,VAR_FUN1),\r
111           VAR_FUN1 -> var_fun1(VAR_FUN1)\r
112 VAR_FUN1 = O_EXPR2 dot VAR_FUN1 -> dot(O_EXPR2,VAR_FUN1),\r
113            VAR_FUN2 -> var_fun2(VAR_FUN2)\r
114 VAR_FUN2 = ID lpar AP_LIST1 rpar -> fcall(ID,AP_LIST1),\r
115            ID lbra INDICES rbra -> indvar(ID,INDICES),\r
116            id(STRING) -> id(STRING)\r
117            \r
118 VAR = THIS dot VAR1 -> dot(THIS,VAR1),\r
119       VAR1 -> var1(VAR1)\r
120 VAR1 = O_EXPR2 dot VAR1 -> dot(O_EXPR2,VAR1),\r
121        VAR2 -> var2(VAR2)\r
122 VAR2 = ID lbra INDICES rbra -> indvar(ID,INDICES),\r
123        id(STRING) -> id(STRING)\r
124 \r
125 VAR_MAIN = main -> main,\r
126            VAR -> var(VAR)\r
127 \r
128 IF_B_EXPR = IF_B_EXPR orif IF_B_EXPR -> orif(IF_B_EXPR,IF_B_EXPR)\r
129         --\r
130         IF_B_EXPR andif IF_B_EXPR -> andif(IF_B_EXPR,IF_B_EXPR)\r
131         --\r
132         B_EXPR -> b_exp(B_EXPR)\r
133 \r
134 SIMP_EXPR = minus SIMP_EXPR1 -> min(SIMP_EXPR1),\r
135         int(INTEGER) -> int(INTEGER),\r
136         r(REAL) -> r(REAL),\r
137         id(STRING) -> id(STRING),\r
138         char(CHAR) -> char(CHAR),\r
139         str(STRING) -> str(STRING)\r
140 \r
141 SIMP_EXPR1 = int(INTEGER) -> int(INTEGER),\r
142          r(REAL) -> r(REAL),\r
143          id(STRING) -> id(STRING)\r
144 \r