From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1QapYj-0001TT-NF for garchives@archives.gentoo.org; Sun, 26 Jun 2011 13:39:35 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 73A881C0B5; Sun, 26 Jun 2011 13:38:14 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 0E3681C07A for ; Sun, 26 Jun 2011 13:38:13 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 746081B4028 for ; Sun, 26 Jun 2011 13:38:13 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 9B7A38004F for ; Sun, 26 Jun 2011 13:38:12 +0000 (UTC) From: "Petteri Räty" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Petteri Räty" Message-ID: Subject: [gentoo-commits] proj/libbash:master commit in: / X-VCS-Repository: proj/libbash X-VCS-Committer: betelgeuse X-VCS-Committer-Name: Petteri Räty X-VCS-Revision: b7ff827783049072f8afefad626522e39c092511 Date: Sun, 26 Jun 2011 13:38:12 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 7b41393464f4252ccf13a7fa01689e69 commit: b7ff827783049072f8afefad626522e39c092511 Author: Mu Qiao gentoo org> AuthorDate: Sun Jun 26 12:27:46 2011 +0000 Commit: Petteri R=C3=A4ty gentoo org> CommitDate: Sun Jun 26 12:27:46 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/libbash.git;a= =3Dcommit;h=3Db7ff8277 Merge branch 'mu/native_code' Conflicts: Makefile.am bashast/features_script/features.sh.ast bashast/gunit/simp_command.gunit scripts/command_execution.bash test/verify_error_output_test.sh .gitignore | 8 +- Makefile.am | 55 ++++++++--- bashast/bashast.g | 114 +++++++++++++++= ++--- bashast/features_script/features.sh.ast | 2 +- bashast/features_script/features.sh.tokens | 2 +- bashast/features_script/features.sh.walker.tokens | 2 +- bashast/gunit/arith_main.gunit | 2 +- bashast/gunit/array.gunit | 2 +- bashast/gunit/assoc_array.gunit | 2 +- bashast/gunit/brace.gunit | 2 +- bashast/gunit/command_sub.gunit | 4 +- bashast/gunit/comment.gunit | 2 +- bashast/gunit/compound.gunit | 4 +- bashast/gunit/cond_main.gunit | 2 +- bashast/gunit/continued_lines.gunit | 5 +- bashast/gunit/expansions.gunit | 2 +- bashast/gunit/fname.gunit | 14 ++-- bashast/gunit/function.gunit | 2 +- bashast/gunit/list.gunit | 4 +- bashast/gunit/param_main.gunit | 4 +- bashast/gunit/pipeline.gunit | 2 +- bashast/gunit/process_substitution.gunit | 2 +- bashast/gunit/redir.gunit | 6 +- bashast/gunit/simp_command.gunit | 3 +- bashast/gunit/simp_prog.gunit | 2 +- bashast/libbashWalker.g | 10 +- scripts/command_execution.bash | 1 + scripts/command_execution.bash.result | 1 + scripts/here_document.ast | 3 + scripts/here_document.sh | 5 + test/post_check.cpp | 4 +- test/verify_here_document.sh | 3 + 32 files changed, 200 insertions(+), 76 deletions(-) diff --cc .gitignore index 4c665a8,ea74327..7a07a66 --- a/.gitignore +++ b/.gitignore @@@ -1,3 -1,3 +1,4 @@@ ++*.bak *.swp *.swo *.o @@@ -26,9 -28,8 +29,9 @@@ instru long.sh massif.out libbash.g - libbash.tokens + java_libbash.g libbash.tokens.md5 - bashast.tokens ++libbashWalker.h.md5 bashast/.DS_Store bashast/*.ebuild bashast/c_runtime diff --cc bashast/bashast.g index 1a73c4b,819be98..8903c02 --- a/bashast/bashast.g +++ b/bashast/bashast.g @@@ -101,9 -111,52 +110,53 @@@ tokens MINUS_SIGN; // Operators NOT_EQUALS; + BUILTIN_LOGIC; } =20 + @lexer::members + { + #ifdef OUTPUT_C + bool double_quoted =3D false; + #else + boolean double_quoted =3D false; + #endif + } +=20 + #ifdef OUTPUT_C + @includes { + C_INCLUDE #include + C_INCLUDE #include +=20 + C_INCLUDE #include + } + @members + { + static std::string get_string(pANTLR3_COMMON_TOKEN token) + { + if(!token || !token->start) + return ""; + // Use reinterpret_cast here because we have to cast C code. + // The real type here is int64_t which is used as a pointer. + // token->stop - token->start + 1 should be bigger than 0. + return std::string(reinterpret_cast(token->start), + boost::numeric_cast(token->stop - token->start + 1)); + } +=20 + static bool is_here_end(plibbashParser ctx, const std::string& here_do= c_word, int number_of_tokens_in_word) + { + std::string word; + for(int i =3D 1; i <=3D number_of_tokens_in_word; ++i) + word +=3D get_string(LT(i)); + return (word =3D=3D here_doc_word); + } +=20 + static void free_redirect_atom(plibbashParser_redirect_atom_SCOPE scop= e) + { + (&(scope->here_doc_word))->std::string::~string(); + } + } + #endif +=20 start : (flcomment)? EOL* clist BLANK* (SEMIC|AMP|EOL)? EOF -> clist; //Because the comment token doesn't handle the first comment in a file = if it's on the first line, have a parser rule for it flcomment @@@ -147,16 -200,45 +200,49 @@@ export_ite :var_def |name ->; bash_command - : fname_no_res_word (BLANK!+ fname)*; + : fname_no_res_word (BLANK!+ bash_command_arguments)*; +bash_command_arguments + : bash_command_arguments_atom+ -> ^(STRING bash_command_arguments_atom= +); +bash_command_arguments_atom + : brace_expansion|LBRACE|RBRACE|fname_part; redirect: (BLANK!* redirect_atom)*; - redirect_atom: here_string_op^ BLANK!* fname - | here_doc_op^ BLANK!* fname EOL! heredoc + redirect_atom + #ifdef OUTPUT_C + scope { + std::string here_doc_word; + int number_of_tokens_in_word; + } + @init { + // http://antlr.1301665.n2.nabble.com/C-target-initialization-of-retur= n-scope-structures-td5078478.html + new (&($redirect_atom::here_doc_word)) std::string; + $redirect_atom::number_of_tokens_in_word =3D 0; + ctx->plibbashParser_redirect_atomTop->free =3D &free_redirect_atom; + } + #endif + : HERE_STRING_OP^ BLANK!* fname + #ifdef OUTPUT_C + | here_doc_op BLANK* here_doc_begin redirect? + #else + | here_doc_op BLANK* n=3DNAME redirect? + #endif + EOL heredoc -> ^(here_doc_op ^(STRING heredoc) redirect?) | redir_op BLANK* redir_dest -> ^(REDIR redir_op redir_dest) | process_substitution; + #ifdef OUTPUT_C + here_doc_begin + :( { + if(LA(1) !=3D BLANK && LA(1) !=3D EOL) + { + $redirect_atom::here_doc_word +=3D get_string(LT(1)); + ++$redirect_atom::number_of_tokens_in_word; + } + } (~(EOL|BLANK)))+; + here_doc_end + : ({ ($redirect_atom::number_of_tokens_in_word) !=3D 0 }? =3D> .{ ($re= direct_atom::number_of_tokens_in_word)--; })+; + heredoc : ({ !is_here_end(ctx, $redirect_atom::here_doc_word, $redirect= _atom::number_of_tokens_in_word) }? =3D> .)+ here_doc_end!; + #else + heredoc : (fname_part EOL!)*; + #endif redir_dest : file_desc_as_file //handles file descriptors | fname; //path to a file diff --cc bashast/features_script/features.sh.ast index 4191c85,4570804..ad37b9c --- a/bashast/features_script/features.sh.ast +++ b/bashast/features_script/features.sh.ast @@@ -1,1 -1,1 +1,1 @@@ - (LIST (COMMAND (function (STRING lots_o_echo) (CURRENT_SHELL (LIST (COM= MAND (STRING echo) (STRING (DOUBLE_QUOTED_STRING The number of test= s that have failed : (VAR_REF failedtests)))) (COMMAND (STRING ec= ho) (STRING (SINGLE_QUOTED_STRING $ failedtests))) (COMMAND (STRING echo)= (STRING (VAR_REF failedtests))))))) (COMMAND (function (STRING do_some_a= rith) (CURRENT_SHELL (LIST (COMMAND (ARITHMETIC_EXPRESSION (* 5 4))) (COM= MAND (ARITHMETIC_EXPRESSION (** 5 4))) (COMMAND (ARITHMETIC_EXPRESSION (+= (VAR_REF failedtests) (/ 5 4)))) (COMMAND (ARITHMETIC_EXPRESSION (+ (VAR= _REF z) (MINUS_SIGN 3)))))))) (COMMAND (function (STRING arrays) (SUBSHEL= L (LIST (COMMAND (VARIABLE_DEFINITIONS (=3D asdf (ARRAY (STRING a) (STRIN= G b) (STRING c) (STRING d))))) (COMMAND (STRING echo) (STRING (VAR_REF (a= sdf 3)))) (COMMAND (VARIABLE_DEFINITIONS (=3D foo (ARRAY (STRING (COMMAND= _SUB (LIST (COMMAND (STRING echo) (STRING 6))))) (STRING b) (STRING c) (S= TRING d))))) (COMMAND (VARIABLE_DEFINITIONS ( =3D (arr (VAR_REF foo)) (STRING 3)))) (COMMAND (VARIABLE_DEFINITIONS (=3D= bar (ARRAY (STRING a) (STRING b) (=3D 5 (STRING c)))))))))) (COMMAND (ST= RING echo) (STRING (BRACE_EXP (STRING a) (STRING b)))) (COMMAND (STRING e= cho) (STRING (BRACE_EXP (.. a d)))) (COMMAND (STRING echo) (STRING (BRACE= _EXP (STRING (BRACE_EXP (STRING a) (STRING b))) (STRING c) (STRING d)))) = (COMMAND (STRING echo) (STRING a (BRACE_EXP (STRING b) (STRING c)))) (COM= MAND (STRING (COMMAND_SUB (LIST (COMMAND (STRING echo) (STRING foobar))))= )) (| (COMMAND (STRING ls)) (COMMAND (STRING grep) (STRING gunit) (REDIR = >> (STRING filelist)))) (COMMAND (case (STRING (COMMAND_SUB (LIST (COMMAN= D (STRING echo) (STRING asdf))))) (CASE_PATTERN (STRING gz) CASE_COMMAND = (LIST (COMMAND (STRING echo) (STRING yay)))) (CASE_PATTERN (STRING bzip) = CASE_COMMAND (LIST (COMMAND (STRING echo) (STRING three)))) (CASE_PATTERN= (STRING MATCH_ALL) CASE_COMMAND (LIST (COMMAND (STRING echo) (STRING woo= )))))) (COMMAND (for each (STRING (COMMAND_SUB (LIST (| (COMMAND (STRING ls)) (COMMAND (STRING grep) (STRING log))))))= (LIST (COMMAND (STRING echo) (STRING (VAR_REF each))) (COMMAND (STRING c= at) (STRING each))))) (COMMAND (CFOR (FOR_INIT (+ 5 3)) (FOR_COND (+ 6 2)= ) (LIST (COMMAND (STRING echo) (STRING yay))) (FOR_MOD (+ 3 1)))) (COMMAN= D (select each (STRING (COMMAND_SUB (LIST (| (COMMAND (STRING ls)) (COMMA= ND (STRING grep) (STRING output)))))) (LIST (COMMAND (STRING echo) (STRIN= G asdf) (STRING 2) (REDIR > (STRING / dev / null)))))) (COMMAND (IF_STATE= MENT (if (LIST (COMMAND (STRING echo) (STRING yay2))) (LIST (COMMAND (STR= ING echo) (STRING yay)))))) (COMMAND (until (LIST (COMMAND (COMPOUND_COND= (KEYWORD_TEST (a (STRING this / is . afile)))))) (LIST (COMMAND (STRING = touch) (STRING this / is . afile))))) (COMMAND (while (LIST (COMMAND (COM= POUND_COND (BUILTIN_TEST (n (STRING foobar)))))) (LIST (COMMAND (STRING e= cho) (STRING (DOUBLE_QUOTED_STRING file found)))))) (COMMAND (IF_STATEM= ENT (if (LIST (COMMAND (COMPOUND_COND (BU ILTIN_TEST (eq (STRING 5) (STRING 6)))))) (LIST (COMMAND (STRING echo) (= STRING (DOUBLE_QUOTED_STRING something ' s wrong))))))) (COMMAND (STRIN= G echo) (STRING this) (STRING command) (STRING has) (STRING multiple) (ST= RING arguments)) (COMMAND (STRING wc) (PROCESS_SUBSTITUTION < (LIST (COMM= AND (STRING cat) (STRING / usr / share / dict / linux . words))))) (|| (&= & (&& (&& (COMMAND (STRING cd) (STRING build)) (COMMAND (STRING . / confi= gure))) (COMMAND (STRING make))) (COMMAND (STRING make_install))) (COMMAN= D (STRING echo) (STRING fail))) (COMMAND (STRING cd) (STRING / usr / bin)= ) (| (COMMAND (STRING ls) (STRING - al)) (COMMAND (STRING grep) (STRING m= ore))) (COMMAND (VARIABLE_DEFINITIONS (=3D asdf (STRING parameters)))) (C= OMMAND (STRING (VAR_REF (USE_DEFAULT_WHEN_UNSET_OR_NULL asdf (STRING foo)= )))) (COMMAND (STRING (VAR_REF (OFFSET asdf 8)))) (COMMAND (STRING (VAR_R= EF (! asdf *)))) (COMMAND (STRING (VAR_REF (! asdf @)))) (COMMAND (STRING= (VAR_REF (# foo)))) (COMMAND (STRING (VAR_ REF (REPLACE_FIRST replaice (STRING with) (STRING pattern))))) (COMMAND = (STRING (VAR_REF (LAZY_REMOVE_AT_START asdf (STRING bar))))) (COMMAND (ST= RING (VAR_REF (REPLACE_AT_START asdf (STRING bar))))) (COMMAND (STRING (V= AR_REF (LAZY_REMOVE_AT_END asdf (STRING bar))))) (COMMAND (STRING (VAR_RE= F (LAZY_REMOVE_AT_END asdf (STRING bar))))) (COMMAND (STRING (VAR_REF 1))= (STRING (VAR_REF @)) (STRING (VAR_REF *))) (COMMAND (STRING (VAR_REF ?))= ) (COMMAND (STRING (VAR_REF (REPLACE_ALL PV (STRING .) (STRING _))))) (CO= MMAND (STRING (VAR_REF (REPLACE_AT_START PV (STRING foo) (STRING bar)))))= (COMMAND (STRING (VAR_REF (REPLACE_AT_END PV (STRING foo) (STRING bar)))= )) (COMMAND (VARIABLE_DEFINITIONS (=3D MY_PN (STRING (VAR_REF (REPLACE_FI= RST PN (STRING asterisk -))))))) (| (COMMAND (STRING cat) (STRING asdf)) = (COMMAND (STRING grep) (STRING three) (STRING 2) (REDIR >& (FILE_DESCRIPT= OR 1)) (REDIR > (STRING / dev / null)))) (COMMAND (STRING echo) (STRING a= sdf) (REDIR >> (STRING APPEND))) (COMMAND ( STRING echo) (STRING cat) (<<< (STRING word)))) -(LIST (COMMAND (function (STRING lots_o_echo) (CURRENT_SHELL (LIST (COM= MAND (STRING echo) (STRING (DOUBLE_QUOTED_STRING The number of test= s that have failed : (VAR_REF failedtests)))) (COMMAND (STRING ec= ho) (STRING (SINGLE_QUOTED_STRING '$failedtests'))) (COMMAND (STRING echo= ) (STRING (VAR_REF failedtests))))))) (COMMAND (function (STRING do_some_= arith) (CURRENT_SHELL (LIST (COMMAND (COMPOUND_ARITH (* 5 4))) (COMMAND (= COMPOUND_ARITH (** 5 4))) (COMMAND (COMPOUND_ARITH (+ (VAR_REF failedtest= s) (/ 5 4)))) (COMMAND (COMPOUND_ARITH (+ (VAR_REF z) (MINUS_SIGN 3))))))= )) (COMMAND (function (STRING arrays) (SUBSHELL (LIST (COMMAND (VARIABLE_= DEFINITIONS (=3D asdf (ARRAY (STRING a) (STRING b) (STRING c) (STRING d))= ))) (COMMAND (STRING echo) (STRING (VAR_REF (asdf 3)))) (COMMAND (VARIABL= E_DEFINITIONS (=3D foo (ARRAY (STRING (COMMAND_SUB (LIST (COMMAND (STRING= echo) (STRING 6))))) (STRING b) (STRING c) (STRING d))))) (COMMAND (VARI= ABLE_DEFINITIONS (=3D (arr (VAR_REF foo)) (STRI NG 3)))) (COMMAND (VARIABLE_DEFINITIONS (=3D bar (ARRAY (STRING a) (STRI= NG b) (=3D 5 (STRING c)))))))))) (COMMAND (STRING echo) (STRING (BRACE_EX= P (STRING a) (STRING b)))) (COMMAND (STRING echo) (STRING (BRACE_EXP (.. = a d)))) (COMMAND (STRING echo) (STRING (BRACE_EXP (STRING (BRACE_EXP (STR= ING a) (STRING b))) (STRING c) (STRING d)))) (COMMAND (STRING echo) (STRI= NG a (BRACE_EXP (STRING b) (STRING c)))) (COMMAND (STRING (COMMAND_SUB (L= IST (COMMAND (STRING echo) (STRING foobar)))))) (| (COMMAND (STRING ls)) = (COMMAND (STRING grep) (STRING gunit) (REDIR >> (STRING filelist)))) (COM= MAND (case (STRING (COMMAND_SUB (LIST (COMMAND (STRING echo) (STRING asdf= ))))) (CASE_PATTERN (STRING gz) CASE_COMMAND (LIST (COMMAND (STRING echo)= (STRING yay)))) (CASE_PATTERN (STRING bzip) CASE_COMMAND (LIST (COMMAND = (STRING echo) (STRING three)))) (CASE_PATTERN (STRING MATCH_ALL) CASE_COM= MAND (LIST (COMMAND (STRING echo) (STRING woo)))))) (COMMAND (for each (S= TRING (COMMAND_SUB (LIST (| (COMMAND (STRING=20 ls)) (COMMAND (STRING grep) (STRING log)))))) (LIST (COMMAND (STRING ech= o) (STRING (VAR_REF each))) (COMMAND (STRING cat) (STRING each))))) (COMM= AND (CFOR (FOR_INIT (+ 5 3)) (FOR_COND (+ 6 2)) (LIST (COMMAND (STRING ec= ho) (STRING yay))) (FOR_MOD (+ 3 1)))) (COMMAND (select each (STRING (COM= MAND_SUB (LIST (| (COMMAND (STRING ls)) (COMMAND (STRING grep) (STRING ou= tput)))))) (LIST (COMMAND (STRING echo) (STRING asdf) (STRING 2) (REDIR >= (STRING / dev / null)))))) (COMMAND (IF_STATEMENT (if (LIST (COMMAND (ST= RING echo) (STRING yay2))) (LIST (COMMAND (STRING echo) (STRING yay))))))= (COMMAND (until (LIST (COMMAND (COMPOUND_COND (KEYWORD_TEST (a (STRING t= his / is . afile)))))) (LIST (COMMAND (STRING touch) (STRING this / is . = afile))))) (COMMAND (while (LIST (COMMAND (COMPOUND_COND (BUILTIN_TEST (n= (STRING foobar)))))) (LIST (COMMAND (STRING echo) (STRING (DOUBLE_QUOTED= _STRING file found)))))) (COMMAND (IF_STATEMENT (if (LIST (COMMAND (COM= POUND_COND (BUILTIN_TEST (eq (STRING 5) ( STRING 6)))))) (LIST (COMMAND (STRING echo) (STRING (DOUBLE_QUOTED_STRIN= G something ' s wrong))))))) (COMMAND (STRING echo) (STRING this) (STRI= NG command) (STRING has) (STRING multiple) (STRING arguments)) (COMMAND (= STRING wc) (PROCESS_SUBSTITUTION < (LIST (COMMAND (STRING cat) (STRING / = usr / share / dict / linux . words))))) (|| (&& (&& (&& (COMMAND (STRING = cd) (STRING build)) (COMMAND (STRING . / configure))) (COMMAND (STRING ma= ke))) (COMMAND (STRING make_install))) (COMMAND (STRING echo) (STRING fai= l))) (COMMAND (STRING cd) (STRING / usr / bin)) (| (COMMAND (STRING ls) (= STRING - al)) (COMMAND (STRING grep) (STRING more))) (COMMAND (VARIABLE_D= EFINITIONS (=3D asdf (STRING parameters)))) (COMMAND (STRING (VAR_REF (US= E_DEFAULT_WHEN_UNSET_OR_NULL asdf (STRING foo))))) (COMMAND (STRING (VAR_= REF (OFFSET asdf 8)))) (COMMAND (STRING (VAR_REF (! asdf *)))) (COMMAND (= STRING (VAR_REF (! asdf @)))) (COMMAND (STRING (VAR_REF (# foo)))) (COMMA= ND (STRING (VAR_REF (REPLACE_FIRST replaice (STRING with) (STRING pattern))))) (COMMAND (STRING (VAR_REF (LAZY_REMO= VE_AT_START asdf (STRING bar))))) (COMMAND (STRING (VAR_REF (REPLACE_AT_S= TART asdf (STRING bar))))) (COMMAND (STRING (VAR_REF (LAZY_REMOVE_AT_END = asdf (STRING bar))))) (COMMAND (STRING (VAR_REF (LAZY_REMOVE_AT_END asdf = (STRING bar))))) (COMMAND (STRING (VAR_REF 1)) (STRING (VAR_REF @)) (STRI= NG (VAR_REF *))) (COMMAND (STRING (VAR_REF ?))) (COMMAND (STRING (VAR_REF= (REPLACE_ALL PV (STRING .) (STRING _))))) (COMMAND (STRING (VAR_REF (REP= LACE_AT_START PV (STRING foo) (STRING bar))))) (COMMAND (STRING (VAR_REF = (REPLACE_AT_END PV (STRING foo) (STRING bar))))) (COMMAND (VARIABLE_DEFIN= ITIONS (=3D MY_PN (STRING (VAR_REF (REPLACE_FIRST PN (STRING asterisk -))= ))))) (| (COMMAND (STRING cat) (STRING asdf)) (COMMAND (STRING grep) (STR= ING three) (STRING 2) (REDIR >& (FILE_DESCRIPTOR 1)) (REDIR > (STRING / d= ev / null)))) (COMMAND (STRING echo) (STRING asdf) (REDIR >> (STRING APPE= ND))) (COMMAND (STRING echo) (STRING cat) ( <<< (STRING word)))) ++(LIST (COMMAND (function (STRING lots_o_echo) (CURRENT_SHELL (LIST (COM= MAND (STRING echo) (STRING (DOUBLE_QUOTED_STRING The number of test= s that have failed : (VAR_REF failedtests)))) (COMMAND (STRING ec= ho) (STRING (SINGLE_QUOTED_STRING '$failedtests'))) (COMMAND (STRING echo= ) (STRING (VAR_REF failedtests))))))) (COMMAND (function (STRING do_some_= arith) (CURRENT_SHELL (LIST (COMMAND (ARITHMETIC_EXPRESSION (* 5 4))) (CO= MMAND (ARITHMETIC_EXPRESSION (** 5 4))) (COMMAND (ARITHMETIC_EXPRESSION (= + (VAR_REF failedtests) (/ 5 4)))) (COMMAND (ARITHMETIC_EXPRESSION (+ (VA= R_REF z) (MINUS_SIGN 3)))))))) (COMMAND (function (STRING arrays) (SUBSHE= LL (LIST (COMMAND (VARIABLE_DEFINITIONS (=3D asdf (ARRAY (STRING a) (STRI= NG b) (STRING c) (STRING d))))) (COMMAND (STRING echo) (STRING (VAR_REF (= asdf 3)))) (COMMAND (VARIABLE_DEFINITIONS (=3D foo (ARRAY (STRING (COMMAN= D_SUB (LIST (COMMAND (STRING echo) (STRING 6))))) (STRING b) (STRING c) (= STRING d))))) (COMMAND (VARIABLE_DEFINITIONS=20 (=3D (arr (VAR_REF foo)) (STRING 3)))) (COMMAND (VARIABLE_DEFINITIONS (=3D= bar (ARRAY (STRING a) (STRING b) (=3D 5 (STRING c)))))))))) (COMMAND (ST= RING echo) (STRING (BRACE_EXP (STRING a) (STRING b)))) (COMMAND (STRING e= cho) (STRING (BRACE_EXP (.. a d)))) (COMMAND (STRING echo) (STRING (BRACE= _EXP (STRING (BRACE_EXP (STRING a) (STRING b))) (STRING c) (STRING d)))) = (COMMAND (STRING echo) (STRING a (BRACE_EXP (STRING b) (STRING c)))) (COM= MAND (STRING (COMMAND_SUB (LIST (COMMAND (STRING echo) (STRING foobar))))= )) (| (COMMAND (STRING ls)) (COMMAND (STRING grep) (STRING gunit) (REDIR = >> (STRING filelist)))) (COMMAND (case (STRING (COMMAND_SUB (LIST (COMMAN= D (STRING echo) (STRING asdf))))) (CASE_PATTERN (STRING gz) CASE_COMMAND = (LIST (COMMAND (STRING echo) (STRING yay)))) (CASE_PATTERN (STRING bzip) = CASE_COMMAND (LIST (COMMAND (STRING echo) (STRING three)))) (CASE_PATTERN= (STRING MATCH_ALL) CASE_COMMAND (LIST (COMMAND (STRING echo) (STRING woo= )))))) (COMMAND (for each (STRING (COMMAND_SU B (LIST (| (COMMAND (STRING ls)) (COMMAND (STRING grep) (STRING log)))))= ) (LIST (COMMAND (STRING echo) (STRING (VAR_REF each))) (COMMAND (STRING = cat) (STRING each))))) (COMMAND (CFOR (FOR_INIT (+ 5 3)) (FOR_COND (+ 6 2= )) (LIST (COMMAND (STRING echo) (STRING yay))) (FOR_MOD (+ 3 1)))) (COMMA= ND (select each (STRING (COMMAND_SUB (LIST (| (COMMAND (STRING ls)) (COMM= AND (STRING grep) (STRING output)))))) (LIST (COMMAND (STRING echo) (STRI= NG asdf) (STRING 2) (REDIR > (STRING / dev / null)))))) (COMMAND (IF_STAT= EMENT (if (LIST (COMMAND (STRING echo) (STRING yay2))) (LIST (COMMAND (ST= RING echo) (STRING yay)))))) (COMMAND (until (LIST (COMMAND (COMPOUND_CON= D (KEYWORD_TEST (a (STRING this / is . afile)))))) (LIST (COMMAND (STRING= touch) (STRING this / is . afile))))) (COMMAND (while (LIST (COMMAND (CO= MPOUND_COND (BUILTIN_TEST (n (STRING foobar)))))) (LIST (COMMAND (STRING = echo) (STRING (DOUBLE_QUOTED_STRING file found)))))) (COMMAND (IF_STATE= MENT (if (LIST (COMMAND (COMPOUND_COND (B UILTIN_TEST (eq (STRING 5) (STRING 6)))))) (LIST (COMMAND (STRING echo) = (STRING (DOUBLE_QUOTED_STRING something ' s wrong))))))) (COMMAND (STRI= NG echo) (STRING this) (STRING command) (STRING has) (STRING multiple) (S= TRING arguments)) (COMMAND (STRING wc) (PROCESS_SUBSTITUTION < (LIST (COM= MAND (STRING cat) (STRING / usr / share / dict / linux . words))))) (|| (= && (&& (&& (COMMAND (STRING cd) (STRING build)) (COMMAND (STRING . / conf= igure))) (COMMAND (STRING make))) (COMMAND (STRING make_install))) (COMMA= ND (STRING echo) (STRING fail))) (COMMAND (STRING cd) (STRING / usr / bin= )) (| (COMMAND (STRING ls) (STRING - al)) (COMMAND (STRING grep) (STRING = more))) (COMMAND (VARIABLE_DEFINITIONS (=3D asdf (STRING parameters)))) (= COMMAND (STRING (VAR_REF (USE_DEFAULT_WHEN_UNSET_OR_NULL asdf (STRING foo= ))))) (COMMAND (STRING (VAR_REF (OFFSET asdf 8)))) (COMMAND (STRING (VAR_= REF (! asdf *)))) (COMMAND (STRING (VAR_REF (! asdf @)))) (COMMAND (STRIN= G (VAR_REF (# foo)))) (COMMAND (STRING (VAR _REF (REPLACE_FIRST replaice (STRING with) (STRING pattern))))) (COMMAND= (STRING (VAR_REF (LAZY_REMOVE_AT_START asdf (STRING bar))))) (COMMAND (S= TRING (VAR_REF (REPLACE_AT_START asdf (STRING bar))))) (COMMAND (STRING (= VAR_REF (LAZY_REMOVE_AT_END asdf (STRING bar))))) (COMMAND (STRING (VAR_R= EF (LAZY_REMOVE_AT_END asdf (STRING bar))))) (COMMAND (STRING (VAR_REF 1)= ) (STRING (VAR_REF @)) (STRING (VAR_REF *))) (COMMAND (STRING (VAR_REF ?)= )) (COMMAND (STRING (VAR_REF (REPLACE_ALL PV (STRING .) (STRING _))))) (C= OMMAND (STRING (VAR_REF (REPLACE_AT_START PV (STRING foo) (STRING bar))))= ) (COMMAND (STRING (VAR_REF (REPLACE_AT_END PV (STRING foo) (STRING bar))= ))) (COMMAND (VARIABLE_DEFINITIONS (=3D MY_PN (STRING (VAR_REF (REPLACE_F= IRST PN (STRING asterisk -))))))) (| (COMMAND (STRING cat) (STRING asdf))= (COMMAND (STRING grep) (STRING three) (STRING 2) (REDIR >& (FILE_DESCRIP= TOR 1)) (REDIR > (STRING / dev / null)))) (COMMAND (STRING echo) (STRING = asdf) (REDIR >> (STRING APPEND))) (COMMAND=20 (STRING echo) (STRING cat) (<<< (STRING word)))) diff --cc bashast/features_script/features.sh.walker.tokens index 255caa7,0000000..14b0536 mode 100644,000000..100644 --- a/bashast/features_script/features.sh.walker.tokens +++ b/bashast/features_script/features.sh.walker.tokens @@@ -1,2 -1,0 +1,2 @@@ - LIST DOWN COMMAND DOWN FUNCTION DOWN STRING DOWN NAME UP CURRENT_SHELL = DOWN LIST DOWN COMMAND DOWN STRING DOWN NAME UP STRING DOWN DOUBLE_QUOTED= _STRING DOWN NAME BLANK NAME BLANK NAME BLANK NAME BLANK NAME BLANK NAME = BLANK NAME COLON BLANK VAR_REF DOWN NAME UP UP UP UP COMMAND DOWN STRING = DOWN NAME UP STRING DOWN SINGLE_QUOTED_STRING DOWN DOLLAR NAME UP UP UP C= OMMAND DOWN STRING DOWN NAME UP STRING DOWN VAR_REF DOWN NAME UP UP UP UP= UP UP UP COMMAND DOWN FUNCTION DOWN STRING DOWN NAME UP CURRENT_SHELL DO= WN LIST DOWN COMMAND DOWN ARITHMETIC_EXPRESSION DOWN TIMES DOWN DIGIT DIG= IT UP UP UP COMMAND DOWN ARITHMETIC_EXPRESSION DOWN EXP DOWN DIGIT DIGIT = UP UP UP COMMAND DOWN ARITHMETIC_EXPRESSION DOWN PLUS DOWN VAR_REF DOWN N= AME UP SLASH DOWN DIGIT DIGIT UP UP UP UP COMMAND DOWN ARITHMETIC_EXPRESS= ION DOWN PLUS DOWN VAR_REF DOWN LETTER UP MINUS_SIGN DOWN DIGIT UP UP UP = UP UP UP UP UP COMMAND DOWN FUNCTION DOWN STRING DOWN NAME UP SUBSHELL DO= WN LIST DOWN COMMAND DOWN VARIABLE_DEFINI TIONS DOWN EQUALS DOWN NAME ARRAY DOWN STRING DOWN LETTER UP STRING DOWN= LETTER UP STRING DOWN LETTER UP STRING DOWN LETTER UP UP UP UP UP COMMAN= D DOWN STRING DOWN NAME UP STRING DOWN VAR_REF DOWN NAME DOWN DIGIT UP UP= UP UP COMMAND DOWN VARIABLE_DEFINITIONS DOWN EQUALS DOWN NAME ARRAY DOWN= STRING DOWN COMMAND_SUB DOWN LIST DOWN COMMAND DOWN STRING DOWN NAME UP = STRING DOWN DIGIT UP UP UP UP UP STRING DOWN LETTER UP STRING DOWN LETTER= UP STRING DOWN LETTER UP UP UP UP UP COMMAND DOWN VARIABLE_DEFINITIONS D= OWN EQUALS DOWN NAME DOWN VAR_REF DOWN NAME UP UP STRING DOWN DIGIT UP UP= UP UP COMMAND DOWN VARIABLE_DEFINITIONS DOWN EQUALS DOWN NAME ARRAY DOWN= STRING DOWN LETTER UP STRING DOWN LETTER UP EQUALS DOWN DIGIT STRING DOW= N LETTER UP UP UP UP UP UP UP UP UP UP COMMAND DOWN STRING DOWN NAME UP S= TRING DOWN BRACE_EXP DOWN STRING DOWN LETTER UP STRING DOWN LETTER UP UP = UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN BRACE_EXP DOWN DOTDOT = DOWN LETTER LETTER UP UP UP UP COMMAND DO WN STRING DOWN NAME UP STRING DOWN BRACE_EXP DOWN STRING DOWN BRACE_EXP = DOWN STRING DOWN LETTER UP STRING DOWN LETTER UP UP UP STRING DOWN LETTER= UP STRING DOWN LETTER UP UP UP UP COMMAND DOWN STRING DOWN NAME UP STRIN= G DOWN LETTER BRACE_EXP DOWN STRING DOWN LETTER UP STRING DOWN LETTER UP = UP UP UP COMMAND DOWN STRING DOWN COMMAND_SUB DOWN LIST DOWN COMMAND DOWN= STRING DOWN NAME UP STRING DOWN NAME UP UP UP UP UP UP PIPE DOWN COMMAND= DOWN STRING DOWN NAME UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN= NAME UP REDIR DOWN OP STRING DOWN NAME UP UP UP UP COMMAND DOWN CASE DOW= N STRING DOWN COMMAND_SUB DOWN LIST DOWN COMMAND DOWN STRING DOWN NAME UP= STRING DOWN NAME UP UP UP UP UP CASE_PATTERN DOWN STRING DOWN NAME UP CA= SE_COMMAND LIST DOWN COMMAND DOWN STRING DOWN NAME UP STRING DOWN NAME UP= UP UP UP CASE_PATTERN DOWN STRING DOWN NAME UP CASE_COMMAND LIST DOWN CO= MMAND DOWN STRING DOWN NAME UP STRING DOWN NAME UP UP UP UP CASE_PATTERN = DOWN STRING DOWN MATCH_ALL UP CASE_COMMAN D LIST DOWN COMMAND DOWN STRING DOWN NAME UP STRING DOWN NAME UP UP UP U= P UP UP COMMAND DOWN FOR DOWN NAME STRING DOWN COMMAND_SUB DOWN LIST DOWN= PIPE DOWN COMMAND DOWN STRING DOWN NAME UP UP COMMAND DOWN STRING DOWN N= AME UP STRING DOWN NAME UP UP UP UP UP UP LIST DOWN COMMAND DOWN STRING D= OWN NAME UP STRING DOWN VAR_REF DOWN NAME UP UP UP COMMAND DOWN STRING DO= WN NAME UP STRING DOWN NAME UP UP UP UP UP COMMAND DOWN CFOR DOWN FOR_INI= T DOWN PLUS DOWN DIGIT DIGIT UP UP FOR_COND DOWN PLUS DOWN DIGIT DIGIT UP= UP LIST DOWN COMMAND DOWN STRING DOWN NAME UP STRING DOWN NAME UP UP UP = FOR_MOD DOWN PLUS DOWN DIGIT DIGIT UP UP UP UP COMMAND DOWN SELECT DOWN N= AME STRING DOWN COMMAND_SUB DOWN LIST DOWN PIPE DOWN COMMAND DOWN STRING = DOWN NAME UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN NAME UP UP U= P UP UP UP LIST DOWN COMMAND DOWN STRING DOWN NAME UP STRING DOWN NAME UP= STRING DOWN DIGIT UP REDIR DOWN GREATER_THAN STRING DOWN SLASH NAME SLAS= H NAME UP UP UP UP UP UP COMMAND DOWN IF_ STATEMENT DOWN IF DOWN LIST DOWN COMMAND DOWN STRING DOWN NAME UP STRING= DOWN NAME UP UP UP LIST DOWN COMMAND DOWN STRING DOWN NAME UP STRING DOW= N NAME UP UP UP UP UP UP COMMAND DOWN UNTIL DOWN LIST DOWN COMMAND DOWN C= OMPOUND_COND DOWN KEYWORD_TEST DOWN LETTER DOWN STRING DOWN NAME SLASH NA= ME DOT NAME UP UP UP UP UP UP LIST DOWN COMMAND DOWN STRING DOWN NAME UP = STRING DOWN NAME SLASH NAME DOT NAME UP UP UP UP UP COMMAND DOWN WHILE DO= WN LIST DOWN COMMAND DOWN COMPOUND_COND DOWN BUILTIN_TEST DOWN LETTER DOW= N STRING DOWN NAME UP UP UP UP UP UP LIST DOWN COMMAND DOWN STRING DOWN N= AME UP STRING DOWN DOUBLE_QUOTED_STRING DOWN NAME BLANK NAME UP UP UP UP = UP UP COMMAND DOWN IF_STATEMENT DOWN IF DOWN LIST DOWN COMMAND DOWN COMPO= UND_COND DOWN BUILTIN_TEST DOWN NAME DOWN STRING DOWN DIGIT UP STRING DOW= N DIGIT UP UP UP UP UP UP LIST DOWN COMMAND DOWN STRING DOWN NAME UP STRI= NG DOWN DOUBLE_QUOTED_STRING DOWN NAME SQUOTE LETTER BLANK NAME UP UP UP = UP UP UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN NAME UP STRING DOWN NAME UP STRING DOWN NAME UP STRING D= OWN NAME UP STRING DOWN NAME UP UP COMMAND DOWN STRING DOWN NAME UP PROCE= SS_SUBSTITUTION DOWN LESS_THAN LIST DOWN COMMAND DOWN STRING DOWN NAME UP= STRING DOWN SLASH NAME SLASH NAME SLASH NAME SLASH NAME DOT NAME UP UP U= P UP UP LOGICOR DOWN LOGICAND DOWN LOGICAND DOWN LOGICAND DOWN COMMAND DO= WN STRING DOWN NAME UP STRING DOWN NAME UP UP COMMAND DOWN STRING DOWN DO= T SLASH NAME UP UP UP COMMAND DOWN STRING DOWN NAME UP UP UP COMMAND DOWN= STRING DOWN NAME UP UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN N= AME UP UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN SLASH NAME SLAS= H NAME UP UP PIPE DOWN COMMAND DOWN STRING DOWN NAME UP STRING DOWN MINUS= NAME UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN NAME UP UP UP CO= MMAND DOWN VARIABLE_DEFINITIONS DOWN EQUALS DOWN NAME STRING DOWN NAME UP= UP UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN USE_DEFAULT_WHEN_UNSET_OR= _NULL DOWN NAME STRING DOWN NAME UP UP UP UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN OFFSET DOWN NAME DIGIT UP U= P UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN BANG DOWN NAME TIMES UP UP = UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN BANG DOWN NAME AT UP UP UP UP= COMMAND DOWN STRING DOWN VAR_REF DOWN POUND DOWN NAME UP UP UP UP COMMAN= D DOWN STRING DOWN VAR_REF DOWN REPLACE_FIRST DOWN NAME STRING DOWN NAME = UP STRING DOWN NAME UP UP UP UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN = LAZY_REMOVE_AT_START DOWN NAME STRING DOWN NAME UP UP UP UP UP COMMAND DO= WN STRING DOWN VAR_REF DOWN REPLACE_AT_START DOWN NAME STRING DOWN NAME U= P UP UP UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN LAZY_REMOVE_AT_END DO= WN NAME STRING DOWN NAME UP UP UP UP UP COMMAND DOWN STRING DOWN VAR_REF = DOWN LAZY_REMOVE_AT_END DOWN NAME STRING DOWN NAME UP UP UP UP UP COMMAND= DOWN STRING DOWN VAR_REF DOWN DIGIT UP UP STRING DOWN VAR_REF DOWN AT UP= UP STRING DOWN VAR_REF DOWN TIMES UP UP UP COMMAND DOWN STRING DOWN VAR_= REF DOWN QMARK UP UP UP COMMAND DOWN STRI NG DOWN VAR_REF DOWN REPLACE_ALL DOWN NAME STRING DOWN DOT UP STRING DOW= N UNDERSCORE UP UP UP UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN REPLACE= _AT_START DOWN NAME STRING DOWN NAME UP STRING DOWN NAME UP UP UP UP UP C= OMMAND DOWN STRING DOWN VAR_REF DOWN REPLACE_AT_END DOWN NAME STRING DOWN= NAME UP STRING DOWN NAME UP UP UP UP UP COMMAND DOWN VARIABLE_DEFINITION= S DOWN EQUALS DOWN NAME STRING DOWN VAR_REF DOWN REPLACE_FIRST DOWN NAME = STRING DOWN NAME MINUS UP UP UP UP UP UP UP PIPE DOWN COMMAND DOWN STRING= DOWN NAME UP STRING DOWN NAME UP UP COMMAND DOWN STRING DOWN NAME UP STR= ING DOWN NAME UP STRING DOWN DIGIT UP REDIR DOWN OP FILE_DESCRIPTOR DOWN = DIGIT UP UP REDIR DOWN GREATER_THAN STRING DOWN SLASH NAME SLASH NAME UP = UP UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN NAME UP REDIR DOWN = OP STRING DOWN NAME UP UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN= NAME UP HERE_STRING_OP DOWN STRING DOWN NAME UP UP UP UP=20 ++LIST DOWN COMMAND DOWN FUNCTION DOWN STRING DOWN NAME UP CURRENT_SHELL = DOWN LIST DOWN COMMAND DOWN STRING DOWN NAME UP STRING DOWN DOUBLE_QUOTED= _STRING DOWN NAME BLANK NAME BLANK NAME BLANK NAME BLANK NAME BLANK NAME = BLANK NAME COLON BLANK VAR_REF DOWN NAME UP UP UP UP COMMAND DOWN STRING = DOWN NAME UP STRING DOWN SINGLE_QUOTED_STRING DOWN SINGLE_QUOTED_STRING_T= OKEN UP UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN VAR_REF DOWN N= AME UP UP UP UP UP UP UP COMMAND DOWN FUNCTION DOWN STRING DOWN NAME UP C= URRENT_SHELL DOWN LIST DOWN COMMAND DOWN ARITHMETIC_EXPRESSION DOWN TIMES= DOWN DIGIT DIGIT UP UP UP COMMAND DOWN ARITHMETIC_EXPRESSION DOWN EXP DO= WN DIGIT DIGIT UP UP UP COMMAND DOWN ARITHMETIC_EXPRESSION DOWN PLUS DOWN= VAR_REF DOWN NAME UP SLASH DOWN DIGIT DIGIT UP UP UP UP COMMAND DOWN ARI= THMETIC_EXPRESSION DOWN PLUS DOWN VAR_REF DOWN LETTER UP MINUS_SIGN DOWN = DIGIT UP UP UP UP UP UP UP UP COMMAND DOWN FUNCTION DOWN STRING DOWN NAME= UP SUBSHELL DOWN LIST DOWN COMMAND DOWN=20 VARIABLE_DEFINITIONS DOWN EQUALS DOWN NAME ARRAY DOWN STRING DOWN LETTER= UP STRING DOWN LETTER UP STRING DOWN LETTER UP STRING DOWN LETTER UP UP = UP UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN VAR_REF DOWN NAME D= OWN DIGIT UP UP UP UP COMMAND DOWN VARIABLE_DEFINITIONS DOWN EQUALS DOWN = NAME ARRAY DOWN STRING DOWN COMMAND_SUB DOWN LIST DOWN COMMAND DOWN STRIN= G DOWN NAME UP STRING DOWN DIGIT UP UP UP UP UP STRING DOWN LETTER UP STR= ING DOWN LETTER UP STRING DOWN LETTER UP UP UP UP UP COMMAND DOWN VARIABL= E_DEFINITIONS DOWN EQUALS DOWN NAME DOWN VAR_REF DOWN NAME UP UP STRING D= OWN DIGIT UP UP UP UP COMMAND DOWN VARIABLE_DEFINITIONS DOWN EQUALS DOWN = NAME ARRAY DOWN STRING DOWN LETTER UP STRING DOWN LETTER UP EQUALS DOWN D= IGIT STRING DOWN LETTER UP UP UP UP UP UP UP UP UP UP COMMAND DOWN STRING= DOWN NAME UP STRING DOWN BRACE_EXP DOWN STRING DOWN LETTER UP STRING DOW= N LETTER UP UP UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN BRACE_E= XP DOWN DOTDOT DOWN LETTER LETTER UP UP U P UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN BRACE_EXP DOWN STRING = DOWN BRACE_EXP DOWN STRING DOWN LETTER UP STRING DOWN LETTER UP UP UP STR= ING DOWN LETTER UP STRING DOWN LETTER UP UP UP UP COMMAND DOWN STRING DOW= N NAME UP STRING DOWN LETTER BRACE_EXP DOWN STRING DOWN LETTER UP STRING = DOWN LETTER UP UP UP UP COMMAND DOWN STRING DOWN COMMAND_SUB DOWN LIST DO= WN COMMAND DOWN STRING DOWN NAME UP STRING DOWN NAME UP UP UP UP UP UP PI= PE DOWN COMMAND DOWN STRING DOWN NAME UP UP COMMAND DOWN STRING DOWN NAME= UP STRING DOWN NAME UP REDIR DOWN OP STRING DOWN NAME UP UP UP UP COMMAN= D DOWN CASE DOWN STRING DOWN COMMAND_SUB DOWN LIST DOWN COMMAND DOWN STRI= NG DOWN NAME UP STRING DOWN NAME UP UP UP UP UP CASE_PATTERN DOWN STRING = DOWN NAME UP CASE_COMMAND LIST DOWN COMMAND DOWN STRING DOWN NAME UP STRI= NG DOWN NAME UP UP UP UP CASE_PATTERN DOWN STRING DOWN NAME UP CASE_COMMA= ND LIST DOWN COMMAND DOWN STRING DOWN NAME UP STRING DOWN NAME UP UP UP U= P CASE_PATTERN DOWN STRING DOWN MATCH_ALL UP CASE_COMMAND LIST DOWN COMMAND DOWN STRING DOWN NAME UP STRING DOWN = NAME UP UP UP UP UP UP COMMAND DOWN FOR DOWN NAME STRING DOWN COMMAND_SUB= DOWN LIST DOWN PIPE DOWN COMMAND DOWN STRING DOWN NAME UP UP COMMAND DOW= N STRING DOWN NAME UP STRING DOWN NAME UP UP UP UP UP UP LIST DOWN COMMAN= D DOWN STRING DOWN NAME UP STRING DOWN VAR_REF DOWN NAME UP UP UP COMMAND= DOWN STRING DOWN NAME UP STRING DOWN NAME UP UP UP UP UP COMMAND DOWN CF= OR DOWN FOR_INIT DOWN PLUS DOWN DIGIT DIGIT UP UP FOR_COND DOWN PLUS DOWN= DIGIT DIGIT UP UP LIST DOWN COMMAND DOWN STRING DOWN NAME UP STRING DOWN= NAME UP UP UP FOR_MOD DOWN PLUS DOWN DIGIT DIGIT UP UP UP UP COMMAND DOW= N SELECT DOWN NAME STRING DOWN COMMAND_SUB DOWN LIST DOWN PIPE DOWN COMMA= ND DOWN STRING DOWN NAME UP UP COMMAND DOWN STRING DOWN NAME UP STRING DO= WN NAME UP UP UP UP UP UP LIST DOWN COMMAND DOWN STRING DOWN NAME UP STRI= NG DOWN NAME UP STRING DOWN DIGIT UP REDIR DOWN GREATER_THAN STRING DOWN = SLASH NAME SLASH NAME UP UP UP UP UP UP C OMMAND DOWN IF_STATEMENT DOWN IF DOWN LIST DOWN COMMAND DOWN STRING DOWN= NAME UP STRING DOWN NAME UP UP UP LIST DOWN COMMAND DOWN STRING DOWN NAM= E UP STRING DOWN NAME UP UP UP UP UP UP COMMAND DOWN UNTIL DOWN LIST DOWN= COMMAND DOWN COMPOUND_COND DOWN KEYWORD_TEST DOWN LETTER DOWN STRING DOW= N NAME SLASH NAME DOT NAME UP UP UP UP UP UP LIST DOWN COMMAND DOWN STRIN= G DOWN NAME UP STRING DOWN NAME SLASH NAME DOT NAME UP UP UP UP UP COMMAN= D DOWN WHILE DOWN LIST DOWN COMMAND DOWN COMPOUND_COND DOWN BUILTIN_TEST = DOWN LETTER DOWN STRING DOWN NAME UP UP UP UP UP UP LIST DOWN COMMAND DOW= N STRING DOWN NAME UP STRING DOWN DOUBLE_QUOTED_STRING DOWN NAME BLANK NA= ME UP UP UP UP UP UP COMMAND DOWN IF_STATEMENT DOWN IF DOWN LIST DOWN COM= MAND DOWN COMPOUND_COND DOWN BUILTIN_TEST DOWN NAME DOWN STRING DOWN DIGI= T UP STRING DOWN DIGIT UP UP UP UP UP UP LIST DOWN COMMAND DOWN STRING DO= WN NAME UP STRING DOWN DOUBLE_QUOTED_STRING DOWN NAME SQUOTE LETTER BLANK= NAME UP UP UP UP UP UP UP COMMAND DOWN S TRING DOWN NAME UP STRING DOWN NAME UP STRING DOWN NAME UP STRING DOWN N= AME UP STRING DOWN NAME UP STRING DOWN NAME UP UP COMMAND DOWN STRING DOW= N NAME UP PROCESS_SUBSTITUTION DOWN LESS_THAN LIST DOWN COMMAND DOWN STRI= NG DOWN NAME UP STRING DOWN SLASH NAME SLASH NAME SLASH NAME SLASH NAME D= OT NAME UP UP UP UP UP LOGICOR DOWN LOGICAND DOWN LOGICAND DOWN LOGICAND = DOWN COMMAND DOWN STRING DOWN NAME UP STRING DOWN NAME UP UP COMMAND DOWN= STRING DOWN DOT SLASH NAME UP UP UP COMMAND DOWN STRING DOWN NAME UP UP = UP COMMAND DOWN STRING DOWN NAME UP UP UP COMMAND DOWN STRING DOWN NAME U= P STRING DOWN NAME UP UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN = SLASH NAME SLASH NAME UP UP PIPE DOWN COMMAND DOWN STRING DOWN NAME UP ST= RING DOWN MINUS NAME UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN N= AME UP UP UP COMMAND DOWN VARIABLE_DEFINITIONS DOWN EQUALS DOWN NAME STRI= NG DOWN NAME UP UP UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN USE_DEFAUL= T_WHEN_UNSET_OR_NULL DOWN NAME STRING DOW N NAME UP UP UP UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN OFFSET DOWN = NAME DIGIT UP UP UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN BANG DOWN NA= ME TIMES UP UP UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN BANG DOWN NAME= AT UP UP UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN POUND DOWN NAME UP = UP UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN REPLACE_FIRST DOWN NAME ST= RING DOWN NAME UP STRING DOWN NAME UP UP UP UP UP COMMAND DOWN STRING DOW= N VAR_REF DOWN LAZY_REMOVE_AT_START DOWN NAME STRING DOWN NAME UP UP UP U= P UP COMMAND DOWN STRING DOWN VAR_REF DOWN REPLACE_AT_START DOWN NAME STR= ING DOWN NAME UP UP UP UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN LAZY_R= EMOVE_AT_END DOWN NAME STRING DOWN NAME UP UP UP UP UP COMMAND DOWN STRIN= G DOWN VAR_REF DOWN LAZY_REMOVE_AT_END DOWN NAME STRING DOWN NAME UP UP U= P UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN DIGIT UP UP STRING DOWN VAR= _REF DOWN AT UP UP STRING DOWN VAR_REF DOWN TIMES UP UP UP COMMAND DOWN S= TRING DOWN VAR_REF DOWN QMARK UP UP UP CO MMAND DOWN STRING DOWN VAR_REF DOWN REPLACE_ALL DOWN NAME STRING DOWN DO= T UP STRING DOWN UNDERSCORE UP UP UP UP UP COMMAND DOWN STRING DOWN VAR_R= EF DOWN REPLACE_AT_START DOWN NAME STRING DOWN NAME UP STRING DOWN NAME U= P UP UP UP UP COMMAND DOWN STRING DOWN VAR_REF DOWN REPLACE_AT_END DOWN N= AME STRING DOWN NAME UP STRING DOWN NAME UP UP UP UP UP COMMAND DOWN VARI= ABLE_DEFINITIONS DOWN EQUALS DOWN NAME STRING DOWN VAR_REF DOWN REPLACE_F= IRST DOWN NAME STRING DOWN NAME MINUS UP UP UP UP UP UP UP PIPE DOWN COMM= AND DOWN STRING DOWN NAME UP STRING DOWN NAME UP UP COMMAND DOWN STRING D= OWN NAME UP STRING DOWN NAME UP STRING DOWN DIGIT UP REDIR DOWN OP FILE_D= ESCRIPTOR DOWN DIGIT UP UP REDIR DOWN GREATER_THAN STRING DOWN SLASH NAME= SLASH NAME UP UP UP UP COMMAND DOWN STRING DOWN NAME UP STRING DOWN NAME= UP REDIR DOWN OP STRING DOWN NAME UP UP UP COMMAND DOWN STRING DOWN NAME= UP STRING DOWN NAME UP HERE_STRING_OP DOWN STRING DOWN NAME UP UP UP UP=20 + diff --cc bashast/gunit/simp_command.gunit index 76af49b,da899bb..db26ab4 --- a/bashast/gunit/simp_command.gunit +++ b/bashast/gunit/simp_command.gunit @@@ -28,7 -28,7 +28,8 @@@ simple_command "cat ~/Documents/todo.txt" -> (STRING cat) (STRING ~ / Documents / todo= . txt) "dodir ${foo}/${bar}" -> (STRING dodir) (STRING (VAR_REF foo) / (VAR_RE= F bar)) "local a=3D123 b=3D(1 2 3) c" -> (VARIABLE_DEFINITIONS local (=3D a (ST= RING 123)) (=3D b (ARRAY (STRING 1) (STRING 2) (STRING 3))) (EQUALS c)) +"echo {}{}}{{{}}{{}" -> (STRING echo) (STRING { } { } } { { { } } { { }= ) + "echo \"ab#af ###\" #abc" -> (STRING echo) (STRING (DOUBLE_QUOTED_STRIN= G ab # af ## #)) =20 command: "asdf=3D5 cat out.log > result" -> (COMMAND (STRING cat) (STRING out . = log) (=3D asdf (STRING 5)) (REDIR > (STRING result))) diff --cc scripts/command_execution.bash index d485d57,365f199..76e9c4c --- a/scripts/command_execution.bash +++ b/scripts/command_execution.bash @@@ -55,4 -55,4 +55,5 @@@ shopt -s extglo shopt -p printf "%s %s\n" abc def printf "%s %s\n" $FOO001, def +((FOO010=3D1)) + echo "abc #av### ##" # for comment