#!/bin/bash ## Licensed to the Apache Software Foundation (ASF) under one ## or more contributor license agreements. See the NOTICE file ## distributed with this work for additional information ## regarding copyright ownership. The ASF licenses this file ## to you under the Apache License, Version 2.0 (the ## "License"); you may not use this file except in compliance ## with the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. # Parser builder GRAMMAR="${GRAMMAR:-master.jj}" # -------------------------------------------------------- function grammar { FILE="$1" PKG="$2" CLASS="$3" ## NAME="$(echo $N | tr '[:lower:]' '[:upper:]')" ## DIR1="$(echo $N | tr '[:upper:]' '[:lower:]')" DIR="../src/main/java/com/hp/hpl/jena/sparql/lang/$PKG" (cd "$DIR" ; rm -f TokenMgrError.java ParseException.java Token.java JavaCharStream.java ) echo "---- Process grammar -- $1" javacc -OUTPUT_DIRECTORY=$DIR -JDK_VERSION=1.5 "${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 Java warnings in ${NAME}TokenManager ..." F="$DIR/${CLASS}TokenManager.java" sed -e 's/import .*//' -e 's/MatchLoop: do/do/' \ -e 's/int hiByte = (int)(curChar/int hiByte = (curChar/' \ < $F > F mv F $F ## # Java5+ fixups ## echo "---- Fixing Java warnings in JavaCharStream ..." ## # Deprecated: ## # public int getColumn() ## # public int getLine() ## F="$DIR/JavaCharStream.java" ## if [ -e "$F" ] ## then ## sed -e 's/@Deprecated //' \ ## -e 's/public int getColumn/@Deprecated public int getColumn/' \ ## -e 's/public int getLine/@Deprecated public int getLine/' < $F > F ## mv F $F ## fi ## ## echo "---- Fixing Java warnings in ParseException ..." ## #Override: ## # public String getMessage() ## F="$DIR/ParseException.java" ## sed -e 's/@Override //' \ ## -e 's/public String getMessage/@Override public String getMessage/' < $F > F ## mv F $F echo "---- Fixing Java warnings in Token ..." F="$DIR/Token.java" sed -e 's/@Override //' \ -e 's/public String toString/@Override public String toString/' < $F > F mv F $F echo "---- Fixing Java warnings in TokenMgrError ..." # Override: # public String getMessage() F="$DIR/TokenMgrError.java" sed -e 's/@Override //' \ -e 's/public String getMessage/@Override public String getMessage/' < $F > F mv F $F ## echo "---- Fixing Java warnings in ${CLASS} ..." ## F="$DIR/${CLASS}.java" ## sed -e 's/for (java.util.Iterator/for (java.util.Iterator/' \ ## -e 's/(int\[\])//' < $F > F ## mv F $F echo "---- Done" } # -------------------------------------------------------- if [ $# == 0 ] then # Not sparql10 set -- sparql11 arq ## echo "Usage: grammar [arq|sparql]" 1>&2 ## exit 1 fi for G in "$@" do case "$G" in sparql10|sparql_10.jj) # SPARQL 1.0 - use a static copy. # The parser that is exactly the working group grammar. ## #### cat "$GRAMMAR" | cpp -P -C -DSPARQL -DSPARQL_10 > sparql_10.jj ## grammar sparql_10.jj sparql_10 SPARQLParser10 ## ;; echo "SPARQL 1.0 - not rebuilt" ;; sparql11|sparql_11.jj) # The parser that is exactly the working group grammar. cat "$GRAMMAR" | cpp -P -C -DSPARQL -DSPARQL_11 > sparql_11.jj grammar sparql_11.jj sparql_11 SPARQLParser11 ;; arq|arq.jj) cat "$GRAMMAR" | cpp -P -C -DARQ > arq.jj grammar arq.jj arq ARQParser ;; all) grammar sparql grammar arq # rdqlGrammar ;; *) echo "**** Unknown grammar: $G" 1>&2 ;; esac done