Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
10 | reyssat | 1 | /* Copyright (C) 2002-2003 XIAO, Gang of Universite de Nice - Sophia Antipolis |
2 | * |
||
3 | * This program is free software; you can redistribute it and/or modify |
||
4 | * it under the terms of the GNU General Public License as published by |
||
5 | * the Free Software Foundation; either version 2 of the License, or |
||
6 | * (at your option) any later version. |
||
7 | * |
||
8 | * This program is distributed in the hope that it will be useful, |
||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||
11 | * GNU General Public License for more details. |
||
12 | * |
||
13 | * You should have received a copy of the GNU General Public License |
||
14 | * along with this program; if not, write to the Free Software |
||
15 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
||
16 | */ |
||
17 | |||
18 | enum{ |
||
19 | exp_number, exp_variable, |
||
20 | exp_paren, exp_matrix, exp_set, exp_fn, |
||
21 | exp_exp, exp_muldiv, exp_cupcap, exp_add, |
||
22 | exp_eq, exp_ineq, exp_not, exp_and, exp_or, exp_imply, |
||
23 | exp_comma, exp_quantifier |
||
24 | }; |
||
25 | |||
26 | char *typenames[]={ |
||
27 | "number", "variable", |
||
28 | "parentheses","matrix","set","function", |
||
29 | "exponentiation","term","cupcap","addition", |
||
30 | "equation","inequality","not","and","or","implication", |
||
31 | "comma","quantifier" |
||
32 | }; |
||
33 | |||
34 | typedef struct op { |
||
35 | char *name; |
||
36 | int lvl; |
||
37 | } op; |
||
38 | |||
39 | struct op oppunct[]={ |
||
40 | {"(", exp_paren}, |
||
41 | {"[", exp_matrix}, |
||
42 | {"{", exp_set}, |
||
43 | {"^", exp_exp}, |
||
44 | {"**", exp_exp}, |
||
45 | {"*", exp_muldiv}, |
||
46 | {"/", exp_muldiv}, |
||
47 | {"-", exp_add}, |
||
48 | {"+", exp_add}, |
||
49 | {"!=", exp_eq}, |
||
50 | {"<>", exp_eq}, |
||
51 | {"<==>", exp_imply}, |
||
52 | {"<==", exp_imply}, |
||
53 | {"<=>", exp_imply}, |
||
54 | {"=>", exp_imply}, |
||
55 | {"==>", exp_imply}, |
||
56 | {"<=", exp_ineq}, |
||
57 | {">=", exp_ineq}, |
||
58 | {"<", exp_ineq}, |
||
59 | {">", exp_ineq}, |
||
60 | {"==", exp_eq}, |
||
61 | {"=", exp_eq}, |
||
62 | {",", exp_comma}, |
||
63 | {";", exp_comma}, |
||
64 | }; |
||
65 | #define oppunctno (sizeof(oppunct)/sizeof(oppunct[0])) |
||
66 | |||
67 | struct op opalpha[]={ |
||
68 | {"cup", exp_cupcap}, |
||
69 | {"cap", exp_cupcap}, |
||
70 | {"and", exp_and}, |
||
71 | {"or", exp_or}, |
||
72 | {"not", exp_not}, |
||
73 | {"in", exp_quantifier}, |
||
74 | {"forall", exp_quantifier}, |
||
75 | {"exist", exp_quantifier}, |
||
76 | {"exists", exp_quantifier}, |
||
77 | }; |
||
78 | #define opalphano (sizeof(opalpha)/sizeof(opalpha[0])) |
||
79 | |||
80 | struct { |
||
81 | char *name; |
||
82 | int lvl1, lvl2; |
||
83 | } exptype[]={ |
||
84 | {"addition", exp_add, exp_add}, |
||
85 | {"algexp", 0, exp_add}, |
||
86 | {"and", exp_and, exp_and}, |
||
87 | {"andor", exp_and, exp_or}, |
||
88 | {"equation", exp_eq, exp_eq}, |
||
89 | {"equations", exp_eq, exp_eq}, |
||
90 | {"function", exp_fn, exp_fn}, |
||
91 | {"functions", exp_fn, exp_fn}, |
||
92 | {"inequalities",exp_ineq, exp_ineq}, |
||
93 | {"inequality", exp_ineq, exp_ineq}, |
||
94 | {"inequation", exp_eq, exp_ineq}, |
||
95 | {"inequations", exp_eq, exp_ineq}, |
||
96 | {"logic", exp_not, exp_or}, |
||
97 | {"matrix", exp_matrix, exp_matrix}, |
||
98 | {"mult", exp_muldiv, exp_muldiv}, |
||
99 | {"multiplication", exp_muldiv, exp_muldiv}, |
||
100 | {"or", exp_or, exp_or}, |
||
101 | {"parentheses", exp_paren, exp_paren}, |
||
102 | {"parenthesis", exp_paren, exp_paren}, |
||
103 | {"predicate", exp_eq, exp_quantifier}, |
||
104 | {"set", exp_set, exp_set}, |
||
105 | {"term", 0, exp_muldiv}, |
||
106 | {"variable", exp_variable, exp_variable}, |
||
107 | {"variables", exp_variable, exp_variable}, |
||
108 | }; |
||
109 | #define exptypeno (sizeof(exptype)/sizeof(exptype[0])) |
||
110 |