Beispiel #1
0
 private static void handleToken(ParsedToken p) {
   if (p == null) {
     System.out.println("Empty AST");
     return;
   }
   switch (p.getTokenType()) {
     case NONE:
       out("NONE token type");
       break;
     case BYTES:
       out("BYTES token type, value: " + Arrays.toString(p.getBytesValue()));
       break;
     case SINT:
       out("SINT token type, value: " + p.getSIntValue());
       break;
     case UINT:
       out("UINT token type, value: " + p.getUIntValue());
       break;
     case SEQUENCE:
       out("SEQUENCE token type");
       for (ParsedToken tok : p.getSeqValue()) {
         handleToken(tok);
       }
       break;
     case ERR:
       out("ERR token type");
       break;
     case USER:
       out("USER token type");
       break;
   }
 }
Beispiel #2
0
  public static void main(String args[]) {
    out("chRange");
    handle(Hammer.parse(Hammer.chRange((byte) 0x30, (byte) 0x39), "1".getBytes(), 1));
    handle(Hammer.parse(Hammer.chRange((byte) 0x30, (byte) 0x39), "a".getBytes(), 1));

    out("ch");
    handle(Hammer.parse(Hammer.ch((byte) 0x31), "1".getBytes(), 1));
    handle(Hammer.parse(Hammer.ch((byte) 0x31), "0".getBytes(), 1));

    out("token");
    handle(Hammer.parse(Hammer.token("herp".getBytes(), 4), "herp".getBytes(), 4));
    handle(Hammer.parse(Hammer.token("herp".getBytes(), 4), "derp".getBytes(), 4));

    out("intRange");
    byte inbytes[] = {0x31, 0x31, 0x31, 0x31};
    handle(Hammer.parse(Hammer.intRange(Hammer.uInt8(), 0L, 0x32), inbytes, inbytes.length));
    handle(Hammer.parse(Hammer.intRange(Hammer.uInt8(), 0L, 0x30), inbytes, inbytes.length));

    out("bits");
    handle(Hammer.parse(Hammer.bits(7, false), inbytes, inbytes.length));

    out("int64");
    byte ints[] = {
      (byte) 0x8F,
      (byte) 0xFF,
      (byte) 0xFF,
      (byte) 0xFF,
      (byte) 0xFF,
      (byte) 0xFF,
      (byte) 0xFF,
      (byte) 0xFF
    };
    handle(Hammer.parse(Hammer.int64(), ints, ints.length));
    handle(Hammer.parse(Hammer.int64(), inbytes, inbytes.length));

    out("choice");
    Parser two32s[] = {Hammer.intRange(Hammer.uInt32(), 0x00, 0x01), Hammer.int32()};
    handle(
        Hammer.parse(
            Hammer.choice(Hammer.intRange(Hammer.uInt32(), 0x00, 0x01), Hammer.int32()),
            ints,
            ints.length));

    out("sequence");
    byte i3[] = {(byte) 'i', (byte) 3, (byte) 0xFF};
    Parser i3parsers[] = {Hammer.ch((byte) 'i'), Hammer.uInt8(), Hammer.int8()};
    handle(
        Hammer.parse(
            Hammer.sequence(Hammer.ch((byte) 'i'), Hammer.uInt8(), Hammer.int8()), i3, i3.length));
  }