Added JNI example, this is what usage hsould look like soon.

This commit is contained in:
aegis 2013-04-23 17:53:26 +02:00
parent f817211446
commit 1529c0641e
2 changed files with 89 additions and 41 deletions

49
jni/Example.java Normal file
View file

@ -0,0 +1,49 @@
/**
* Example JHammer usage
*/
public class Example
{
private HParser initParser()
{
HParser digit = Hammer.chRange(0x30, 0x39);
HParser alpha = Hammer.choice({Hammer.chRange(0x41, 0x5a), Hammer.chRange(0x61, 0x7a)});
HParser plus = Hammer.ch('+');
HParser slash = Hammer.ch('/');
HParser equals = Hammer.ch('=');
HParser bsfdig = Hammer.choice({alpha, digit, plus, slash});
byte[] AEIMQUYcgkosw048 = "AEIMQUYcgkosw048".getBytes();
HParser bsfdig_4bit = Hammer.in(AEIMQUYcgkosw048, AEIMQUYcgkosw048.length);
byte[] AQgw = "AQgw".getBytes();
HParser bsfdig_2bit = Hammer.in(AQgw, AQgw.length);
HParser base64_3 = Hammer.repeatN(bsfdig, 4);
HParser base64_2 = Hammer.sequence({bsfdig, bsfdig, bsfdig_4bit, equals});
HParser base64_1 = Hammer.sequence({bsfdig, bsfdig_2bit, equals, equals});
HParser base64 = Hammer.sequence({ Hammer.many(base64_3),
Hammer.optional(Hammer.choice({base64_2, base64_1}))
});
return Hammer.sequence({Hammer.whitespace(base64), Hammer.whitespace(Hammer.endP()}});
}
public static void main(String args[])
{
byte[] input = "RXMgaXN0IFNwYXJnZWx6ZWl0IQo=".getBytes();
int length = input.length;
HParsedResult result = Hammer.parse(initParser(), input, length);
if(result == null)
{
System.out.println("FAIL");
}
else
{
System.out.println("PASS");
//TODO: Pretty print
}
}
}