An open API service indexing awesome lists of open source software.

https://github.com/jruby/jay

Jay grammar/parser tool
https://github.com/jruby/jay

Last synced: 2 months ago
JSON representation

Jay grammar/parser tool

Awesome Lists containing this project

README

        

This version of Berkeley Yacc was taken from the BSD-Lite CD and
targeted to Java by Axel T. Schreiner

Makefile -> makefile removed Berkeleyisms, call it jay

defs.h eliminate -dlpr options, %union, output_file,
#ident, skeleton.c references
changed line_format to char*

error.c eliminate %union

main.c eliminate -dlpr options, %union, output_file
added -c option to influence #line
switched from mktemp() to mkstemp()

output.c eliminate -dlpr options, %union, output_file
fix #define, short, -t/yyDebug
respell YYERRCODE, YYTABLESIZE, YYFINAL, YYMAXTOKEN
output trailer last
switch to filter behaviour

reader.c eliminate output_file, #ident
#line -> // line, pass //
yyvsp[] -> yyVals[yyTop], yyval -> yyVal

skeleton.c Java and C# skeletons

test removed

yacc.1 -> ../jay.1 adapted

yyfix.* removed

Types: there is a significant difference. yacc uses %union to cast
the value stack and to select alternatives. This works for
l- and r-values alike. jay uses Object as the value stack and
to set a class. l-values must not be cast. $n should not be
assigned to, but $$ usually is. $n is referenced, but $$ usually
is not. Consequently jay casts $n and $$ but not $<>n and $$.
This makes assignment to $n references to $$ kludgily possible.
As another kludge, to prevent 'untyped' messages and to avoid
unnecessary casts, casts to "Object" are not emitted.

Conflicts: the usual type table may be used but conflict/Conflict.jay
demonstrates that a trivial %nonassoc is silently ignored.

Changes from 1.0.1 to 1.0.2:

FILES new directory structure under Language Processing
package.html homepage
{cs,java}/skeleton.* min yyErrorFlag is 0 when passed to shift()

Changes from 1.0 to 1.0.1:

java/arith/makefile changed CLASSPATH
jay/reader.c(1094) fixed typo -- thanks to [email protected]

Changes from 0.9 to 1.0:

Merged C# port from mcs-0.16 at by Miguel
de Icaza . Changed naming conventions in the skeletons.

Changes from 0.8 to 0.9:

output.c Tables now written as text, top-level classes gone

skeleton.java Revamped to load tables from resource.

Changes from 0.7 to 0.8:

output.c Each generated table is now encapsulated in a top
level nested class to circumvent Java's 64K code
limit (Thanks to Andre Marburger).

skeleton Fixed to access the tables inside the classes.

yydebug/yyPrintStream Fixed NullPointerException introduced by JDK 1.2.