1 |
commit: 3dfa3cb77a9770a2969e0e1178b1f39c7df56ba7 |
2 |
Author: Mu Qiao <qiaomuf <AT> gentoo <DOT> org> |
3 |
AuthorDate: Wed Apr 6 10:30:18 2011 +0000 |
4 |
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu Apr 7 03:22:49 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=3dfa3cb7 |
7 |
|
8 |
Only allow number and name to appear in variable name |
9 |
|
10 |
Previous grammar allows '@' and '*' to appear in variable name |
11 |
which is not legal. These characters are used for special purpose. |
12 |
|
13 |
--- |
14 |
bashast/bashast.g | 6 ++++-- |
15 |
bashast/gunit/param_main.gunit | 2 ++ |
16 |
bashast/libbashWalker.g | 2 +- |
17 |
3 files changed, 7 insertions(+), 3 deletions(-) |
18 |
|
19 |
diff --git a/bashast/bashast.g b/bashast/bashast.g |
20 |
index 60ad096..01cc0df 100644 |
21 |
--- a/bashast/bashast.g |
22 |
+++ b/bashast/bashast.g |
23 |
@@ -269,9 +269,11 @@ var_exp : var_name (USE_DEFAULT|USE_ALTERNATE|DISPLAY_ERROR|ASSIGN_DEFAULT)^ wor |
24 |
| var_name SLASH PCT ns_str SLASH? -> ^(REPLACE_LAST var_name ns_str) |
25 |
| var_name SLASH ns_str SLASH? -> ^(REPLACE_FIRST var_name ns_str) |
26 |
| arr_var_ref |
27 |
- | var_name; |
28 |
+ | var_name |
29 |
+ | TIMES |
30 |
+ | AT; |
31 |
//Allowable variable names in the variable expansion |
32 |
-var_name: num|name|TIMES|AT; |
33 |
+var_name: num|name; |
34 |
//Referencing an array variable |
35 |
arr_var_ref |
36 |
: name^ LSQUARE! DIGIT+ RSQUARE!; |
37 |
|
38 |
diff --git a/bashast/gunit/param_main.gunit b/bashast/gunit/param_main.gunit |
39 |
index a582179..eb49309 100644 |
40 |
--- a/bashast/gunit/param_main.gunit |
41 |
+++ b/bashast/gunit/param_main.gunit |
42 |
@@ -32,6 +32,8 @@ var_ref: |
43 |
"${!asdf[@]}" -> (VAR_REF (LIST_EXPAND asdf @)) |
44 |
"${#foo}" -> (VAR_REF (# foo)) |
45 |
"${foo#bar}" -> (VAR_REF (# foo (STRING bar))) |
46 |
+"${fo*o#bar}" FAIL |
47 |
+"${fo@o#bar}" FAIL |
48 |
"${foo##bar}" -> (VAR_REF (## foo (STRING bar))) |
49 |
"${foo%bar}" -> (VAR_REF (% foo (STRING bar))) |
50 |
"${foo%%bar}" -> (VAR_REF (%% foo (STRING bar))) |
51 |
|
52 |
diff --git a/bashast/libbashWalker.g b/bashast/libbashWalker.g |
53 |
index 52d0109..825987a 100644 |
54 |
--- a/bashast/libbashWalker.g |
55 |
+++ b/bashast/libbashWalker.g |
56 |
@@ -84,7 +84,7 @@ var_name returns[std::string libbash_value] |
57 |
@after { |
58 |
$libbash_value = walker->get_string($var_name.start); |
59 |
}: |
60 |
- num|name|TIMES|AT; |
61 |
+ num|name; |
62 |
|
63 |
var_expansion returns[std::string libbash_value]: |
64 |
^(USE_DEFAULT var_name libbash_word=word) { |