[antlr-interest] Re: How to describe this in ANTLR?

lachinois2002 lachinois at hotmail.com
Wed Jan 14 17:56:35 PST 2004


Yeah, maybe its better to use a grammar that is more loose in order 
to reduce complexity. However, I have to be carefull because 
depending on the right hand side of c,d,e,f staring them could in 
itself cause an even more ambigous grammar. 

However, in the footnote case, I was rather concerned about the 
ability to direct a parse based on the comparaison of the two 
footnote refs (the number of stars have to match).

In that case I believe that sematic predicate mught just do the job. 

Thanks for the advise!
Daniel Shane 

--- In antlr-interest at yahoogroups.com, mzukowski at y... wrote:
> You may be better off recognizing
> 
> a: (b | c | d | e | f)* ; 
> 
> and then have an action that checks that they came in the right 
order.
> However, your solution should work too.  
> 
> On the other hand, ANTLR will do the right thing with your 
original even
> though it is non-deterministic.  Inspect the generated code and 
see.
> 
> For the second question, again ANTLR will do the right thing and 
match if it
> can in the paragraph rule, otherwise it would be matched in the 
section
> rule.  This is the same problem as with if/else statements.  By 
the way,
> your grammar for paragraph/footnote doesn't quite make sense with
> footnoteRef being matched twice in a row.  
> 
> Monty
> 
> 
> -----Original Message-----
> From: Daniel Shane [mailto:lachinois at h...] 
> Sent: Wednesday, January 14, 2004 12:58 PM
> To: antlr-interest at yahoogroups.com
> Subject: [antlr-interest] How to describe this in ANTLR?
> 
> Hi, I have two cases I'm trying to solve using ANTLR..
> 
> First, what is the best way of writting this so that its 
deterministic?
> 
> a: b? c? d? e? f? b?
> 
> Is this the best way?
> 
> a: (b (c | d | e | f)) => b c? d? e? f? b?
> | (c | d | e | f) => c? d? e? f? b?
> | b?
> 
> Secondly, I'm trying to recognize text which contain footnotes. 
For example:
> 
> Section
> This is paragraph 1 * <- footnote Reference
> This is paragraph 2 ** <- footnote Reference
> ** footnote 2
> * footnote 1
> 
> A section can end with a footnote as well as paragraphs. If the 
footnote is 
> for the preceding paragraph, then it goes with it, else it goes at 
the end 
> of the section.
> 
> section: paragraph+ footnote*
> paragraph: text footnoteRef? footnote*
> footnote: footnoteRef text
> 
> The problem is that stated this way the grammar is non 
deterministic, 
> however, by matching the footnoteRef to the footnote it is 
possible to know 
> if a footnote goes in the section or at the end of a paragraph.
> 
> In the above example, here is the tree that should be recognized:
> 
> <Section>
> <Paragraph><text>This is paragraph 
> 1</text><footnoteRef>*</footnoteRef></Paragraph>
> <Paragraph><text>This is paragraph 
2</text><footnoteRef>**</footnoteRef>
> <footnote><footnoteRef>**</footnoteRef> footnote 2</footnote>
> </Paragraph>
> <footnote><footnoteRef>*</footnoteRef> footnote 1</footnote>
> </Section>
> 
> Is there a way to accomplish this using semantic predicates? If I 
understand
> 
> semantic predicate will return an error and parsing will fail if 
the 
> condition evaluates to anything but true right? So I can place a 
semantic 
> predicate that would try to match the footnote with the right 
footnoteRef?
> 
> Daniel Shane
> 
> _________________________________________________________________
> MSN Search, le moteur de recherche qui pense comme vous !  
> http://fr.ca.search.msn.com/
> 
> 
>  
> 
> Yahoo! Groups Links
> 
> To visit your group on the web, go to:
>  http://groups.yahoo.com/group/antlr-interest/
> 
> To unsubscribe from this group, send an email to:
>  antlr-interest-unsubscribe at yahoogroups.com
> 
> Your use of Yahoo! Groups is subject to:
>  http://docs.yahoo.com/info/terms/


 

Yahoo! Groups Links

To visit your group on the web, go to:
 http://groups.yahoo.com/group/antlr-interest/

To unsubscribe from this group, send an email to:
 antlr-interest-unsubscribe at yahoogroups.com

Your use of Yahoo! Groups is subject to:
 http://docs.yahoo.com/info/terms/ 




More information about the antlr-interest mailing list