Skip to content
Snippets Groups Projects
Commit 60f52e8d authored by Anders Nilsson's avatar Anders Nilsson
Browse files

Synching. Working on x3d parser generation

parent f33d8153
Branches
No related tags found
No related merge requests found
...@@ -18,7 +18,9 @@ aspect AbsGrammarGeneration { ...@@ -18,7 +18,9 @@ aspect AbsGrammarGeneration {
public void Start.genAbsGrammar(PrintStream pStream) { public void Start.genAbsGrammar(PrintStream pStream) {
pStream.println("// Predefined types"); pStream.println("// Predefined types");
pStream.println("Start ::= Element*;"); pStream.println("Start ::= Specification;");
pStream.println("Specification ::= XmlHeader Element*;");
pStream.println("XmlHeader ::=;");
pStream.println("abstract Thing : ComplexElement ::=;"); pStream.println("abstract Thing : ComplexElement ::=;");
pStream.println("abstract Element;"); pStream.println("abstract Element;");
pStream.println("ComplexElement : Element ::= OwlIdentifier Attribute* Element*;"); pStream.println("ComplexElement : Element ::= OwlIdentifier Attribute* Element*;");
...@@ -27,24 +29,24 @@ aspect AbsGrammarGeneration { ...@@ -27,24 +29,24 @@ aspect AbsGrammarGeneration {
pStream.println("StringElement : SimpleElement ::= <IDENTIFIER>;"); pStream.println("StringElement : SimpleElement ::= <IDENTIFIER>;");
pStream.println("IntElement : SimpleElement ::= <INTEGER_LITERAL>;"); pStream.println("IntElement : SimpleElement ::= <INTEGER_LITERAL>;");
pStream.println("FloatElement : SimpleElement ::= <FLOAT_LITERAL>;"); pStream.println("FloatElement : SimpleElement ::= <FLOAT_LITERAL>;");
pStream.println("ClassUse : Thing ::= /decl:Thing/;"); // pStream.println("ClassUse : Thing ::= /decl:Thing/;");
pStream.println("Attribute ::= Value;"); pStream.println("Attribute ::= Value;");
pStream.println("RdfDatatype : Attribute ::= ;"); // pStream.println("RdfDatatype : Attribute ::= ;");
pStream.println("RdfId : Attribute ::= ;"); // pStream.println("RdfId : Attribute ::= ;");
pStream.println("Xmlns : Attribute ::= ;"); // pStream.println("Xmlns : Attribute ::= ;");
pStream.println("XmlnsProtege : Attribute ::= ;"); // pStream.println("XmlnsProtege : Attribute ::= ;");
pStream.println("XmlnsRdf : Attribute ::= ;"); // pStream.println("XmlnsRdf : Attribute ::= ;");
pStream.println("XmlnsXsd : Attribute ::= ;"); // pStream.println("XmlnsXsd : Attribute ::= ;");
pStream.println("XmlnsRdfs : Attribute ::= ;"); // pStream.println("XmlnsRdfs : Attribute ::= ;");
pStream.println("XmlnsOwl : Attribute ::= ;"); // pStream.println("XmlnsOwl : Attribute ::= ;");
pStream.println("XmlnsDaml : Attribute ::= ;"); // pStream.println("XmlnsDaml : Attribute ::= ;");
pStream.println("XmlnsP1 : Attribute ::= ;"); // pStream.println("XmlnsP1 : Attribute ::= ;");
pStream.println("XmlnsDc : Attribute ::= ;"); // pStream.println("XmlnsDc : Attribute ::= ;");
pStream.println("XmlBase : Attribute ::= ;"); // pStream.println("XmlBase : Attribute ::= ;");
pStream.println("RdfResource : Attribute ::= ;"); // pStream.println("RdfResource : Attribute ::= ;");
pStream.println("RdfAbout : Attribute ::= ;"); // pStream.println("RdfAbout : Attribute ::= ;");
pStream.println("RdfParseType : Attribute ::= ;"); // pStream.println("RdfParseType : Attribute ::= ;");
pStream.println("Version : Attribute ::= ;"); // pStream.println("Version : Attribute ::= ;");
pStream.println("Value ::= <STRING_LITERAL>;"); pStream.println("Value ::= <STRING_LITERAL>;");
pStream.println("OwlIdentifier ::= <IDENTIFIER>;"); pStream.println("OwlIdentifier ::= <IDENTIFIER>;");
pStream.println("AttrValue ::= <STRING_LITERAL>;"); pStream.println("AttrValue ::= <STRING_LITERAL>;");
...@@ -64,8 +66,59 @@ aspect GenJavaCC { ...@@ -64,8 +66,59 @@ aspect GenJavaCC {
} }
public void Start.genJavaCC(PrintStream pStream) { public void Start.genJavaCC(PrintStream pStream) {
genJavaCCHeader(pStream);
genJavaCCLiterals(pStream);
genJavaCCIdentifiers(pStream);
genJavaCCSeparators(pStream);
genJavaCCOperators(pStream);
pStream.println("Start Start() #Start : {}");
pStream.println("{");
pStream.println(" Specification()");
pStream.println(" { return jjThis; }");
pStream.println("}");
pStream.println();
pStream.println("void Specification() #Specification : {}");
pStream.println("{");
pStream.println(" XmlHeader()");
pStream.println(" ElementList()");
pStream.println("}");
pStream.println();
pStream.println("void XmlHeader() #XmlHeader : {}");
pStream.println("{");
pStream.println(" \"<?\" <XML> AttributeList() \"?>\"");
pStream.println("}");
pStream.println();
pStream.println("void ElementList() #List : {}");
pStream.println("{");
pStream.println(" (Element())*");
pStream.println("}");
pStream.println();
pStream.println("void AttributeList() #List : {}");
pStream.println("{");
pStream.println(" (Attribute())*");
pStream.println("}");
pStream.println();
pStream.println("void Element() : {}");
pStream.println("{");
pStream.println(" ");
pStream.println("}");
pStream.println();
pStream.println("void Attribute() : {}");
pStream.println("{");
pStream.println(" ");
pStream.println("}");
}
void XsElement.genJavaCC(PrintStream pStream) {
String name = getName();
pStream.println("void "+name+"() #"+name+" : {}");
pStream.println("{");
pStream.println(" \"<\" <"+name.toUpperCase()+"> AttributeList() \">\"");
pStream.println(" ElementList()");
pStream.println(" \"</\" <"+name.toUpperCase()+"> \">\"");
pStream.println("}");
} }
} }
// aspect GenAspects { // aspect GenAspects {
......
...@@ -18,11 +18,11 @@ aspect JavaCCChunks { ...@@ -18,11 +18,11 @@ aspect JavaCCChunks {
pStream.println(" STATIC = false;"); pStream.println(" STATIC = false;");
pStream.println("} "); pStream.println("} ");
pStream.println(); pStream.println();
pStream.println("PARSER_BEGIN(SiarasParser)"); pStream.println("PARSER_BEGIN(XmlParser)");
pStream.println(" package AST;"); pStream.println(" package AST;");
pStream.println(" public class SiarasParser {"); pStream.println(" public class XmlParser {");
pStream.println("}"); pStream.println("}");
pStream.println("PARSER_END(SiarasParser)"); pStream.println("PARSER_END(XmlParser)");
pStream.println(); pStream.println();
pStream.println("//----------------------------------------------//"); pStream.println("//----------------------------------------------//");
pStream.println("// LEXICAL TOKENS //"); pStream.println("// LEXICAL TOKENS //");
...@@ -43,7 +43,6 @@ aspect JavaCCChunks { ...@@ -43,7 +43,6 @@ aspect JavaCCChunks {
pStream.println("SPECIAL_TOKEN : /* COMMENTS */ "); pStream.println("SPECIAL_TOKEN : /* COMMENTS */ ");
pStream.println("{"); pStream.println("{");
pStream.println(" < \"<!--\" ( ~[\"-\"] | ( \"-\" ~[\"-\"] ) )* \"-->\">"); pStream.println(" < \"<!--\" ( ~[\"-\"] | ( \"-\" ~[\"-\"] ) )* \"-->\">");
pStream.println(" | < \"<rdfs:comment\" ( ~[\"<\"] | ( \"<\" ~[\"/\"] ) )* \"</rdfs:comment>\" >");
pStream.println("}// COMMENTS"); pStream.println("}// COMMENTS");
pStream.println(); pStream.println();
} }
......
<!--
Targets for working from terminal window:
build (default) - generates java files and compiles them
clean - removes all generated files and class files
Targets for working from Eclipse:
gen - generates java files
genClean - removes all generated files and their class files
-->
<project name="OntologyCompiler" default="build" basedir=".">
<!-- "package" is the directory where generated files will be stored -->
<property name="package" value="AST"/>
<!-- "tools" is the directory where generators and libraries are located. -->
<property name="tools" value="../tools"/>
<property name="javacc.home" value="../tools/javacc-4.0"/>
<property name="parser.name" value="Parser"/>
<!-- "jflex" is an ant task class for the scanner generator in JFlex.jar -->
<!-- <taskdef name="jflex" classname="JFlex.anttask.JFlexTask" classpath="tools/JFlex.jar"/> -->
<!-- "beaver" is an ant task class for the parser generator in beaver.jar -->
<!-- <taskdef name="beaver" classname="beaver.comp.run.AntTask" classpath="tools/beaver.jar"/> -->
<!-- "jastadd" is an ant task class in jastadd2.jar -->
<taskdef name="jastadd" classname="jastadd.JastAddTask" classpath="../tools/jastadd2.jar"/>
<!-- compile sources -->
<target name="build" depends="gen">
<javac compiler="jikes" debug="true" nowarn="true" srcdir="." includes="**/*.java" excludes="tools/** siaras/**" classpath=".:${tools}/beaver-rt.jar:${tools}/junit.jar"/>
</target>
<!-- generate compiler source files -->
<target name="gen" description="Generate compiler source files">
<!-- create AST node types and weave aspect modules -->
<echo message = "Running JastAdd"/>
<!-- <jastadd package="${package}" rewrite="true" beaver="true" novisitcheck="true"> -->
<jastadd package="${package}" grammar="${parser.name}" rewrite="true" jjtree="true">
<fileset dir=".">
<include name="*.ast"/>
<include name="*.jrag"/>
<include name="*.jadd"/>
</fileset>
</jastadd>
<jjtree
target="x3d.jjt"
outputdirectory="${package}"
javacchome="${javacc.home}"
buildnodefiles="true"
static="false"
multi="true"
visitor="true"
nodedefaultvoid="true"
nodeprefix='""'
nodepackage="${package}"
/>
<javacc
target="${package}/x3d.jj"
outputdirectory="${package}"
javacchome="${javacc.home}"
buildparser="true"
buildtokenmanager="true"
static="false"
/>
<!-- generate the scanner -->
<!-- <echo message = "Running jflex"/> -->
<!-- <jflex file="parser/java14.flex" outdir="parser" nobak="yes"/> -->
<!-- generate the scanner -->
<!-- <jflex file="parser/unicode.flex" outdir="parser" nobak="yes"/> -->
<!-- generate the parser phase 1, create a full .lalr specification from fragments-->
<!-- <echo message = "Running parser phase 1"/> -->
<!-- <concat destfile="parser/JavaParser.all" binary="true"> -->
<!-- <fileset dir="."> -->
<!-- <include name="parser/java14.parser"/> -->
<!-- </fileset> -->
<!-- </concat> -->
<!-- generate the parser phase 2, translating .lalr to .beaver -->
<!-- <java classpath="${tools}/proj.jar:${tools}/beaver-rt.jar" classname="Main"> -->
<!-- <arg line="parser/JavaParser.all parser/JavaParser.beaver"/> -->
<!-- </java> -->
<!-- generate the parser phase 3, translating .beaver to .java -->
<!-- <beaver file="parser/JavaParser.beaver" terminalNames="yes" compress="no" useSwitch="yes"/> -->
</target>
<target name="test" depends="build">
<java classname="GenCompiler" classpath=".">
<arg value="GripperOntology_experimental3.owl" />
</java>
</target>
<!-- remove generated source files and .class files -->
<target name="clean" depends="cleanGen">
<!-- delete all .class files recursively -->
<delete>
<fileset dir="." includes="**/*.class" excludes="beaver/*.class"/>
</delete>
</target>
<target name="jar" depends="build">
<jar destfile="X3DCompiler.jar" basedir="." includes="**/*.class" excludes="test/**">
<manifest>
<attribute name="Main-Class" value="GenOntology"/>
</manifest>
</jar>
</target>
<!-- remove generated source files and their .class files -->
<target name="cleanGen">
<delete dir="${package}"/>
</target>
</project>
...@@ -299,7 +299,7 @@ SPECIAL_TOKEN : /* COMMENTS */ ...@@ -299,7 +299,7 @@ SPECIAL_TOKEN : /* COMMENTS */
//--------------------------------------------------------------------// //--------------------------------------------------------------------//
// THE OWL LANGUAGE GRAMMAR // // THE XMLSCHEMA GRAMMAR //
//--------------------------------------------------------------------// //--------------------------------------------------------------------//
Start Start() #Start : {} Start Start() #Start : {}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment