diff options
author | JesusFreke@JesusFreke.com <JesusFreke@JesusFreke.com@55b6fa8a-2a1e-11de-a435-ffa8d773f76a> | 2010-06-13 20:33:35 +0000 |
---|---|---|
committer | JesusFreke@JesusFreke.com <JesusFreke@JesusFreke.com@55b6fa8a-2a1e-11de-a435-ffa8d773f76a> | 2010-06-13 20:33:35 +0000 |
commit | 2c69ece4a5e8372744b6610ea6ab9517ddb54c39 (patch) | |
tree | a99d34bd91a18a12f1c819f027f2e73f2960623b /smali/src/test/resources | |
parent | b873c047f0d0553c2779178496748422114144da (diff) | |
download | smali-2c69ece4a5e8372744b6610ea6ab9517ddb54c39.tar.gz |
Add the remaining lexer tests
git-svn-id: https://smali.googlecode.com/svn/trunk@749 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
Diffstat (limited to 'smali/src/test/resources')
14 files changed, 821 insertions, 0 deletions
diff --git a/smali/src/test/resources/LexerTest/CharLiteralTest.smali b/smali/src/test/resources/LexerTest/CharLiteralTest.smali new file mode 100644 index 00000000..3f5b01f9 --- /dev/null +++ b/smali/src/test/resources/LexerTest/CharLiteralTest.smali @@ -0,0 +1,40 @@ +' ' +' ' +'a' +'A' +'z' +'Z' +'a''a' +'1' +'2' +'\n' +'\r' +'\t' +'\b' +'\f' +'\u0030' +'\uABCD' +'\uabcd' +'\\' +'\'' +'\"' +'"' + + +'a'a' +'ab' +'\a' +'' +' +' +' +'\u' +'\u0' +'\ua' +'\uab' +'\u01a' +'\uz' +'\u012z' + +'a' +'
\ No newline at end of file diff --git a/smali/src/test/resources/LexerTest/CharLiteralTest.tokens b/smali/src/test/resources/LexerTest/CharLiteralTest.tokens new file mode 100644 index 00000000..a8a57ea5 --- /dev/null +++ b/smali/src/test/resources/LexerTest/CharLiteralTest.tokens @@ -0,0 +1,40 @@ +CHAR_LITERAL("' '") +CHAR_LITERAL("'\t'") +CHAR_LITERAL("'a'") +CHAR_LITERAL("'A'") +CHAR_LITERAL("'z'") +CHAR_LITERAL("'Z'") +CHAR_LITERAL("'a'")CHAR_LITERAL("'a'") +CHAR_LITERAL("'1'") +CHAR_LITERAL("'2'") +CHAR_LITERAL("'\n'") +CHAR_LITERAL("'\r'") +CHAR_LITERAL("'\t'") +CHAR_LITERAL("'\b'") +CHAR_LITERAL("'\f'") +CHAR_LITERAL("'\u0030'") +CHAR_LITERAL("'\uABCD'") +CHAR_LITERAL("'\uabcd'") +CHAR_LITERAL("'\\'") +CHAR_LITERAL("'''") +CHAR_LITERAL("'\"'") +CHAR_LITERAL("'\"'") + + +CHAR_LITERAL("'a'") SIMPLE_NAME("a") INVALID_TOKEN("'") +INVALID_TOKEN("'ab'") +INVALID_TOKEN("'\\a'") +INVALID_TOKEN("''") +INVALID_TOKEN("'") +INVALID_TOKEN("'") +INVALID_TOKEN("'") +INVALID_TOKEN("'\\u'") +INVALID_TOKEN("'\\u0'") +INVALID_TOKEN("'\\ua'") +INVALID_TOKEN("'\\uab'") +INVALID_TOKEN("'\\u01a'") +INVALID_TOKEN("'\\uz'") +INVALID_TOKEN("'\\u012z'") + +CHAR_LITERAL("'a'") +INVALID_TOKEN("'")
\ No newline at end of file diff --git a/smali/src/test/resources/LexerTest/CommentTest.smali b/smali/src/test/resources/LexerTest/CommentTest.smali new file mode 100644 index 00000000..dd246cbf --- /dev/null +++ b/smali/src/test/resources/LexerTest/CommentTest.smali @@ -0,0 +1,6 @@ +# +#abcd +# abcd +#0x1234 +0x1234 #0x1234 +invoke-virtual #invoke-virtual
\ No newline at end of file diff --git a/smali/src/test/resources/LexerTest/CommentTest.tokens b/smali/src/test/resources/LexerTest/CommentTest.tokens new file mode 100644 index 00000000..5f781ade --- /dev/null +++ b/smali/src/test/resources/LexerTest/CommentTest.tokens @@ -0,0 +1,6 @@ +LINE_COMMENT("#") WHITE_SPACE("\n") +LINE_COMMENT("#abcd") WHITE_SPACE("\n") +LINE_COMMENT("# abcd") WHITE_SPACE("\n") +LINE_COMMENT("#0x1234") WHITE_SPACE("\n") +INTEGER_LITERAL("0x1234") WHITE_SPACE(" ") LINE_COMMENT("#0x1234") WHITE_SPACE("\n") +INSTRUCTION_FORMAT35c_METHOD("invoke-virtual") WHITE_SPACE(" ") LINE_COMMENT("#invoke-virtual")
\ No newline at end of file diff --git a/smali/src/test/resources/LexerTest/InstructionTest.smali b/smali/src/test/resources/LexerTest/InstructionTest.smali new file mode 100644 index 00000000..b45de2db --- /dev/null +++ b/smali/src/test/resources/LexerTest/InstructionTest.smali @@ -0,0 +1,198 @@ +goto +return-void +nop +const/4 +move-result +move-result-wide +move-result-object +move-exception +return +return-wide +move +move-wide +move-object +array-length +neg-int +not-int +neg-long +not-long +neg-float +neg-double +int-to-long +int-to-float +int-to-double +long-to-int +long-to-float +long-to-double +float-to-int +float-to-long +float-to-double +double-to-int +double-to-long +add-int/2addr +sub-int/2addr +mul-int/2addr +div-int/2addr +rem-int/2addr +and-int/2addr +or-int/2addr +xor-int/2addr +shl-int/2addr +shr-int/2addr +ushr-int/2addr +add-long/2addr +sub-long/2addr +mul-long/2addr +div-long/2addr +rem-long/2addr +and-long/2addr +or-long/2addr +xor-long/2addr +shl-long/2addr +shr-long/2addr +ushr-long/2addr +add-float/2addr +sub-float/2addr +mul-float/2addr +div-float/2addr +rem-float/2addr +add-double/2addr +goto/16 +sget +sget-wide +sget-object +sget-boolean +sget-byte +sget-char +sget-short +sput +const-string +check-cast +new-instance +const-class +const/high16 +const-wide/high16 +const/16 +const-wide/16 +if-eqz +if-nez +if-ltz +if-gez +if-gtz +if-lez +add-int/lit8 +rsub-int/lit8 +mul-int/lit8 +div-int/lit8 +rem-int/lit8 +and-int/lit8 +iget +iget-wide +iget-object +iget-boolean +iget-byte +iget-char +iget-short +iput +instance-of +new-array +iget-quick +iget-wide-quick +iget-object-quick +iput-quick +iput-wide-quick +iput-object-quick +rsub-int +add-int/lit16 +mul-int/lit16 +div-int/lit16 +rem-int/lit16 +and-int/lit16 +or-int/lit16 +if-eq +if-ne +if-lt +if-ge +if-gt +if-le +move/from16 +move-wide/from16 +move-object/from16 +cmpl-float +cmpg-float +cmpl-double +cmpg-double +cmp-long +aget +aget-wide +aget-object +aget-boolean +aget-byte +aget-char +aget-short +aput +aput-wide +aput-object +aput-boolean +aput-byte +aput-char +aput-short +add-int +sub-int +mul-int +div-int +rem-int +and-int +or-int +xor-int +shl-int +shr-int +ushr-int +add-long +sub-long +mul-long +div-long +rem-long +and-long +or-long +xor-long +shl-long +shr-long +ushr-long +add-float +sub-float +mul-float +div-float +rem-float +add-double +sub-double +mul-double +div-double +goto/32 +const-string/jumbo +const +const-wide/32 +fill-array-data +packed-switch +sparse-switch +move/16 +move-wide/16 +move-object/16 +invoke-virtual +invoke-super +invoke-direct +invoke-static +invoke-interface +filled-new-array +invoke-direct-empty +execute-inline +invoke-virtual-quick +invoke-super-quick +invoke-virtual/range +invoke-super/range +invoke-direct/range +invoke-static/range +filled-new-array/range +invoke-virtual-quick/range +invoke-super-quick/range +const-wide
\ No newline at end of file diff --git a/smali/src/test/resources/LexerTest/InstructionTest.tokens b/smali/src/test/resources/LexerTest/InstructionTest.tokens new file mode 100644 index 00000000..2ceaf528 --- /dev/null +++ b/smali/src/test/resources/LexerTest/InstructionTest.tokens @@ -0,0 +1,198 @@ +INSTRUCTION_FORMAT10t("goto") +INSTRUCTION_FORMAT10x("return-void") +INSTRUCTION_FORMAT10x("nop") +INSTRUCTION_FORMAT11n("const/4") +INSTRUCTION_FORMAT11x("move-result") +INSTRUCTION_FORMAT11x("move-result-wide") +INSTRUCTION_FORMAT11x("move-result-object") +INSTRUCTION_FORMAT11x("move-exception") +INSTRUCTION_FORMAT11x("return") +INSTRUCTION_FORMAT11x("return-wide") +INSTRUCTION_FORMAT12x_OR_ID("move") +INSTRUCTION_FORMAT12x_OR_ID("move-wide") +INSTRUCTION_FORMAT12x_OR_ID("move-object") +INSTRUCTION_FORMAT12x_OR_ID("array-length") +INSTRUCTION_FORMAT12x_OR_ID("neg-int") +INSTRUCTION_FORMAT12x_OR_ID("not-int") +INSTRUCTION_FORMAT12x_OR_ID("neg-long") +INSTRUCTION_FORMAT12x_OR_ID("not-long") +INSTRUCTION_FORMAT12x_OR_ID("neg-float") +INSTRUCTION_FORMAT12x_OR_ID("neg-double") +INSTRUCTION_FORMAT12x_OR_ID("int-to-long") +INSTRUCTION_FORMAT12x_OR_ID("int-to-float") +INSTRUCTION_FORMAT12x_OR_ID("int-to-double") +INSTRUCTION_FORMAT12x_OR_ID("long-to-int") +INSTRUCTION_FORMAT12x_OR_ID("long-to-float") +INSTRUCTION_FORMAT12x_OR_ID("long-to-double") +INSTRUCTION_FORMAT12x_OR_ID("float-to-int") +INSTRUCTION_FORMAT12x_OR_ID("float-to-long") +INSTRUCTION_FORMAT12x_OR_ID("float-to-double") +INSTRUCTION_FORMAT12x_OR_ID("double-to-int") +INSTRUCTION_FORMAT12x_OR_ID("double-to-long") +INSTRUCTION_FORMAT12x("add-int/2addr") +INSTRUCTION_FORMAT12x("sub-int/2addr") +INSTRUCTION_FORMAT12x("mul-int/2addr") +INSTRUCTION_FORMAT12x("div-int/2addr") +INSTRUCTION_FORMAT12x("rem-int/2addr") +INSTRUCTION_FORMAT12x("and-int/2addr") +INSTRUCTION_FORMAT12x("or-int/2addr") +INSTRUCTION_FORMAT12x("xor-int/2addr") +INSTRUCTION_FORMAT12x("shl-int/2addr") +INSTRUCTION_FORMAT12x("shr-int/2addr") +INSTRUCTION_FORMAT12x("ushr-int/2addr") +INSTRUCTION_FORMAT12x("add-long/2addr") +INSTRUCTION_FORMAT12x("sub-long/2addr") +INSTRUCTION_FORMAT12x("mul-long/2addr") +INSTRUCTION_FORMAT12x("div-long/2addr") +INSTRUCTION_FORMAT12x("rem-long/2addr") +INSTRUCTION_FORMAT12x("and-long/2addr") +INSTRUCTION_FORMAT12x("or-long/2addr") +INSTRUCTION_FORMAT12x("xor-long/2addr") +INSTRUCTION_FORMAT12x("shl-long/2addr") +INSTRUCTION_FORMAT12x("shr-long/2addr") +INSTRUCTION_FORMAT12x("ushr-long/2addr") +INSTRUCTION_FORMAT12x("add-float/2addr") +INSTRUCTION_FORMAT12x("sub-float/2addr") +INSTRUCTION_FORMAT12x("mul-float/2addr") +INSTRUCTION_FORMAT12x("div-float/2addr") +INSTRUCTION_FORMAT12x("rem-float/2addr") +INSTRUCTION_FORMAT12x("add-double/2addr") +INSTRUCTION_FORMAT20t("goto/16") +INSTRUCTION_FORMAT21c_FIELD("sget") +INSTRUCTION_FORMAT21c_FIELD("sget-wide") +INSTRUCTION_FORMAT21c_FIELD("sget-object") +INSTRUCTION_FORMAT21c_FIELD("sget-boolean") +INSTRUCTION_FORMAT21c_FIELD("sget-byte") +INSTRUCTION_FORMAT21c_FIELD("sget-char") +INSTRUCTION_FORMAT21c_FIELD("sget-short") +INSTRUCTION_FORMAT21c_FIELD("sput") +INSTRUCTION_FORMAT21c_STRING("const-string") +INSTRUCTION_FORMAT21c_TYPE("check-cast") +INSTRUCTION_FORMAT21c_TYPE("new-instance") +INSTRUCTION_FORMAT21c_TYPE("const-class") +INSTRUCTION_FORMAT21h("const/high16") +INSTRUCTION_FORMAT21h("const-wide/high16") +INSTRUCTION_FORMAT21s("const/16") +INSTRUCTION_FORMAT21s("const-wide/16") +INSTRUCTION_FORMAT21t("if-eqz") +INSTRUCTION_FORMAT21t("if-nez") +INSTRUCTION_FORMAT21t("if-ltz") +INSTRUCTION_FORMAT21t("if-gez") +INSTRUCTION_FORMAT21t("if-gtz") +INSTRUCTION_FORMAT21t("if-lez") +INSTRUCTION_FORMAT22b("add-int/lit8") +INSTRUCTION_FORMAT22b("rsub-int/lit8") +INSTRUCTION_FORMAT22b("mul-int/lit8") +INSTRUCTION_FORMAT22b("div-int/lit8") +INSTRUCTION_FORMAT22b("rem-int/lit8") +INSTRUCTION_FORMAT22b("and-int/lit8") +INSTRUCTION_FORMAT22c_FIELD("iget") +INSTRUCTION_FORMAT22c_FIELD("iget-wide") +INSTRUCTION_FORMAT22c_FIELD("iget-object") +INSTRUCTION_FORMAT22c_FIELD("iget-boolean") +INSTRUCTION_FORMAT22c_FIELD("iget-byte") +INSTRUCTION_FORMAT22c_FIELD("iget-char") +INSTRUCTION_FORMAT22c_FIELD("iget-short") +INSTRUCTION_FORMAT22c_FIELD("iput") +INSTRUCTION_FORMAT22c_TYPE("instance-of") +INSTRUCTION_FORMAT22c_TYPE("new-array") +INSTRUCTION_FORMAT22cs_FIELD("iget-quick") +INSTRUCTION_FORMAT22cs_FIELD("iget-wide-quick") +INSTRUCTION_FORMAT22cs_FIELD("iget-object-quick") +INSTRUCTION_FORMAT22cs_FIELD("iput-quick") +INSTRUCTION_FORMAT22cs_FIELD("iput-wide-quick") +INSTRUCTION_FORMAT22cs_FIELD("iput-object-quick") +INSTRUCTION_FORMAT22s_OR_ID("rsub-int") +INSTRUCTION_FORMAT22s("add-int/lit16") +INSTRUCTION_FORMAT22s("mul-int/lit16") +INSTRUCTION_FORMAT22s("div-int/lit16") +INSTRUCTION_FORMAT22s("rem-int/lit16") +INSTRUCTION_FORMAT22s("and-int/lit16") +INSTRUCTION_FORMAT22s("or-int/lit16") +INSTRUCTION_FORMAT22t("if-eq") +INSTRUCTION_FORMAT22t("if-ne") +INSTRUCTION_FORMAT22t("if-lt") +INSTRUCTION_FORMAT22t("if-ge") +INSTRUCTION_FORMAT22t("if-gt") +INSTRUCTION_FORMAT22t("if-le") +INSTRUCTION_FORMAT22x("move/from16") +INSTRUCTION_FORMAT22x("move-wide/from16") +INSTRUCTION_FORMAT22x("move-object/from16") +INSTRUCTION_FORMAT23x("cmpl-float") +INSTRUCTION_FORMAT23x("cmpg-float") +INSTRUCTION_FORMAT23x("cmpl-double") +INSTRUCTION_FORMAT23x("cmpg-double") +INSTRUCTION_FORMAT23x("cmp-long") +INSTRUCTION_FORMAT23x("aget") +INSTRUCTION_FORMAT23x("aget-wide") +INSTRUCTION_FORMAT23x("aget-object") +INSTRUCTION_FORMAT23x("aget-boolean") +INSTRUCTION_FORMAT23x("aget-byte") +INSTRUCTION_FORMAT23x("aget-char") +INSTRUCTION_FORMAT23x("aget-short") +INSTRUCTION_FORMAT23x("aput") +INSTRUCTION_FORMAT23x("aput-wide") +INSTRUCTION_FORMAT23x("aput-object") +INSTRUCTION_FORMAT23x("aput-boolean") +INSTRUCTION_FORMAT23x("aput-byte") +INSTRUCTION_FORMAT23x("aput-char") +INSTRUCTION_FORMAT23x("aput-short") +INSTRUCTION_FORMAT23x("add-int") +INSTRUCTION_FORMAT23x("sub-int") +INSTRUCTION_FORMAT23x("mul-int") +INSTRUCTION_FORMAT23x("div-int") +INSTRUCTION_FORMAT23x("rem-int") +INSTRUCTION_FORMAT23x("and-int") +INSTRUCTION_FORMAT23x("or-int") +INSTRUCTION_FORMAT23x("xor-int") +INSTRUCTION_FORMAT23x("shl-int") +INSTRUCTION_FORMAT23x("shr-int") +INSTRUCTION_FORMAT23x("ushr-int") +INSTRUCTION_FORMAT23x("add-long") +INSTRUCTION_FORMAT23x("sub-long") +INSTRUCTION_FORMAT23x("mul-long") +INSTRUCTION_FORMAT23x("div-long") +INSTRUCTION_FORMAT23x("rem-long") +INSTRUCTION_FORMAT23x("and-long") +INSTRUCTION_FORMAT23x("or-long") +INSTRUCTION_FORMAT23x("xor-long") +INSTRUCTION_FORMAT23x("shl-long") +INSTRUCTION_FORMAT23x("shr-long") +INSTRUCTION_FORMAT23x("ushr-long") +INSTRUCTION_FORMAT23x("add-float") +INSTRUCTION_FORMAT23x("sub-float") +INSTRUCTION_FORMAT23x("mul-float") +INSTRUCTION_FORMAT23x("div-float") +INSTRUCTION_FORMAT23x("rem-float") +INSTRUCTION_FORMAT23x("add-double") +INSTRUCTION_FORMAT23x("sub-double") +INSTRUCTION_FORMAT23x("mul-double") +INSTRUCTION_FORMAT23x("div-double") +INSTRUCTION_FORMAT30t("goto/32") +INSTRUCTION_FORMAT31c("const-string/jumbo") +INSTRUCTION_FORMAT31i_OR_ID("const") +INSTRUCTION_FORMAT31i("const-wide/32") +INSTRUCTION_FORMAT31t("fill-array-data") +INSTRUCTION_FORMAT31t("packed-switch") +INSTRUCTION_FORMAT31t("sparse-switch") +INSTRUCTION_FORMAT32x("move/16") +INSTRUCTION_FORMAT32x("move-wide/16") +INSTRUCTION_FORMAT32x("move-object/16") +INSTRUCTION_FORMAT35c_METHOD("invoke-virtual") +INSTRUCTION_FORMAT35c_METHOD("invoke-super") +INSTRUCTION_FORMAT35c_METHOD("invoke-direct") +INSTRUCTION_FORMAT35c_METHOD("invoke-static") +INSTRUCTION_FORMAT35c_METHOD("invoke-interface") +INSTRUCTION_FORMAT35c_TYPE("filled-new-array") +INSTRUCTION_FORMAT35s_METHOD("invoke-direct-empty") +INSTRUCTION_FORMAT35ms_METHOD("execute-inline") +INSTRUCTION_FORMAT35ms_METHOD("invoke-virtual-quick") +INSTRUCTION_FORMAT35ms_METHOD("invoke-super-quick") +INSTRUCTION_FORMAT3rc_METHOD("invoke-virtual/range") +INSTRUCTION_FORMAT3rc_METHOD("invoke-super/range") +INSTRUCTION_FORMAT3rc_METHOD("invoke-direct/range") +INSTRUCTION_FORMAT3rc_METHOD("invoke-static/range") +INSTRUCTION_FORMAT3rc_TYPE("filled-new-array/range") +INSTRUCTION_FORMAT3rms_METHOD("invoke-virtual-quick/range") +INSTRUCTION_FORMAT3rms_METHOD("invoke-super-quick/range") +INSTRUCTION_FORMAT51l("const-wide")
\ No newline at end of file diff --git a/smali/src/test/resources/LexerTest/MiscTest.smali b/smali/src/test/resources/LexerTest/MiscTest.smali new file mode 100644 index 00000000..62f01f2d --- /dev/null +++ b/smali/src/test/resources/LexerTest/MiscTest.smali @@ -0,0 +1,60 @@ +true +false +null +p0 +p90 +pab +v0 +v90 +vab + +truefalse + +build +runtime +system + +public +private +protected +static +final +synchronized +bridge +varargs +native +abstract +strictfp +synthetic +constructor +declared-synchronized +interface +enum +annotation +volatile +transient + +vtable@0xABCD +vtable@0x0123 +vtable@0x0123ABCD + +field@0xABCD +field@0x0123 +field@0x0123ABCD + +vtable@ +vtable@zzz +vtable@abcd +field@ +field@zzz +field@abcd + ++0 ++10 ++01 ++0777 ++0x1234ABC ++1234 + ++08 ++
\ No newline at end of file diff --git a/smali/src/test/resources/LexerTest/MiscTest.tokens b/smali/src/test/resources/LexerTest/MiscTest.tokens new file mode 100644 index 00000000..974ae4c2 --- /dev/null +++ b/smali/src/test/resources/LexerTest/MiscTest.tokens @@ -0,0 +1,60 @@ +BOOL_LITERAL("true") +BOOL_LITERAL("false") +NULL_LITERAL("null") +REGISTER("p0") +REGISTER("p90") +SIMPLE_NAME("pab") +REGISTER("v0") +REGISTER("v90") +SIMPLE_NAME("vab") + +SIMPLE_NAME("truefalse") + +ANNOTATION_VISIBILITY("build") +ANNOTATION_VISIBILITY("runtime") +ANNOTATION_VISIBILITY("system") + +ACCESS_SPEC("public") +ACCESS_SPEC("private") +ACCESS_SPEC("protected") +ACCESS_SPEC("static") +ACCESS_SPEC("final") +ACCESS_SPEC("synchronized") +ACCESS_SPEC("bridge") +ACCESS_SPEC("varargs") +ACCESS_SPEC("native") +ACCESS_SPEC("abstract") +ACCESS_SPEC("strictfp") +ACCESS_SPEC("synthetic") +ACCESS_SPEC("constructor") +ACCESS_SPEC("declared-synchronized") +ACCESS_SPEC("interface") +ACCESS_SPEC("enum") +ACCESS_SPEC("annotation") +ACCESS_SPEC("volatile") +ACCESS_SPEC("transient") + +VTABLE_OFFSET("vtable@0xABCD") +VTABLE_OFFSET("vtable@0x0123") +VTABLE_OFFSET("vtable@0x0123ABCD") + +FIELD_OFFSET("field@0xABCD") +FIELD_OFFSET("field@0x0123") +FIELD_OFFSET("field@0x0123ABCD") + +SIMPLE_NAME("vtable") INVALID_TOKEN("@") +SIMPLE_NAME("vtable") INVALID_TOKEN("@") SIMPLE_NAME("zzz") +SIMPLE_NAME("vtable") INVALID_TOKEN("@") SIMPLE_NAME("abcd") +SIMPLE_NAME("field") INVALID_TOKEN("@") +SIMPLE_NAME("field") INVALID_TOKEN("@") SIMPLE_NAME("zzz") +SIMPLE_NAME("field") INVALID_TOKEN("@") SIMPLE_NAME("abcd") + +OFFSET("+0") +OFFSET("+10") +OFFSET("+01") +OFFSET("+0777") +OFFSET("+0x1234ABC") +OFFSET("+1234") + +OFFSET("+0") INTEGER_LITERAL("8") +INVALID_TOKEN("+")
\ No newline at end of file diff --git a/smali/src/test/resources/LexerTest/StringLiteralTest.smali b/smali/src/test/resources/LexerTest/StringLiteralTest.smali new file mode 100644 index 00000000..d4eaba5a --- /dev/null +++ b/smali/src/test/resources/LexerTest/StringLiteralTest.smali @@ -0,0 +1,43 @@ +"" +" " +" " +" " +"aaaaaaaaaaaaaaaaaaaaaaaaaa" +"\"\"\"\\" +"abcd1234" +"abcd 1234" +"ABCD""ABCD" +"1234" +"\n" +"\r" +"\t" +"\b" +"\f" +"\u0030" +"\uABCD" +"\uabcd" +"\\" +"\'" +"'" +"\"" +"\n\r\t\b\f\u0030\uABCD\"\\\''\"" +"\uABCD01234" +"\uABCDEFGHIJK" +"\u12341234" +"\\\\\\\\\\\\\\\"" + +"a"a" +"\a" +" +" +" +"\u" +"\u0" +"\ua" +"\uab" +"\u01a" +"\uz" +"\u012z\u\u\u\uz\"" + +"abcd" +"
\ No newline at end of file diff --git a/smali/src/test/resources/LexerTest/StringLiteralTest.tokens b/smali/src/test/resources/LexerTest/StringLiteralTest.tokens new file mode 100644 index 00000000..474668c5 --- /dev/null +++ b/smali/src/test/resources/LexerTest/StringLiteralTest.tokens @@ -0,0 +1,43 @@ +STRING_LITERAL("\"\"") +STRING_LITERAL("\" \"") +STRING_LITERAL("\" \"") +STRING_LITERAL("\" \"") +STRING_LITERAL("\"aaaaaaaaaaaaaaaaaaaaaaaaaa\"") +STRING_LITERAL("\"\"\"\"\\\"") +STRING_LITERAL("\"abcd1234\"") +STRING_LITERAL("\"abcd 1234\"") +STRING_LITERAL("\"ABCD\"") STRING_LITERAL("\"ABCD\"") +STRING_LITERAL("\"1234\"") +STRING_LITERAL("\"\n\"") +STRING_LITERAL("\"\r\"") +STRING_LITERAL("\"\t\"") +STRING_LITERAL("\"\b\"") +STRING_LITERAL("\"\f\"") +STRING_LITERAL("\"\u0030\"") +STRING_LITERAL("\"\uABCD\"") +STRING_LITERAL("\"\uabcd\"") +STRING_LITERAL("\"\\\"") +STRING_LITERAL("\"\'\"") +STRING_LITERAL("\"'\"") +STRING_LITERAL("\"\"\"") +STRING_LITERAL("\"\n\r\t\b\f\u0030\uABCD\"\\\''\"\"") +STRING_LITERAL("\"\uABCD01234\"") +STRING_LITERAL("\"\uABCDEFGHIJK\"") +STRING_LITERAL("\"\u12341234\"") +STRING_LITERAL("\"\\\\\\\\\\\\\\\"\"") + +STRING_LITERAL("\"a\"") SIMPLE_NAME("a") INVALID_TOKEN("\"") +INVALID_TOKEN("\"\\a\"") +INVALID_TOKEN("\"") +INVALID_TOKEN("\"") +INVALID_TOKEN("\"") +INVALID_TOKEN("\"\\u\"") +INVALID_TOKEN("\"\\u0\"") +INVALID_TOKEN("\"\\ua\"") +INVALID_TOKEN("\"\\uab\"") +INVALID_TOKEN("\"\\u01a\"") +INVALID_TOKEN("\"\\uz\"") +INVALID_TOKEN("\"\\u012z\\u\\u\\u\\uz\"\"") + +STRING_LITERAL("\"abcd\"") +INVALID_TOKEN("\"")
\ No newline at end of file diff --git a/smali/src/test/resources/LexerTest/SymbolTest.smali b/smali/src/test/resources/LexerTest/SymbolTest.smali new file mode 100644 index 00000000..6b11061b --- /dev/null +++ b/smali/src/test/resources/LexerTest/SymbolTest.smali @@ -0,0 +1,19 @@ +.. +-> += +: +, +{}() +{ } ( ) +{ +} +( +) + + + + + + + +
\ No newline at end of file diff --git a/smali/src/test/resources/LexerTest/SymbolTest.tokens b/smali/src/test/resources/LexerTest/SymbolTest.tokens new file mode 100644 index 00000000..009c9324 --- /dev/null +++ b/smali/src/test/resources/LexerTest/SymbolTest.tokens @@ -0,0 +1,12 @@ +DOTDOT("..") WHITE_SPACE("\n") +ARROW("->") WHITE_SPACE("\n") +EQUAL("=") WHITE_SPACE("\n") +COLON(":") WHITE_SPACE("\n") +COMMA(",") WHITE_SPACE("\n") +OPEN_BRACE("{") CLOSE_BRACE("}") OPEN_PAREN("(") CLOSE_PAREN(")") WHITE_SPACE("\n") +OPEN_BRACE("{") WHITE_SPACE(" ") CLOSE_BRACE("}") WHITE_SPACE(" ") OPEN_PAREN("(") WHITE_SPACE(" ") CLOSE_PAREN(")") WHITE_SPACE("\n") +OPEN_BRACE("{") WHITE_SPACE("\n") +CLOSE_BRACE("}") WHITE_SPACE("\n") +OPEN_PAREN("(") WHITE_SPACE("\n") +CLOSE_PAREN(")") +WHITE_SPACE("\n \n\t\n\t \n\t \n\t \t\n \t\n \t\n\r\r")
\ No newline at end of file diff --git a/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.smali b/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.smali new file mode 100644 index 00000000..7fd9b65a --- /dev/null +++ b/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.smali @@ -0,0 +1,48 @@ +Z +B +S +C +I +J +F +D +V + +Ljava/lang/String; +LI; +LV; +LI/I/I; + +[Z +[B +[S +[C +[I +[J +[F +[D +[Ljava/lang/String; +[LI/I/I; + +IIIII +ZBSCIJFD +ILa;[La;[I +Ljava/lang/String;Ljava/lang/String; +[I[I[I +[I[Z +[I[Ljava/lang/String; + +<init> +<clinit> + +Ljava/lang/String +L; +LI +L[Ljava/lang/String; + +[ +[V +[java/lang/String; +[; + +<linit>
\ No newline at end of file diff --git a/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.tokens b/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.tokens new file mode 100644 index 00000000..531622e9 --- /dev/null +++ b/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.tokens @@ -0,0 +1,48 @@ +PRIMITIVE_TYPE("Z") +PRIMITIVE_TYPE("B") +PRIMITIVE_TYPE("S") +PRIMITIVE_TYPE("C") +PRIMITIVE_TYPE("I") +PRIMITIVE_TYPE("J") +PRIMITIVE_TYPE("F") +PRIMITIVE_TYPE("D") +VOID_TYPE("V") + +CLASS_DESCRIPTOR("Ljava/lang/String;") +CLASS_DESCRIPTOR("LI;") +CLASS_DESCRIPTOR("LV;") +CLASS_DESCRIPTOR("LI/I/I;") + +ARRAY_DESCRIPTOR("[Z") +ARRAY_DESCRIPTOR("[B") +ARRAY_DESCRIPTOR("[S") +ARRAY_DESCRIPTOR("[C") +ARRAY_DESCRIPTOR("[I") +ARRAY_DESCRIPTOR("[J") +ARRAY_DESCRIPTOR("[F") +ARRAY_DESCRIPTOR("[D") +ARRAY_DESCRIPTOR("[Ljava/lang/String;") +ARRAY_DESCRIPTOR("[LI/I/I;") + +PARAM_LIST_OR_ID("IIIII") +PARAM_LIST_OR_ID("ZBSCIJFD") +PARAM_LIST("ILa;[La;[I") +PARAM_LIST("Ljava/lang/String;Ljava/lang/String;") +PARAM_LIST("[I[I[I") +PARAM_LIST("[I[Z") +PARAM_LIST("[I[Ljava/lang/String;") + +METHOD_NAME("<init>") +METHOD_NAME("<clinit>") + +SIMPLE_NAME("Ljava") INVALID_TOKEN("/") SIMPLE_NAME("lang") INVALID_TOKEN("/") SIMPLE_NAME("String") +SIMPLE_NAME("L") INVALID_TOKEN(";") +SIMPLE_NAME("LI") +SIMPLE_NAME("L") ARRAY_DESCRIPTOR("[Ljava/lang/String;") + +INVALID_TOKEN("[") +INVALID_TOKEN("[") VOID_TYPE("V") +INVALID_TOKEN("[") SIMPLE_NAME("java") INVALID_TOKEN("/") SIMPLE_NAME("lang") INVALID_TOKEN("/") SIMPLE_NAME("String") INVALID_TOKEN(";") +INVALID_TOKEN("[") INVALID_TOKEN(";") + +INVALID_TOKEN("<") SIMPLE_NAME("linit") INVALID_TOKEN(">")
\ No newline at end of file |