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