summaryrefslogtreecommitdiff
path: root/src/format/mangling/dex/type_gram.y
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2016-09-29 21:21:26 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2016-09-29 21:21:26 (GMT)
commit537ed969ad0305e70dc2d503dbc49df859892717 (patch)
tree4003d2ba03bbc7b372bdaf8dc4d9e04c15318983 /src/format/mangling/dex/type_gram.y
parent3ea1d4c6cf82a75409b667b8fe20fc0718e5d922 (diff)
Added partial support for Dalvik MUTF-8 encodings.
Diffstat (limited to 'src/format/mangling/dex/type_gram.y')
-rw-r--r--src/format/mangling/dex/type_gram.y16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/format/mangling/dex/type_gram.y b/src/format/mangling/dex/type_gram.y
index 1176bd2..d5c3f26 100644
--- a/src/format/mangling/dex/type_gram.y
+++ b/src/format/mangling/dex/type_gram.y
@@ -23,6 +23,7 @@ bool demangle_dex_type(GDexDemangler *, const char *);
#include "../../../analysis/types/basic.h"
#include "../../../analysis/types/cse.h"
+#include "../../../common/extstr.h"
}
@@ -45,7 +46,7 @@ bool demangle_dex_type(GDexDemangler *, const char *);
%type <type> type_descriptor field_type_descriptor non_array_field_type_descriptor full_class_name
-%type <text> TEXT
+%type <text> TEXT simple_name
%{
@@ -87,18 +88,15 @@ non_array_field_type_descriptor:
| L full_class_name SEMICOLON { $$ = $2; }
full_class_name:
- TEXT { $$ = g_class_enum_type_new(CET_CLASS, $1); }
- | full_class_name SLASH TEXT {
+ simple_name { $$ = g_class_enum_type_new(CET_CLASS, $1); }
+ | full_class_name SLASH simple_name {
$$ = g_class_enum_type_new(CET_CLASS, $3);
g_data_type_set_namespace($$, $1);
g_object_unref($1);
}
- | full_class_name DOLLAR TEXT {
- $$ = g_class_enum_type_new(CET_CLASS, $3);
- g_data_type_set_namespace($$, $1);
- g_object_unref($1);
- }
-
+simple_name:
+ TEXT { $$ = strdup($1); }
+ | simple_name TEXT { $$ = stradd($1, $2); }
%%