diff --git a/CompilerGeneration.jrag b/CompilerGeneration.jrag index c39a7505def07f071a9e7a7caf9430309430b646..42eb2ffa46938c3fde1bbac0286611a132dda621 100644 --- a/CompilerGeneration.jrag +++ b/CompilerGeneration.jrag @@ -12,11 +12,11 @@ aspect AbsGrammarGeneration { public void Start.genAbsGrammar(PrintStream pStream) { pStream.println("// Predefined types"); - pStream.println("Start ::= Element;"); + pStream.println("Start ::= ComplexElement;"); pStream.println("abstract Thing ::=;"); pStream.println("abstract Element;"); -// pStream.println("ComplexElement ::= Attribute* Element*;"); - pStream.println("ComplexElement ::= id1:OwlIdentifier id2:OwlIdentifier;"); + pStream.println("ComplexElement ::= OwlIdentifier Attribute* Element*;"); +// pStream.println("ComplexElement ::= id1:OwlIdentifier id2:OwlIdentifier;"); pStream.println("abstract SimpleElement : Element;"); pStream.println("StringElement : SimpleElement ::= <IDENTIFIER>;"); pStream.println("IntElement : SimpleElement ::= <INTEGER_LITERAL>;"); diff --git a/siaras/Siaras.jjt b/siaras/Siaras.jjt index 043521061e33949f39454b46c224604cb413e90e..8e5dc081f131416bbd1d531623cf2776c62b1f46 100644 --- a/siaras/Siaras.jjt +++ b/siaras/Siaras.jjt @@ -6,9 +6,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 @@ -286,7 +286,7 @@ SPECIAL_TOKEN : /* COMMENTS */ Start Start() #Start : {} { ("<?xml version=\"1.0\"?>")? - ComplexElement() + ComplexElement() { return jjtThis; } } // "<" Identifier() ">" "</" Identifier() ">" @@ -311,7 +311,7 @@ Start Start() #Start : {} void ElementList() #List : {} { - (Element())* + (ComplexElement())* } void AttributeList() #List : {} @@ -321,10 +321,10 @@ void AttributeList() #List : {} void ComplexElement() #ComplexElement : {} { - "<" Identifier() ">" "</" Identifier() ">" + "<" Identifier() AttributeList() + (">" ElementList() "</" <IDENTIFIER> ">" | ElementList() "/>") } -// (">" ElementList() "</" <IDENTIFIER> ">" | ElementList() "/>") -// {jjtThis.setIDENTIFIER(t.image);} +// "<" Identifier() ">" "</" Identifier() ">" void Identifier() #OwlIdentifier : {Token t;} {