Hi,


while I was havin a first look at the internals of Falcon, I was surprized to 
find a mixture of Antlr2 & Antlr3 grammars for creating the parsers.

In a first moment I thought it would be a good idea to migrate the Antlr2 
grammars ASParser.g and MetadataParser.g to Antlr3 but after finding out that 
IntelliJ now has a neat Antlr4 plugin and reading a bit about the differences 
from 2 and 3 to 4 it sounded like a good idea to migrate all to Antlr4. To me 
it looks as if the way things are processed in Antlr4 would make the grammars a 
lot easier as well as implementing the rule logic. My gut-feeling tells me that 
an Antlr4 parser should need less processing and be quite a bit faster. I did 
experiment a little on the CSS grammar and successfully created an Antlr4 
version of that ... so I guess it should be possible and it would clean up 
things quite dramatically.



What I particularly liked, was that Antlr4 automatically generates a Listener 
interface for any rule it finds generating an "enter{ruleneme}" and 
"exit{rulename}" as well as a base-class implementing this interface. Now all 
of the java code we had to enter in the rule-document can now be defined in a 
FalconCssListener class that extends this CSSBaseListener. This is where the 
Java code can be added to handle the rules and we can easily debug it (I know 
you could set breakpoints in the generated code, but I allways disliked that).



What do you think? ... Would it be a good idea to give something like that a 
try? After all ... it's just 3 grammars (CSS, ASParser and MetadataParser). But 
I have to admit that the ASParser grammar looks way more complex than the CSS 
and the MetadataParser grammar.



Chris

Reply via email to