MIT is built on a context-free language parser generator
YACC with input file (declarations, productions, and subroutines).
Many popular parser generators such as
Yacc [Johnson 1975] restrict themselves to S-attributed grammars where all attributes can be evaluated "on-the-fly" during parsing.
A Comparison of Execution Time Program Basis occ gp1 gp2 (secs) (ratio) (ratio) (ratio) BHut 30.5 1.00 0.77 0.76 Boyer 2.5 1.00 0.92 0.91 Sieve 35.6 1.00 0.84 0.86 KB 7.5 1.00 0.87 0.85 Lexgen 11.5 1.00 0.91 0.89
Yacc 4.4 1.00 1.02 0.97 Life 1.3 1.00 0.91 0.92 Simple 22.2 1.00 0.88 0.84 Ray 20.3 1.00 0.97 0.99 VLIW 16.1 1.00 0.81 0.77 Average 1.00 0.89 0.88 Program gp3 gp4 fp3 (ratio) (ratio) (ratio) BHut 0.73 0.75 0.76 Boyer 0.90 0.90 0.96 Sieve 0.85 0.86 0.98 KB 0.81 0.81 0.92 Lexgen 0.91 0.88 0.93
Yacc 0.95 0.96 0.98 Life 0.90 0.89 0.89 Simple 0.83 0.94 0.86 Ray 0.98 0.98 0.97 VLIW 0.76 0.76 0.76 Average 0.86 0.87 0.90 Table V.
This can be contrasted with
Yacc, where some amount of effort is required to make nonliteral basic symbols available to the processor.
Existing table construction methods (such as the popular Unix tools
yacc and bison) may be used with very little change.
Finally, there are programs, such as
yacc [11] that write their output on fixed name files, such as y.tab.c.
We used LEX and
YACC (2) to compile the BNF definitions.
Benchmarks PL.8 Parallelization Time (seconds) Time 16-ALU 8-ALU 4-ALU 2-ALU eqntott 50.29 11.47 8.59 5.46 4.14 espresso 168.96 107.44 81.72 49.55 33.74 li 94.75 26.47 21.64 16.36 13.19 gcc 435.87 344.88 238.54 151.53 113.94 sort 7.59 5.84 4.14 2.75 1.81
yacc 21.18 17.26 13.15 7.93 5.56 sed 12.57 7.23 5.77 3.92 2.67 compress 6.21 3.02 2.33 1.71 1.35 fgrep 4.21 1.86 1.31 0.99 0.70 Total 801.63 525.47 377.19 240.20 177.10