summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2004-11-26 11:08:08 +0000
committerPascal Rigaux <pixel@mandriva.com>2004-11-26 11:08:08 +0000
commitda55691c844db9b3dcf547c34235b2e8ffd2493c (patch)
tree1cbfac17243fff435ea6d854f38c665f970b074a
parentc0e7b9c7d3dd295f2d432c096508fcffbcbbc837 (diff)
downloadperl_checker-da55691c844db9b3dcf547c34235b2e8ffd2493c.tar
perl_checker-da55691c844db9b3dcf547c34235b2e8ffd2493c.tar.gz
perl_checker-da55691c844db9b3dcf547c34235b2e8ffd2493c.tar.bz2
perl_checker-da55691c844db9b3dcf547c34235b2e8ffd2493c.tar.xz
perl_checker-da55691c844db9b3dcf547c34235b2e8ffd2493c.zip
force { zzz => ... } to be a hash ref
-rw-r--r--perl_checker.src/lexer.mll9
1 files changed, 9 insertions, 0 deletions
diff --git a/perl_checker.src/lexer.mll b/perl_checker.src/lexer.mll
index 8aaeca0..570add8 100644
--- a/perl_checker.src/lexer.mll
+++ b/perl_checker.src/lexer.mll
@@ -87,6 +87,14 @@ let rec concat_bareword_paren accu = function
| e :: l ->
concat_bareword_paren (e :: accu) l
+let rec bracket_bareword_is_hashref accu = function
+ | (_, Parser.BRACKET _ as bracket) :: (_, Parser.BAREWORD _ as bareword) :: (_, Parser.RIGHT_ARROW _ as right_arrow) :: l ->
+ bracket_bareword_is_hashref (right_arrow :: bareword :: bracket :: accu) l
+ | [] -> List.rev accu
+ | e :: l ->
+ bracket_bareword_is_hashref (e :: accu) l
+
+
let rec raw_token_to_pos_and_token spaces = function
| INT(s, pos) -> pos, Parser.NUM(new_any M_int s spaces pos)
| FLOAT(s, pos) -> pos, Parser.NUM(new_any M_float s spaces pos)
@@ -225,6 +233,7 @@ let get_token token lexbuf =
let tokens = lexbuf2list [] token lexbuf in
let tokens = concat_bareword_paren [] tokens in
let tokens = concat_spaces Space_0 tokens in
+ let tokens = bracket_bareword_is_hashref [] tokens in
tokens
let next_rule = Stack.create()