[antlr-interest] Fuzzy parsing ('filter' option)
Jean-Christophe Bach
jeanchristophe.bach at inria.fr
Mon Aug 23 02:35:28 PDT 2010
Hello antlr users,
I am a bit stuck to the problem of fuzzy parsing and filter option. I looked at the fuzzy example,
but I am not sure it helps me.
How do you usually handle it ? How do you keep all the the host code without any
modification when you write a language you embed into Java (or any other
language) ? I thought I could create a node containing a "big string" of host
code in my tree, but it does not seem to to be so obvious/easy. The parser has
difficulties to "recognize unknown constructs" (all but my specific
constructs == host code). Have you ever had this problem ?
Thanks in advance,
JC
* Jean-Christophe Bach <jeanchristophe.bach at inria.fr> [11.08.2010. @16:54:30 +0200]:
> I have a combined grammar and I would like to do fuzzy parsing. I know that the
> filter option is designed for the lexer part, but is there any way to use this
> option by keeping my combined grammar ?
> In our old parser (antlr2), we used this option like this (in a combined
> grammar) :
>
> class HostParser extends Parser;
> ...
> // returns the current goal language code
> private String getCode() {
> String result = targetlexer.target.toString();
> targetlexer.clearTarget();
> return result;
> }
> ...
> and parser rules
>
> ...
> class HostLexer extends Lexer;
> options {
> ...
> filter=TARGET;
> ...
> }
>
> public StringBuilder target = new StringBuilder("");
> // clear the buffer
> public void clearTarget() { target.delete(0,target.length()); }
>
> ...
>
> protected
> TARGET : (.) { target.append($getText); } ;
>
>
> It was very easy to do fuzzy parsing and to use what was parsed : when needed,
> we only had to call getCode() function to get a HostBlock code and to put it in
> a node of our tree. But with antlr3, I'm not sure to understand how to proceed.
> I tried to give the option 'filter=true;' directly to my fragment TARGET rule,
> but it does not seem to be a good idea (I obtain errors).
> Would someone have any idea ?
>
> Regards,
>
> JC
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
More information about the antlr-interest
mailing list