> 2009/9/2 "Markus W. WeiÃmann" <[email protected]>:
>
>> 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
_______________________________________________
[email protected] http://lists.gnu.org/mailman/listinfo/help-bison