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: Sun, 03 Jun 2012 09:10:10
Message-Id: 1330586465.f026db51e71d8fc76c6fc0ecc78fc9d8113c03a9.betelgeuse@gentoo
1 commit: f026db51e71d8fc76c6fc0ecc78fc9d8113c03a9
2 Author: Mu Qiao <qiaomuf <AT> gentoo <DOT> org>
3 AuthorDate: Thu Mar 1 07:21:05 2012 +0000
4 Commit: Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
5 CommitDate: Thu Mar 1 07:21:05 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/libbash.git;a=commit;h=f026db51
7
8 Parser: allow multiple operands in test expression
9
10 ---
11 bashast/bashast.g | 8 ++++----
12 bashast/gunit/cond_main.gunit | 4 ++++
13 2 files changed, 8 insertions(+), 4 deletions(-)
14
15 diff --git a/bashast/bashast.g b/bashast/bashast.g
16 index 700f865..8d627c4 100644
17 --- a/bashast/bashast.g
18 +++ b/bashast/bashast.g
19 @@ -600,9 +600,9 @@ condition_expr
20 #endif
21
22 keyword_condition_and
23 - : keyword_condition_primary (BLANK!? LOGICAND^ BLANK!? keyword_condition_primary)?;
24 + : keyword_condition_primary (BLANK!? LOGICAND^ BLANK!? keyword_condition_primary)*;
25 keyword_condition
26 - : keyword_condition_and (BLANK!? LOGICOR^ BLANK!? keyword_condition_and)?;
27 + : keyword_condition_and (BLANK!? LOGICOR^ BLANK!? keyword_condition_and)*;
28 keyword_negation_primary
29 : BANG BLANK keyword_condition_primary -> ^(NEGATION keyword_condition_primary);
30 keyword_condition_primary
31 @@ -655,9 +655,9 @@ keyword_binary_string_operator
32
33
34 builtin_condition_and
35 - : builtin_condition_primary (builtin_logic_and^ BLANK! builtin_condition_primary)?;
36 + : builtin_condition_primary (builtin_logic_and^ BLANK! builtin_condition_primary)*;
37 builtin_condition
38 - : builtin_condition_and (builtin_logic_or^ BLANK! builtin_condition_and)?;
39 + : builtin_condition_and (builtin_logic_or^ BLANK! builtin_condition_and)*;
40 builtin_negation_primary
41 : BANG BLANK builtin_condition_primary -> ^(NEGATION builtin_condition_primary);
42 builtin_condition_primary
43
44 diff --git a/bashast/gunit/cond_main.gunit b/bashast/gunit/cond_main.gunit
45 index bf86d7d..cb8ffef 100644
46 --- a/bashast/gunit/cond_main.gunit
47 +++ b/bashast/gunit/cond_main.gunit
48 @@ -34,9 +34,13 @@ condition_expr:
49 "[ -n \"$FROM_LANG\" -a -n \"$TO_LANG\" ]" -> (BUILTIN_TEST (BUILTIN_LOGIC_AND (n (STRING (DOUBLE_QUOTED_STRING (VAR_REF FROM_LANG)))) (n (STRING (DOUBLE_QUOTED_STRING (VAR_REF TO_LANG))))))
50 "[ -n \"$FROM_LANG\" -o -n \"$TO_LANG\" ]" -> (BUILTIN_TEST (BUILTIN_LOGIC_OR (n (STRING (DOUBLE_QUOTED_STRING (VAR_REF FROM_LANG)))) (n (STRING (DOUBLE_QUOTED_STRING (VAR_REF TO_LANG))))))
51 "[ -n \"a\" -o -n \"a\" -a -n \"a\" ]" -> (BUILTIN_TEST (BUILTIN_LOGIC_OR (n (STRING (DOUBLE_QUOTED_STRING a))) (BUILTIN_LOGIC_AND (n (STRING (DOUBLE_QUOTED_STRING a))) (n (STRING (DOUBLE_QUOTED_STRING a))))))
52 +"[ -n \"a\" -a -n \"a\" -a -n \"a\" ]" -> (BUILTIN_TEST (BUILTIN_LOGIC_AND (BUILTIN_LOGIC_AND (n (STRING (DOUBLE_QUOTED_STRING a))) (n (STRING (DOUBLE_QUOTED_STRING a)))) (n (STRING (DOUBLE_QUOTED_STRING a)))))
53 +"[ -n \"a\" -o -n \"a\" -o -n \"a\" ]" -> (BUILTIN_TEST (BUILTIN_LOGIC_OR (BUILTIN_LOGIC_OR (n (STRING (DOUBLE_QUOTED_STRING a))) (n (STRING (DOUBLE_QUOTED_STRING a)))) (n (STRING (DOUBLE_QUOTED_STRING a)))))
54 "[[ \"${element}\" =~ (^[^[:space:]]+\ .) ]]" -> (KEYWORD_TEST (MATCH_REGULAR_EXPRESSION (STRING (DOUBLE_QUOTED_STRING (VAR_REF element))) (STRING ( ^ [ ^ [ : space : ] ] + \ . ))))
55 "[[ a<b ]]" -> (KEYWORD_TEST (< (STRING a) (STRING b)))
56 "[[ a>b ]]" -> (KEYWORD_TEST (> (STRING a) (STRING b)))
57 "[[ ${VIRTUALX_REQUIRED} == always || ${VIRTUALX_REQUIRED} == test ]]" -> (KEYWORD_TEST (|| (MATCH_PATTERN (STRING (VAR_REF VIRTUALX_REQUIRED)) (STRING always)) (MATCH_PATTERN (STRING (VAR_REF VIRTUALX_REQUIRED)) (STRING test))))
58 "[[ a == b || c == d && e == f ]]" -> (KEYWORD_TEST (|| (MATCH_PATTERN (STRING a) (STRING b)) (&& (MATCH_PATTERN (STRING c) (STRING d)) (MATCH_PATTERN (STRING e) (STRING f)))))
59 "[[ a == b && c == d || e == f ]]" -> (KEYWORD_TEST (|| (&& (MATCH_PATTERN (STRING a) (STRING b)) (MATCH_PATTERN (STRING c) (STRING d))) (MATCH_PATTERN (STRING e) (STRING f))))
60 +"[[ a == b && c == d && e == f ]]" -> (KEYWORD_TEST (&& (&& (MATCH_PATTERN (STRING a) (STRING b)) (MATCH_PATTERN (STRING c) (STRING d))) (MATCH_PATTERN (STRING e) (STRING f))))
61 +"[[ a == b || c == d || e == f ]]" -> (KEYWORD_TEST (|| (|| (MATCH_PATTERN (STRING a) (STRING b)) (MATCH_PATTERN (STRING c) (STRING d))) (MATCH_PATTERN (STRING e) (STRING f))))