Add /deps.sh, in /linapple remove full-screen mode to make it run properly on recent...
[applesoft_basic.git] / bas_to_tok.l
1 /*
2  * Copyright (C) 2022 Nick Downing <nick@ndcode.org>
3  * SPDX-License-Identifier: GPL-2.0-only
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License as published by the Free
7  * Software Foundation; version 2.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12  * more details.
13  *
14  * You should have received a copy of the GNU General Public License along with
15  * this program; if not, write to the Free Software Foundation, Inc., 51
16  * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 %start DATA DATA_TEXT REM_TEXT STR_LITERAL
20
21 %%
22
23 <INITIAL,DATA>{
24   " "
25   \" {
26     ECHO()
27     yy_push_state(STR_LITERAL)
28   }
29 }
30 <INITIAL>{
31   E\ *N\ *D {
32     yyout.write('\x80')
33   }
34   F\ *O\ *R {
35     yyout.write('\x81')
36   }
37   N\ *E\ *X\ *T {
38     yyout.write('\x82')
39   }
40   D\ *A\ *T\ *A {
41     yyout.write('\x83')
42     BEGIN(DATA)
43   }
44   I\ *N\ *P\ *U\ *T {
45     yyout.write('\x84')
46   }
47   D\ *E\ *L {
48     yyout.write('\x85')
49   }
50   D\ *I\ *M {
51     yyout.write('\x86')
52   }
53   R\ *E\ *A\ *D {
54     yyout.write('\x87')
55   }
56   G\ *R {
57     yyout.write('\x88')
58   }
59   T\ *E\ *X\ *T {
60     yyout.write('\x89')
61   }
62   P\ *R\ *\# {
63     yyout.write('\x8a')
64   }
65   I\ *N\ *\# {
66     yyout.write('\x8b')
67   }
68   C\ *A\ *L\ *L {
69     yyout.write('\x8c')
70   }
71   P\ *L\ *O\ *T {
72     yyout.write('\x8d')
73   }
74   H\ *L\ *I\ *N {
75     yyout.write('\x8e')
76   }
77   V\ *L\ *I\ *N {
78     yyout.write('\x8f')
79   }
80   H\ *G\ *R\ *2 {
81     yyout.write('\x90')
82   }
83   H\ *G\ *R {
84     yyout.write('\x91')
85   }
86   H\ *C\ *O\ *L\ *O\ *R\ *\= {
87     yyout.write('\x92')
88   }
89   H\ *P\ *L\ *O\ *T {
90     yyout.write('\x93')
91   }
92   D\ *R\ *A\ *W {
93     yyout.write('\x94')
94   }
95   X\ *D\ *R\ *A\ *W {
96     yyout.write('\x95')
97   }
98   H\ *T\ *A\ *B {
99     yyout.write('\x96')
100   }
101   H\ *O\ *M\ *E {
102     yyout.write('\x97')
103   }
104   R\ *O\ *T\ *\= {
105     yyout.write('\x98')
106   }
107   S\ *C\ *A\ *L\ *E\ *\= {
108     yyout.write('\x99')
109   }
110   S\ *H\ *L\ *O\ *A\ *D {
111     yyout.write('\x9a')
112   }
113   T\ *R\ *A\ *C\ *E {
114     yyout.write('\x9b')
115   }
116   N\ *O\ *T\ *R\ *A\ *C\ *E {
117     yyout.write('\x9c')
118   }
119   N\ *O\ *R\ *M\ *A\ *L {
120     yyout.write('\x9d')
121   }
122   I\ *N\ *V\ *E\ *R\ *S\ *E {
123     yyout.write('\x9e')
124   }
125   F\ *L\ *A\ *S\ *H {
126     yyout.write('\x9f')
127   }
128   C\ *O\ *L\ *O\ *R\ *\= {
129     yyout.write('\xa0')
130   }
131   P\ *O\ *P {
132     yyout.write('\xa1')
133   }
134   V\ *T\ *A\ *B {
135     yyout.write('\xa2')
136   }
137   H\ *I\ *M\ *E\ *M\ *\: {
138     yyout.write('\xa3')
139   }
140   L\ *O\ *M\ *E\ *M\ *\: {
141     yyout.write('\xa4')
142   }
143   O\ *N\ *E\ *R\ *R {
144     yyout.write('\xa5')
145   }
146   R\ *E\ *S\ *U\ *M\ *E {
147     yyout.write('\xa6')
148   }
149   R\ *E\ *C\ *A\ *L\ *L {
150     yyout.write('\xa7')
151   }
152   S\ *T\ *O\ *R\ *E {
153     yyout.write('\xa8')
154   }
155   S\ *P\ *E\ *E\ *D\ *\= {
156     yyout.write('\xa9')
157   }
158   L\ *E\ *T {
159     yyout.write('\xaa')
160   }
161   G\ *O\ *T\ *O {
162     yyout.write('\xab')
163   }
164   R\ *U\ *N {
165     yyout.write('\xac')
166   }
167   I\ *F {
168     yyout.write('\xad')
169   }
170   R\ *E\ *S\ *T\ *O\ *R\ *E {
171     yyout.write('\xae')
172   }
173   \& {
174     yyout.write('\xaf')
175   }
176   G\ *O\ *S\ *U\ *B {
177     yyout.write('\xb0')
178   }
179   R\ *E\ *T\ *U\ *R\ *N {
180     yyout.write('\xb1')
181   }
182   R\ *E\ *M {
183     yyout.write('\xb2')
184     BEGIN(REM_TEXT)
185   }
186   S\ *T\ *O\ *P {
187     yyout.write('\xb3')
188   }
189   O\ *N {
190     yyout.write('\xb4')
191   }
192   W\ *A\ *I\ *T {
193     yyout.write('\xb5')
194   }
195   L\ *O\ *A\ *D {
196     yyout.write('\xb6')
197   }
198   S\ *A\ *V\ *E {
199     yyout.write('\xb7')
200   }
201   D\ *E\ *F {
202     yyout.write('\xb8')
203   }
204   P\ *O\ *K\ *E {
205     yyout.write('\xb9')
206   }
207   P\ *R\ *I\ *N\ *T {
208     yyout.write('\xba')
209   }
210   C\ *O\ *N\ *T {
211     yyout.write('\xbb')
212   }
213   L\ *I\ *S\ *T {
214     yyout.write('\xbc')
215   }
216   C\ *L\ *E\ *A\ *R {
217     yyout.write('\xbd')
218   }
219   G\ *E\ *T {
220     yyout.write('\xbe')
221   }
222   N\ *E\ *W {
223     yyout.write('\xbf')
224   }
225   T\ *A\ *B\ *\( {
226     yyout.write('\xc0')
227   }
228   T\ *O {
229     yyout.write('\xc1')
230   }
231   F\ *N {
232     yyout.write('\xc2')
233   }
234   S\ *P\ *C\ *\( {
235     yyout.write('\xc3')
236   }
237   T\ *H\ *E\ *N {
238     yyout.write('\xc4')
239   }
240   A\ *T {
241     yyout.write('\xc5')
242   }
243   N\ *O\ *T {
244     yyout.write('\xc6')
245   }
246   S\ *T\ *E\ *P {
247     yyout.write('\xc7')
248   }
249   \+ {
250     yyout.write('\xc8')
251   }
252   \- {
253     yyout.write('\xc9')
254   }
255   \* {
256     yyout.write('\xca')
257   }
258   \/ {
259     yyout.write('\xcb')
260   }
261   \^ {
262     yyout.write('\xcc')
263   }
264   A\ *N\ *D {
265     yyout.write('\xcd')
266   }
267   O\ *R {
268     yyout.write('\xce')
269   }
270   \> {
271     yyout.write('\xcf')
272   }
273   \= {
274     yyout.write('\xd0')
275   }
276   \< {
277     yyout.write('\xd1')
278   }
279   S\ *G\ *N {
280     yyout.write('\xd2')
281   }
282   I\ *N\ *T {
283     yyout.write('\xd3')
284   }
285   A\ *B\ *S {
286     yyout.write('\xd4')
287   }
288   U\ *S\ *R {
289     yyout.write('\xd5')
290   }
291   F\ *R\ *E {
292     yyout.write('\xd6')
293   }
294   S\ *C\ *R\ *N\ *\( {
295     yyout.write('\xd7')
296   }
297   P\ *D\ *L {
298     yyout.write('\xd8')
299   }
300   P\ *O\ *S {
301     yyout.write('\xd9')
302   }
303   S\ *Q\ *R {
304     yyout.write('\xda')
305   }
306   R\ *N\ *D {
307     yyout.write('\xdb')
308   }
309   L\ *O\ *G {
310     yyout.write('\xdc')
311   }
312   E\ *X\ *P {
313     yyout.write('\xdd')
314   }
315   C\ *O\ *S {
316     yyout.write('\xde')
317   }
318   S\ *I\ *N {
319     yyout.write('\xdf')
320   }
321   T\ *A\ *N {
322     yyout.write('\xe0')
323   }
324   A\ *T\ *N {
325     yyout.write('\xe1')
326   }
327   P\ *E\ *E\ *K {
328     yyout.write('\xe2')
329   }
330   L\ *E\ *N {
331     yyout.write('\xe3')
332   }
333   S\ *T\ *R\ *\$ {
334     yyout.write('\xe4')
335   }
336   V\ *A\ *L {
337     yyout.write('\xe5')
338   }
339   A\ *S\ *C {
340     yyout.write('\xe6')
341   }
342   C\ *H\ *R\ *\$ {
343     yyout.write('\xe7')
344   }
345   L\ *E\ *F\ *T\ *\$ {
346     yyout.write('\xe8')
347   }
348   R\ *I\ *G\ *H\ *T\ *\$ {
349     yyout.write('\xe9')
350   }
351   M\ *I\ *D\ *\$ {
352     yyout.write('\xea')
353   }
354 }
355 <DATA,DATA_TEXT>{
356   :|\n {
357     ECHO()
358     BEGIN(INITIAL)
359   }
360 }
361 <DATA>{
362   [^ ,] {
363     ECHO()
364     BEGIN(DATA_TEXT)
365   }
366 }
367 <DATA_TEXT>{
368   , {
369     ECHO()
370     BEGIN(DATA)
371   }
372 }
373
374 <REM_TEXT>{
375   \n {
376     ECHO()
377     BEGIN(INITIAL)
378   }
379 }
380
381 <STR_LITERAL>{
382   \" {
383     ECHO()
384     yy_pop_state()
385   }
386   \n {
387     ECHO()
388     yy_pop_state()
389     BEGIN(INITIAL)
390   }  
391 }
392
393 %%
394
395 if __name__ == '__main__':
396   while yylex():
397     pass