#!/bin/bash

SRCDIR=`pwd`

cd org/eclipse/photran/internal/core/parser

echo Deleting old files...
rm -f *.java

echo Generating parser and AST classes...
#	-prec "<LblDef>, <Label>, T_ICON > <SelectTypeBody>" \
#	-reduce "<SectionSubscript>" "<SubroutineArg>" \
#java -Xmx256M -cp $SRCDIR/ludwig.jar:/Users/joverbey/Documents/eclipse/ludwig-workspace/bz.over.templates/lib/js.jar \
java -Xmx512M -cp $SRCDIR/ludwig.jar:/Users/joverbey/Documents/eclipse/ludwig-workspace/bz.over.templates/lib/js.jar \
	Main_LALR1_Java_AST_Prototype \
	-shift T_COMMA "<IoControlSpecList>" \
	-reduce "<SFVarName>" "<SFDummyArgName>" \
	-package "org.eclipse.photran.internal.core.parser" \
	-prec "<DeferredShapeSpecList> > <AssumedShapeSpec>" \
	-prec "<BodyPlusInternals> < <Label>, T_ICON" \
	-prec "<TypeBoundProcedurePart> < T_ICON" \
	-shift T_IDENT "<CommonBlock>" \
	-imports "import org.eclipse.photran.internal.core.lexer.*; \
                  import org.eclipse.photran.internal.core.analysis.binding.ScopingNode; \
                  import org.eclipse.photran.internal.core.SyntaxException; \
                  import java.io.IOException;" \
	-description "An LALR(1) parser for Fortran 2003" \
	-throws "IOException, LexerException, SyntaxException" \
	-onError "throw new SyntaxException(lookahead);" \
	-lexerClass IAccumulatingLexer \
	-parserClass Parser \
	-tokenType "org.eclipse.photran.internal.core.lexer.Token" \
	-autolabel true \
	-genTerminalClass false \
	-genLexerInterface false \
	-genTokenClass false \
	-enablePreproc IPreprocessorReplacement \
	$SRCDIR/fortran2003.bnf

echo Applying patches...
for file in *.java; do
  patch $file <$SRCDIR/Copyright.patch >/dev/null
done

echo "Done"
find . -name "*.rej"
