[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Line-by-line evaluation or all at once?



-------- Original Message --------
From: Marco Ladermann <ladermann@hbg.dpa.de>
Organization: dpa - Deutsche Presse-Agentur GmbH
To: SableCC List <sablecc-list@sable.mcgill.ca>
Subject: Re: Line-by-line evaluation or all at once?
Date: Tue, 17 Apr 2001 11:46:59 +0200

Dan Sandberg wrote:
> Parsing line by line relates to two other SableCC feature possibilities:
>
> 1 - Being able to parse constructs in the grammar other than just the
> starting production.  If you have a bunch of different kinds of
> statements that need to be parsed, and they share common helpers,
> tokens, etc, it would be nice if they could all be in one grammar file,
> and you could instruct SableCC to parse one or the other.  Right now you
> need completely different parsers for each production you want to be
> able to parse.

The following trick can do the job: Introduce "selector" tokens to the 
grammar and than prepend the input with that token to select the part of
the 
grammar you want to use.

E.g:

Tokens
         javaSelector = "java:";
         pascalSelector = "pascal:";
         ...

Productions
         grammar = {java} javaSelector javaGrammar
                 |   {pascal} pascalSelector pascalGrammar;

         ...


Prepending the selector can be done by: 
pushbackreader.unread("java:".toCharArary());

Marco
-- 
Marco Ladermann
dpa, Deutsche Presse-Agentur GmbH
ladermann@hbg.dpa.de (PGP-Schlüssel auf Anfrage)
Tel. +49 40 4113 2414   Fax  +49 40 4113 2479