Mercurial > hg > index.cgi
annotate src/parse.s @ 126:ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
Add ability to turn a token code into a keyword string. Also correct some
details related to token table generation with some additiona adjustments
for token symbols.
Also rework token symbol definitions and creation of some parsing tables as
well as the main statement parsing loop.
author | William Astle <lost@l-w.ca> |
---|---|
date | Mon, 08 Jan 2024 22:58:08 -0700 |
parents | 0607e4e20702 |
children | 527212870064 |
rev | line source |
---|---|
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1 *pragmapush list |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2 *pragma list |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4 ; This is the overall parsing package. This is responsible for converting program text into the internal byte code and |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5 ; reporting any syntax errors and anything else reasonably detectable at parse time without having overly complicated |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6 ; code analysis. |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7 ; |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8 ; This is a recursive descent parser. |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
9 ; |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
10 ; Entry: |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
11 ; X Points to the text to encode |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
12 ; B Nonzero to prevent generating any output (error check/length calculation only) |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
13 ; |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
14 ; Exit: |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
15 ; U Points to the encoded line |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
16 ; D Length of the encoded line |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
17 ; CC.C clear |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
18 |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
19 ; Error Exit: |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
20 ; B Error code |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
21 ; U Offset to error input |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
22 ; CC.C set |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
23 parse stb parse_noout ; save no-output flag |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
24 leay ,x ; save input pointer in a less useful register |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
25 ldu freestart ; point to start of free memory where we will build the output |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
26 pshs u ; save original free memory location |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
27 parse_nextstmt jsr parse_nexttok ; fetch the next token, return type in D |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
28 bcc parse0 ; brif we succeeded in parsing a token |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
29 parse_error puls u ; restore original free memory location - deallocate any encoding |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
30 stu freestart |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
31 ldu parse_tokenst ; get start location we started parsing the token at |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
32 rts ; return error condition |
126
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
33 parse0 ldx #parsetab_cmd ; point to jump table for token type handler |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
34 parse1 cmpb ,x ; did we match a valid command token? |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
35 beq parse3 ; brif so |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
36 leax 3,x ; move to next entry |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
37 cmpx #parsetab_cmde ; end of table? |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
38 blo parse1 ; brif not |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
39 parse2 ldb #err_sn ; flag syntax error |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
40 bra parse_error ; and return the error |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
41 parse3 jsr [1,x] ; call the handler |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
42 bcs parse_error ; brif the handler indicated error |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
43 jsr parse_curtoken ; get the token we terminated on |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
44 cmpb #token_eot ; end of input? |
126
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
45 bne parse4 ; brif not |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
46 ldb #bc_eol ; stash an end of line op |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
47 bsr parse_write |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
48 bcs parse_error ; brif we errored out writing to the result (OM?) |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
49 tfr u,d ; calculate the length of the result |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
50 subd ,s |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
51 puls u,pc ; get pointer to start of encoded result and return (C is already clear) |
126
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
52 parse4 cmpb #token_stmtsep ; statement separator? |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
53 beq parse_nextstmt ; brif so - do another statement |
126
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
54 cmpb #token_remabbr ; ' token? |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
55 beq parse0 ; brif so - parse it as a new statement |
126
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
56 bra parse2 ; raise a syntax error |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
57 parse_write lda parse_noout ; are we doing output? |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
58 beq parse_write0 ; brif so |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
59 leau 1,u ; just count up the output and don't do anything |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
60 rts |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
61 parse_write0 leax -stackheadroom,s ; calculate bottom of stack with headroom |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
62 cmpx freestart ; did the stack run into the end of the output? |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
63 bhs parse_write1 ; brif not - we're good |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
64 ldb #err_om ; raise out of memory error, C already set from comparison |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
65 rts |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
66 parse_write1 stb ,u+ ; save output byte |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
67 stu freestart ; save new to of used memory |
126
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
68 list_noop |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
69 parse_noop rts ; return all clear - C clear from comparison above |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
70 parse_curtoken ldb parse_curtok ; fetch token code of current token |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
71 rts |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
72 parse_tokerr comb ; flag error - unexpected token |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
73 ldb #err_sn ; raise syntax error |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
74 rts |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
75 parse_nextchar lda ,y ; at end of input already? |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
76 beq parse_curchar ; brif so |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
77 leay 1,y ; move to next input character |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
78 parse_curchar lda ,y ; fetch input character |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
79 rts |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
80 parse_nexttok bsr parse_curchar ; fetch current input |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
81 beq parse_nexttok1 ; brif end of input |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
82 parse_nexttok0 cmpa #0x20 ; space? |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
83 bne parse_nexttok2 ; brif not |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
84 bsr parse_nextchar ; eat the space |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
85 bne parse_nexttok0 ; brif not end of input |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
86 parse_nexttok1 ldb #token_eot ; flag end of input |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
87 bra parse_nexttok6 ; go return it |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
88 parse_nexttok2 sty parse_tokenst ; save start of current token after skipping spaces |
124
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
89 bsr parse_toupper ; make sure we have upper case letters for matching |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
90 ldx #parse_wt ; point to keyword parsing table |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
91 bsr parse_wordtab ; go see if we have a match in the keyword table |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
92 bcc parse_nexttok6 ; brif we do - return it |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
93 ldy parse_tokenst ; return to the start of the token - pointer probably clobbered |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
94 bsr parse_curchar ; get back input character (may have been clobbered) |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
95 cmpa #'. ; leading decimal? |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
96 beq parse_nexttok3 ; brif so - parse number |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
97 cmpa #'0 ; is it a digit |
124
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
98 blo parse_nexttok10 ; brif not |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
99 cmpa #'9 ; is it still a digit? |
124
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
100 bhi parse_nexttok10 ; brif not |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
101 parse_nexttok3 jmp parse_number ; go parse a number |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
102 parse_nexttok6 stb parse_curtok ; save token type |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
103 leay 1,y ; eat the input character |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
104 clra ; clear C to indicate no error (and clear Z also) |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
105 rts |
124
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
106 parse_nexttok10 cmpa #'A ; is it alpha? |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
107 blo parse_nexttok11 ; brif not |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
108 cmpa #'Z ; is it still alpha? |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
109 bls parse_nexttok12 ; brif so |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
110 parse_nexttok11 comb ; flag error - unrecognized token |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
111 ldb #token_error |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
112 rts |
124
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
113 parse_nexttok12 bsr parse_nextcharu ; fetch next input character |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
114 cmpa #'0 ; is it alphanumeric? |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
115 blo parse_nexttok13 ; brif not |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
116 cmpa #'9 ; is it numeric? |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
117 bls parse_nexttok12 ; brif so - keep skipping it |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
118 cmpa #'A ; is it alpha? |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
119 blo parse_nexttok13 ; brif not |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
120 cmpa #'Z ; is it still alpha? |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
121 bls parse_nexttok12 ; brif so - keep skipping it |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
122 parse_nexttok13 tfr y,d ; calculate length of identifier |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
123 subd parse_tokenst |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
124 std val0+val.strlen ; save it for reference |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
125 ldb #token_ident ; indicate an identifier (variable name, etc.) |
8770e6f977c3
Rework parser to use parse_wordtab for symbols too
William Astle <lost@l-w.ca>
parents:
123
diff
changeset
|
126 rts ; return result (C will be clear from SUBD above) |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
127 parse_nextcharu bsr parse_nextchar ; fetch next input character |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
128 beq parse_toupper0 ; brif end of input |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
129 parse_toupper cmpa #'a ; is it lower case alpha? |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
130 blo parse_toupper0 ; brif not |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
131 cmpa #'z ; is it still lower case alpha? |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
132 bhi parse_toupper0 ; brif not |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
133 suba #0x20 ; adjust to upper case alpha |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
134 parse_toupper0 rts ; Z only set here if input was zero entering from parse_nextcharu |
126
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
135 parse_number jmp parse_tokerr |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
136 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
123
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
137 ; This routine parses tokens using the table at parse_wordtab. The table is structured as follows: |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
138 ; |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
139 ; * two bytes which contain the length of the table less the two bytes for this length value |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
140 ; * a sequence of entries consisting of a single byte matching character and a token code followed |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
141 ; by an optional sub table, structured exactly the same way. |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
142 ; |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
143 ; The optional subtable will be present if the token code is token_eot |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
144 ; |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
145 ; If the character match is negative, it means a lookahead failed. The negative value is the number |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
146 ; of characters to unget and the token code is the token value to return. No other entries after this |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
147 ; in a table will be considered since thie negative match is a global match. |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
148 ; |
123
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
149 ; When a token_eot match is found, if there are no further characters in the input, the match is |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
150 ; determined to be invalid and processing continues with the next entry. |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
151 parse_wordtab0 leas 3,s ; clean up stack for sub table handling |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
152 parse_wordtab pshs a,x ; save input character and start of table |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
153 ldd ,x++ ; get length of this table |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
154 addd 1,s ; calculate the address of the end of the table |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
155 std 1,s ; save end address for comparison later |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
156 lda ,s ; get back input character |
125
0607e4e20702
Correct offset error for keyword table lookup
William Astle <lost@l-w.ca>
parents:
124
diff
changeset
|
157 parse_wordtab1 ldb 1,x ; fetch token code for this entry |
123
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
158 cmpa ,x++ ; does this entry match? |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
159 bne parse_wordtab4 ; brif not |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
160 cmpb #token_eot ; is it indicating a sub table? |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
161 bne parse_wordtab6 ; brif not |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
162 bsr parse_nextcharu ; fetch next input character (for sub table match) |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
163 bne parse_wordtab0 ; brif we are going to check the sub table |
126
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
164 parse_wordtab2 ldd ,x ; fetch length of sub table |
123
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
165 leax d,x ; move past sub table |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
166 parse_wordtab3 lda ,s ; get back input character |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
167 cmpx 1,s ; are we at the end of the table? |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
168 blo parse_wordtab1 ; brif not - check another entry |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
169 comb ; indicate no match |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
170 puls a,x,pc ; clean up stack and return |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
171 parse_wordtab4 lda -2,x ; get the match character |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
172 bmi parse_wordtab5 ; brif negative - lookahead fail |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
173 cmpb #token_eot ; is there a sub table to skip? |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
174 beq parse_wordtab2 ; brif so - skip sub table |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
175 bra parse_wordtab3 ; otherwise just move to the next entry |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
176 parse_wordtab5 leay a,y ; move back the specified number of characters |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
177 parse_wordtab6 clra ; clear C to indicate a match |
5681cdada362
Redo keyword table handling to handle keywords differing in length
William Astle <lost@l-w.ca>
parents:
121
diff
changeset
|
178 puls a,x,pc ; clean up stack and return |
126
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
179 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
180 ; Convert a token number back to its keyword. This will use the same table used by parse_wordtab. Enter with a character |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
181 ; output routine pointer in U which takes the character in A. The routine can assume that Y is preserved. Will return |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
182 ; with C set if the token does not exist in the word table and clear otherwise. |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
183 parse_wtdc pshs u ; save routine pointer |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
184 ldu #strbuff+20 ; point to temporary string buffer |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
185 clr ,-u ; put a NUL at the end of the string |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
186 ldx #parse_wt ; point to keyword parse table |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
187 bsr parse_wtdc2 ; call the tree walker function |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
188 bcc parse_wtdc1 ; brif we do have a match |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
189 puls u,pc ; clean stack and return |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
190 parse_wtdc0 jsr [,s] ; output the character |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
191 parse_wtdc1 lda ,u+ ; get output byte |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
192 bne parse_wtdc0 ; brif we're not at the end yet |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
193 clra ; make sure C is clear |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
194 puls u,pc ; clean stack and return |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
195 parse_wtdc2 pshs a,x ; save the token match value and the table pointer |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
196 ldd ,x++ ; get table length |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
197 addd 1,s ; calculate end address |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
198 std 1,s ; save it |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
199 parse_wtdc3 ldd ,x++ ; get this table entry |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
200 bmi parse_wtdc6 ; brif it's a backtracking entry - skip it |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
201 cmpa ,s ; does the token match here? |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
202 bne parse_wtdc5 ; brif not |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
203 parse_wtdc4 sta ,-y ; add the character to the output buffer |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
204 puls a,x,pc ; return up the call stack - C is clear from CMPA above |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
205 parse_wtdc5 cmpb #token_eot ; does this entry have a sub table? |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
206 bne parse_wtdc6 ; brif not |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
207 pshs a ; save the matched character |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
208 lda 1,s ; get back the token we need |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
209 bsr parse_wtdc2 ; go handle the sub table |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
210 puls a ; get back the matched character |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
211 bcc parse_wtdc6 ; brif it did match - record it and return |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
212 parse_wtdc6 cmpx 1,s ; are we at the end of this table? |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
213 bne parse_wtdc3 ; brif not - handle another table entry |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
214 coma ; make sure C is set for no match |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
215 puls a,x,pc ; clean up stack and return |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
216 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
217 ; This table defines the various handler routines for the various bytecode tokens. Each token is defined as follows: |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
218 ; parse_tokdefT <sym>,<parse>,<list>,<exec> |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
219 ; where: |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
220 ; T: c for command, f for function, p for particle |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
221 ; <sym>: the symbol name without the "token_" prefix |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
222 ; <parse>: parse handler for the type, ignored for particles |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
223 ; <list>: list handler for the type, ingored for particles |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
224 ; <exec>: execution handler for the type, ignored for particles |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
225 *pragmapush list |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
226 *pragma nolist |
126
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
227 __toknump set 0 |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
228 __toknumc set 0x40 |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
229 __toknumf set 0xc0 |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
230 setstr __cmdparset="" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
231 setstr __cmdlistt="" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
232 setstr __cmdexect="" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
233 setstr __fnparset="" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
234 setstr __fnlistt="" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
235 setstr __fnexect="" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
236 parse_tokendefp macro noexpand |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
237 token_\1 equ __toknump |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
238 __toknump set __toknump+1 |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
239 endm |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
240 parse_tokendefc macro noexpand |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
241 token_\1 equ __toknumc |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
242 __toknumc set __toknumc+1 |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
243 ifstr ne,"{2}","" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
244 setstr __cmdparset="%(__cmdparset)\tfcb\ttoken_\1\n\tfdb {2}\n" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
245 endc |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
246 ifstr ne,"{3}","" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
247 setstr __cmdlistt="%(__cmdlistt)\tfcb\ttoken_\1\n\tfdb {3}\n" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
248 endc |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
249 ifstr ne,"{4}","" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
250 setstr __cmdexect="%(__cmdexect)\tfdb {3}\n" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
251 else |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
252 setstr __cmdexect="%(__cmdexect)\tfdb SNERROR\n" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
253 endc |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
254 endm |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
255 parse_tokendeff macro noexpand |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
256 token_\1 equ __toknumf |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
257 __toknumf set __toknumf+1 |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
258 ifstr ne,"{2}","" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
259 setstr __fnparset="%(__fnparset)\tfcb\ttoken_\1\n\tfdb {2}\n" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
260 endc |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
261 ifstr ne,"{3}","" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
262 setstr __fnlistt="%(__fnlistt)\tfcb\ttoken_\1\n\tfdb {3}\n" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
263 endc |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
264 ifstr ne,"{4}","" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
265 setstr __fnexect="%(__fnexect)\tfdb {3}\n" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
266 else |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
267 setstr __fnexect="%(__fnexect)\tfdb SNERROR\n" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
268 endc |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
269 endm |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
270 token_cmdparse macro |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
271 *pragmapush nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
272 *pragma nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
273 includestr "%(__cmdparset)" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
274 *pragmapop nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
275 endm |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
276 token_cmdlist macro |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
277 *pragmapush nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
278 *pragma nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
279 includestr "%(__cmdlistt)" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
280 *pragmapop nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
281 endm |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
282 token_cmdexec macro |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
283 *pragmapush nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
284 *pragma nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
285 includestr "%(__cmdexect)" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
286 token__maxcmd equ __toknumc-1 |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
287 *pragmapop nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
288 endm |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
289 token_fnparse macro |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
290 *pragmapush nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
291 *pragma nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
292 includestr "%(__fnparset)" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
293 *pragmapop nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
294 endm |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
295 token_fnlist macro |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
296 *pragmapush nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
297 *pragma nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
298 includestr "%(__fnlistt)" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
299 *pragmapop nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
300 endm |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
301 token_fnexec macro |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
302 *pragmapush nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
303 *pragma nolist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
304 includestr "%(__fnexect)" |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
305 token__maxfn equ __toknumf-1 |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
306 *pragmapop nolist |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
307 endm |
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
308 *pragmapop list |
126
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
309 parse_tokendefp error ; Used to mark errors; should always be first so it's token #0 |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
310 parse_tokendefp eot ; End of input marker or special handling in word tables |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
311 parse_tokendefp stmtsep ; statement separator |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
312 parse_tokendefp times ; times (multiplication) operator (*) |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
313 parse_tokendefp plus ; addition operator |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
314 parse_tokendefp divide ; division operator (/) |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
315 parse_tokendefp minus ; subtraction operator |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
316 parse_tokendefp exp ; exponentiation operator (^) |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
317 parse_tokendefp lt ; less than operator |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
318 parse_tokendefp le ; less than or equal operateor |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
319 parse_tokendefp gt ; greater than operator |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
320 parse_tokendefp ge ; greater than or equal operator |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
321 parse_tokendefp eq ; equality operator |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
322 parse_tokendefp ne ; inequality operator |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
323 parse_tokendefp not ; boolean NOT operator |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
324 parse_tokendefp and ; boolean AND operator |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
325 parse_tokendefp or ; boolean OR operator |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
326 parse_tokendefp bang ; exclamation mark |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
327 parse_tokendefp hash ; number sign |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
328 parse_tokendefp dollar ; dollar sign (string sigil) |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
329 parse_tokendefp percent ; percent sign (integer sigil) |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
330 parse_tokendefp amp ; ampersand |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
331 parse_tokendefp oparen ; opening paren |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
332 parse_tokendefp cparen ; closing paren |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
333 parse_tokendefp sep ; comma (separator) |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
334 parse_tokendefp semi ; semicolon |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
335 parse_tokendefp at ; @ symbol |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
336 parse_tokendefp ident ; identifier (has special parsing) |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
337 parse_tokendefp else ; ELSE |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
338 parse_tokendefp then ; THEN |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
339 parse_tokendefp to ; TO |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
340 parse_tokendefp sub ; SUB |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
341 parse_tokendefp as ; AS |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
342 |
126
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
343 parse_tokendefc remabbr,parse_noop,list_noop,exec_noop ; abbreviated REM (') |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
344 parse_tokendefc rem,parse_noop,list_noop,exec_noop ; REM |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
345 parse_tokendefc return,parse_noop,parse_noop,parse_noop ; RETURN |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
346 parse_tokendefc run,parse_noop,parse_noop,parse_noop ; RUN |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
347 parse_tokendefc data,parse_noop,parse_noop,parse_noop ; DATA |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
348 parse_tokendefc end,parse_noop,parse_noop,parse_noop ; END |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
349 parse_tokendefc stop,parse_noop,parse_noop,parse_noop ; STOP |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
350 parse_tokendefc let,parse_noop,parse_noop,parse_noop ; LET |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
351 parse_tokendefc list,parse_noop,parse_noop,parse_noop ; LIST |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
352 parse_tokendefc new,parse_noop,parse_noop,parse_noop ; NEW |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
353 parse_tokendefc print,parse_noop,parse_noop,parse_noop ; PRINT |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
354 parse_tokendefc pop,parse_noop,parse_noop,parse_noop ; POP |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
355 parse_tokendefc goto,parse_noop,parse_noop,parse_noop ; GOTO |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
356 parse_tokendefc gosub,parse_noop,parse_noop,parse_noop ; GOSUB |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
357 parse_tokendefc go,parse_noop,parse_noop,parse_noop ; GO |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
358 |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
359 parse_tokendeff asc,parse_noop,parse_noop,parse_noop ; ASC() |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
360 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
361 ; Parse handling tables |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
362 parsetab_cmd token_cmdparse |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
363 parsetab_cmde |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
364 parsetab_fn token_fnparse |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
365 parsetab_fne |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
366 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
367 ; List handling tables |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
368 listtab_cmd token_cmdlist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
369 listtab_cmde |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
370 listtab_fn token_fnlist |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
371 listtab_fne |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
372 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
373 ; Execution handling tables |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
374 exectab_cmd token_cmdexec |
ac183a519439
Update parsing scheme with a keyword lookup by token value and other framework
William Astle <lost@l-w.ca>
parents:
125
diff
changeset
|
375 exectab_fn token_fnexec |
121
5d5472b11ccd
Initital skeleton of separation of separate parsing scheme
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
376 *pragmapop list |