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 1Sb6pC-0001Mj-A7 for garchives@archives.gentoo.org; Sun, 03 Jun 2012 09:10:14 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 5D62BE07D8; Sun, 3 Jun 2012 09:08:42 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 2D247E07D8 for ; Sun, 3 Jun 2012 09:08:42 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 8839A1B4007 for ; Sun, 3 Jun 2012 09:08:41 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id B1E2DE543A for ; Sun, 3 Jun 2012 09:08:38 +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: <1330572729.c444c4bb2952b3b95269a9f7e05d730c2df50670.betelgeuse@gentoo> Subject: [gentoo-commits] proj/libbash:master commit in: bashast/, bashast/gunit/ X-VCS-Repository: proj/libbash X-VCS-Files: bashast/gunit/param_main.gunit bashast/libbashWalker.g X-VCS-Directories: bashast/ bashast/gunit/ X-VCS-Committer: betelgeuse X-VCS-Committer-Name: Petteri Räty X-VCS-Revision: c444c4bb2952b3b95269a9f7e05d730c2df50670 X-VCS-Branch: master Date: Sun, 3 Jun 2012 09:08:38 +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: 038b0c8c-f2b1-42b7-9b2e-2a91e51a36ef X-Archives-Hash: 71cff1cd87c83ddbf7e4750cd240382c commit: c444c4bb2952b3b95269a9f7e05d730c2df50670 Author: Mu Qiao gentoo org> AuthorDate: Thu Mar 1 03:32:09 2012 +0000 Commit: Petteri R=C3=A4ty gentoo org> CommitDate: Thu Mar 1 03:32:09 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/libbash.git;a= =3Dcommit;h=3Dc444c4bb Parser: support indirect ref in parameter expansion --- bashast/gunit/param_main.gunit | 3 +++ bashast/libbashWalker.g | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 0 deletions(-) diff --git a/bashast/gunit/param_main.gunit b/bashast/gunit/param_main.gu= nit index 4e30458..01ec853 100644 --- a/bashast/gunit/param_main.gunit +++ b/bashast/gunit/param_main.gunit @@ -87,6 +87,9 @@ variable_reference: "${#$}" -> (VAR_REF (# $)) "${a/=3D}" -> (VAR_REF (REPLACE_FIRST a (STRING =3D))) "${a%=3D}" -> (VAR_REF (LAZY_REMOVE_AT_END a (STRING =3D))) +"${!#/a/bc}" -> (VAR_REF (REPLACE_FIRST (VAR_REF #) (STRING a) (STRING b= c))) +"${!abc/a/bc}" -> (VAR_REF (REPLACE_FIRST (VAR_REF abc) (STRING a) (STRI= NG bc))) +"${!123/a/bc}" -> (VAR_REF (REPLACE_FIRST (VAR_REF 123) (STRING a) (STRI= NG bc))) =20 variable_definition_atom: "MY_PN=3D${PN/asterisk-}" -> (=3D MY_PN (STRING (VAR_REF (REPLACE_FIRST = PN (STRING asterisk -))))) diff --git a/bashast/libbashWalker.g b/bashast/libbashWalker.g index 9b2281d..67a39fc 100644 --- a/bashast/libbashWalker.g +++ b/bashast/libbashWalker.g @@ -447,10 +447,25 @@ var_name returns[std::string libbash_value, unsigne= d index] $libbash_value =3D $name.libbash_value; $index =3D $name.index; } + |^(VAR_REF libbash_string=3Dvar_name_for_bang) { + $libbash_value =3D walker->resolve(libbash_string); + } + |^(VAR_REF POUND) { // for ${!#} + int index =3D walker->get_array_length("*"); + $libbash_value =3D (index !=3D 0 ? "*" : "0"); + } |MINUS { $libbash_value =3D "-"; }; =20 +var_name_for_bang returns[std::string libbash_value] + :libbash_string=3Dnum { + $libbash_value =3D libbash_string; + } + |name { + $libbash_value =3D $name.libbash_value; + }; + array_name returns[std::string libbash_value] :^(ARRAY name (AT|TIMES)) { $libbash_value =3D $name.libbash_value; } // We do not care the difference between TIMES and AT for now