diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2010-04-18 00:31:49 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2010-04-18 00:31:49 (GMT) |
commit | ef29fbc801e23f547b9ee7666b713bcf32d7e787 (patch) | |
tree | fb7466a56e2246c53a51d0475c1b5fc70ef3b8f9 /src/format/mangling/itanium_tok.l | |
parent | 49468379e912806400c5874f8e359cb934516228 (diff) |
Improved the Itanium demangler.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@152 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/format/mangling/itanium_tok.l')
-rw-r--r-- | src/format/mangling/itanium_tok.l | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/format/mangling/itanium_tok.l b/src/format/mangling/itanium_tok.l index bc5f5f1..e8fb7f1 100644 --- a/src/format/mangling/itanium_tok.l +++ b/src/format/mangling/itanium_tok.l @@ -29,6 +29,8 @@ _Z { return ITANIUM_SIGNATURE; } E { return EE; } N { return NN; } I { return II; } +F { return FF; } +L { return LL; } C1 { return C1; } C2 { return C2; } @@ -133,13 +135,21 @@ cl { return OPER_CLASS; } ix { return OPER_INDEX; } +S_ { return SUBSTI_FIRST; } +S[0-9a-z]_ { yylval.val = atoi(yytext + 1); return SUBSTI_N; } + +T_ { return TPARAM_FIRST; } +T[0-9]*_ { yylval.val = atoi(yytext + 1); return TPARAM_N; } + + [0-9]+ { yylval.val = atoi(yytext); return NUMBER; } <identifier>. { if (--itanium_txt_length == 0) BEGIN(INITIAL); yylval.car = *yytext; return CHAR; } -<*>. { printf("error : '%s'\n", yytext); } +<*>[ ] +<*>. { printf("error : '%s'\n", yytext); } %% |