Commit cd2d4ee6 authored by Anders Nilsson's avatar Anders Nilsson
Browse files

Generated prettyprinter now prints all(?) information. Now need to rearrange...

Generated prettyprinter now prints all(?) information. Now need to rearrange the tree from current diagonal shape
parent b3022c9e
...@@ -24,7 +24,7 @@ aspect AbsGrammarGeneration { ...@@ -24,7 +24,7 @@ aspect AbsGrammarGeneration {
pStream.println("ComplexElement : Element ::= OwlIdentifier Attribute* Element*;"); pStream.println("ComplexElement : Element ::= OwlIdentifier Attribute* Element*;");
pStream.println("ValueElement : ComplexElement;"); pStream.println("ValueElement : ComplexElement;");
pStream.println("abstract SimpleElement : Element;"); pStream.println("abstract SimpleElement : Element;");
pStream.println("StringElement : SimpleElement ::= OwlIdentifier;"); 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("Attribute ::= Value;"); pStream.println("Attribute ::= Value;");
...@@ -112,6 +112,7 @@ aspect GenAspects { ...@@ -112,6 +112,7 @@ aspect GenAspects {
pStream.println("import java.io.PrintStream;"); pStream.println("import java.io.PrintStream;");
pStream.println(); pStream.println();
genRewrites(pStream); genRewrites(pStream);
genMisc(pStream);
genPrettyPrinter(pStream); genPrettyPrinter(pStream);
} }
} }
...@@ -138,9 +139,19 @@ aspect GenPrettyPrinter { ...@@ -138,9 +139,19 @@ aspect GenPrettyPrinter {
pStream.println(" }\n"); pStream.println(" }\n");
pStream.println(" syn String Attribute.id() = \"\";"); pStream.println(" syn String Attribute.id() = \"\";");
pStream.println(" eq RdfId.id() = \"Rdf:ID\";"); pStream.println(" eq RdfId.id() = \"Rdf:ID\";");
pStream.println(" eq RdfDatatype.id() = \"Rdf:datatype\";");
pStream.println(" public void Attribute.prettyPrint(String indent, PrintStream pStream) {"); pStream.println(" public void Attribute.prettyPrint(String indent, PrintStream pStream) {");
pStream.println(" System.out.print(\" \"+id()+\"=\"+getValue().getSTRING_LITERAL());"); pStream.println(" System.out.print(\" \"+id()+\"=\"+getValue().getSTRING_LITERAL());");
pStream.println(" }\n"); pStream.println(" }\n");
pStream.println(ind(1)+"public void ValueElement.prettyPrint(String indent, PrintStream pStream) {");
pStream.println(ind(2)+"System.out.print(indent+\"<value \");");
pStream.println(ind(2)+"for (int i=0; i<getNumAttribute(); i++) {");
pStream.println(ind(3)+"getAttribute(i).prettyPrint(indent,pStream);");
pStream.println(ind(2)+"}");
pStream.println(ind(2)+"System.out.println(\">\");");
pStream.println(ind(2)+"System.out.println(indent+\" \"+value());");
pStream.println(ind(2)+"System.out.println(indent+\"</value>\");");
pStream.println(ind(1)+"}\n");
super.genPrettyPrinter(pStream); super.genPrettyPrinter(pStream);
pStream.println("}\n"); pStream.println("}\n");
} }
...@@ -166,9 +177,9 @@ aspect GenPrettyPrinter { ...@@ -166,9 +177,9 @@ aspect GenPrettyPrinter {
pStream.println(ind(2)+"System.out.println(childIndent+\"</has"+ pStream.println(ind(2)+"System.out.println(childIndent+\"</has"+
r.name()+">\");"); r.name()+">\");");
} }
// pStream.println(ind(1)+" for (int i=0; i<getNumElement(); i++) {"); pStream.println(ind(2)+"for (int i=0; i<getNumElement(); i++) {");
// pStream.println(ind(1)+" getElement(i).prettyPrint(childIndent,pStream);"); pStream.println(ind(3)+"getElement(i).prettyPrint(childIndent,pStream);");
// pStream.println(ind(1)+" }"); pStream.println(ind(2)+"}");
pStream.println(ind(1)+"System.out.println(indent+\"</"+name()+">\");"); pStream.println(ind(1)+"System.out.println(indent+\"</"+name()+">\");");
pStream.println(ind(1)+"}\n"); pStream.println(ind(1)+"}\n");
} }
...@@ -243,6 +254,36 @@ aspect GenRewrites { ...@@ -243,6 +254,36 @@ aspect GenRewrites {
} }
aspect GenMisc {
public void ASTNode.genMisc(PrintStream pStream) {
for (int i=0; i<getNumChild(); i++) {
getChild(i).genMisc(pStream);
}
}
public void Start.genMisc(PrintStream pStream) {
pStream.println();
pStream.println("aspect Misc {");
pStream.println();
pStream.println(ind(1)+"String ValueElement.value() {");
pStream.println(ind(2)+"StringBuffer b = new StringBuffer();");
pStream.println(ind(2)+"for (int i=0; i<getNumElement(); i++) {");
pStream.println(ind(3)+"b.append(((SimpleElement) getElement(i)).value());");
pStream.println(ind(3)+"b.append(\" \");");
pStream.println(ind(2)+"}");
pStream.println(ind(2)+"return b.toString().trim();");
pStream.println(ind(1)+"}");
pStream.println();
pStream.println(ind(1)+"syn String SimpleElement.value() = \"\";");
pStream.println(ind(1)+"eq StringElement.value() = getIDENTIFIER();");
pStream.println(ind(1)+"eq IntElement.value() = getINTEGER_LITERAL();");
pStream.println(ind(1)+"eq FloatElement.value() = getFLOAT_LITERAL();");
super.genMisc(pStream);
pStream.println("}");
}
}
aspect ParserGen { aspect ParserGen {
public void Start.genParser(PrintStream pStream) { public void Start.genParser(PrintStream pStream) {
......
...@@ -175,7 +175,7 @@ SPECIAL_TOKEN : /* COMMENTS */ ...@@ -175,7 +175,7 @@ SPECIAL_TOKEN : /* COMMENTS */
<DEFAULT, BOUNDS> TOKEN : /* IDENTIFIERS */ <DEFAULT, BOUNDS> TOKEN : /* IDENTIFIERS */
{ {
< IDENTIFIER: <LETTER> (<LETTER>|<DIGIT>|":")* > < IDENTIFIER: <LETTER> (<LETTER>|<DIGIT>)* >
| |
< #LETTER: < #LETTER:
[ [
...@@ -191,7 +191,10 @@ SPECIAL_TOKEN : /* COMMENTS */ ...@@ -191,7 +191,10 @@ SPECIAL_TOKEN : /* COMMENTS */
"\u3300"-"\u337f", "\u3300"-"\u337f",
"\u3400"-"\u3d2d", "\u3400"-"\u3d2d",
"\u4e00"-"\u9fff", "\u4e00"-"\u9fff",
"\uf900"-"\ufaff" "\uf900"-"\ufaff",
"+",
"-",
"/"
] ]
> >
| |
...@@ -249,10 +252,10 @@ SPECIAL_TOKEN : /* COMMENTS */ ...@@ -249,10 +252,10 @@ SPECIAL_TOKEN : /* COMMENTS */
// | < SC_AND : "&&" > // | < SC_AND : "&&" >
// | < INCR : "++" > // | < INCR : "++" >
// | < DECR : "--" > // | < DECR : "--" >
| < PLUS : "+" > // | < PLUS : "+" >
| < MINUS : "-" > // | < MINUS : "-" >
// | < STAR : "*" > // | < STAR : "*" >
| < SLASH : "/" > // | < SLASH : "/" >
// | < BIT_AND : "&" > // | < BIT_AND : "&" >
// | < BIT_OR : "|" > // | < BIT_OR : "|" >
// | < XOR : "^" > // | < XOR : "^" >
...@@ -311,11 +314,11 @@ void Identifier() #OwlIdentifier : {Token t;} ...@@ -311,11 +314,11 @@ void Identifier() #OwlIdentifier : {Token t;}
{jjtThis.setIDENTIFIER(t.image);} {jjtThis.setIDENTIFIER(t.image);}
} }
void OtherToken() #OwlIdentifier : {Token t;} // void OtherToken() #OwlIdentifier : {Token t;}
{ // {
t=<PLUS> | t=<MINUS> | t=<SLASH> | t=<COMMA> | t=<DOT> // t=<PLUS> | t=<MINUS> | t=<SLASH> | t=<COMMA> | t=<DOT>
{jjtThis.setIDENTIFIER(t.image);} // {jjtThis.setIDENTIFIER(t.image);}
} // }
...@@ -345,9 +348,11 @@ void FloatElement() #FloatElement : { Token t; } ...@@ -345,9 +348,11 @@ void FloatElement() #FloatElement : { Token t; }
} }
void StringElement() #StringElement : {} void StringElement() #StringElement : {Token t;}
{ {
Identifier() | OtherToken() t = <IDENTIFIER>
{jjtThis.setIDENTIFIER(t.image);}
// Identifier() | OtherToken()
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment