Path: csiph.com!news.swapon.de!fu-berlin.de!uni-berlin.de!not-for-mail From: =?UTF-8?Q?Juancarlo_A=C3=B1ez?= Newsgroups: comp.lang.python.announce Subject: ANN: Grako 3.12.1 Date: Sun, 7 Aug 2016 09:40:53 -0430 Lines: 30 Sender: juancarlo.anez@gmail.com Approved: python-announce-list@python.org Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Trace: news.uni-berlin.de y6CJlEh1NbA8/fbMobjmjwQeomwZzklnD/4PoUXyF3GQ== Return-Path: X-Original-To: python-announce-list@python.org Delivered-To: python-announce-list@mail.python.org X-Spam-Status: OK 0.001 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'patterns': 0.04; 'cache': 0.05; 'method.': 0.05; 'alias': 0.07; 'repeated': 0.07; 'subject:ANN': 0.07; 'expected.': 0.09; 'input,': 0.09; 'lines:': 0.09; 'parsers': 0.09; 'python.': 0.11; 'syntax': 0.13; 'buffering': 0.16; 'concatenated': 0.16; 'descendant': 0.16; 'outputs': 0.16; 'parts,': 0.16; 'received:io': 0.16; 'received :mail-oi0-x22a.google.com': 0.16; 'received:psf.io': 0.16; 'memory': 0.17; 'sender:addr:gmail.com': 0.18; 'changes': 0.20; 'split': 0.23; 'tables': 0.23; 'module': 0.25; 'parameters': 0.27; 'message-id:@mail.gmail.com': 0.27; 'usable': 0.29; 'classes': 0.30; 'fixed': 0.31; 'possibly': 0.32; 'symbol': 0.33; '(for': 0.34; 'file': 0.34; 'received:google.com': 0.35; 'skip:3 10': 0.35; 'text': 0.35; 'replaced': 0.35; 'too': 0.36; 'tool': 0.36; 'basic': 0.36; 'subject:: ': 0.37; 'being': 0.37; 'several': 0.38; 'skip:p 20': 0.38; 'takes': 0.39; 'skip:e 20': 0.39; 'to:addr:python.org': 0.40; 'improved': 0.63; 'more': 0.63; 'latest': 0.64; 'between': 0.65; 'distinguish': 0.84; 'sublime': 0.84; 'synthetic': 0.84; 'variation': 0.84; 'traded': 0.91 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:from:date:message-id:subject:to; bh=Oabd5ax5ZCQsoCNybQpUUeh4PfhMcIVWW2PUnpEGnwk=; b=A3VNjdQrrZ6s2eWty9yTFW637B8jej19cRAgFdCf0xAcxYqbmdXPMdQlv/a+3IOs4D PB2P+zLOQH1WhtiYUiHnESYnfpo3KYcT1lPQ91ZlbQCcm78ooSSb6oVQImYvejZO3M0v KPccqHCmssgdK8cXoD4XDkWfmeMxvc3/7nayzUfyjhKXEpZe5xi93MrcmQ+w7MTXxDME wVW2q2h1q3EdK4Xp5vCqkQdGoZVMTCY5JND9QpDKiemejMC8d760+XZuS4Ck7LBSa5NS nGQdzwWMRM2jQ8EwX33IMLtANbEs4tu3UWSJv22tfL+y243cyi9ypwqGYppEeX8UirPg Z0Dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:from:date:message-id:subject :to; bh=Oabd5ax5ZCQsoCNybQpUUeh4PfhMcIVWW2PUnpEGnwk=; b=PRjBTfpg+Zorf5IvG47Gu8KAahd12wer+3PnF11MQEMvfAjUiLCTZQA1NchUK4EMYR 48V7fNCUbeYG4nigkB/4EkB8+CEmhCiB5vgPu8eTmmEWzj+6gin2iuZsI9MBvp77Ni5W oGPrVcS6MaUUA6MQKUUEYuFwCw+d2IxIF4eOYYZnBO5IMh+Pth6ugvyFvcBMf9cwm1gN +/EQgwF55OUKPjA72hzlNin+/BsjdacsiHRNuErfQPTHkcEC8lDcMPFwGJhGYJ/SvRuE RUU5vufr/sSqPPu96vV0GpJ3Vzp/NgHOWaHEqFMzRiptHFZWUNMeL7Z7hOIVhvlRJcwA hSoQ== X-Gm-Message-State: AEkoouu6XaYjVbhTIjCVyFfbkrmweNIgBKO1OwHAZ/NFGaxbgPqshqKmJDmbV2pL06DREj7evk+QEoHtsMMisg== X-Received: by 10.202.236.71 with SMTP id k68mr47609797oih.162.1470579073638; Sun, 07 Aug 2016 07:11:13 -0700 (PDT) X-Google-Sender-Auth: Mfwes9H_shm2gZrjJn4D-mJMEiI X-Mailman-Approved-At: Mon, 08 Aug 2016 04:48:58 -0400 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 X-BeenThere: python-announce-list@python.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Announcement-only list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: Xref: csiph.com comp.lang.python.announce:2227 Grako (for grammar compiler) is a tool that takes grammars in a variation of EBNF as input, and outputs memoizing (Packrat) PEG parsers in Python. Changes in 3.12.1: - Distinguish between positive and normal joins: s.{e}+ and s.{e}. Having s.{e} use a positive closure was too unexpected. - Also generate a buffering.Buffer descendant specific to the grammar for parsers that need to customize the parsing.Parser.parse() method. - Added the grako.synth module which makes synthetic grako.model.Node classes pickable. - Traded memory for simplicity and replaced the line-based line cache in buffering.Buffer for a position-based cache. Buffering needs to continue being str-based for complex re patterns to work as expected. - Now patterns may be concatenated to split a complex pattern into parts, possibly accross several lines: /regexp/ + /regexp/. - Added basic support for symbol tables in grako.symtables. - Now model.ParseModel is an alias for model.Node. - Improved examples/antlr2grako so it generates more usable Grako grammars. - Syntax file for Sublime Text (vmuriart). - The latest changes to grako.util.trim() were incomplete. - Fixed several inconsistencies in the implementation and use of buffering.Buffer line indexing. - Repeated parameters to object model constructors. --=20 Juancarlo *A=C3=B1ez*