blob: a41eb4aa4729ac0287cdf51962cdffd8a2a8df50 [file] [log] [blame]
#!/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/org/apache/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.7 "${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/public class /\n@SuppressWarnings("all")\npublic class /' < $F > F
## sed -e 's/for (java.util.Iterator/for (java.util.Iterator<int[]>/' \
## -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 -DSPARQL -DSPARQL_10 > sparql_10.jj
## grammar sparql_10.jj sparql_10 SPARQLParser10
## ;;
echo "SPARQL 1.0 - not rebuilt"
;;
sparql11|sparql_11.jj)
# License header. cpp is run to exclude comments from \$GRAMMAR
# because thay picks up unwanted material as well as the comments
# in $GRAMMAR
cp header.jj sparql_11.jj
# The parser that is exactly the working group grammar.
cat "$GRAMMAR" | cpp -P -DSPARQL -DSPARQL_11 >> sparql_11.jj
grammar sparql_11.jj sparql_11 SPARQLParser11
;;
arq|arq.jj)
cp header.jj arq.jj
cat "$GRAMMAR" | cpp -P -DARQ - >> arq.jj
grammar arq.jj arq ARQParser
;;
all) grammar sparql
grammar arq
# rdqlGrammar
;;
*) echo "**** Unknown grammar: $G" 1>&2
;;
esac
done