summaryrefslogtreecommitdiff
path: root/Homework/cs5300/project-two/data/pasca.table
blob: e3a5733e982d7fb627c2a98f6cddad468a247737 (plain) (blame)
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// Modify this file to create your tables for the Pasca language.

// Special tokens are \space, \t and \n.
ClassifierTable
a letter
b letter
c letter
d letter
e letter
f letter
g letter
h letter
i letter
j letter
k letter
l letter
m letter
n letter
o letter
p letter
q letter
r letter
s letter
t letter
u letter
v letter
w letter
x letter
y letter
z letter
0 zero
1 nonzero
2 nonzero
3 nonzero
4 nonzero
5 nonzero
6 nonzero
7 nonzero
8 nonzero
9 nonzero
' quote
* asterisk
{ delim
} delim
; delim
. delim
( lp
) rp
\space whitespace
\t whitespace
\n whitespace


// In the transition table, the first state
// is considered the input state.
TransitionTable
// Identifiers
s0 letter id
id letter id
id zero id
id nonzero id

// Integers
s0 nonzero int
int zero int
int nonzero int

// Strings
s0 quote q1
q1 quote str
str quote q1
// Everything besides quotes
q1 zero q1
q1 nonzero q1
q1 letter q1
q1 delim q1
q1 asterisk q1
q1 lp q1
q1 rp q1
q1 whitespace q1

// Delimiters
s0 delim delimiter

// Comments
s0 lp c1
c1 asterisk c2
c2 asterisk c3
c3 asterisk c3
c3 rp ignore

c3 zero c2
c3 nonzero c2
c3 letter c2
c3 delim c2
c3 lp c2
c3 quote c2
c3 whitespace c2

c2 zero c2
c2 nonzero c2
c2 letter c2
c2 delim c2
c2 rp c2
c2 lp c2
c2 whitespace c2

// whitespace
s0 whitespace s1
s1 whitespace s1

// If a state has an entry in this table then
// it is considered an accept state.
// "ignore" is a reserved type which indicates
// that the token should be ignored.
TokenTypeTable
id identifier
int integer
str string
delimiter delimiter
ignore ignore
s1 ignore