[plt-scheme] Parser tools and actions in mid-rules

From: Paulo J. Matos (pocmatos at gmail.com)
Date: Thu Mar 19 19:06:05 EDT 2009

On Thu, Mar 19, 2009 at 5:40 PM, Dave Herman <dherman at ccs.neu.edu> wrote:
> Can you do something like the following?
>
> (grammar
>  ...
>  (event
>   [(EVENT locals event-rest)
>    ($3 $2)])
>  (event-rest
>   [(BODY expression END)
>    (lambda (locals)
>      ;; update the environment
>      $2)])
>  ...)
>

Ah, thanks! :) That's seems like a good solution! I will try that!

> Dave
>
> On Mar 19, 2009, at 12:26 PM, Paulo J. Matos wrote:
>
>> Hi all,
>>
>> Bison supports actions in mid-rule:
>>
>> http://www.gnu.org/software/bison/manual/html_mono/bison.html#Mid_002dRule-Actions
>> however this doesn't seem the case with Parser Tools.
>>
>> I wonder then, what's the best way to solve the following issue:
>> I am parsing a formal specification language which introduce several
>> environments which are just pairs of Variable / Type.
>> One structure of the language is an Event which has a local variables
>> section and a body section.
>> Something like:
>> event ::= EVENT locals BODY expression END;
>>
>> The way to do this would be to have a mid-rule after locals to create
>> a new environment which contains the variables defined in locals and
>> then after END, we remove the destroy the environment.
>>
>> Without mid-rules I am a bit lost. Is there any other way to do this
>> kind of thing? (or maybe some way to turn an unambiguous grammar with
>> mid-rules into an unambiguous grammar without mid-rules)
>>
>> --
>> Paulo Jorge Matos - pocmatos at gmail.com
>> Webpage: http://www.personal.soton.ac.uk/pocm
>> _________________________________________________
>>  For list-related administrative tasks:
>>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
>



-- 
Paulo Jorge Matos - pocmatos at gmail.com
Webpage: http://www.personal.soton.ac.uk/pocm


Posted on the users mailing list.