Syntax-Föreläsning 4: Exempel på användning av JFlex och Cup för att
generera en parser från specifikation.

Grammatiken är samma grammatik för binära träd som vi konstruerade en
rekursiv medåknings-parser för förra veckan:

BinTree --> leaf ( Number ) | branch ( BinTree , BinTree )

Filerna Main.java och ParseTree.java är väsentligen desamma som förra
veckan (mindre ändringar i Main pga att gränssnittet för den
genererade parsern är lite annorlunda än den egenkonstruerade).

Filen Lexer.java från förra veckan är nu ersatt av filen Lexer.lex,
som innehåller lexikal specifikation till JFlex.

Filen Parser.java från förra veckan är nu ersatt av filen Parser.cup,
som innehåller specifikation av grammatiken till Cup.

Filerna Token.java och SyntaxError.java med klasser för att
representera Tokens och Syntax-fel från förra veckans exempel behövs
inte längre, eftersom dessa saker tas hand om av JFlex och Cup.

Programmet kan kompileras genom att man kör "make" (på CSC:s datorer).
Eller så kan man köra kommandona individuellt:
> jflex Lexer.lex                [genererar Lexer.java]
> cup -parser Parser Parser.cup  [genererar Parser.java och sym.java]
> javac -cp /usr/share/java/cup.jar *.java

Man kan sedan starta programmet med 
java -cp /usr/share/java/cup.jar:. Main

För att provköra på filen test.in kör man alltså
java -cp /usr/share/java/cup.jar:. Main < test.in

(Sökvägen till cup.jar är för CSC:s dator
