[antlr-interest] short circuiting further evaluation

Loring Craymer lgcraymer at yahoo.com
Sat May 29 15:25:44 PDT 2010


Don't walk the tree to evaluate the expression; walk the tree to generate byte code and then interpret the byte code.  The overall problem then gets simpler and the resulting code runs faster.

--Loring



----- Original Message ----
> From: Jane Eisenstein <janee at softweave.com>
> To: "Farr, John" <john.farr at medtronic.com>
> Cc: "antlr-interest at antlr.org" <antlr-interest at antlr.org>
> Sent: Sat, May 29, 2010 2:15:56 PM
> Subject: Re: [antlr-interest] short circuiting further evaluation
> 
> Thanks. Using gated semantic predicates nicely simplifies the logic in each rule 
> (while doubling the number of rules). 

It doesn't stop the parse though 
> -- just the evaluation. 

Is there a clean way to determine the 
> condition's final result and return it without having to complete the parse of 
> the entire expression? 

Jane


On May 28, 2010, at 10:22 AM, 
> Farr, John wrote:

> The message I posted on April 8 with the subject 
> "Processing/traversing a rule -- dealing with conditionals" may help 
> you.
> 
> --John
> 
> 
> -----Original 
> Message-----
> From: 
> href="mailto:antlr-interest-bounces at antlr.org">antlr-interest-bounces at antlr.org 
> [mailto:
> href="mailto:antlr-interest-bounces at antlr.org">antlr-interest-bounces at antlr.org] 
> On Behalf Of Jane Eisenstein
> Sent: Friday, May 28, 2010 7:47 AM
> 
> To: 
> href="mailto:antlr-interest at antlr.org">antlr-interest at antlr.org
> 
> Subject: [antlr-interest] short circuiting further evaluation
> 
> 
> I'm working with a simple expression grammar:
> 
> 
> condition:    conditional_expression  EOF
> 
>     ;
> 
> conditional_expression
> 
>     :    conditional_term
> 
>         (  OR conditional_expression  
> )?
>     ;
> 
> conditional_term
> 
>     :    conditional_factor
> 
>         ( AND conditional_term  )?
> 
>     ;
> 
> conditional_factor
> 
>     :    conditional_primary
> 
>     |    NOT conditional_primary
> 
>     ;
> 
> conditional_primary
> 
>     : ID
>     | LEFT_PAREN 
> conditional_expression RIGHT_PAREN
>     ;
> 
> 
> At runtime, ID tokens evaluate to either true or false. Once it is clear the 
> condition as a whole will evaluate to either true or false, I'd like to stop the 
> evaluation and return the value of the condition. So far, all I've managed to do 
> is short-circuit further ID evaluations once an upper level outcome is 
> know.
> 
> Is there a way to short circuit the entire parse? I'm not 
> sure how to even tell it would be time to do so.
> 
> Jane
> 
> 
> 
> 
> 
> 
> List: 
> href="http://www.antlr.org/mailman/listinfo/antlr-interest" target=_blank 
> >http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: 
> 
> target=_blank 
> >http://www.antlr.org/mailman/options/antlr-interest/your-email-address
> 
> 
> 
> [CONFIDENTIALITY AND PRIVACY NOTICE]
> 
> 
> Information transmitted by this email is proprietary to Medtronic and is 
> intended for use only by the individual or entity to which it is addressed, and 
> may contain information that is private, privileged, confidential or exempt from 
> disclosure under applicable law. If you are not the intended recipient or it 
> appears that this mail has been forwarded to you without proper authority, you 
> are notified that any use or dissemination of this information in any manner is 
> strictly prohibited. In such cases, please delete this mail from your 
> records.
> 
> To view this notice in other languages you can either 
> select the following link or manually copy and paste the link into the address 
> bar of a web browser: 
> target=_blank >http://emaildisclaimer.medtronic.com
> 
> 


List: 
> target=_blank 
> >http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
> href="http://www.antlr.org/mailman/options/antlr-interest/your-email-address" 
> target=_blank 
> >http://www.antlr.org/mailman/options/antlr-interest/your-email-address


      



More information about the antlr-interest mailing list