From 01f88151fa34b6849ec96b7efca48662e7be5e69 Mon Sep 17 00:00:00 2001 From: Anders Nilsson <anders.nilsson@cs.lth.se> Date: Tue, 9 Jan 2007 16:27:14 +0100 Subject: [PATCH] Synching. Nothing works yet --- .bzrignore | 2 + Dumper.java | 17 ++ GenCompiler.java | 44 ++-- Parser.java | 4 +- build.xml | 2 +- examples/x3d-3.0.xsd | 70 ------- xmlschema.ast | 72 +++++++ xmlschema.jjt | 467 ++++++++++--------------------------------- 8 files changed, 219 insertions(+), 459 deletions(-) create mode 100644 .bzrignore create mode 100644 Dumper.java create mode 100644 xmlschema.ast diff --git a/.bzrignore b/.bzrignore new file mode 100644 index 0000000..526e9d3 --- /dev/null +++ b/.bzrignore @@ -0,0 +1,2 @@ +AST +*.class diff --git a/Dumper.java b/Dumper.java new file mode 100644 index 0000000..879deac --- /dev/null +++ b/Dumper.java @@ -0,0 +1,17 @@ +/* + * Copyright (C) 2006 Anders Nilsson <anders.nilsson@cs.lth.se> + * + * This file is part of OntologyCompiler. + */ + + +import AST.Start; + +public class Dumper extends Parser { + public static void main(String args[]) { + Start ast = parse(args); + + // Dump the AST + ast.dumpTree(" ", System.out); + } +} diff --git a/GenCompiler.java b/GenCompiler.java index 39dca6e..2a0b43d 100644 --- a/GenCompiler.java +++ b/GenCompiler.java @@ -14,31 +14,31 @@ public class GenCompiler extends Parser { public static void main(String args[]) { Start ast = parse(args); - File siarasDir = new File("siaras"); - if (!siarasDir.isDirectory()) { - siarasDir.mkdir(); - } +// File siarasDir = new File("siaras"); +// if (!siarasDir.isDirectory()) { +// siarasDir.mkdir(); +// } - String fileName = null; - try { - // Generate JastAdd abstract grammar - fileName = "siaras/Siaras.ast"; - PrintStream pStream = new PrintStream(new File(fileName)); - ast.genAbsGrammar(pStream); +// String fileName = null; +// try { +// // Generate JastAdd abstract grammar +// fileName = "siaras/Siaras.ast"; +// PrintStream pStream = new PrintStream(new File(fileName)); +// ast.genAbsGrammar(pStream); - // Generate Parser.java - fileName = "siaras/Parser.java"; - pStream = new PrintStream(new File(fileName)); - ast.genParser(pStream); +// // Generate Parser.java +// fileName = "siaras/Parser.java"; +// pStream = new PrintStream(new File(fileName)); +// ast.genParser(pStream); - // Generate aspects - fileName = "siaras/GeneratedAspects.jrag"; - pStream = new PrintStream(new File(fileName)); - ast.genAspects(pStream); +// // Generate aspects +// fileName = "siaras/GeneratedAspects.jrag"; +// pStream = new PrintStream(new File(fileName)); +// ast.genAspects(pStream); - } catch (java.io.FileNotFoundException e) { - System.out.println("Could not create file: "+fileName); - e.printStackTrace(); - } +// } catch (java.io.FileNotFoundException e) { +// System.out.println("Could not create file: "+fileName); +// e.printStackTrace(); +// } } } diff --git a/Parser.java b/Parser.java index 637889a..0f7c6f9 100644 --- a/Parser.java +++ b/Parser.java @@ -10,7 +10,7 @@ import java.io.FileReader; import java.io.InputStreamReader; import java.io.Reader; -import AST.OwlParser; +import AST.SchemaParser; import AST.ParseException; import AST.Start; @@ -20,7 +20,7 @@ public class Parser { Reader r = getReader(args); Start ast = null; try { - OwlParser parser = new OwlParser(r); + SchemaParser parser = new SchemaParser(r); ast = parser.Start(); } catch (ParseException e) { diff --git a/build.xml b/build.xml index d845542..d8c5300 100644 --- a/build.xml +++ b/build.xml @@ -1,4 +1,4 @@ -!-- +<!-- Targets for working from terminal window: build (default) - generates java files and compiles them clean - removes all generated files and class files diff --git a/examples/x3d-3.0.xsd b/examples/x3d-3.0.xsd index 09b9cb8..b2654f2 100644 --- a/examples/x3d-3.0.xsd +++ b/examples/x3d-3.0.xsd @@ -8,76 +8,6 @@ <!--======================================================================--> <xs:annotation> <xs:appinfo>XML Schema for the Extensible 3D (X3D) Graphics Specification tagset</xs:appinfo> - <xs:documentation><![CDATA[ -============================================================================= - -X3D Specification Schema: http://www.web3d.org/specifications/x3d-3.0.xsd - -Schema extensions: http://www.web3d.org/specifications/x3d-3.0-Web3dExtensionsPublic.xsd - http://www.web3d.org/specifications/x3d-3.0-Web3dExtensionsPrivate.xsd - -Web3D extensions update URL: http://www.web3d.org/x3d/content/x3d-3.0-Web3dExtensionsPublic.xsd - -Revised: 10 January 2006 - -Author: Don Brutzman - -Acknowledgements: -- Thanks for excellent insights and assistance from Len Bullard, - Justin Couch, Leonard Daly, Paul Diefenbach, Rick Goldberg, Bryan Housel, - Alan Hudson, Chris Lilley, Braden McDaniel, Tony Parisi, Nick Polys, - Dick Puk, Jeff Sonstein, C. Michael Sperberg-McQueen, Henry Thompson - and Joe Williams. -- Rick Goldberg of the Sun Java3D team wrote the first two versions of the - SAI API using IDL, and provided invaluable help on the schema-based SAI. -- Joe Williams of HyperMultiMedia documented and further developed - the scene graph interface hierarchy, making this schema possible. -- Alan Hudson added many default values and performed consistency checks. - -- XML Schema validator: http://www.w3.org/2001/03/webdata/xsv - -Design summary: -- Schemas define XML tagsets in depth using a native-XML format. -- Schemas are an alternative to Document Type Definitions (DTDs). -- This X3D Schema matches the functionality of the X3D DTD and - provides significant further capabilities, including strong type - checking of both node and attribute values. -- An XSLT stylesheet can be applied to this schema to autogenerate - source code for the Scene Authoring Interface (SAI), documentation - of node lists, etc. - -Design patterns: -- X3D nodes implement X3D node types and are represented by XML elements. -- X3D non-node fields are represented by XML attributes using field types. -- X3D field types are represented by XML Schema (xsd) simpleTypes. -- XML Schema list types are used to augment XML Schema simple types, to - create arrays of X3D base types (integerList etc). -- X3D node types (X3DGroupingNode etc.) are represented by Schema complexTypes. -- X3D node types are captured as XML Schema complexType definitions. These match - the X3D interface hierarchy, capture strong typing of node relationships, and collect - common attributes shared among node types. These features also provide functional - consistency between scene graph content and the X3D Scene Authoring Interface (SAI) - application programming interface (API). -- XML Schema xs:group element definitions provide child-node content models, - since complexTypes can't be used as references to unnamed element children. - -X3D Schema version numbering: -- 0.4 Nodes for Core and Base profiles (20 November 2000) -- 0.5 Nodes for DIS, GeoSpatial, HumanoidAnimation, Nurbs, any others in Full profile -- 0.6 Autogenerated Scene Authoring Interface (SAI). First show Java interfaces, - then show multiple formats including Interface Description Language (IDL) - and matching Java classes that implement the Java interfaces -- 0.7 Resolution of compromise/compact representations (wrapper tags), and use of - DTD internal parameter-entity names updated to match interface hierarchy - naming scheme -- 0.8 Exemplar content and authoring tools that correspond to X3D Schema tagset -- 2.9 Public review and Xj3D open-source implementation version -- 3.0 X3D Task Group consensus for inclusion in X3D Specification -- 3.1 X3D Specification Amendment 1 -- 3.2 X3D Specification Amendment 2 - -============================================================================= -]]></xs:documentation> </xs:annotation> <!--======================================================================--> <!--Several pattern possibilities for urls/URNs are conceivable, perhaps a type definition or regex pattern is preferable.--> diff --git a/xmlschema.ast b/xmlschema.ast new file mode 100644 index 0000000..61d42fc --- /dev/null +++ b/xmlschema.ast @@ -0,0 +1,72 @@ +// -*-Java-*- + + +// Copyright (C) 2006 Anders Nilsson <anders.nilsson@cs.lth.se> +// +// This file is part of OntologyCompiler. + + +Start ::= Specification; + +Specification ::= XmlHeader; // RdfDeclaration; + +XmlHeader ::= Attribute*; + +abstract Element; +abstract ComplexElement : Element ::= Attribute* Element*; + +XsAnnotation : ComplexElement; +XsDocumentation : ComplexElement; +XsInclude : ComplexElement; +XsRestriction : ComplexElement; +XsSimpleType : ComplexElement; +XsSchema : ComplexElement; + + +abstract SimpleElement : Element; +StringElement : SimpleElement ::= <IDENTIFIER>; +IntElement : SimpleElement ::= <INTEGER_LITERAL>; +FloatElement : SimpleElement ::= <FLOAT_LITERAL>; + +abstract Attribute ::= Value; +AttributeFormDefault : Attribute; +Base : Attribute; +ElementFormDefault : Attribute; +Encoding : Attribute; +Source : Attribute; +SchemaLocation : Attribute; +Version : Attribute; +XmlnsXs : Attribute; +// RdfAbout : Attribute; +// RdfDatatype : Attribute; +// RdfId : Attribute; +// RdfParseType : Attribute; +// RdfResource : Attribute; +// XmlBase : Attribute; +// Xmlns : Attribute; +// XmlnsDaml : Attribute; +// XmlnsDc : Attribute; +// XmlnsP1 : Attribute; +// XmlnsProtege : Attribute; +// XmlnsRdf : Attribute; +// XmlnsXsd : Attribute; +// XmlnsRdfs : Attribute; +// XmlnsOwl : Attribute; + +// DiscardedElement : Element ::= Identifier Attribute* Element*; + +Value ::= <STRING_LITERAL>; +// Identifier ::= <IDENTIFIER>; + +// // Types used by rewrite rules +// abstract OClass : ComplexElement ::= <Id:String>; +// OwlClassDecl : OClass; +// OwlClassUse : OClass; + +// abstract OwlValuesFrom: ComplexElement; + + +// Properties ::= Property:Element*; +// Restrictions ::= OwlRestriction*; + +// abstract OwlProperty : ComplexElement; diff --git a/xmlschema.jjt b/xmlschema.jjt index 31bd7ee..b4abcc1 100644 --- a/xmlschema.jjt +++ b/xmlschema.jjt @@ -14,9 +14,9 @@ options { NODE_PREFIX = ""; JAVA_UNICODE_ESCAPE = true; STATIC = false; -// DEBUG_PARSER = true; -// DEBUG_LOOKAHEAD = true; -// DEBUG_TOKEN_MANAGER = true; + DEBUG_PARSER = true; +// DEBUG_LOOKAHEAD = true; + DEBUG_TOKEN_MANAGER = true; } // options @@ -66,53 +66,22 @@ SPECIAL_TOKEN : /* COMMENTS */ <DEFAULT, BOUNDS> TOKEN : /* RESERVED WORDS AND LITERALS */ { -// < OWL_ALLVALUESFROM : "owl:allValuesFrom" > -// | < OWL_ALLDIFFERENT : "owl:AllDifferent" > -// | < OWL_CARDINALITY : "owl:cardinality" > -// | < OWL_CLASS : "owl:Class" > -// | < OWL_DATARANGE : "owl:DataRange" > -// | < OWL_DATATYPEPROPERTY : "owl:DatatypeProperty" > -// | < OWL_DISJOINTWITH : "owl:disjointWith" > -// | < OWL_DISTINCTMEMBERS : "owl:distinctMembers" > -// | < OWL_EQUIVALENTCLASS : "owl:equivalentClass" > -// | < OWL_FUNCTIONALPROPERTY : "owl:FunctionalProperty" > -// | < OWL_IMPORTS : "owl:imports" > -// | < OWL_INTERSECTIONOF : "owl:intersectionOf" > -// | < OWL_INVERSEOF : "owl:inverseOf" > -// | < OWL_MINCARDINALITY : "owl:minCardinality" > -// | < OWL_OBJECTPROPERTY : "owl:ObjectProperty" > -// | < OWL_ONPROPERTY : "owl:onProperty" > -// | < OWL_ONEOF : "owl:oneOf" > -// | < OWL_ONTOLOGY : "owl:Ontology" > -// | < OWL_RESTRICTION : "owl:Restriction" > -// | < OWL_SOMEVALUESFROM : "owl:someValuesFrom" > -// | < OWL_UNIONOF : "owl:unionOf" > -// | < RDF_RDF : "rdf:RDF" > -// | < RDF_ABOUT : "rdf:about" > -// | < RDF_DATATYPE : "rdf:datatype" > -// | < RDF_ID : "rdf:ID" > -// | < RDF_FIRST : "rdf:first" > -// | < RDF_REST : "rdf:rest" > -// | < RDF_PARSETYPE : "rdf:parseType" > -// | < RDF_RESOURCE : "rdf:resource" > -// | < RDF_TYPE : "rdf:type" > -// | < RDFS_COMMENT : "rdfs:comment" > -// | < RDFS_DOMAIN : "rdfs:domain" > -// | < RDFS_RANGE : "rdfs:range" > -// | < RDFS_SUBCLASSOF : "rdfs:subClassOf" > -// | < RDFS_SUBPROPERTYOF : "rdfs:subPropertyOf" > -// | < VERSION : "version" > -// | < XML : "xml" > -// | < XML_BASE : "xml:base" > -// | < XMLNS : "xmlns" > -// | < XMLNS_DAML : "xmlns:daml" > -// | < XMLNS_DC : "xmlns:dc" > -// | < XMLNS_P1 : "xmlns:p1" > -// | < XMLNS_PROTEGE : "xmlns:protege" > -// | < XMLNS_RDF : "xmlns:rdf" > -// | < XMLNS_XSD : "xmlns:xsd" > -// | < XMLNS_RDFS : "xmlns:rdfs" > -// | < XMLNS_OWL : "xmlns:owl" > + < XS_ANNOTATION : "xs:annotation" > + | < XS_APPINFO : "xs:appinfo" > + | < XS_DOCUMENTATION : "xs:documentation" > + | < XS_INCLUDE : "xs:include" > + | < XS_RESTRICTION : "xs:restriction" > + | < XS_SCHEMA : "xs:schema" > + | < XS_SIMPLETYPE : "xs:simpleType" > + | < ATTRIBUTEFORMDEFAULT : "attributeFormDefault" > + | < BASE : "base" > + | < ELEMENTFORMDEFAULT : "elementFormDefault" > + | < ENCODING : "encoding" > + | < SCHEMALOCATION : "schemaLocation" > + | < SOURCE : "source" > + | < VERSION : "version" > + | < XML : "xml" > + | < XMLNS_XS : "xmlns:xs" > }// RESERVED WORDS AND LITERALS <DEFAULT, BOUNDS> TOKEN : /* LITERALS */ @@ -221,9 +190,9 @@ SPECIAL_TOKEN : /* COMMENTS */ <DEFAULT,BOUNDS> TOKEN : /* SEPARATORS */ { -// < LPAREN : "(" > -// | < RPAREN : ")" > - < LBRACE : "{" > + < LPAREN : "(" > + | < RPAREN : ")" > + | < LBRACE : "{" > | < RBRACE : "}" > | < LBRACKET : "[" > | < RBRACKET : "]" > @@ -236,8 +205,9 @@ SPECIAL_TOKEN : /* COMMENTS */ <DEFAULT,BOUNDS> TOKEN : /* OPERATORS */ { < ASSIGN : "=" > -// | < GT : ">" > -// | < LT : "<" > + | < GT : ">" > + | < END_TAG : "</" > + | < LT : "<" > // | < BANG : "!" > // | < TILDE : "~" > // | < HOOK : "?" > @@ -294,7 +264,7 @@ Start Start() #Start : {} void Specification() #Specification : {} { XmlHeader() - RdfDeclaration() + XsSchema() } void XmlHeader() #XmlHeader : {} @@ -302,11 +272,11 @@ void XmlHeader() #XmlHeader : {} "<?" <XML> AttributeList() "?>" } -void RdfDeclaration() #RdfDeclaration : {} +void XsSchema() #XsSchema : {} { - "<" <RDF_RDF> AttributeList() ">" + "<" <XS_SCHEMA> AttributeList() ">" ElementList() - "</" <RDF_RDF> ">" + "</" <XS_SCHEMA> ">" } void ElementList() #List : {} @@ -316,260 +286,90 @@ void ElementList() #List : {} void Element() : {} { - ( "<" ( OwlElement() - | RdfElement() - | DiscardedElement() + ( "<" (XsAnnotation() + | XsAppinfo() + | XsDocumentation() + | XsInclude() + | XsRestriction() + | XsSimpleType() )) - | SimpleElement() + | SimpleElement() } -void DiscardedElement() #DiscardedElement : {} +void XsAnnotation() #XsAnnotation : {} { - Identifier() AttributeList() - (">" ElementList() "</" <IDENTIFIER> ">" | ElementList() "/>") + <XS_ANNOTATION> AttributeList() + (">" ElementList() "</" <XS_ANNOTATION> ">" | ElementList() "/>") } -void Identifier() #Identifier : {Token t;} +void XsAppinfo() #XsAppinfo : {} { - t = <IDENTIFIER> - {jjtThis.setIDENTIFIER(t.image);} -} - -void SimpleElement() : {} -{ - IntElement() - | FloatElement() - | StringElement() -} - -void IntElement() #IntElement : { Token t; } -{ - t = <INTEGER_LITERAL> - {jjtThis.setINTEGER_LITERAL(t.image);} -} - -void FloatElement() #FloatElement : { Token t; } -{ - t = <FLOAT_LITERAL> - {jjtThis.setFLOAT_LITERAL(t.image);} -} - -void StringElement() #StringElement : { Token t; } -{ - t = <IDENTIFIER> | t = <COMMA> | t = <MINUS> | t = <DOT> | t = <PLUS> | t = <SLASH> - | t = <COLON> - {jjtThis.setIDENTIFIER(t.image);} -} - -void OwlElement() : {} -{ - OwlOntology() - | OwlAllDifferent() - | OwlAllValuesFrom() - | OwlCardinality() - | OwlClass() - | OwlDataRange() - | OwlDatatypeProperty() - | OwlDisjointWith() - | OwlDistinctMembers() - | OwlEquivalentClass() - | OwlFunctionalProperty() - | OwlImports() - | OwlIntersectionOf() - | OwlInverseOf() - | OwlMinCardinality() - | OwlObjectProperty() - | OwlOneOf() - | OwlOnProperty() - | OwlSomeValuesFrom() - | OwlRestriction() - | OwlUnionOf() -} - -void OwlOntology() #OwlOntology : {} -{ - <OWL_ONTOLOGY> AttributeList() - (">" ElementList() "</" <OWL_ONTOLOGY> ">" | ElementList() "/>") -} - -void OwlAllDifferent() #OwlAllDifferent : {} -{ - <OWL_ALLDIFFERENT> AttributeList() - (">" ElementList() "</" <OWL_ALLDIFFERENT> ">" | ElementList() "/>") -} - -void OwlAllValuesFrom() #OwlAllValuesFrom : {} -{ - <OWL_ALLVALUESFROM> AttributeList() - (">" ElementList() "</" <OWL_ALLVALUESFROM> ">" | ElementList() "/>") -} - -void OwlCardinality() #OwlCardinality : {} -{ - <OWL_CARDINALITY> AttributeList() - (">" ElementList() "</" <OWL_CARDINALITY> ">" | ElementList() "/>") -} - -void OwlClass() #OwlClass : {} -{ - <OWL_CLASS> AttributeList() - (">" ElementList() "</" <OWL_CLASS> ">" | ElementList() "/>") -} - -void OwlDataRange() #OwlDataRange : {} -{ - <OWL_DATARANGE> AttributeList() - (">" ElementList() "</" <OWL_DATARANGE> ">" | ElementList() "/>") -} - -void OwlDatatypeProperty() #OwlDatatypeProperty : {} -{ - <OWL_DATATYPEPROPERTY> AttributeList() - (">" ElementList() "</" <OWL_DATATYPEPROPERTY> ">" | ElementList() "/>") -} - -void OwlDisjointWith() #OwlDisjointWith : {} -{ - <OWL_DISJOINTWITH> AttributeList() - (">" ElementList() "</" <OWL_DISJOINTWITH> ">" | ElementList() "/>") -} - -void OwlDistinctMembers() #OwlDistinctMembers : {} -{ - <OWL_DISTINCTMEMBERS> AttributeList() - (">" ElementList() "</" <OWL_DISTINCTMEMBERS> ">" | ElementList() "/>") -} - -void OwlEquivalentClass() #OwlEquivalentClass : {} -{ - <OWL_EQUIVALENTCLASS> AttributeList() - (">" ElementList() "</" <OWL_EQUIVALENTCLASS> ">" | ElementList() "/>") -} - -void OwlFunctionalProperty() #OwlFunctionalProperty : {} -{ - <OWL_FUNCTIONALPROPERTY> AttributeList() - (">" ElementList() "</" <OWL_FUNCTIONALPROPERTY> ">" | ElementList() "/>") -} - -void OwlImports () #OwlImports : {} -{ - <OWL_IMPORTS> AttributeList() - (">" ElementList() "</" <OWL_IMPORTS> ">" | ElementList() "/>") -} - -void OwlIntersectionOf () #OwlIntersectionOf : {} -{ - <OWL_INTERSECTIONOF> AttributeList() - (">" ElementList() "</" <OWL_INTERSECTIONOF> ">" | ElementList() "/>") -} - -void OwlInverseOf () #OwlInverseOf : {} -{ - <OWL_INVERSEOF> AttributeList() - (">" ElementList() "</" <OWL_INVERSEOF> ">" | ElementList() "/>") + <XS_APPINFO> AttributeList() + (">" ElementList() "</" <XS_APPINFO> ">" | ElementList() "/>") } -void OwlMinCardinality () #OwlMinCardinality : {} +void XsDocumentation() #XsDocumentation : {} { - <OWL_MINCARDINALITY> AttributeList() - (">" ElementList() "</" <OWL_MINCARDINALITY> ">" | ElementList() "/>") + <XS_DOCUMENTATION> AttributeList() + (">" ElementList() "</" <XS_DOCUMENTATION> ">" | ElementList() "/>") } -void OwlObjectProperty () #OwlObjectProperty : {} +void XsInclude() #XsInclude : {} { - <OWL_OBJECTPROPERTY> AttributeList() - (">" ElementList() "</" <OWL_OBJECTPROPERTY> ">" | ElementList() "/>") + <XS_INCLUDE> AttributeList() + (">" ElementList() "</" <XS_INCLUDE> ">" | ElementList() "/>") } -void OwlOneOf () #OwlOneOf : {} +void XsRestriction() #XsRestriction : {} { - <OWL_ONEOF> AttributeList() - (">" ElementList() "</" <OWL_ONEOF> ">" | ElementList() "/>") + <XS_RESTRICTION> AttributeList() + (">" ElementList() "</" <XS_RESTRICTION> ">" | ElementList() "/>") } -void OwlOnProperty () #OwlOnProperty : {} +void XsSimpleType() #XsSimpleType : {} { - <OWL_ONPROPERTY> AttributeList() - (">" ElementList() "</" <OWL_ONPROPERTY> ">" | ElementList() "/>") + <XS_SIMPLETYPE> AttributeList() + (">" ElementList() "</" <XS_SIMPLETYPE> ">" | ElementList() "/>") } -void OwlSomeValuesFrom () #OwlSomeValuesFrom : {} -{ - <OWL_SOMEVALUESFROM> AttributeList() - (">" ElementList() "</" <OWL_SOMEVALUESFROM> ">" | ElementList() "/>") -} - -void OwlRestriction () #OwlRestriction : {} -{ - <OWL_RESTRICTION> AttributeList() - (">" ElementList() "</" <OWL_RESTRICTION> ">" | ElementList() "/>") -} - -void OwlUnionOf () #OwlUnionOf : {} -{ - <OWL_UNIONOF> AttributeList() - (">" ElementList() "</" <OWL_UNIONOF> ">" | ElementList() "/>") -} - -void RdfElement() : {} -{ - RdfType() - | RdfFirst() - | RdfRest() - | RdfsComment() - | RdfsDomain() - | RdfsRange() - | RdfsSubClassOf() - | RdfsSubPropertyOf() -} - -void RdfType() #RdfType : {} -{ - <RDF_TYPE> AttributeList() - (">" ElementList() "</" <RDF_TYPE> ">" | ElementList() "/>") -} - -void RdfFirst() #RdfFirst : {} -{ - <RDF_FIRST> AttributeList() - (">" ElementList() "</" <RDF_FIRST> ">" | ElementList() "/>") -} - -void RdfRest() #RdfRest : {} -{ - <RDF_REST> AttributeList() - (">" ElementList() "</" <RDF_REST> ">" | ElementList() "/>") -} - -void RdfsComment() #RdfsComment : {} +void SimpleElement() : {} { - <RDFS_COMMENT> AttributeList() - (">" ElementList() "</" <RDFS_COMMENT> ">" | ElementList() "/>") + IntElement() + | FloatElement() + | StringElement() } -void RdfsDomain() #RdfsDomain : {} +void IntElement() #IntElement : { Token t; } { - <RDFS_DOMAIN> AttributeList() - (">" ElementList() "</" <RDFS_DOMAIN> ">" | ElementList() "/>") + t = <INTEGER_LITERAL> + {jjtThis.setINTEGER_LITERAL(t.image);} } -void RdfsRange() #RdfsRange : {} +void FloatElement() #FloatElement : { Token t; } { - <RDFS_RANGE> AttributeList() - (">" ElementList() "</" <RDFS_RANGE> ">" | ElementList() "/>") + t = <FLOAT_LITERAL> + {jjtThis.setFLOAT_LITERAL(t.image);} } -void RdfsSubClassOf() #RdfsSubClassOf : {} +void StringElement() #StringElement : { Token t;String s; } { - <RDFS_SUBCLASSOF> AttributeList() - (">" ElementList() "</" <RDFS_SUBCLASSOF> ">" | ElementList() "/>") +// t = <IDENTIFIER> | t = <COMMA> | t = <MINUS> | t = <DOT> | t = <PLUS> | t = <SLASH> +// | t = <COLON> + t = <IDENTIFIER> + { + s = t.image; + if (getToken(1).kind != LT ) { + getData(s); + } + } + {jjtThis.setIDENTIFIER(t.image);} } -void RdfsSubPropertyOf() #RdfsSubPropertyOf : {} -{ - <RDFS_SUBPROPERTYOF> AttributeList() - (">" ElementList() "</" <RDFS_SUBPROPERTYOF> ">" | ElementList() "/>") +JAVACODE +void getData(String s) { +// jjtThis.someData = true; + while ((getToken(1)).kind != END_TAG) + s += getNextToken().image; } void AttributeList() #List : {} @@ -580,117 +380,56 @@ void AttributeList() #List : {} void Attribute() : {} { Version() - | RdfAttribute() - | XmlAttribute() - | XmlnsAttribute() + | AttributeFormDefault() + | Base() + | ElementFormDefault() + | Encoding() + | Source() + | SchemaLocation() + | XmlnsXs() } -void Version() #Version : {} +void AttributeFormDefault() #AttributeFormDefault : {} { - <VERSION> <ASSIGN> Value() + <ATTRIBUTEFORMDEFAULT> <ASSIGN> Value() } -void RdfAttribute() : {} +void Base() #Base : {} { - RdfAbout() - | RdfDatatype() - | RdfId() - | RdfParseType() - | RdfResource() + <BASE> <ASSIGN> Value() } -void RdfAbout() #RdfAbout : {} +void ElementFormDefault() #ElementFormDefault : {} { - <RDF_ABOUT> <ASSIGN> Value() + <ELEMENTFORMDEFAULT> <ASSIGN> Value() } -void RdfDatatype() #RdfDatatype : {} +void Encoding() #Encoding : {} { - <RDF_DATATYPE> <ASSIGN> Value() + <ENCODING> <ASSIGN> Value() } -void RdfId() #RdfId : {} +void Source() #Source : {} { - <RDF_ID> <ASSIGN> Value() + <SOURCE> <ASSIGN> Value() } -void RdfParseType() #RdfParseType : {} +void SchemaLocation() #SchemaLocation : {} { - <RDF_PARSETYPE> <ASSIGN> Value() + <SCHEMALOCATION> <ASSIGN> Value() } -void RdfResource() #RdfResource : {} -{ - <RDF_RESOURCE> <ASSIGN> Value() -} - -void XmlAttribute() : {} -{ - XmlBase() -} - -void XmlBase() #XmlBase : {} -{ - <XML_BASE> <ASSIGN> Value() -} - -void XmlnsAttribute() : {} -{ - Xmlns() - | XmlnsDaml() - | XmlnsDc() - | XmlnsOwl() - | XmlnsP1() - | XmlnsProtege() - | XmlnsRdf() - | XmlnsRdfs() - | XmlnsXsd() -} - -void Xmlns() #Xmlns : {} -{ - <XMLNS> <ASSIGN> Value() -} - -void XmlnsDaml() #XmlnsDaml : {} -{ - <XMLNS_DAML> <ASSIGN> Value() -} - -void XmlnsDc() #XmlnsDc : {} -{ - <XMLNS_DC> <ASSIGN> Value() -} - -void XmlnsP1() #XmlnsP1 : {} -{ - <XMLNS_P1> <ASSIGN> Value() -} - -void XmlnsProtege() #XmlnsProtege : {} -{ - <XMLNS_PROTEGE> <ASSIGN> Value() -} - -void XmlnsRdf() #XmlnsRdf : {} +void Version() #Version : {} { - <XMLNS_RDF> <ASSIGN> Value() + <VERSION> <ASSIGN> Value() } -void XmlnsXsd() #XmlnsXsd : {} +void XmlnsXs() #XmlnsXs : {} { - <XMLNS_XSD> <ASSIGN> Value() + <XMLNS_XS> <ASSIGN> Value() } -void XmlnsRdfs() #XmlnsRdfs : {} -{ - <XMLNS_RDFS> <ASSIGN> Value() -} -void XmlnsOwl() #XmlnsOwl : {} -{ - <XMLNS_OWL> <ASSIGN> Value() -} void Value() #Value : { Token t; } { -- GitLab