Остання активність 1729136145

Версія 10fe4c89e5cc3f85cfdc4369c4fbbac07d4cd438

parser.nv Неформатований Playground
1|================================|
2|==| Constants. |==|
3|================================|
4
5|-----------------------|
6| r0 <- 0, r0 | r0 <- 0 ,
7| r0 <- 0 | ,
8|-----------------------|
9
10|-----------------------|
11| r1 <- 0, r1 | r1 <- 0 ,
12| r1 <- 0 | ,
13|-----------------------|
14
15|-------------------------------|
16| r1 <- 1 | r1 ,
17| r1 <- 2 | r1 <- 1, r1 <- 1 ,
18| r1 <- 4 | r1 <- 2, r1 <- 2 ,
19| r1 <- 8 | r1 <- 4, r1 <- 4 ,
20| r1 <- 9 | r1 <- 8, r1 <- 1 ,
21| r1 <- 10 | r1 <- 9, r1 <- 1 ,
22| r1 <- 16 | r1 <- 8, r1 <- 8 ,
23| r1 <- 32 | r1 <- 16, r1 <- 16 ,
24| r1 <- 40 | r1 <- 32, r1 <- 8 ,
25| r1 <- 44 | r1 <- 40, r1 <- 4 ,
26|-------------------------------|
27
28
29
30
31|===============================|
32|==| Movement. |==|
33|===============================|
34
35|-----------------------------|
36| r2 <- r0, r0 | r2, r2 <- r0 ,
37| r2 <- r0 | ,
38|-----------------------------|
39
40|-------------------------------|
41| r1 <- 1 | r1 ,
42| r1 <- 2 | r1 <- 1, r1 <- 1 ,
43| r1 <- 4 | r1 <- 2, r1 <- 2 ,
44| r1 <- 8 | r1 <- 4, r1 <- 4 ,
45| r1 <- 9 | r1 <- 8, r1 <- 1 ,
46| r1 <- 10 | r1 <- 9, r1 <- 1 ,
47| r1 <- 16 | r1 <- 8, r1 <- 8 ,
48| r1 <- 32 | r1 <- 16, r1 <- 16 ,
49| r1 <- 40 | r1 <- 32, r1 <- 8 ,
50| r1 <- 44 | r1 <- 40, r1 <- 4 ,
51|-------------------------------|
52
53|--------------------------------|
54| r1 = r2, r2 | r1, r2*, r1 = r2 ,
55| r1 = r2 | r2 <- r2* ,
56|--------------------------------|
57
58|--------------------------------|
59| r0 <- r0*, r0* | r0, r0 <- r0* ,
60| r0 <- r0* | ,
61|--------------------------------|
62
63|--------------------------------|
64| r2 <- r2*, r2* | r2, r2 <- r2* ,
65| r2 <- r2* | ,
66|--------------------------------|
67
68
69
70
71|============================|
72|==| Input. |==|
73|============================|
74
75|----------------------------------------------|
76| go to the next character | @io-read ,
77, , r0 <- 0 ,
78, , r0 <- @io-read-in ,
79|----------------------------------------------|
80
81|--------------------------------------------------------|
82| r0 <- @io-read-in, @io-read-in | r0, r0 <- @io-read-in ,
83| r0 <- @io-read-in | ,
84|--------------------------------------------------------|
85
86|--------------------|
87| @io-read-end | EOF ,
88|--------------------|
89
90
91
92
93|===============================|
94|==| Equality. |==|
95|===============================|
96
97|-----------------------------------------|
98| r0 == r1?, r0, r1 | r0*, r0 == r1? ,
99|-----------------------------------------|
100| r0 == r1?, r1 | r0 <- r0* ,
101, , r1 <- 0 ,
102, , r0 != r1 ,
103|-----------------------------------------|
104| r0 == r1?, r0 | r0 ,
105, , r0 <- r0* ,
106, , r0 != r1 ,
107|-----------------------------------------|
108| r0 == r1? | r0 <- r0* ,
109, , r0 == r1 ,
110|-----------------------------------------|
111
112|--------------------------------|
113| r0 <- r0*, r0* | r0, r0 <- r0* ,
114| r0 <- r0* | ,
115|--------------------------------|
116
117|--------------------------------|
118| r2 <- r2*, r2* | r2, r2 <- r2* ,
119| r2 <- r2* | ,
120|--------------------------------|
121
122
123
124
125|==========================================|
126|==| Whitespace handling. |==|
127|==========================================|
128
129|------------------------------|
130| space?, r0 != r1 | ~space ,
131| space?, r0 == r1 | space ,
132|------------------------------|
133| space? | r1 <- 32 ,
134, , r0 == r1? ,
135, , space? ,
136|------------------------------|
137
138|----------------------------|
139| tab?, r0 != r1 | ~tab ,
140| tab?, r0 == r1 | tab ,
141|----------------------------|
142| tab? | r1 <- 9 ,
143, , r0 == r1? ,
144, , tab? ,
145|----------------------------|
146
147|--------------------------------|
148| newline?, r0 != r1 | ~newline ,
149| newline?, r0 == r1 | newline ,
150|--------------------------------|
151| newline? | r1 <- 10 ,
152, , r0 == r1? ,
153, , newline? ,
154|--------------------------------|
155
156|---------------------------------------------------|
157| whitespace?, space | whitespace ,
158| whitespace?, tab | whitespace ,
159| whitespace?, newline | whitespace ,
160| whitespace?, ~space, ~tab, ~newline | ~whitespace ,
161|---------------------------------------------------|
162| whitespace? | space? ,
163, , tab? ,
164, , newline? ,
165, , whitespace? ,
166|---------------------------------------------------|
167
168|-----------------------------------|
169| whitespace, ~space | whitespace ,
170| whitespace, ~tab | whitespace ,
171| whitespace, ~newline | whitespace ,
172|-----------------------------------|
173
174|------------------------------------------|
175| delimiter?, r0 == r1 | delimiter ,
176| delimiter?, r0 != r1 | ~delimiter ,
177|------------------------------------------|
178| delimiter? | r1 = r2 ,
179, , r0 == r1? ,
180, , delimiter? ,
181|------------------------------------------|
182
183|------------------------------|
184| comma?, r0 != r1 | ~comma ,
185| comma?, r0 == r1 | comma ,
186|------------------------------|
187| comma? | r1 <- 44 ,
188, , r0 == r1? ,
189, , comma? ,
190|------------------------------|
191
192|------------------------------------------------------------------------------------------------|
193| go to the next non-whitespace character, whitespace | go to the next non-whitespace character ,
194| go to the next non-whitespace character, ~whitespace | ,
195|------------------------------------------------------------------------------------------------|
196| go to the next non-whitespace character | go to the next character ,
197, , whitespace? ,
198, , go to the next non-whitespace character ,
199|------------------------------------------------------------------------------------------------|
200
201
202
203
204|===================================|
205|==| Main program. |==|
206|===================================|
207
208|-------------------------------------------------|
209|| start, left ,
210|-------------------------------------------------|
211| start | go to the next non-whitespace character ,
212, , store delimiter ,
213, , parse ,
214|-------------------------------------------------|
215
216|-----------------------------------------------------------|
217| store delimiter | r2 <- r0 ,
218, , go to the next non-whitespace character ,
219|-----------------------------------------------------------|
220
221|-------------------------------------------------------------|
222| parse, EOF | append token to side, stop ,
223|-------------------------------------------------------------|
224| parse, delimiter | append token to side ,
225, , switch sides ,
226, , go to the next non-whitespace character ,
227, , parse ,
228|-------------------------------------------------------------|
229| parse, ~delimiter | comma? ,
230, , parse ,
231|-------------------------------------------------------------|
232| parse, comma | append token to side ,
233, , go to the next non-whitespace character ,
234, , parse ,
235|-------------------------------------------------------------|
236| parse, ~comma | append character to token ,
237, , go to the next non-whitespace character ,
238, , parse ,
239|-------------------------------------------------------------|
240| parse | delimiter?, ,
241, parse ,
242|-------------------------------------------------------------|