From 7c92e2aea7e68658ffaa65929bacc43b7f54b061 Mon Sep 17 00:00:00 2001 From: grammarware Date: Wed, 3 Oct 2012 10:06:19 +0200 Subject: [PATCH] MegaParser is becoming a testing framework for the rest --- topics/mega/src/MegaParser.rsc | 8 ++++++-- topics/mega/src/{ => backend}/MegaImplode.rsc | 13 +------------ topics/mega/src/io/ReadMegaL.rsc | 13 +++++++++++++ 3 files changed, 20 insertions(+), 14 deletions(-) rename topics/mega/src/{ => backend}/MegaImplode.rsc (91%) create mode 100644 topics/mega/src/io/ReadMegaL.rsc diff --git a/topics/mega/src/MegaParser.rsc b/topics/mega/src/MegaParser.rsc index a902948c..482ea1b8 100644 --- a/topics/mega/src/MegaParser.rsc +++ b/topics/mega/src/MegaParser.rsc @@ -2,6 +2,8 @@ module MegaParser import structure::MegaGrammar; +import structure::MegaADT; +import io::ReadMegaL; import Ambiguity; import ParseTree; import String; @@ -12,7 +14,9 @@ public void main(list[str] args) loc base = |cwd:///../tests|; for (f <- listEntries(base), endsWith(f,".megal")) { - println("Parsing ..."); - parse(#MegaModel,base+f); + println("Getting a parse tree of ..."); + readPT(base+f); + println("Getting an abstract syntax tree of ..."); + readAST(base+f); } } \ No newline at end of file diff --git a/topics/mega/src/MegaImplode.rsc b/topics/mega/src/backend/MegaImplode.rsc similarity index 91% rename from topics/mega/src/MegaImplode.rsc rename to topics/mega/src/backend/MegaImplode.rsc index b89b9de6..f5924051 100644 --- a/topics/mega/src/MegaImplode.rsc +++ b/topics/mega/src/backend/MegaImplode.rsc @@ -1,21 +1,10 @@ @contributor{Vadim Zaytsev - vadim@grammarware.net - SWAT, CWI} -module MegaImplode +module backend::MegaImplode import structure::MegaADT; import structure::MegaGrammar; -import IO; -import ParseTree; import String; -public void main() = main([]); - -public void main(list[str] argv) -{ - // iprintln(mapmegal(parse(#MegaModel,trim(readFile(|cwd:///../tests/technology.megal|))))); - //iprintln(mapmegal(parse(#MegaModel,trim(readFile(|cwd:///../tests/read.megal|))))); - iprintln(mapmegal(parse(#MegaModel,trim(readFile(|project://megal/tests/deserialization.megal|))))); -} - AMegaModel mapmegal((MegaModel)``) = makemegal("","",ins,ds); AMegaModel mapmegal((MegaModel)``) = makemegal("",trim(""),ins,ds); default AMegaModel mapmegal(MegaModel m) = megamodel("","",[],[],[]); diff --git a/topics/mega/src/io/ReadMegaL.rsc b/topics/mega/src/io/ReadMegaL.rsc new file mode 100644 index 00000000..f1b53b15 --- /dev/null +++ b/topics/mega/src/io/ReadMegaL.rsc @@ -0,0 +1,13 @@ +@contributor{Vadim Zaytsev - vadim@grammarware.net - SWAT, CWI} +module io::ReadMegaL + +import structure::MegaGrammar; +import structure::MegaADT; +import backend::MegaImplode; +import ParseTree; +import String; +import IO; + +public MegaModel readPT(loc f) = parse(#MegaModel,trim(readFile(f))); + +public AMegaModel readAST(loc f) = backend::MegaImplode::mapmegal(readPT(f));