From cc1ca8a75534ef566a29260eddebb9959db64383 Mon Sep 17 00:00:00 2001 From: "Meredith L. Patterson" <mlp@thesmartpolitenerd.com> Date: Mon, 6 Jan 2014 08:28:00 +0100 Subject: [PATCH] token-handling function written but everything is broken :-( --- lib/tsgenjava.pl | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/tsgenjava.pl b/lib/tsgenjava.pl index 7dba184c..b8b0af52 100644 --- a/lib/tsgenjava.pl +++ b/lib/tsgenjava.pl @@ -182,7 +182,8 @@ pp_parse_result(uint(V)) --> !, pp_parse_result(sint(V)) --> !, "new BigInteger(\"", pp_parser_bigint_str(num(V)), "\", 16)". pp_parse_result(string(A)) --> !, - "new byte[]{ ", pp_byte_seq(A), "}". + %"new byte[]{ ", pp_byte_seq(A), " }". + "\"", pp_string_guts(A), "\"". %pp_parse_result(A) --> % "\x1b[1;31m", % {with_output_to(codes(C), write(A))}, @@ -216,13 +217,33 @@ pp_test_cases([A|As]) --> pp_test_suite(Suite) --> "package com.upstandinghackers.hammer; \n\n", "import java.math.BigInteger;\n", + "import java.util.Arrays;\n", "import org.testng.annotations.*;\n", "import org.testng.Assert;\n\n", "public class HammerTest {\n\n", indent(1), "static {\n", indent(2), "System.loadLibrary(\"hammer-java\");\n", indent(1), "}\n\n", - indent(1), "private boolean handle(ParsedToken tok, Object known) { return true; }\n", + indent(1), "private boolean handle(ParsedToken p, Object known) {\n", + indent(2), "switch (p.getTokenType()) {\n", + indent(2), "case BYTES:\n", + indent(3), "return Arrays.toString(p.getBytesValue()).equals((String)known);\n", + indent(2), "case SINT:\n", + indent(3), "return ((Long)p.getSIntValue()).equals(known);\n", + indent(2), "case UINT:\n", + indent(3), "return ((Long)p.getUIntValue()).equals(known);\n", + indent(2), "case SEQUENCE:\n", + indent(3), "int i=0;\n", + indent(3), "for (ParsedToken tok : p.getSeqValue()) {\n", + indent(4), "if (!handle(tok, ((Object[])known)[i]))\n", + indent(5), "return false;\n", + indent(4), "++i;\n", + indent(3), "}\n", + indent(3), "return true;\n", + indent(2), "default:\n", + indent(3), "return false;\n", + indent(2), "}\n", + indent(1), "}\n\n", pp_test_cases(Suite), "}\n". -- GitLab