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