From 5061ece1f56ded9bc6b0babd69f84e264d33f6a0 Mon Sep 17 00:00:00 2001 From: grammarware Date: Thu, 30 Sep 2010 10:36:13 +0000 Subject: [PATCH] normalization activities go to transformation, not to presentation; internal tools are introduced; BGF-TXL-BGF progress git-svn-id: https://slps.svn.sourceforge.net/svnroot/slps@837 ab42f6e0-554d-0410-b580-99e487e6eeb2 --- shared/internals/confixiterations | 30 +++++++++++++++++ shared/internals/fixtxlxml | 32 +++++++++++++++++++ shared/internals/markgroups | 28 ++++++++++++++++ shared/tools/spec2bgf | 7 ++-- shared/tools/txl2bgf | 22 ++++--------- topics/export/txl/Makefile | 2 +- topics/export/txl/bgf2txl.xslt | 6 ++-- topics/extraction/txl/txl2bgf.xslt | 5 +++ .../normalization}/postfix2confix.xslt | 0 9 files changed, 108 insertions(+), 24 deletions(-) create mode 100755 shared/internals/confixiterations create mode 100755 shared/internals/fixtxlxml create mode 100755 shared/internals/markgroups rename topics/{extraction/w3c => transformation/normalization}/postfix2confix.xslt (100%) diff --git a/shared/internals/confixiterations b/shared/internals/confixiterations new file mode 100755 index 00000000..e4de37bc --- /dev/null +++ b/shared/internals/confixiterations @@ -0,0 +1,30 @@ +#!/bin/sh +# Takes in: +# ... +# Returns: +# ... +# And takes in: +# ... +# Returns: +# ... +# And takes in: +# ... +# Returns: +# ... + +LOCAL=${PWD} +cd `dirname $0` +cd ../.. +SLPS=${PWD} +cd ${LOCAL} + +if [ ! -r $1 ]; then + echo "Oops: $1 not found or not readable." + exit 255 +elif [ $# -eq 2 ]; then + /usr/local/bin/xsltproc ${SLPS}/topics/transformation/normalization/postfix2confix.xslt $1 > $2 +else + echo "Internal tool: use at your own risk! Turns postfix iteration constructs to confix ones." + echo "Usage: confixiterations " + exit 1 +fi diff --git a/shared/internals/fixtxlxml b/shared/internals/fixtxlxml new file mode 100755 index 00000000..5d115dd1 --- /dev/null +++ b/shared/internals/fixtxlxml @@ -0,0 +1,32 @@ +#!/bin/sh +# Takes in: +# repeat ... +# Returns: +# repeat_... +# And takes in: +# opt ... +# Returns: +# opt_... + +LOCAL=${PWD} +cd `dirname $0` +cd ../.. +SLPS=${PWD} +cd ${LOCAL} + +if [ ! -r $1 ]; then + echo "Oops: $1 not found or not readable." + exit 255 +elif [ $# -eq 2 ]; then + cp $1 $2 + perl -pi -w -e 's/repeat statement/repeat_statement/g;' $2 + perl -pi -w -e 's/repeat compound/repeat_compound/g;' $2 + perl -pi -w -e 's/repeat literalOrType/repeat_literalOrType/g;' $2 + perl -pi -w -e 's/repeat literalOrVariable/repeat_literalOrVariable/g;' $2 + perl -pi -w -e 's/repeat barLiteralsAndTypes/repeat_barLiteralsAndTypes/g;' $2 + perl -pi -w -e 's/opt typeRepeater/opt_typeRepeater/g;' $2 +else + echo "Internal tool: use at your own risk! Fixes spaces in XML tag names produced by TXL." + echo "Usage: fixtxlxml " + exit 1 +fi diff --git a/shared/internals/markgroups b/shared/internals/markgroups new file mode 100755 index 00000000..e1e80578 --- /dev/null +++ b/shared/internals/markgroups @@ -0,0 +1,28 @@ +#!/bin/sh +# Takes in: +# ( +# Returns: +# +# And takes in: +# ) +# Returns: +# + +LOCAL=${PWD} +cd `dirname $0` +cd ../.. +SLPS=${PWD} +cd ${LOCAL} + +if [ ! -r $1 ]; then + echo "Oops: $1 not found or not readable." + exit 255 +elif [ $# -eq 2 ]; then + cp $1 $2 + perl -pi -w -e 's/\(<\/unknown>//g;' $2 + perl -pi -w -e 's/\)<\/unknown>/<\/bgf:expression><\/sequence>/g;' $2 +else + echo "Internal tool: use at your own risk! Turns parentheses to BGF sequences." + echo "Usage: markgroups " + exit 1 +fi diff --git a/shared/tools/spec2bgf b/shared/tools/spec2bgf index 0326c97e..760933a8 100755 --- a/shared/tools/spec2bgf +++ b/shared/tools/spec2bgf @@ -16,11 +16,10 @@ elif [ $# -eq 2 ]; then perl -pi -w -e 's/\)\?<\/unknown>/\)<\/unknown>/g;' $1.tmp perl -pi -w -e 's/\?\)\?<\/unknown>/\)<\/unknown>/g;' $1.tmp perl -pi -w -e "s/\(\'.\'<\/unknown>/\(<\/unknown>.<\/terminal>/g;" $1.tmp - perl -pi -w -e 's/\(<\/unknown>//g;' $1.tmp - perl -pi -w -e 's/\)<\/unknown>/<\/bgf:expression><\/sequence>/g;' $1.tmp - /usr/local/bin/xsltproc ${SLPS}/topics/extraction/w3c/postfix2confix.xslt $1.tmp > $2.tmp + `dirname $0`/../internals/markgroups $1.tmp $1.tmp.2 + `dirname $0`/../internals/confixiterations $1.tmp.2 $2.tmp /usr/local/bin/xsltproc ${SLPS}/topics/extraction/w3c/cleanup.xslt $2.tmp > $2 - rm -f $1.tmp $2.tmp + rm -f $1.tmp $1.tmp.2 $2.tmp else echo "This tool transforms an XML document used by World Wide Web Consortium and produces a BGF grammar" echo "Usage: spec2bgf " diff --git a/shared/tools/txl2bgf b/shared/tools/txl2bgf index 865652b3..a109e81a 100755 --- a/shared/tools/txl2bgf +++ b/shared/tools/txl2bgf @@ -12,24 +12,14 @@ if [ ! -r $1 ]; then elif [ $# -eq 2 ]; then rm -f $2 txl $1 ${SLPS}/topics/extraction/txl/TXLGrammar/Txl/txl.txl -xml > grammar.xml - perl -pi -w -e 's/repeat statement/repeat_statement/g;' grammar.xml - perl -pi -w -e 's/repeat compound/repeat_compound/g;' grammar.xml - perl -pi -w -e 's/repeat literalOrType/repeat_literalOrType/g;' grammar.xml - perl -pi -w -e 's/repeat literalOrVariable/repeat_literalOrVariable/g;' grammar.xml - perl -pi -w -e 's/repeat barLiteralsAndTypes/repeat_barLiteralsAndTypes/g;' grammar.xml - perl -pi -w -e 's/opt typeRepeater/opt_typeRepeater/g;' grammar.xml - xsltproc ${SLPS}/topics/extraction/txl/txl2bgf.xslt grammar.xml > $2 - rm -f grammar.xml + `dirname $0`/../internals/fixtxlxml grammar.xml grammar2.xml + xsltproc ${SLPS}/topics/extraction/txl/txl2bgf.xslt grammar2.xml > $2 + echo 'rm -f grammar.xml grammar2.xml' elif [ $# -eq 1 ]; then txl $1 ${SLPS}/topics/extraction/txl/TXLGrammar/Txl/txl.txl -xml > grammar.xml - perl -pi -w -e 's/repeat statement/repeat_statement/g;' grammar.xml - perl -pi -w -e 's/repeat compound/repeat_compound/g;' grammar.xml - perl -pi -w -e 's/repeat literalOrType/repeat_literalOrType/g;' grammar.xml - perl -pi -w -e 's/repeat literalOrVariable/repeat_literalOrVariable/g;' grammar.xml - perl -pi -w -e 's/repeat barLiteralsAndTypes/repeat_barLiteralsAndTypes/g;' grammar.xml - perl -pi -w -e 's/opt typeRepeater/opt_typeRepeater/g;' grammar.xml - xsltproc ${SLPS}/topics/extraction/txl/txl2bgf.xslt grammar.xml > ${LOCAL}/`basename $1 .txl`.bgf - rm -f grammar.xml + `dirname $0`/../internals/fixtxlxml grammar.xml grammar2.xml + xsltproc ${SLPS}/topics/extraction/txl/txl2bgf.xslt grammar2.xml > ${LOCAL}/`basename $1 .txl`.bgf + rm -f grammar.xml grammar2.xml else echo "This tool extracts a BGF grammar from a TXL grammar" echo "Usage: txl2bgf []" diff --git a/topics/export/txl/Makefile b/topics/export/txl/Makefile index 2edb91cb..dee2fd79 100644 --- a/topics/export/txl/Makefile +++ b/topics/export/txl/Makefile @@ -1,4 +1,4 @@ -bgfdir = ../../storage/bgf/tests +bgfdir = ../../storage/bgf/tests.small tooldir = ../../../shared/tools test: diff --git a/topics/export/txl/bgf2txl.xslt b/topics/export/txl/bgf2txl.xslt index 548265c6..c72ee54f 100644 --- a/topics/export/txl/bgf2txl.xslt +++ b/topics/export/txl/bgf2txl.xslt @@ -99,7 +99,7 @@ function main match [ - EPSILON + [empty] EMPTY @@ -141,13 +141,13 @@ function main match [ - ( + | - ) + diff --git a/topics/extraction/txl/txl2bgf.xslt b/topics/extraction/txl/txl2bgf.xslt index fd091b4f..bc47b9fb 100644 --- a/topics/extraction/txl/txl2bgf.xslt +++ b/topics/extraction/txl/txl2bgf.xslt @@ -103,6 +103,11 @@ + + + + + diff --git a/topics/extraction/w3c/postfix2confix.xslt b/topics/transformation/normalization/postfix2confix.xslt similarity index 100% rename from topics/extraction/w3c/postfix2confix.xslt rename to topics/transformation/normalization/postfix2confix.xslt