From cf67d3eaf970eb72e13f197dbe5068a8c5bc1662 Mon Sep 17 00:00:00 2001
From: Anders Nilsson <anders.nilsson@cs.lth.se>
Date: Wed, 8 Nov 2006 11:33:07 +0100
Subject: [PATCH] Can now run JastAdd on generated grammar: java -jar
 ../tools/jastadd2.jar --rewrite --jjtree  --package=AST --grammar Siaras.ast

---
 CompilerGeneration.jrag |  2 +-
 GenCompiler.java        | 26 ++++++++++++++++++++++----
 JavaCCChunks.jrag       |  2 +-
 build.xml               |  6 +++---
 4 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/CompilerGeneration.jrag b/CompilerGeneration.jrag
index 138ff1e..1e4f919 100644
--- a/CompilerGeneration.jrag
+++ b/CompilerGeneration.jrag
@@ -10,7 +10,7 @@ aspect AbsGrammarGeneration {
     }
 
     public void Start.genAbsGrammar(PrintStream pStream) {
-		pStream.println("Start ::= Device*");
+		pStream.println("Start ::= Device*;");
 		pStream.println("abstract Thing ::=;");
 		super.genAbsGrammar(pStream);
     }
diff --git a/GenCompiler.java b/GenCompiler.java
index cb769cb..513ebdc 100644
--- a/GenCompiler.java
+++ b/GenCompiler.java
@@ -1,6 +1,8 @@
 // package programs;
 
 import AST.Start;
+import java.io.File;
+import java.io.PrintStream;
 
 public class GenCompiler extends Parser {
 	public static void main(String args[]) {
@@ -9,9 +11,25 @@ public class GenCompiler extends Parser {
 		// Dump the AST
 // 		ast.dumpTree("  ", System.out);
 
-		// Should be generated to a file when sufficiently
-		// implemented. AndersN 060210
-		ast.genAbsGrammar(System.out);
-		ast.genJavaCC(System.out);
+
+		File siarasDir = new File("siaras");
+		if (!siarasDir.isDirectory()) {
+			siarasDir.mkdir();
+		}
+
+		try {
+			PrintStream absGrammarStream = new PrintStream(new File("siaras/Siaras.ast"));
+			ast.genAbsGrammar(absGrammarStream);
+		} catch (java.io.FileNotFoundException e) {
+			System.out.println("Could not create file for generated abstract grammar");
+			e.printStackTrace();
+		}
+		try {
+			PrintStream javaCCStream = new PrintStream(new File("siaras/Siaras.jjt"));
+			ast.genJavaCC(javaCCStream);
+		} catch (java.io.FileNotFoundException e) {
+			System.out.println("Could not create file for generated JavaCC grammar");
+			e.printStackTrace();
+		}
 	}
 }
diff --git a/JavaCCChunks.jrag b/JavaCCChunks.jrag
index 61786fc..9579c2a 100644
--- a/JavaCCChunks.jrag
+++ b/JavaCCChunks.jrag
@@ -13,7 +13,7 @@ aspect JavaCCChunks {
 		pStream.println("} ");
 		pStream.println();
 		pStream.println("PARSER_BEGIN(SiarasParser)");
-		pStream.println("    package siaras;");
+		pStream.println("    package siaras.AST;");
 		pStream.println("    public class SiarasParser {");
 		pStream.println("}");
 		pStream.println("PARSER_END(SiarasParser)");
diff --git a/build.xml b/build.xml
index a0c5b6c..7277ff8 100644
--- a/build.xml
+++ b/build.xml
@@ -37,9 +37,9 @@
 <!--     <jastadd package="${package}" rewrite="true" beaver="true" novisitcheck="true"> -->
     <jastadd package="${package}" grammar="${parser.name}" rewrite="true" jjtree="true">
       <fileset dir=".">
-	<include name="**/*.ast"/>
-	<include name="**/*.jrag"/>
-	<include name="**/*.jadd"/>
+	<include name="*.ast"/>
+	<include name="*.jrag"/>
+	<include name="*.jadd"/>
       </fileset>
     </jastadd>
     <jjtree 
-- 
GitLab