diff --git a/shared/tools/bgf2sdf b/shared/tools/bgf2sdf new file mode 100755 index 00000000..03e3340b --- /dev/null +++ b/shared/tools/bgf2sdf @@ -0,0 +1,23 @@ +#!/bin/sh + +LOCAL=${PWD} +cd `dirname $0` +cd ../.. +SLPS=${PWD} +cd ${LOCAL} + +if [ $# -eq 1 ]; then + OUTPUT=/dev/stdout +elif [ $# -ne 2 ]; then + echo "This tool pretty-prints BGF, generating an SDF." + echo "Usage: bgf2sdf []" + echo "When output file is not specified, stdout is used." + exit 1 +elif [ ! -r $1 ]; then + echo "Oops: $1 not found or not readable." + exit 1 +else + OUTPUT=$2 +fi + +xsltproc ${SLPS}/shared/xsl/bgf2sdf.xslt $1> ${OUTPUT} diff --git a/shared/tools/xbgf2html b/shared/tools/xbgf2html new file mode 100755 index 00000000..04c9860d --- /dev/null +++ b/shared/tools/xbgf2html @@ -0,0 +1,24 @@ +#!/bin/sh + +LOCAL=${PWD} +cd `dirname $0` +cd ../.. +SLPS=${PWD} +cd ${LOCAL} + +if [ $# -eq 1 ]; then + OUTPUT=/dev/stdout +elif [ $# -ne 2 ]; then + echo "This tool transforms Transformational BGF documents to hypertext EBNF." + echo "Usage: xbgf2html []" + echo "When output file is not specified, stdout is used." + exit 1 +else + OUTPUT=$2 +fi +if [ ! -r $1 ]; then + echo "Oops: $1 not found or not readable." + exit 1 +fi + +xsltproc ${SLPS}/shared/xsl/xbgf2xhtml.xslt $1 | grep -v 'DOCTYPE' > ${OUTPUT} diff --git a/shared/xsl/bgf2dot.xslt b/shared/xsl/bgf2dot.xslt new file mode 100644 index 00000000..3b95b1d4 --- /dev/null +++ b/shared/xsl/bgf2dot.xslt @@ -0,0 +1,36 @@ + + + + + + digraph generated{ + + + + + + + } + + + + + + + + + -> + + ; + + + + + diff --git a/shared/xsl/bgf2sdf.xslt b/shared/xsl/bgf2sdf.xslt new file mode 100644 index 00000000..24aba51e --- /dev/null +++ b/shared/xsl/bgf2sdf.xslt @@ -0,0 +1,196 @@ + + + + + + + + module Main + +exports + + + context-free start-symbols + + + + + sorts + + + + + + + + + context-free syntax + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + {cons( + + )} + + + + + + + + + + + ]]> + + + + + + + + + + + * + + + + + ? + + + + " + + " + + + + + + STR + + + INT + + + + + + + + + + EMPTY + + + + ANY + + + + + + + + + + + :: + + + ( + + ) + + + + + + + + + ( + + + + + + ) + + + + + ( + + + | + + + ) + + + + + + + + + + + + + + + + + + + diff --git a/shared/xsl/xbgf2xhtml.xslt b/shared/xsl/xbgf2xhtml.xslt index a1b4be3f..ebf69050 100644 --- a/shared/xsl/xbgf2xhtml.xslt +++ b/shared/xsl/xbgf2xhtml.xslt @@ -16,17 +16,25 @@ - +
    + +
  • + +
  • +
    +
- [[ - - - ]]; - +
    + +
  • + +
  • +
    +