From 5b39965a9f843ebf00dd4ef9dd406098aab00294 Mon Sep 17 00:00:00 2001 From: Anders Nilsson <anders.nilsson@cs.lth.se> Date: Mon, 13 Aug 2007 15:02:40 +0200 Subject: [PATCH] Prettyprinter works for workpiece.x3d IF doctype is disabled. --- CompilerGeneration.jrag | 38 +++++++++++++++++++++++++------------- JavaCCChunks.jrag | 21 +++++++++++---------- x3d/test.x3d | 1 - 3 files changed, 36 insertions(+), 24 deletions(-) diff --git a/CompilerGeneration.jrag b/CompilerGeneration.jrag index 595314f..c7ea26f 100644 --- a/CompilerGeneration.jrag +++ b/CompilerGeneration.jrag @@ -109,11 +109,11 @@ aspect GenJavaCC { pStream.println("void Specification() #Specification : {}"); pStream.println("{"); pStream.println(" XmlHeader()"); - pStream.println("// [DocType()]"); +// pStream.println(" [DocType()]"); pStream.println(" ElementList()"); pStream.println("}"); pStream.println(); - pStream.println("void DocType() : {String s;}"); + pStream.println("void DocType() #Opt : {String s;}"); pStream.println("{"); pStream.println(" <LTBANG>"); pStream.println(" {"); @@ -174,7 +174,7 @@ aspect GenJavaCC { pStream.println(); pStream.println("void Element() : {}"); pStream.println("{"); - pStream.println(" \"<\""); + pStream.println(" <LT> ("); Iterator iter = elementTypes().values().iterator(); if (iter.hasNext()) { pStream.println(" "+fixName(((XsElement) iter.next()).name())+"()"); @@ -182,7 +182,7 @@ aspect GenJavaCC { while (iter.hasNext()) { pStream.println(" | "+fixName(((XsElement) iter.next()).name())+"()"); } - pStream.println(" "); + pStream.println(" ) "); pStream.println("}"); pStream.println(); pStream.println("void Attribute() : {}"); @@ -214,10 +214,12 @@ aspect GenJavaCC { pStream.println("void "+name+"() #"+name+" : {}"); pStream.println("{"); - pStream.println(" <"+name+"> AttributeList() \">\""); + pStream.println(" <"+name+"> AttributeList()"); +// pStream.println(" <"+name+"> AttributeList() \">\""); // pStream.println(" \"<\" <"+name+"> AttributeList() \">\""); - pStream.println(" ElementList()"); - pStream.println(" \"</\" <"+name+"> \">\""); +// pStream.println(" ElementList()"); + pStream.print(" ( <GT> ElementList()"); + pStream.println(" \"</\" <"+name+"> \">\" | ElementList() \"/>\" )"); // pStream.println(" \"<\" <"+name.toUpperCase()+"> AttributeList() \">\""); // pStream.println(" ElementList()"); // pStream.println(" \"</\" <"+name.toUpperCase()+"> \">\""); @@ -360,9 +362,9 @@ aspect GenPrettyPrinter { pStream.println(); pStream.println("aspect PrettyPrinter {"); pStream.println(" public void ASTNode.prettyPrint(String indent, PrintStream pStream) {"); - pStream.println(" pStream.print(getNumChild());"); +// pStream.println(" pStream.print(getNumChild());"); pStream.println(" for (int i=0; i<getNumChild(); i++) {"); - pStream.println(" pStream.print(getChild(i).getClass());"); +// pStream.println(" pStream.print(getChild(i).getClass());"); pStream.println(" getChild(i).prettyPrint(indent,pStream);"); pStream.println(" }"); pStream.println(" }\n"); @@ -411,12 +413,21 @@ aspect GenPrettyPrinter { public void XsElement.genPrettyPrinter(PrintStream pStream) { String name = fixName(name()); - pStream.println(" public void "+name+".prettyPrint(String indent, PrintStream pStream) {"); - pStream.println(" pStream.print(\"<"+name+" \");"); + pStream.println(" public void "+name+".prettyPrint(String ind, PrintStream pStream) {"); + pStream.println(" pStream.print(ind+\"<"+name+" \");"); pStream.println(" for (int i=0; i<getNumAttribute(); i++) {"); - pStream.println(" getAttribute(i).prettyPrint(indent,pStream);"); + pStream.println(" getAttribute(i).prettyPrint(ind,pStream);"); pStream.println(" }"); - pStream.println(" pStream.println(\"> \");"); + pStream.println(" if (getNumElement() == 0) {"); + pStream.println(" pStream.println(\"/> \");"); + pStream.println(" } else {"); + pStream.println(" pStream.println(\"> \");"); + pStream.println(" String newInd = ind+\" \";"); + pStream.println(" for (int i=0; i<getNumElement(); i++) {"); + pStream.println(" getElement(i).prettyPrint(newInd,pStream);"); + pStream.println(" }"); + pStream.println(" pStream.println(ind+\"</"+name+"> \");"); + pStream.println(" }"); pStream.println(" }\n"); } } @@ -655,6 +666,7 @@ aspect ParserGen { pStream.println(); pStream.println(" // Dump the AST"); pStream.println(" ast.prettyPrint(\" \", System.out);"); +// pStream.println(" ast.dumpTree(\" \", System.out);"); pStream.println(" }"); pStream.println("}"); diff --git a/JavaCCChunks.jrag b/JavaCCChunks.jrag index 04b9403..0a1ffdb 100644 --- a/JavaCCChunks.jrag +++ b/JavaCCChunks.jrag @@ -94,16 +94,17 @@ aspect JavaCCChunks { pStream.println(" |"); pStream.println(" < STRING_LITERAL:"); pStream.println(" \"\\\"\""); - pStream.println(" ( (~[\"\\\"\",\"\\\\\",\"\\n\",\"\\r\"])"); - pStream.println(" |"); - pStream.println(" (\"\\\\\""); - pStream.println(" ( [\"n\",\"t\",\"b\",\"r\",\"f\",\"\\\\\",\"'\",\"\\\"\"]"); - pStream.println(" |"); - pStream.println(" [\"0\"-\"7\"] ( [\"0\"-\"7\"] )?"); - pStream.println(" |"); - pStream.println(" [\"0\"-\"3\"] [\"0\"-\"7\"] [\"0\"-\"7\"]"); - pStream.println(" )"); - pStream.println(" )"); + pStream.println(" ( (~[\"\\\"\",\"\\n\",\"\\r\"])"); +// pStream.println(" ( (~[\"\\\"\",\"\\\\\",\"\\n\",\"\\r\"])"); +// pStream.println(" |"); +// pStream.println(" (\"\\\\\""); +// pStream.println(" ( [\"n\",\"t\",\"b\",\"r\",\"f\",\"\\\\\",\"'\",\"\\\"\"]"); +// pStream.println(" |"); +// pStream.println(" [\"0\"-\"7\"] ( [\"0\"-\"7\"] )?"); +// pStream.println(" |"); +// pStream.println(" [\"0\"-\"3\"] [\"0\"-\"7\"] [\"0\"-\"7\"]"); +// pStream.println(" )"); +// pStream.println(" )"); pStream.println(" )*"); pStream.println(" \"\\\"\""); pStream.println(" >"); diff --git a/x3d/test.x3d b/x3d/test.x3d index 096d725..a0e3349 100644 --- a/x3d/test.x3d +++ b/x3d/test.x3d @@ -1,5 +1,4 @@ <?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd"> <X3D profile="Full"> <head> <meta name="filename" content="..\Sample Parts\Head&plate.x3d"/> -- GitLab