#!/bin/bash # Parser builder # -------------------------------------------------------- function grammar { FILE="$1" N="$2" NAME="$(echo $N | tr '[:lower:]' '[:upper:]')" DIR1="$(echo $N | tr '[:upper:]' '[:lower:]')" DIR="../src/com/hp/hpl/jena/query/parser/$DIR1" echo "---- Process grammar" javacc -OUTPUT_DIRECTORY=$DIR "${FILE}" RC=$? [ "$RC" = 0 ] || return ## echo "---- Create HTML" ## jjdoc -OUTPUT_FILE=${FILE%%.jj}.html "${FILE}" echo "---- Create text form" jjdoc -TEXT=true -OUTPUT_FILE=${FILE%%.jj}.txt "${FILE}" # Fix unnecessary imports echo "---- Fixing unused imports in ${NAME}TokenManager ..." F="$DIR/${NAME}ParserTokenManager.java" sed -e 's/import .*//' < $F > F mv F $F echo "---- Done" } # -------------------------------------------------------- function rdqlGrammar { # This one uses the old RDQL expression code via JJTree ( DIR="../src/com/hp/hpl/jena/query/parser/rdql" rm -f brql-rdql.jj jjtree -OUTPUT_DIRECTORY="$DIR" brql-rdql.jjt RC=$? mv $DIR/brql-rdql.jj . #echo "RC: $RC" if [ "$RC" = "0" ] then javacc -OUTPUT_DIRECTORY=../src/com/hp/hpl/jena/query/parser/rdql brql-rdql.jj rm brql-rdql.jj fi ) } # -------------------------------------------------------- if [ $# == 0 ] then echo "Usage: grammar [brql|rdql|arq|sparql]" 1>&2 exit 1 fi for G in "$@" do case "$G" in ## sparql|sparql.jj) ## # The parser that is used for query execution ## grammar sparql.jj SPARQL ## ;; sparql|sparql.jj) # The parser that is exactly the working group grammar. grammar sparql.jj SPARQL ;; rdql|brql) echo "Tread carefully" 1>&2 rdqlGrammar ;; arq|arq.jj) grammar arq.jj ARQ ;; all) grammar sparql.jj SPARQL grammar arq.jj ARQ rdqlGrammar ;; *) echo "**** Unknown grammar: $G" 1>&2 ;; esac done