> 2009/9/2 "Markus W. Weißmann" <markus.weissm...@in.tum.de>:
>
>> There is a wiki grammar described in this paper [1]; it is for ANTLR
>> afair,
>> but as ANTLR is just a LL parser generator, a transformation should be
>> rather easy.
>
>
> Mmm.
>
> Antlr has
> heading
> : heading_markup heading_content ( heading_markup )? ( blanks )?
> paragraph_separator
>
> Optional content ?  0 or 1
> Multiple repeats  * 0 .. many
>
> How are these done in Bison please?
>

optional statements can be done with (potentially) empty statements OR
with stating all cases; the best choice depends on how many combinations
there are for listing all cases, reusability of statements and your
personal preferences;

optionals would look like this:

%%
heading : heading_markup heading_content heading_markup_opt blanks_opt
paragraph_separator
        ;

heading_markup_opt : heading_markup
       | { /* EMPTY */ }
       ;

blanks_opt : blanks
       | { /* EMPTY */ }
       ;
%%

combinations could be written like:

%%
heading : heading_markup heading_content heading_markup blanks
paragraph_separator
       | heading_markup heading_content blanks paragraph_separator
       | heading_markup heading_content heading_markup paragraph_separator
       | heading_markup heading_content paragraph_separator
        ;
%%


writing 1..* would be done with a list statement -- either pre- or
postfix, depending on your needs.

%%
bar_lst : bar bar_lst
    | bar
    ;

foo_lst : foo_lst foo
    | foo
    ;
%%


Regards,

-Markus

-- 
Markus Weißmann, M.Sc.
Institut für Informatik
Technische Universität München
Raum 03.07.059, Boltzmannstr. 3, 85748 Garching




_______________________________________________
help-bison@gnu.org http://lists.gnu.org/mailman/listinfo/help-bison

Reply via email to