-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathPo_parse_poly_pri.h
104 lines (99 loc) · 4.82 KB
/
Po_parse_poly_pri.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#ifndef _PO_PARSE_POLY_PRI_H_
#define _PO_PARSE_POLY_PRI_H_
/*******************************************************************/
/*** FILE : Po_parse_poly.h ***/
/*** AUTHOR: Sekhar Muddana ***/
/*******************************************************************/
/*
* Takes a string as input and does a simple precedence parsing to
* check if it is syntactically correct. (yielding a legal polynomial).
* Also does the semantics, generating an unexpanded tree.(a bottom expansion
* resolving operations like commutation and association has to be done.
* The pointer to the generated tree is returned.
*
*/
static struct prod_node {
const char *rhs;
const int lhs;
} Prod_nodes[] = {
{"2", 1},
{"192", 1},
{"202", 1},
{"1202", 1},
{"1192", 1},
{"3", 2},
{"213", 2},
{"4", 3},
{"42221", 3},
{"4234", 3},
{"6", 4},
{"5", 4},
{"76", 5},
{"7", 6},
{"24", 7},
{"8", 7},
{"9", 7},
{"10", 7},
{"11", 7},
{"13", 7},
{"17", 7},
{"251226", 7},
{"2712281229", 8},
{"25122812281226", 9},
{"3025122812281226", 10},
{"31122812281232", 11},
{"1", 12},
{"3371434", 13},
{"15", 14},
{"16", 15},
{"1516", 15},
{"735", 16},
{"736", 16},
{"1834", 17},
{"18377", 18},
{"383321397", 18}
};
static int Sp_relation[41][41] = {
{0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0},
{2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,2,0,2,2,0,0,2,0,0,0,0,0,0,0,2},
{2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,0,2,2,0,0,2,0,0,0,0,0,0,0,2},
{2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,0,2,2,0,0,2,0,0,0,0,0,0,0,2},
{2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,1,1,0,0,2,0,2,2,0,0,2,0,0,0,0,0,0,0,2},
{2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,2,2,0,0,2,0,2,2,0,0,2,0,0,0,0,0,0,0,2},
{2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,2,2,0,0,2,0,2,2,0,0,2,0,0,0,0,0,0,0,2},
{2,0,0,0,0,0,1,3,3,3,3,3,0,3,1,3,3,3,3,2,2,0,2,2,3,3,2,3,2,2,3,3,2,3,2,1,1,2,3,0,2},
{2,0,0,0,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2},
{2,0,0,0,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2},
{2,0,0,0,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2},
{2,0,0,0,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2},
{2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,0,0,0,0,0,0,2},
{2,0,0,0,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2},
{2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2},
{2,0,0,0,0,0,0,3,3,3,3,3,0,3,0,0,1,3,3,0,0,0,0,0,3,3,0,3,0,0,3,3,0,3,2,0,0,0,3,0,2},
{2,0,0,0,0,0,0,2,2,2,2,2,0,2,0,0,2,2,2,0,0,0,0,0,2,2,0,2,0,0,2,2,0,2,2,0,0,0,2,0,2},
{2,0,0,0,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2},
{2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,2},
{2,0,1,3,3,3,3,3,3,3,3,3,0,3,0,0,0,3,3,0,0,3,0,0,3,3,0,3,0,0,3,3,0,3,0,0,0,0,3,0,2},
{2,0,1,3,3,3,3,3,3,3,3,3,0,3,0,0,0,3,3,0,0,3,0,0,3,3,0,3,0,0,3,3,0,3,0,0,0,0,3,0,2},
{2,0,0,1,3,3,3,3,3,3,3,3,0,3,0,0,0,3,3,2,2,0,0,0,3,3,2,3,2,2,3,3,2,3,0,0,0,0,3,1,2},
{2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2},
{2,0,0,0,1,3,3,3,3,3,3,3,0,3,0,0,0,3,3,0,0,0,0,0,3,3,0,3,0,0,3,3,0,3,0,0,0,0,3,0,2},
{2,0,0,0,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2},
{2,3,3,3,3,3,3,3,3,3,3,3,1,3,0,0,0,3,3,3,3,3,0,0,3,3,0,3,0,0,3,3,0,3,0,0,0,0,3,0,2},
{2,0,0,0,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2},
{2,3,3,3,3,3,3,3,3,3,3,3,1,3,0,0,0,3,3,3,3,3,0,0,3,3,0,3,0,0,3,3,0,3,0,0,0,0,3,0,2},
{2,3,3,3,3,3,3,3,3,3,3,3,1,3,0,0,0,3,3,3,3,3,0,0,3,3,0,3,0,0,3,3,0,3,0,0,0,0,3,0,2},
{2,0,0,0,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2},
{2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2},
{2,3,3,3,3,3,3,3,3,3,3,3,1,3,0,0,0,3,3,3,3,3,0,0,3,3,0,3,0,0,3,3,0,3,0,0,0,0,3,0,2},
{2,0,0,0,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2},
{2,0,0,0,0,0,0,1,3,3,3,3,0,3,0,0,0,3,3,0,0,1,0,0,3,3,0,3,0,0,3,3,0,3,0,0,0,0,3,0,2},
{2,0,0,0,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2},
{2,0,0,0,0,0,0,2,2,2,2,2,0,2,0,0,2,2,2,0,0,0,0,0,2,2,0,2,0,0,2,2,0,2,2,0,0,0,2,0,2},
{2,0,0,0,0,0,0,2,2,2,2,2,0,2,0,0,2,2,2,0,0,0,0,0,2,2,0,2,0,0,2,2,0,2,2,0,0,0,2,0,2},
{2,0,0,0,0,0,0,1,3,3,3,3,0,3,0,0,0,3,3,0,0,0,0,0,3,3,0,3,0,0,3,3,0,3,0,0,0,0,3,0,2},
{2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,2},
{2,0,0,0,0,0,0,1,3,3,3,3,0,3,0,0,0,3,3,0,0,0,0,0,3,3,0,3,0,0,3,3,0,3,0,0,0,0,3,0,2},
{0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0}
}; /* Simple precedence matrix */
#endif