diff --git a/compiler/2014/Java_CodeGen.jrag b/compiler/2014/Java_CodeGen.jrag index 3d33a3bdc48bb1b2849359373d8492f8c2d37a82..3dd853eddaccffdbedce61828e0a08070c0adf61 100644 --- a/compiler/2014/Java_CodeGen.jrag +++ b/compiler/2014/Java_CodeGen.jrag @@ -499,7 +499,7 @@ aspect Java_Class { public void Decl.Java_emitDispatcher(Java_env env, boolean isSample) { // String genericStr = ""; //env.versionHasMetaData()?"<"+getName()+">":""; String genericStr = "<"+getName()+">"; - env.println("private static Dispatcher dispatcher = new Dispatcher();"); + env.println("public static final Dispatcher dispatcher = new Dispatcher();"); env.println(); env.println("public SampleDispatcher getDispatcher() {"); env.indent(); diff --git a/examples/user_types/Decoder.java b/examples/user_types/Decoder.java index a0e7521a08bfd41867e4371bf6651657bca0303c..36d9aa46c3da19eae2bda68bb5d04eba3d206954 100644 --- a/examples/user_types/Decoder.java +++ b/examples/user_types/Decoder.java @@ -4,15 +4,9 @@ import java.io.InputStream; import java.io.IOException; import se.lth.control.labcomm2014.DecoderChannel; -import se.lth.control.labcomm2014.TypeDef; -import se.lth.control.labcomm2014.TypeDefParser; -//import se.lth.control.labcomm2014.TypeBinding; public class Decoder implements twoLines.Handler, -// TypeDef.Handler, -// TypeBinding.Handler, - TypeDefParser.TypeDefListener, twoInts.Handler, theFirstInt.Handler, theSecondInt.Handler, @@ -21,7 +15,6 @@ public class Decoder { private DecoderChannel decoder; - private TypeDefParser tdp; public Decoder(InputStream in) throws Exception @@ -34,13 +27,7 @@ public class Decoder theSecondInt.register(decoder, this); intAndRef.register(decoder, this); doavoid.registerSampleRef(decoder); - this.tdp = TypeDefParser.registerTypeDefParser(decoder); - // TypeDef.register(decoder, this); - // TypeBinding.register(decoder, this); - - tdp.addListener(this); - try { System.out.println("Running decoder."); decoder.run(); @@ -57,27 +44,6 @@ public class Decoder return "Line from "+genPoint(l.start)+" to "+genPoint(l.end); } -// public void handle_TypeDef(TypeDef d) throws java.io.IOException { -// System.out.println("Got TypeDef: "+d.getName()+"("+d.getIndex()+")"); -// } -// -// public void handle_TypeBinding(TypeBinding d) throws java.io.IOException { -// System.out.println("Got TypeBinding: "+d.getSampleIndex()+" --> "+d.getTypeIndex()+""); -// } - - public void onTypeDef(TypeDefParser.ParsedTypeDef d) { - System.out.println("ontype_def: "); - System.out.print((d.isSampleDef()?"sample ":"typedef ")+d); - System.out.println(" "+d.getName()+";"); - //for(byte b: d.getSignature()) { - // System.out.print(Integer.toHexString(b)+" "); - //} - //System.out.println(); - //try { - // tdp.parseSignature(d.getIndex()); - //} catch(IOException ex) { ex.printStackTrace();} - } - public void handle_doavoid() throws java.io.IOException { System.out.println("Got a void."); } @@ -105,7 +71,6 @@ public class Decoder System.out.println(" Line l2: "+genLine(d.l2)); } - public static void main(String[] arg) throws Exception { Decoder example = new Decoder( new FileInputStream(new File(arg[0])) diff --git a/examples/user_types/Encoder.java b/examples/user_types/Encoder.java index 58f6cd0a8e57191f9337a3e2771a89b05bb1e31d..9c66661fe778654ea1127fa3cff1443d884ce19e 100644 --- a/examples/user_types/Encoder.java +++ b/examples/user_types/Encoder.java @@ -31,7 +31,7 @@ public class Encoder intAndRef iar = new intAndRef(); iar.x = 17; - iar.reference = doavoid.class; + iar.reference = doavoid.dispatcher; System.out.println("Encoding intAndRef"); intAndRef.encode(encoder, iar); diff --git a/examples/user_types/Makefile b/examples/user_types/Makefile index 4c2c91b0de76841511bc60b2257d491d5d4557ed..311095088322b1e62c91c683a0f41d91942fa5e6 100644 --- a/examples/user_types/Makefile +++ b/examples/user_types/Makefile @@ -3,7 +3,7 @@ LCCJAR=${LCDIR}/compiler/labcomm2014_compiler.jar# the LabComm compiler LCLJAR=${LCDIR}/lib/java/labcomm2014.jar# the LabComm library EXECUTABLES=example_encoder example_decoder \ - Encoder.class Decoder.class TDDecoder.class \ + Encoder.class Decoder.class \ ExampleEncoder.exe ExampleDecoder.exe include ${LCDIR}/lib/c/os_compat.mk @@ -50,7 +50,6 @@ build : java -jar ${LCDIR}/compiler/labcomm2014_compiler.jar --java=${GENDIR} --c=${GENDIR}/test.c --h=${GENDIR}/test.h --python=${GENDIR}/test.py --cs=${GENDIR}/test.cs test.lc javac -cp ${LCDIR}/lib/java/labcomm2014.jar:. ${GENDIR}/*.java Encoder.java Decoder.java - javac -cp ${LCDIR}/lib/java/labcomm2014.jar:${LCCJAR}:${GENDIR}:. TDDecoder.java ${CC} ${CFLAGS} ${LDFLAGS} -Wall -Werror -Wno-unused-function \ -I. -I${LCDIR}/lib/c/2014 -L${LCDIR}/lib/c \ @@ -79,7 +78,7 @@ run: @LD_LIBRARY_PATH=${LCDIR}/lib/c/ ./example_decoder encoded_data_j @echo "************ running python decoder (from wiki_example):" - @PYTHONPATH=${LCDIR}/lib/python ../wiki_example/example_decoder.py encoded_data_j LabComm2014 + @PYTHONPATH=${LCDIR}/lib/python ../wiki_example/example_decoder.py encoded_data_j LabComm2014.v1 @echo "************ running C encoder: *****************" @LD_LIBRARY_PATH=${LCDIR}/lib/c/ ./example_encoder encoded_data_c @@ -91,10 +90,10 @@ run: @LD_LIBRARY_PATH=${LCDIR}/lib/c/ ./example_decoder encoded_data_c @echo "************ running python decoder (from wiki_example):" - @PYTHONPATH=${LCDIR}/lib/python ../wiki_example/example_decoder.py encoded_data_c LabComm2014 + @PYTHONPATH=${LCDIR}/lib/python ../wiki_example/example_decoder.py encoded_data_c LabComm2014.v1 @echo "************ running python encoder: *****************" - @PYTHONPATH=${LCDIR}/lib/python:${GENDIR} ./example_encoder.py encoded_data_p LabComm2014 + @PYTHONPATH=${LCDIR}/lib/python:${GENDIR} ./example_encoder.py encoded_data_p LabComm2014.v1 @echo "************ running Java decoder: *****************" @java -cp .:${LCDIR}/lib/java/labcomm2014.jar:${GENDIR} Decoder encoded_data_p @@ -103,7 +102,7 @@ run: @LD_LIBRARY_PATH=${LCDIR}/lib/c/ ./example_decoder encoded_data_p @echo "************ running python decoder (from wiki_example):" - PYTHONPATH=${LCDIR}/lib/python ../wiki_example/example_decoder.py encoded_data_p LabComm2014 + PYTHONPATH=${LCDIR}/lib/python ../wiki_example/example_decoder.py encoded_data_p LabComm2014.v1 runwcs: build ExampleEncoder.exe ExampleDecoder.exe @echo @@ -121,7 +120,7 @@ runwcs: build ExampleEncoder.exe ExampleDecoder.exe @LD_LIBRARY_PATH=${LCDIR}/lib/c/ ./example_decoder encoded_data_j @echo "************ running python decoder (from wiki_example):" - @PYTHONPATH=${LCDIR}/lib/python ../wiki_example/example_decoder.py encoded_data_j LabComm2014 + @PYTHONPATH=${LCDIR}/lib/python ../wiki_example/example_decoder.py encoded_data_j LabComm2014.v1 @echo "************ running C# decoder: *****************" @LD_LIBRARY_PATH=${LCDIR}/lib/c/ mono ./ExampleDecoder.exe encoded_data_j @@ -136,13 +135,13 @@ runwcs: build ExampleEncoder.exe ExampleDecoder.exe @LD_LIBRARY_PATH=${LCDIR}/lib/c/ ./example_decoder encoded_data_c @echo "************ running python decoder (from wiki_example):" - @PYTHONPATH=${LCDIR}/lib/python ../wiki_example/example_decoder.py encoded_data_c LabComm2014 + @PYTHONPATH=${LCDIR}/lib/python ../wiki_example/example_decoder.py encoded_data_c LabComm2014.v1 @echo "************ running C# decoder: *****************" @mono ./ExampleDecoder.exe encoded_data_c @echo "************ running python encoder: *****************" - @PYTHONPATH=${LCDIR}/lib/python:${GENDIR} ./example_encoder.py encoded_data_p LabComm2014 + @PYTHONPATH=${LCDIR}/lib/python:${GENDIR} ./example_encoder.py encoded_data_p LabComm2014.v1 @echo "************ running Java decoder: *****************" @java -cp .:${LCDIR}/lib/java/labcomm2014.jar:${GENDIR} Decoder encoded_data_p @@ -151,7 +150,7 @@ runwcs: build ExampleEncoder.exe ExampleDecoder.exe @LD_LIBRARY_PATH=${LCDIR}/lib/c/ ./example_decoder encoded_data_p @echo "************ running python decoder (from wiki_example):" - PYTHONPATH=${LCDIR}/lib/python ../wiki_example/example_decoder.py encoded_data_p LabComm2014 + PYTHONPATH=${LCDIR}/lib/python ../wiki_example/example_decoder.py encoded_data_p LabComm2014.v1 @echo "************ running C# decoder: *****************" @mono ./ExampleDecoder.exe encoded_data_p @@ -166,24 +165,11 @@ runwcs: build ExampleEncoder.exe ExampleDecoder.exe @LD_LIBRARY_PATH=${LCDIR}/lib/c/ ./example_decoder encoded_data_cs @echo "************ running python decoder (from wiki_example):" - @PYTHONPATH=${LCDIR}/lib/python ../wiki_example/example_decoder.py encoded_data_cs LabComm2014 + @PYTHONPATH=${LCDIR}/lib/python ../wiki_example/example_decoder.py encoded_data_cs LabComm2014.v1 @echo "************ running C# decoder: *****************" @mono ./ExampleDecoder.exe encoded_data_cs -runjastadd: cleanbuild - @echo - @echo "********************************************" - @echo "*** ************ running example with JastAdd unparsing ***" - @echo "********************************************" - @echo - - @java -cp .:${LCDIR}/lib/java/labcomm2014.jar:${GENDIR} Encoder encoded_data_j - - @echo "************ running Java TypeDefdecoder: *****************" - java -cp .:${LCDIR}/lib/java/labcomm2014.jar:${LCCJAR}:${GENDIR} TDDecoder encoded_data_j - - clean: rm -rf ${GENDIR} diff --git a/examples/user_types/TDDecoder.java b/examples/user_types/TDDecoder.java deleted file mode 100644 index 52b3eb967d6d796338ddb1859d006ed389586538..0000000000000000000000000000000000000000 --- a/examples/user_types/TDDecoder.java +++ /dev/null @@ -1,139 +0,0 @@ -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; -import java.io.IOException; - -import se.lth.control.labcomm2014.DecoderChannel; -import se.lth.control.labcomm2014.TypeDef; -import se.lth.control.labcomm2014.TypeDefParser; -import se.lth.control.labcomm2014.ASTbuilder; -//import se.lth.control.labcomm2014.TypeBinding; - -import se.lth.control.labcomm2014.compiler.Specification; -import java.io.FileOutputStream; -import java.io.PrintStream; - -import java.util.Vector; -import java.util.LinkedList; -import java.util.Iterator; - - -public class TDDecoder - implements twoLines.Handler, -// TypeDef.Handler, -// TypeBinding.Handler, - TypeDefParser.TypeDefListener, - twoInts.Handler, - theFirstInt.Handler, - theSecondInt.Handler, - doavoid.Handler, - intAndRef.Handler -{ - - private DecoderChannel decoder; - private TypeDefParser tdp; - - public TDDecoder(InputStream in) - throws Exception - { - decoder = new DecoderChannel(in); - twoInts.register(decoder, this); - twoLines.register(decoder, this); - theFirstInt.register(decoder, this); - theSecondInt.register(decoder, this); - doavoid.register(decoder, this); - intAndRef.register(decoder, this); - doavoid.registerSampleRef(decoder); - this.tdp = TypeDefParser.registerTypeDefParser(decoder); - // TypeDef.register(decoder, this); - // TypeBinding.register(decoder, this); - - - tdp.addListener(this); - - try { - System.out.println("Running decoder."); - decoder.run(); - } catch (java.io.EOFException e) { - System.out.println("Decoder reached end of file."); - } - } - - private String genPoint(point p) { - return "("+p.x.val+", "+p.y.val+")"; - } - - private String genLine(line l) { - return "Line from "+genPoint(l.start)+" to "+genPoint(l.end); - } - -// public void handle_TypeDef(TypeDef d) throws java.io.IOException { -// System.out.println("Got TypeDef: "+d.getName()+"("+d.getIndex()+")"); -// } -// -// public void handle_TypeBinding(TypeBinding d) throws java.io.IOException { -// System.out.println("Got TypeBinding: "+d.getSampleIndex()+" --> "+d.getTypeIndex()+""); -// } - - public void onTypeDef(TypeDefParser.ParsedTypeDef d) { - if(d.isSampleDef()){ - System.out.println("onTypeDef (sample): "); - ASTbuilder v = new ASTbuilder(); - Specification p = v.makeSpecification((TypeDefParser.ParsedSampleDef) d); - try { - //FileOutputStream f = new FileOutputStream("/tmp/foopp"+d.getName()+".txt"); - //PrintStream out = new PrintStream(f); - p.pp(System.out); - //p.C_genC(System.out, new Vector(), "lcname", "prefix", 2014); - //p.J_gen(out, "testpackage", 2014); - //out.close(); - } catch (Throwable e) { - System.err.println("Exception: " + e); - e.printStackTrace(); - } - } - //System.out.println(" "+d.getName()+";"); - //for(byte b: d.getSignature()) { - // System.out.print(Integer.toHexString(b)+" "); - //} - //System.out.println(); - //try { - // tdp.parseSignature(d.getIndex()); - //} catch(IOException ex) { ex.printStackTrace();} - } - - public void handle_twoInts(twoInts d) throws java.io.IOException { - System.out.print("Got twoInts: "); - System.out.println(d.a +", "+d.b); - } - - public void handle_theFirstInt(int d) throws java.io.IOException { - System.out.println("Got theFirstInt: "+d); - } - - public void handle_theSecondInt(int d) throws java.io.IOException { - System.out.println("Got theSecondInt: "+d); - } - - public void handle_doavoid() throws java.io.IOException { - System.out.println("Got a void."); - } - - public void handle_intAndRef(intAndRef d) throws java.io.IOException { - System.out.println("Got intAndRef: "+d.x+", "+d.reference); - } - - public void handle_twoLines(twoLines d) throws java.io.IOException { - System.out.print("Got twoLines: "); - System.out.println("Line l1: "+genLine(d.l1)); - System.out.println(" Line l2: "+genLine(d.l2)); - } - - - public static void main(String[] arg) throws Exception { - TDDecoder example = new TDDecoder( - new FileInputStream(new File(arg[0])) - ); - } -} - diff --git a/test/relay_gen_java.py b/test/relay_gen_java.py index 314b6673e17534a569888e1ce8e874c4cbccf5ad..04aefa9d4c0fd7ae56c891df20874a76fe13385b 100755 --- a/test/relay_gen_java.py +++ b/test/relay_gen_java.py @@ -85,9 +85,9 @@ if __name__ == '__main__': result.extend(split_match('^[^|]*\|(.*)$', """ | RenamingRegistry registry = new RenamingRegistry(); | decoder = new RenamingDecoder( - | decoder, registry, s -> "prefix:" + s + ":suffix"); + | decoder, registry, new RenamingDecoder.Rename() {public String rename(String s){return "prefix:" + s + ":suffix";}}); | encoder = new RenamingEncoder( - | encoder, registry, s -> "prefix:" + s + ":suffix"); + | encoder, registry, new RenamingEncoder.Rename() {public String rename(String s){return "prefix:" + s + ":suffix";}}); """)) for func,arg in shuffle(sample): result.append(' %s.register(decoder, this);' % func)