Changeset 0085604032fa0e94dcf0e8ea91a13bfec7506dc8
- Timestamp:
- 06/23/2008 01:03:45 PM
(2 months ago)
- Author:
- mitchell <mitchell@frost.(none)>
- git-committer:
- mitchell <mitchell@frost.(none)> 1214251425 -0400
- git-parent:
[5b7fcf9f301963803ed8fa27278591f685abf682]
- git-author:
- mitchell <mitchell@frost.(none)> 1214251425 -0400
- Message:
Fixed parsers that could succomb to segfaulting.
It happens for parsers can cannot detect all language entities yet such as
HEREDOCs, or ones that have complicated entities.
I've ignored the other parsers that cover all of their language entities because
ohcount will only parser syntactically correct code.
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| rb34530c |
r0085604 |
|
| 52 | 52 | |
|---|
| 53 | 53 | lua_long_comment = |
|---|
| 54 | | '--' @comment ('[' >lua_long_ec_res '='* $lua_long_ec_inc '[') ( |
|---|
| | 54 | '--' ('[' >lua_long_ec_res '='* $lua_long_ec_inc '[') @enqueue @comment ( |
|---|
| 55 | 55 | newline %{ entity = INTERNAL_NL; } %lua_ccallback |
|---|
| 56 | 56 | | |
|---|
| … | … | |
| 58 | 58 | | |
|---|
| 59 | 59 | (nonnewline - ws) @comment |
|---|
| 60 | | )* :>> (']' '='* $lua_long_ec_dec ']' when { equal_count == 0 }); |
|---|
| | 60 | )* :>> (']' '='* $lua_long_ec_dec ']' when { equal_count == 0 }) @commit; |
|---|
| 61 | 61 | lua_line_comment = '--' @comment nonnewline*; |
|---|
| 62 | 62 | lua_comment = lua_long_comment | lua_line_comment; |
|---|
| rb354c6b |
r0085604 |
|
| 47 | 47 | perl_line_comment = '#' @comment nonnewline*; |
|---|
| 48 | 48 | perl_block_comment = |
|---|
| 49 | | '=' when starts_line @comment nonnewline+ ( |
|---|
| 50 | | '=' when starts_line 'cut' @comment @{ fgoto perl_line; } |
|---|
| | 49 | '=' when starts_line @enqueue @comment nonnewline+ ( |
|---|
| | 50 | '=' when starts_line 'cut' @commit @comment @{ fgoto perl_line; } |
|---|
| 51 | 51 | | |
|---|
| 52 | 52 | newline %{ entity = INTERNAL_NL; } %perl_ccallback |
|---|
| … | … | |
| 59 | 59 | |
|---|
| 60 | 60 | perl_sq_str = |
|---|
| 61 | | '\'' @code ( |
|---|
| | 61 | '\'' @enqueue @code ( |
|---|
| 62 | 62 | newline %{ entity = INTERNAL_NL; } %perl_ccallback |
|---|
| 63 | 63 | | |
|---|
| … | … | |
| 67 | 67 | | |
|---|
| 68 | 68 | '\\' nonnewline @code |
|---|
| 69 | | )* '\'' @code; |
|---|
| | 69 | )* '\'' @commit @code; |
|---|
| 70 | 70 | perl_dq_str = |
|---|
| 71 | | '"' @code ( |
|---|
| | 71 | '"' @enqueue @code ( |
|---|
| 72 | 72 | newline %{ entity = INTERNAL_NL; } %perl_ccallback |
|---|
| 73 | 73 | | |
|---|
| … | … | |
| 77 | 77 | | |
|---|
| 78 | 78 | '\\' nonnewline @code |
|---|
| 79 | | )* '"' @code; |
|---|
| | 79 | )* '"' @commit @code; |
|---|
| 80 | 80 | perl_cmd_str = |
|---|
| 81 | | '`' @code ( |
|---|
| | 81 | '`' @enqueue @code ( |
|---|
| 82 | 82 | newline %{ entity = INTERNAL_NL; } %perl_ccallback |
|---|
| 83 | 83 | | |
|---|
| … | … | |
| 87 | 87 | | |
|---|
| 88 | 88 | '\\' nonnewline @code |
|---|
| 89 | | )* '`' @code; |
|---|
| | 89 | )* '`' @commit @code; |
|---|
| 90 | 90 | perl_regex = '/' ([^\r\n\f/\\] | '\\' nonnewline)* '/' @code; |
|---|
| 91 | 91 | # TODO: heredoc detection |
|---|
| r95e8eb5 |
r0085604 |
|
| 57 | 57 | |
|---|
| 58 | 58 | php_sq_str = |
|---|
| 59 | | '\'' @code ( |
|---|
| | 59 | '\'' @enqueue @code ( |
|---|
| 60 | 60 | newline %{ entity = INTERNAL_NL; } %php_ccallback |
|---|
| 61 | 61 | | |
|---|
| … | … | |
| 65 | 65 | | |
|---|
| 66 | 66 | '\\' nonnewline @code |
|---|
| 67 | | )* '\'' @code; |
|---|
| | 67 | )* '\'' @commit @code; |
|---|
| 68 | 68 | php_dq_str = |
|---|
| 69 | | '"' @code ( |
|---|
| | 69 | '"' @enqueue @code ( |
|---|
| 70 | 70 | newline %{ entity = INTERNAL_NL; } %php_ccallback |
|---|
| 71 | 71 | | |
|---|
| … | … | |
| 75 | 75 | | |
|---|
| 76 | 76 | '\\' nonnewline @code |
|---|
| 77 | | )* '"' @code; |
|---|
| | 77 | )* '"' @commit @code; |
|---|
| 78 | 78 | # TODO: heredoc; see ruby.rl for details. |
|---|
| 79 | 79 | php_string = php_sq_str | php_dq_str; |
|---|
| r0b4bd62 |
r0085604 |
|
| 48 | 48 | |
|---|
| 49 | 49 | shell_sq_str = |
|---|
| 50 | | '\'' @code ( |
|---|
| | 50 | '\'' @enqueue @code ( |
|---|
| 51 | 51 | newline %{ entity = INTERNAL_NL; } %shell_ccallback |
|---|
| 52 | 52 | | |
|---|
| … | … | |
| 56 | 56 | | |
|---|
| 57 | 57 | '\\' nonnewline @code |
|---|
| 58 | | )* '\''; |
|---|
| | 58 | )* '\'' @commit; |
|---|
| 59 | 59 | shell_dq_str = |
|---|
| 60 | | '"' @code ( |
|---|
| | 60 | '"' @enqueue @code ( |
|---|
| 61 | 61 | newline %{ entity = INTERNAL_NL; } %shell_ccallback |
|---|
| 62 | 62 | | |
|---|
| … | … | |
| 66 | 66 | | |
|---|
| 67 | 67 | '\\' nonnewline @code |
|---|
| 68 | | )* '"'; |
|---|
| | 68 | )* '"' @commit; |
|---|
| 69 | 69 | # TODO: heredocs; see ruby.rl for details |
|---|
| 70 | 70 | shell_string = shell_sq_str | shell_dq_str; |
|---|