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