1* $Id: syntax.tbl,v 1.8 2013-10-23 02:49:46 phil Exp $
2*
3* $Log: syntax.tbl,v $
4* Revision 1.8  2013-10-23 02:49:46  phil
5* Merge from BR_1_5_PLUS_BLOCKS
6*
7* Revision 1.7.2.1  2013/10/11 23:09:59  phil
8* SNOBOL4B (SNOBOL4 with BLOCKS) thanks to Mike Alexander <mta@umich.edu>
9* new: procs.blocks
10* genc.sno: Make macros used by BLOCKS macros into functions.
11* 	Add --with NAME flag, process .IF[E] NAME / .FI
12* 	Add notes about clearing F&V from reading PDP-10 macros
13* 	Read procs.blocks if --with BLOCKS selected
14* 	BLOCKS macros: CYC IF{DEF,FIT,MERGE,PHY,REP,ST,CONT}
15* 		MAX, MERGSP, NN, RELS, SWAP, TRL, FASTPR
16* Makefile: add "with"
17* bsdtsort.c: make hash unsigned, do rotate
18* configure: add --with-blocks, write "with" file (if changed)
19* gendata.sno: Add --with flag, process .IF NAME / .FI
20* 	Process data defns before end of code (for BLOCKS)
21* gensyn.sno: Add --with flag, process .IF NAME / .FI
22* globals: add BLOCKS related globals
23* main.c: change name to CSNOBOL4B under ifdef BLOCKS
24* syntax.tbl: add blocks binary operator tables: BBIOPTB and BSBIPTB
25* v311.sil: [BLOCKS] add BLOCKS code
26* 	  [PLBXXX] add -[NO]BLOCKS to disable/enable blocks operator changes
27* lib.h: add io_fastpr(), mergsp()
28* macros.h: renamed INSERT macro to X_INSERT; add FASTPR, MERGSP macros
29* lib/init.c: add -B option to toggle blocks
30* lib/io.c: io_printf(): add %A %L %V
31* test/blocks.in: list of blocks tests
32* test/test.{dump,err,genc,opt,reg,trace}.sh: handle test with directory name
33* test/blocks/ (new)
34* 	{ab,acm4{39,40,41,42,43,43a,43b},block{0,0n,1,1b,1b},box,dump,image,reg,tree.{sno,ref}
35*
36* Revision 1.7  1997/08/06 05:51:27  phil
37* [PLB59] from SNOBOL4+
38* seperate syntax tables for BREAK(X) and SPAN
39* simple index lookup for ANY/NOTANY
40*
41* Revision 1.6  1997/06/20  05:07:41  phil
42* allow exponent without fraction (ie; 1e5), like SPITBOL
43*
44* Revision 1.5  1996/09/04  03:02:00  phil
45* [PLB32] added SPITBOL binop table, exponents on REALs
46*
47* Revision 1.4  1993/12/09  14:36:58  budd
48* ALPHA1 release
49*
50* Revision 1.3  93/11/02  18:06:31  phil
51* [PLB1] 10/28/93
52* Added COMMA to SNABTB -- need one of each PLUGTB/CLERTB action
53*
54* Revision 1.2  93/11/02  18:05:14  phil
55* Added RCS Id and Log keywords
56*
57*
58BEGIN BIOPTB
59FOR(PLUS) PUT(ADDFN) GOTO(TBLKTB)
60FOR(MINUS) PUT(SUBFN) GOTO(TBLKTB)
61FOR(DOT) PUT(NAMFN) GOTO(TBLKTB)
62FOR(DOLLAR) PUT(DOLFN) GOTO(TBLKTB)
63FOR(STAR) PUT(MPYFN) GOTO(STARTB)
64FOR(SLASH) PUT(DIVFN) GOTO(TBLKTB)
65FOR(AT) PUT(BIATFN) GOTO(TBLKTB)
66FOR(POUND) PUT(BIPDFN) GOTO(TBLKTB)
67FOR(PERCENT) PUT(BIPRFN) GOTO(TBLKTB)
68FOR(RAISE) PUT(EXPFN) GOTO(TBLKTB)
69FOR(ORSYM) PUT(ORFN) GOTO(TBLKTB)
70FOR(KEYSYM) PUT(BIAMFN) GOTO(TBLKTB)
71FOR(NOTSYM) PUT(BINGFN) GOTO(TBLKTB)
72FOR(QUESYM) PUT(BIQSFN) GOTO(TBLKTB)
73ELSE ERROR
74END BIOPTB
75
76* New [PLB32] for SPITBOL syntax
77BEGIN SBIPTB
78FOR(PLUS) PUT(ADDFN) GOTO(TBLKTB)
79FOR(MINUS) PUT(SUBFN) GOTO(TBLKTB)
80FOR(DOT) PUT(NAMFN) GOTO(TBLKTB)
81FOR(DOLLAR) PUT(DOLFN) GOTO(TBLKTB)
82FOR(STAR) PUT(MPYFN) GOTO(STARTB)
83FOR(SLASH) PUT(DIVFN) GOTO(TBLKTB)
84FOR(AT) PUT(BIATFN) GOTO(TBLKTB)
85FOR(POUND) PUT(BIPDFN) GOTO(TBLKTB)
86FOR(PERCENT) PUT(BIPRFN) GOTO(TBLKTB)
87FOR(RAISE) PUT(EXPFN) GOTO(TBLKTB)
88FOR(ORSYM) PUT(ORFN) GOTO(TBLKTB)
89FOR(KEYSYM) PUT(BIAMFN) GOTO(TBLKTB)
90FOR(NOTSYM) PUT(BINGFN) GOTO(TBLKTB)
91FOR(QUESYM) PUT(BISNFN) GOTO(TBLKTB)
92FOR(EQUAL) PUT(BIEQFN) GOTO(TBLKTB)
93ELSE ERROR
94END SBIPTB
95
96.IF BLOCKS
97* [BLOCKS] blocks version of BIOPTB
98BEGIN BBIOPTB
99FOR(PLUS) PUT(ADDFN) GOTO(TBLKTB)
100FOR(MINUS) PUT(SUBFN) GOTO(TBLKTB)
101FOR(DOT) PUT(NAMFN) GOTO(TBLKTB)
102FOR(DOLLAR) PUT(DOLFN) GOTO(TBLKTB)
103FOR(STAR) PUT(MPYFN) GOTO(STARTB)
104FOR(SLASH) PUT(DIVFN) GOTO(TBLKTB)
105FOR(AT) PUT(BIATFN) GOTO(TBLKTB)
106FOR(POUND) PUT(BIBDFN) GOTO(TBLKTB)
107FOR(PERCENT) PUT(BIBRFN) GOTO(TBLKTB)
108FOR(RAISE) PUT(EXPFN) GOTO(TBLKTB)
109FOR(ORSYM) PUT(ORFN) GOTO(TBLKTB)
110FOR(KEYSYM) PUT(BIAMFN) GOTO(TBLKTB)
111FOR(NOTSYM) PUT(BINGFN) GOTO(TBLKTB)
112FOR(QUESYM) PUT(BIQSFN) GOTO(TBLKTB)
113ELSE ERROR
114END BBIOPTB
115
116* [BLOCKS] BLOCKS + SPITBOL syntax!!
117BEGIN BSBIPTB
118FOR(PLUS) PUT(ADDFN) GOTO(TBLKTB)
119FOR(MINUS) PUT(SUBFN) GOTO(TBLKTB)
120FOR(DOT) PUT(NAMFN) GOTO(TBLKTB)
121FOR(DOLLAR) PUT(DOLFN) GOTO(TBLKTB)
122FOR(STAR) PUT(MPYFN) GOTO(STARTB)
123FOR(SLASH) PUT(DIVFN) GOTO(TBLKTB)
124FOR(AT) PUT(BIATFN) GOTO(TBLKTB)
125FOR(POUND) PUT(BIBDFN) GOTO(TBLKTB)
126FOR(PERCENT) PUT(BIBRFN) GOTO(TBLKTB)
127FOR(RAISE) PUT(EXPFN) GOTO(TBLKTB)
128FOR(ORSYM) PUT(ORFN) GOTO(TBLKTB)
129FOR(KEYSYM) PUT(BIAMFN) GOTO(TBLKTB)
130FOR(NOTSYM) PUT(BINGFN) GOTO(TBLKTB)
131FOR(QUESYM) PUT(BISNFN) GOTO(TBLKTB)
132FOR(EQUAL) PUT(BIEQFN) GOTO(TBLKTB)
133ELSE ERROR
134END BSBIPTB
135.FI
136
137BEGIN CARDTB
138FOR(CMT) PUT(CMTTYP) STOPSH
139FOR(CTL) PUT(CTLTYP) STOPSH
140FOR(CNT) PUT(CNTTYP) STOPSH
141ELSE PUT(NEWTYP) STOPSH
142END CARDTB
143
144BEGIN DQLITB
145FOR(DQUOTE) STOP
146ELSE CONTIN
147END DQLITB
148
149BEGIN ELEMTB
150FOR(NUMBER) PUT(ILITYP) GOTO(INTGTB)
151FOR(LETTER) PUT(VARTYP) GOTO(VARTB)
152FOR(SQUOTE) PUT(QLITYP) GOTO(SQLITB)
153FOR(DQUOTE) PUT(QLITYP) GOTO(DQLITB)
154FOR(LEFTPAREN) PUT(NSTTYP) STOP
155ELSE ERROR
156END ELEMTB
157
158BEGIN EOSTB
159FOR(EOS) STOP
160ELSE CONTIN
161END EOSTB
162
163* new [PLB32]
164* parse exponent sign
165BEGIN EXPTB
166FOR(PLUS,MINUS) GOTO(EXPBTB)
167FOR(NUMBER) GOTO(EXPBTB)
168ELSE ERROR
169END EXPTB
170
171* new [PLB32]
172* parse exponent value
173BEGIN EXPBTB
174FOR(NUMBER) CONTIN
175FOR(TERMINATOR) STOPSH
176ELSE ERROR
177END EXPBTB
178
179BEGIN FLITB
180FOR(NUMBER) CONTIN
181FOR(TERMINATOR) STOPSH
182FOR(EXP) GOTO(EXPTB)
183ELSE ERROR
184END FLITB
185
186BEGIN FRWDTB
187FOR(BLANK) CONTIN
188FOR(EQUAL) PUT(EQTYP) STOP
189FOR(RIGHTPAREN) PUT(RPTYP) STOP
190FOR(RIGHTBR) PUT(RBTYP) STOP
191FOR(COMMA) PUT(CMATYP) STOP
192FOR(COLON) PUT(CLNTYP) STOP
193FOR(EOS) PUT(EOSTYP) STOP
194ELSE PUT(NBTYP) STOPSH
195END FRWDTB
196
197BEGIN GOTFTB
198FOR(LEFTPAREN) PUT(FGOTYP) STOP
199FOR(LEFTBR) PUT(FTOTYP) STOP
200ELSE ERROR
201END GOTFTB
202
203BEGIN GOTOTB
204FOR(SGOSYM) GOTO(GOTSTB)
205FOR(FGOSYM) GOTO(GOTFTB)
206FOR(LEFTPAREN) PUT(UGOTYP) STOP
207FOR(LEFTBR) PUT(UTOTYP) STOP
208ELSE ERROR
209END GOTOTB
210
211BEGIN GOTSTB
212FOR(LEFTPAREN) PUT(SGOTYP) STOP
213FOR(LEFTBR) PUT(STOTYP) STOP
214ELSE ERROR
215END GOTSTB
216
217BEGIN IBLKTB
218FOR(BLANK) GOTO(FRWDTB)
219FOR(EOS) PUT(EOSTYP) STOP
220ELSE ERROR
221END IBLKTB
222
223BEGIN INTGTB
224FOR(NUMBER) CONTIN
225FOR(TERMINATOR) PUT(ILITYP) STOPSH
226FOR(DOT) PUT(FLITYP) GOTO(FLITB)
227FOR(EXP) PUT(FLITYP) GOTO(EXPTB)
228ELSE ERROR
229END INTGTB
230
231BEGIN LBLTB
232FOR(ALPHANUMERIC) GOTO(LBLXTB)
233FOR(BLANK,EOS) STOPSH
234ELSE ERROR
235END LBLTB
236
237BEGIN LBLXTB
238FOR(BLANK,EOS) STOPSH
239ELSE CONTIN
240END LBLXTB
241
242BEGIN NBLKTB
243FOR(TERMINATOR) ERROR
244ELSE STOPSH
245END NBLKTB
246
247BEGIN NUMBTB
248FOR(NUMBER) GOTO(NUMCTB)
249FOR(PLUS,MINUS) GOTO(NUMCTB)
250FOR(COMMA) PUT(CMATYP) STOPSH
251FOR(COLON) PUT(DIMTYP) STOPSH
252ELSE ERROR
253END NUMBTB
254
255BEGIN NUMCTB
256FOR(NUMBER) CONTIN
257FOR(COMMA) PUT(CMATYP) STOPSH
258FOR(COLON) PUT(DIMTYP) STOPSH
259ELSE ERROR
260END NUMCTB
261
262* new [PLB59] from SNABTB
263BEGIN SPANTB
264* [PLB1] added COMMA 10/28/93 -- need one of each PLUGTB/CLERTB action
265FOR(COMMA) CONTIN
266FOR(FGOSYM) STOP
267FOR(SGOSYM) STOPSH
268ELSE ERROR
269END SPANTB
270
271* new [PLB59] from SNABTB
272BEGIN BRKTB
273* [PLB1] added COMMA 10/28/93 -- need one of each PLUGTB/CLERTB action
274FOR(COMMA) CONTIN
275FOR(FGOSYM) STOP
276FOR(SGOSYM) STOPSH
277ELSE ERROR
278END BRKTB
279
280BEGIN SQLITB
281FOR(SQUOTE) STOP
282ELSE CONTIN
283END SQLITB
284
285BEGIN STARTB
286FOR(BLANK) STOP
287FOR(STAR) PUT(EXPFN) GOTO(TBLKTB)
288ELSE ERROR
289END STARTB
290
291BEGIN TBLKTB
292FOR(BLANK) STOP
293ELSE ERROR
294END TBLKTB
295
296BEGIN UNOPTB
297FOR(PLUS) PUT(PLSFN) GOTO(NBLKTB)
298FOR(MINUS) PUT(MNSFN) GOTO(NBLKTB)
299FOR(DOT) PUT(DOTFN) GOTO(NBLKTB)
300FOR(DOLLAR) PUT(INDFN) GOTO(NBLKTB)
301FOR(STAR) PUT(STRFN) GOTO(NBLKTB)
302FOR(SLASH) PUT(SLHFN) GOTO(NBLKTB)
303FOR(PERCENT) PUT(PRFN) GOTO(NBLKTB)
304FOR(AT) PUT(ATFN) GOTO(NBLKTB)
305FOR(POUND) PUT(PDFN) GOTO(NBLKTB)
306FOR(KEYSYM) PUT(KEYFN) GOTO(NBLKTB)
307FOR(NOTSYM) PUT(NEGFN) GOTO(NBLKTB)
308FOR(ORSYM) PUT(BARFN) GOTO(NBLKTB)
309FOR(QUESYM) PUT(QUESFN) GOTO(NBLKTB)
310FOR(RAISE) PUT(AROWFN) GOTO(NBLKTB)
311ELSE ERROR
312END UNOPTB
313
314BEGIN VARATB
315FOR(LETTER) GOTO(VARBTB)
316FOR(COMMA) PUT(CMATYP) STOPSH
317FOR(RIGHTPAREN) PUT(RPTYP) STOPSH
318ELSE ERROR
319END VARATB
320
321BEGIN VARBTB
322FOR(ALPHANUMERIC,BREAK) CONTIN
323FOR(LEFTPAREN) PUT(LPTYP) STOPSH
324FOR(COMMA) PUT(CMATYP) STOPSH
325FOR(RIGHTPAREN) PUT(RPTYP) STOPSH
326ELSE ERROR
327END VARBTB
328
329BEGIN VARTB
330FOR(ALPHANUMERIC,BREAK) CONTIN
331FOR(TERMINATOR) PUT(VARTYP) STOPSH
332FOR(LEFTPAREN) PUT(FNCTYP) STOP
333FOR(LEFTBR) PUT(ARYTYP) STOP
334ELSE ERROR
335END VARTB
336
337