diff options
author | Karel Klic <kklic@redhat.com> | 2009-11-24 18:04:07 +0100 |
---|---|---|
committer | Karel Klic <kklic@redhat.com> | 2009-11-24 18:04:07 +0100 |
commit | 074efbd72d70a7dbd7ca47d07d083ebb2e15e57f (patch) | |
tree | a4eae284bb8ac1e733e4b9bcc76963047781b86c /src/Backtrace | |
parent | 27bf86529b2b4b8d94d08dc55bf1d3d3c55c4fb1 (diff) | |
download | abrt-074efbd72d70a7dbd7ca47d07d083ebb2e15e57f.tar.gz abrt-074efbd72d70a7dbd7ca47d07d083ebb2e15e57f.tar.xz abrt-074efbd72d70a7dbd7ca47d07d083ebb2e15e57f.zip |
Add more corner cases to parser
Diffstat (limited to 'src/Backtrace')
-rw-r--r-- | src/Backtrace/parser.y | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/Backtrace/parser.y b/src/Backtrace/parser.y index c81586e7..8512366a 100644 --- a/src/Backtrace/parser.y +++ b/src/Backtrace/parser.y @@ -46,6 +46,8 @@ void yyerror(char const *s) } /* Bison declarations. */ +%token END 0 "end of file" + %type <backtrace> backtrace ignoredpart_backtrace %type <thread> threads thread %type <frame> frames frame frame_head frame_head_1 frame_head_2 frame_head_3 frame_head_4 frame_head_5 @@ -214,10 +216,15 @@ file_location : file_name ':' digit_sequence ; variables : variables_line '\n' + | variables_line END | variables_line variables_wss '\n' + | variables_line variables_wss END | variables variables_line '\n' + | variables variables_line END | variables variables_wss variables_line '\n' + | variables variables_wss variables_line END | variables variables_wss variables_line variables_wss '\n' + | variables variables_wss variables_line variables_wss END ; variables_line : variables_char_no_framestart @@ -261,13 +268,27 @@ function_args : '(' wsa ')' this must be somehow handled, especially characters ( and ). */ function_args_sequence : function_args_char | function_args_sequence wsa function_args_char + | function_args_sequence wsa function_args_string +; + +function_args_string : '"' function_args_string_sequence '"' ; -function_args_char : digit | nondigit | '{' | '}' | '<' | '>' | '"' | ':' | '~' +function_args_char : digit | nondigit | '{' | '}' | '<' | '>' | ':' | '~' | '=' | '-' | '+' | '@' | ',' | '.' | '[' | ']' | '/' | '%' - | '\\' + | '\\' | '&' +; + +function_args_string_sequence : function_args_string_char + | function_args_string_sequence function_args_string_char + | function_args_string_sequence '\t' function_args_string_char + | 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); } ; |