wisent: Bison style

 
 4.1.2 Bison style
 -----------------
 
 What we call the “Bison style” is the traditional style of Bison’s
 grammars.  Compared to iterative style, it is not straightforward to use
 grammars written in Bison style in Semantic.  Mainly because such
 grammars are designed to parse the whole input data in one pass, and
 don’t use the iterative parser back-end mechanism (SeeIterative
 style).  With Bison style the parser is called once to parse the
 grammar start nonterminal.
 
    The following example is a snippet of the Bison style Java grammar
 provided in the Semantic distribution in the file
 ‘semantic/wisent/java.wy’.
 
      %start formal_parameter
      ...
 
      formal_parameter_list
        : formal_parameter_list COMMA formal_parameter
          (cons $3 $1)
        | formal_parameter
          (list $1)
        ;
 
      formal_parameter
        : formal_parameter_modifier_opt type variable_declarator_id
          (EXPANDTAG
           (VARIABLE-TAG $3 $2 :typemodifiers $1)
           )
        ;
 
    The first consequence is that syntax errors are not automatically
 handled by Semantic.  Thus, it is necessary to explicitly handle them at
 the grammar level, providing error recovery rules to skip unexpected
 input data.
 
    The second consequence is that the iterative parser can’t do
 automatic tag expansion, except for the start nonterminal value.  It is
 necessary to explicitly expand tags from concerned semantic actions by
 calling the grammar macro ‘EXPANDTAG’ with a raw tag as parameter.  See
 also SeeStart nonterminals, for incremental re-parse
 considerations.