[antlr-interest] Tree matching: wildcard-operator

Terence Parr parrt at cs.usfca.edu
Fri Jul 29 15:32:11 PDT 2011


i think maybe .* will work better. 
Ter
On Jul 29, 2011, at 3:08 PM, Tobias Diez wrote:

> I digged a little bit deeper in this problem and there seems to be a serious
> problem with wildcards.
> 
> Not even the rule
> ^(ENVIRONMENT_BEGIN .) . ^(ENVIRONMENT_END .)
> 
> matches something like 
> (ENVIRONMENT_BEGIN test1) (ENVIRONMENT_END test1) 
> (where nothing is between these two nodes)
> 
> Another issue emerges if one further reduces the rule to 
> ^(ENVIRONMENT_BEGIN) . ^(ENVIRONMENT_END) -> ^(ENVIRONMENT)
> Then I get a "Wildcard invalid as root; wildcard can itself be a tree"
> error.
> So maybe the first problem is related to the second one, although it
> compiles well.
> 
> Any thoughts how two match anything between two given nodes?
> Thanks!
> 
> 
> -----Original Message-----
> From: Tobias Diez [mailto:webmaster at altertoby.de] 
> Sent: Dienstag, 26. Juli 2011 00:02
> To: antlr-interest at antlr.org
> Subject: Tree matching: wildcard-operator
> 
> Hi,
> 
> are there special concerns regarding the wildcard operator in a tree grammar
> (with filter=true)?
> 
> I ask because 
> ^(ENVIRONMENT_BEGIN .) . * ^(ENVIRONMENT_END .)
> 
> did not match the correct input EXCEPT the LAST subtree in the file is of
> the form "^(ENVIRONMENT_END .)".
> A deeper investigation showed that the "next token equals endtoken than
> cancel"-logic of the wildcard did not fire, although it should recognize the
> environment-end subtree. So the .* matchs everything and the parser runs
> until reaching the last subtree of the input stream. This last subtree is
> than compared to  "^(ENVIRONMENT_END .)".
> So "^(ENVIRONMENT_BEGIN a) b ^(ENVIRONMENT_END c)" is recognized but
> "^(ENVIRONMENT_BEGIN a) b ^(ENVIRONMENT_END c) SOMETHING" not.
> 
> Is everything correct in the code above or is there a bug in ANTLR?
> 
> Thanks!
> 
> 
> 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