Hi All, Could you please share some advice on the following situation? I wrote my first Petit Parser. From the documentation I read that: 1) it is possible to depend on other parsers making the development more modular. 2) The docs also suggest that, in order to separate grammars rules from productions, we can make a parser with productions a subclass of a parser which defines the grammar.
I started applying 1) so my structure is something like AbstractParser " contains some common basic elements common to all subclasses) StatementAParser StatementBParser PLParser "this guy uses the StatementX parsers" So there is a parser for different statements of the programming language. The PLParser uses PetitParser dependency mechanism to rely on the Statement*Parsers. For instance: PLParser>> ruleB ^ (self dependencyAt: StatementBParser) ruleB So far so good, the grammar is working, the parser works. Now, I would like to write the productions, separately from the grammar part (remember 2) ), so I should make subclasses adding the productions in the form >>ruleA ^super ruleA ===> [ my production code] The point is that PLParser explicitly depends on Statements*Parser, and the name of the Statement*Parser appears here and there, so creating subclasses would result in maintenance nightmare. The new layer of parsers with productions will duplicate the dependencies and I foresee it will be a mess. So now, I think that having just one big class with all the rules for the grammar is better if you plan to separate productions code isolated from the grammar. Am I right? Maybe I'm missing some point regarding writing composed parsers and separating productions from grammar. Any pointer or comment is welcome. Arturo