From 47299b5ae9aebb232077371018aa687da32b816b Mon Sep 17 00:00:00 2001 From: Anders Nilsson <anders.nilsson@cs.lth.se> Date: Fri, 31 Aug 2007 16:49:47 +0200 Subject: [PATCH] Started imlpementing HTML output aspect for configForm. --- CompilerGeneration.jrag | 9 ++-- JavaCCChunks.jrag | 2 +- examples/configForm/GenHTML.java | 16 +++++++ examples/configForm/HTMLGen.jrag | 71 ++++++++++++++++++++++++++++++++ examples/x3d/BoundingBox.jrag | 2 +- 5 files changed, 95 insertions(+), 5 deletions(-) create mode 100644 examples/configForm/GenHTML.java create mode 100644 examples/configForm/HTMLGen.jrag diff --git a/CompilerGeneration.jrag b/CompilerGeneration.jrag index 5ebd079..8c7933c 100644 --- a/CompilerGeneration.jrag +++ b/CompilerGeneration.jrag @@ -34,7 +34,7 @@ aspect AbsGrammarGeneration { pStream.println("IntElement : SimpleElement ::= <LITERAL>;"); pStream.println("FloatElement : SimpleElement ::= <LITERAL>;"); pStream.println("Attribute ::= AttrValue;"); - pStream.println("AttrValue ::= <STRING_LITERAL>;"); + pStream.println("AttrValue ::= <LITERAL>;"); pStream.println("Encoding : Attribute ::=;"); pStream.println("Version : Attribute ::=;"); pStream.println("XmlnsXsi : Attribute ::=;"); @@ -150,7 +150,7 @@ aspect GenJavaCC { pStream.println("void AttrValue() #AttrValue : { Token t; }"); pStream.println("{"); pStream.println(" t = <STRING_LITERAL>"); - pStream.println(" {jjtThis.setSTRING_LITERAL(t.image);}"); + pStream.println(" {jjtThis.setLITERAL(t.image);}"); pStream.println("}"); pStream.println(); pStream.println("void Encoding() #Encoding : {}"); @@ -384,6 +384,9 @@ aspect Misc { aspect GenAspects { public void Start.genAspects(PrintStream pStream) { + pStream.println("/* -*-Java-*- */"); + pStream.println(); + pStream.println("// Automatically generated JastAdd aspects file "); pStream.println(); pStream.println("import java.io.PrintStream;"); pStream.println(); @@ -433,7 +436,7 @@ aspect GenPrettyPrinter { pStream.println(" }\n"); pStream.println(" public void AttrValue.prettyPrint(String indent, PrintStream pStream) {"); - pStream.println(" pStream.print(getSTRING_LITERAL());"); + pStream.println(" pStream.print(getLITERAL());"); pStream.println(" }\n"); pStream.println(" public void Encoding.prettyPrint(String indent, PrintStream pStream) {"); diff --git a/JavaCCChunks.jrag b/JavaCCChunks.jrag index 3990407..97bd7ac 100644 --- a/JavaCCChunks.jrag +++ b/JavaCCChunks.jrag @@ -18,7 +18,7 @@ aspect JavaCCChunks { pStream.println(" NODE_PREFIX = \"\";"); pStream.println(" JAVA_UNICODE_ESCAPE = true;"); pStream.println(" STATIC = false;"); - pStream.println(" DEBUG_PARSER = true;"); +// pStream.println(" DEBUG_PARSER = true;"); // pStream.println(" DEBUG_LOOKAHEAD = true;"); // pStream.println(" DEBUG_TOKEN_MANAGER = true;"); pStream.println("} "); diff --git a/examples/configForm/GenHTML.java b/examples/configForm/GenHTML.java new file mode 100644 index 0000000..70666ee --- /dev/null +++ b/examples/configForm/GenHTML.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) 2007 Anders Nilsson <anders.nilsson@cs.lth.se> + * + * This file is part of XmlSchemaCompiler. + */ + +import AST.Start; + +public class GenHTML extends Parser { + public static void main(String args[]) { + Start ast = parse(args); + + // Dump the AST + ast.genHTML(0, System.out); + } +} diff --git a/examples/configForm/HTMLGen.jrag b/examples/configForm/HTMLGen.jrag new file mode 100644 index 0000000..8b41aba --- /dev/null +++ b/examples/configForm/HTMLGen.jrag @@ -0,0 +1,71 @@ +/* -*-Java-*- */ + +/* + * Copyright (C) 2007 Anders Nilsson <anders.nilsson@cs.lth.se> + * + * This file is part of XmlSchemaCompiler. + */ + +import java.io.PrintStream; + +aspect HTMLGen { + public String ASTNode.ind(int ind) { + StringBuffer sb = new StringBuffer(); + for (int i=0; i<ind; i++) { + sb.append(" "); + } + return sb.toString(); + } + + public void ASTNode.genHTML(int ind, PrintStream pStream) { + for (int i=0; i<getNumChild(); i++) { + getChild(i).genHTML(ind,pStream); + } + } + + public void configuration_sheet.genHTML(int ind, PrintStream pStream) { + pStream.println(ind(ind)+"<?xml version=\"1.0\" encoding=\"UTF-8\"?><"); + pStream.println(ind(ind)+"<html>"); + ind++; + pStream.println(ind(ind)+"<head>"); + pStream.println(ind(ind+1)+"<title>Nameplate</title>"); + pStream.println(ind(ind)+"</head>"); + pStream.println(ind(ind)+"<body>"); + ind++; + pStream.println(ind(ind)+"<center>"); + pStream.println(ind(ind+1)+"<h1>"+name()+"/h1>"); + pStream.println(ind(ind)+"</center>"); + pStream.println(ind(ind)+"<table border=\"1\" valign=\"top\">"); + ind++; + pStream.println(ind(ind)+"<tr bgcolor=\"lightgray\">"); + pStream.println(ind(ind)+"</tr>"); + ind--; + pStream.println(ind(ind)+"</table>"); + ind--; + pStream.println(ind(ind)+"</body>"); + super.genHTML(ind,pStream); + ind--; + pStream.println(ind(ind)+"</html>"); + } + + +} + +aspect Misc { + syn lazy String Element.name() { + return "NoName"; + } + + eq ComplexElement.name() { + for (int i=0; i<getNumAttribute(); i++) { + if (getAttribute(i) instanceof name) { + return getAttribute(i).value().replace("\""," ").trim(); + } + } + return super.name(); + } + + syn lazy String Attribute.value() { + return getAttrValue().getLITERAL(); + } +} \ No newline at end of file diff --git a/examples/x3d/BoundingBox.jrag b/examples/x3d/BoundingBox.jrag index 23777ab..a975112 100644 --- a/examples/x3d/BoundingBox.jrag +++ b/examples/x3d/BoundingBox.jrag @@ -90,5 +90,5 @@ aspect Coordinates { return sb; } syn String Attribute.getCoordinates() = null; - eq point.getCoordinates() = getAttrValue().getSTRING_LITERAL(); + eq point.getCoordinates() = getAttrValue().getLITERAL(); } \ No newline at end of file -- GitLab