1 |
commit: e190a229b781b31134fd21af0c864ee3e3671919 |
2 |
Author: Petteri Räty <petsku <AT> petteriraty <DOT> eu> |
3 |
AuthorDate: Sat Apr 16 19:05:59 2011 +0000 |
4 |
Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun Apr 17 10:57:04 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=e190a229 |
7 |
|
8 |
Parser: slash as word for delete operator |
9 |
|
10 |
In parameter expansions now / works as the word to delete in expansions |
11 |
like ${foo%/}. |
12 |
|
13 |
--- |
14 |
bashast/bashast.g | 12 ++++++++---- |
15 |
bashast/gunit/param_main.gunit | 1 + |
16 |
2 files changed, 9 insertions(+), 4 deletions(-) |
17 |
|
18 |
diff --git a/bashast/bashast.g b/bashast/bashast.g |
19 |
index 745b1ff..ade30a9 100644 |
20 |
--- a/bashast/bashast.g |
21 |
+++ b/bashast/bashast.g |
22 |
@@ -253,13 +253,17 @@ var_exp : var_name parameter_value_operator^ word |
23 |
| BANG^ var_name_for_bang (TIMES|AT) |
24 |
| BANG var_name_for_bang LSQUARE (op=TIMES|op=AT) RSQUARE -> ^(LIST_EXPAND var_name_for_bang $op) |
25 |
| BANG var_name_for_bang -> ^(VAR_REF var_name_for_bang) |
26 |
- | var_name (POUND^|POUNDPOUND^) parameter_pattern |
27 |
- | var_name (PCT^|PCTPCT^) parameter_pattern |
28 |
- | var_name parameter_replace_operator^ parameter_pattern parameter_replace_string |
29 |
+ | var_name parameter_delete_operator parameter_pattern_part+ -> ^(parameter_delete_operator var_name ^(STRING parameter_pattern_part+)) |
30 |
+ | var_name parameter_replace_operator^ parameter_replace_pattern parameter_replace_string |
31 |
| var_size_ref |
32 |
| var_name |
33 |
| TIMES |
34 |
| AT; |
35 |
+parameter_delete_operator |
36 |
+ : POUND |
37 |
+ | POUNDPOUND |
38 |
+ | PCT |
39 |
+ | PCTPCT; |
40 |
parameter_value_operator |
41 |
: COLON MINUS -> USE_DEFAULT_WHEN_UNSET_OR_NULL |
42 |
| COLON EQUALS -> ASSIGN_DEFAULT_WHEN_UNSET_OR_NULL |
43 |
@@ -269,7 +273,7 @@ parameter_value_operator |
44 |
| EQUALS -> ASSIGN_DEFAULT_WHEN_UNSET |
45 |
| QMARK -> DISPLAY_ERROR_WHEN_UNSET |
46 |
| PLUS -> USE_ALTERNATE_WHEN_UNSET; |
47 |
-parameter_pattern |
48 |
+parameter_replace_pattern |
49 |
: ((~SLASH) => parameter_pattern_part)+ -> ^(STRING parameter_pattern_part+); |
50 |
parameter_pattern_part |
51 |
: fname_part|BLANK|SEMIC; |
52 |
|
53 |
diff --git a/bashast/gunit/param_main.gunit b/bashast/gunit/param_main.gunit |
54 |
index 1a68e5e..d14e4f1 100644 |
55 |
--- a/bashast/gunit/param_main.gunit |
56 |
+++ b/bashast/gunit/param_main.gunit |
57 |
@@ -40,6 +40,7 @@ var_ref: |
58 |
"${foo%bar}" -> (VAR_REF (% foo (STRING bar))) |
59 |
"${foo%%bar}" -> (VAR_REF (%% foo (STRING bar))) |
60 |
"${foo%; *}" -> (VAR_REF (% foo (STRING ; *))) |
61 |
+"${foo%/}" -> (VAR_REF (% foo (STRING /))) |
62 |
"${this/is/pattern}"->(VAR_REF (REPLACE_FIRST this (STRING is) (STRING pattern))) |
63 |
//Test positional/special parameters |
64 |
"$1" -> (VAR_REF 1) |