diff options
author | Karel Klic <kklic@redhat.com> | 2010-02-03 23:50:50 +0100 |
---|---|---|
committer | Karel Klic <kklic@redhat.com> | 2010-02-03 23:50:50 +0100 |
commit | eb7483e262e29fdebb676c18453447247f3c0545 (patch) | |
tree | a03b37b441044031cd69f52e3b940dcb96a979b5 | |
parent | f7c4cfae10637533bacb21503d7cc41a7575ec0a (diff) | |
download | abrt-eb7483e262e29fdebb676c18453447247f3c0545.tar.gz abrt-eb7483e262e29fdebb676c18453447247f3c0545.tar.xz abrt-eb7483e262e29fdebb676c18453447247f3c0545.zip |
Fixed parsing backtrace from rhbz#549293
-rw-r--r-- | src/Backtrace/parser.y | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/Backtrace/parser.y b/src/Backtrace/parser.y index 36a8e346..19032829 100644 --- a/src/Backtrace/parser.y +++ b/src/Backtrace/parser.y @@ -267,12 +267,12 @@ variables_line : variables_char_no_framestart variables_char : '#' | variables_char_no_framestart ; -/* Manually synchronized with function_args_char, except the first line. */ -variables_char_no_framestart : digit | nondigit | '"' | '(' | ')' +/* Manually synchronized with function_args_char_base, except the first line. */ +variables_char_no_framestart : digit | nondigit | '"' | '(' | ')' | '\\' | '+' | '-' | '<' | '>' | '/' | '.' | '[' | ']' | '?' | '\'' | '`' | ',' | '=' | '{' | '}' | '^' | '&' | '$' - | ':' | ';' | '\\' | '!' | '@' | '*' + | ':' | ';' | '!' | '@' | '*' | '%' | '|' | '~' ; @@ -313,13 +313,21 @@ function_args_string : '"' wsa function_args_string_sequence wsa '"' /* Manually synchronized with variables_char_no_framestart, * except the first line. */ -function_args_char : digit | nondigit | '#' +function_args_char_base : digit | nondigit | '#' | '+' | '-' | '<' | '>' | '/' | '.' | '[' | ']' | '?' | '\'' | '`' | ',' | '=' | '{' | '}' | '^' | '&' | '$' - | ':' | ';' | '\\' | '!' | '@' | '*' + | ':' | ';' | '!' | '@' | '*' | '%' | '|' | '~' ; +function_args_escaped_char : '\\' function_args_char_base + | '\\' '\\' + | '\\' '"' +; +function_args_char : function_args_char_base + | function_args_escaped_char +; + function_args_string_sequence : function_args_string_char | function_args_string_sequence function_args_string_char @@ -329,7 +337,6 @@ function_args_string_sequence : function_args_string_char function_args_string_char : function_args_char | '(' | ')' ; - file_name : file_name_char { $$ = strbuf_new(); strbuf_append_char($$, $1); } | file_name file_name_char { $$ = strbuf_append_char($1, $2); } ; @@ -408,6 +415,11 @@ identifier_braces_inside : identifier_braces_inside_char %dprec 1 strbuf_free($3); $$ = strbuf_append_char($1, $4); } + | identifier_braces_inside '(' ')' %dprec 1 + { + $$ = strbuf_append_char($1, $2); + $$ = strbuf_append_char($1, $3); + } | identifier_braces_inside identifier_template %dprec 2 { $$ = strbuf_append_str($1, $2->buf); |