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 1QCVYu-00018C-BH for garchives@archives.gentoo.org; Wed, 20 Apr 2011 11:27:12 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 68AE01C08C; Wed, 20 Apr 2011 11:26:15 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 2BE361C087 for ; Wed, 20 Apr 2011 11:26:15 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id D062D1B408A for ; Wed, 20 Apr 2011 11:26:13 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 1001180237 for ; Wed, 20 Apr 2011 11:26:13 +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: <5641e7417ffed007581d9f811985dae7fdd81ef8.betelgeuse@gentoo> Subject: [gentoo-commits] proj/libbash:master commit in: bashast/ X-VCS-Repository: proj/libbash X-VCS-Files: bashast/bashast.g X-VCS-Directories: bashast/ X-VCS-Committer: betelgeuse X-VCS-Committer-Name: Petteri Räty X-VCS-Revision: 5641e7417ffed007581d9f811985dae7fdd81ef8 Date: Wed, 20 Apr 2011 11:26:13 +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: 4a76016feedc777d25726d892f835fed commit: 5641e7417ffed007581d9f811985dae7fdd81ef8 Author: Petteri R=C3=A4ty petteriraty eu> AuthorDate: Tue Apr 19 18:38:58 2011 +0000 Commit: Petteri R=C3=A4ty gentoo org> CommitDate: Wed Apr 20 11:22:48 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/libbash.git;a= =3Dcommit;h=3D5641e741 Parser: Left-factor variable expansion There was a lot of bactracking going on in the var_exp rule. Left-factoring brings down versionator memory usage from around 1 GB to 200 MB. --- bashast/bashast.g | 25 +++++++++++++++++-------- 1 files changed, 17 insertions(+), 8 deletions(-) diff --git a/bashast/bashast.g b/bashast/bashast.g index 9916662..61c5914 100644 --- a/bashast/bashast.g +++ b/bashast/bashast.g @@ -249,15 +249,24 @@ var_ref | DOLLAR MINUS -> ^(VAR_REF MINUS) | DOLLAR BANG -> ^(VAR_REF BANG); //Variable expansions -var_exp : var_name parameter_value_operator^ word - | var_name COLON wspace* os=3Dexplicit_arithmetic (COLON len=3Dexplicit= _arithmetic)? -> ^(OFFSET var_name $os ^($len)?) - | BANG^ var_name_for_bang (TIMES|AT) - | BANG var_name_for_bang LSQUARE (op=3DTIMES|op=3DAT) RSQUARE -> ^(LIST= _EXPAND var_name_for_bang $op) - | BANG var_name_for_bang -> ^(VAR_REF var_name_for_bang) - | var_name parameter_delete_operator parameter_pattern_part+ -> ^(param= eter_delete_operator var_name ^(STRING parameter_pattern_part+)) - | var_name parameter_replace_operator^ parameter_replace_pattern parame= ter_replace_string +var_exp : var_name ( + parameter_value_operator word + -> ^(parameter_value_operator var_name word) + | COLON wspace* os=3Dexplicit_arithmetic (COLON len=3Dexplicit_arith= metic)? + -> ^(OFFSET var_name $os ^($len)?) + | parameter_delete_operator parameter_pattern_part+ + -> ^(parameter_delete_operator var_name ^(STRING parameter_pattern_= part+)) + | parameter_replace_operator parameter_replace_pattern parameter_rep= lace_string + -> ^(parameter_replace_operator var_name parameter_replace_pattern = parameter_replace_string?) + | -> var_name + ) + | BANG var_name_for_bang ( + TIMES -> ^(BANG var_name_for_bang TIMES) + | AT -> ^(BANG var_name_for_bang AT) + | LSQUARE (op=3DTIMES|op=3DAT) RSQUARE -> ^(LIST_EXPAND var_name_f= or_bang $op) + | -> ^(VAR_REF var_name_for_bang) + ) | var_size_ref - | var_name | TIMES | AT; parameter_delete_operator