From b0bd87a2003f451ce3aa93b7e4d4000bb13ef8b2 Mon Sep 17 00:00:00 2001 From: Manuel Rubio Date: Thu, 3 Mar 2016 02:59:04 +0100 Subject: [PATCH] fix enclosed vars and add test --- src/ephp_parser.peg | 9 +++++---- test/code/test_enclosed_var.out | 4 ++++ test/code/test_enclosed_var.php | 11 +++++++++++ 3 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 test/code/test_enclosed_var.out create mode 100644 test/code/test_enclosed_var.php diff --git a/src/ephp_parser.peg b/src/ephp_parser.peg index 7debdd55..22238686 100644 --- a/src/ephp_parser.peg +++ b/src/ephp_parser.peg @@ -868,13 +868,14 @@ var_simple <- (key '::')? '$' key ` enclosed_var <- enclosed_var_array / enclosed_var_simple ~; -enclosed_var_array <- '$' '{' key ('[' space? (array_index space?)? ']')+ '}' ` - [_Dollar,_,Key,Indexes,_] = Node, +enclosed_var_array <- ('$' '{' / '{' '$') key + ('[' space? (array_index space?)? ']')+ '}' ` + [_Dollar,Key,Indexes,_] = Node, #variable{name=Key, idx=[ get_index(I) || [_,_,I,_] <- Indexes ], line=Index} `; -enclosed_var_simple <- '$' '{' key '}' ` - [_Dollar,_,Key,_] = Node, +enclosed_var_simple <- ('$' '{' / '{' '$') key '}' ` + [_Dollar,Key,_] = Node, #variable{name=Key, line=Index} `; diff --git a/test/code/test_enclosed_var.out b/test/code/test_enclosed_var.out new file mode 100644 index 00000000..54d8a2d6 --- /dev/null +++ b/test/code/test_enclosed_var.out @@ -0,0 +1,4 @@ +hello world +hello world +hello mars +hello venus diff --git a/test/code/test_enclosed_var.php b/test/code/test_enclosed_var.php new file mode 100644 index 00000000..daca190d --- /dev/null +++ b/test/code/test_enclosed_var.php @@ -0,0 +1,11 @@ +