Gentoo Archives: gentoo-commits

From: "Petteri Räty" <betelgeuse@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/libbash:master commit in: bashast/, bashast/gunit/
Date: Thu, 07 Apr 2011 07:49:08
Message-Id: 3dfa3cb77a9770a2969e0e1178b1f39c7df56ba7.betelgeuse@gentoo
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) {