[antlr-interest] Problem with lexical nondeterminism - ANTLR 2.7.7
Harald Mueller
harald_m_mueller at gmx.de
Thu Jan 3 05:51:31 PST 2008
Just off my head, you could write something like (I did not check the syntax at all)
NUMBER
: DIGIT+
( COMMA CHAR CHAR { $type = APAC_NUMERIC_TICKER; }
| // remains a NUMBER
)
- only ANTLR 3 can look that far ahead ... (and you dont need so many parentheses).
Regards
Harald
-------- Original-Nachricht --------
> Datum: Thu, 3 Jan 2008 13:24:35 +0000
> Von: clive.i.hill at jpmorgan.com
> An: antlr-interest at antlr.org
> Betreff: [antlr-interest] Problem with lexical nondeterminism - ANTLR 2.7.7
> Hi,
>
> I get the following warning when building my lexer from stragegy.g:
>
> /Grammar/strategy.g: warning:lexical nondeterminism between rules NUMBER
> and APAC_NUMERIC_TICKER upon
> ./Grammar/strategy.g: k==1:'0'..'9'
> ./Grammar/strategy.g: k==2:'0'..'9'
> ./Grammar/strategy.g: k==3:'0'..'9'
> ./Grammar/strategy.g: k==4:'0'..'9'
>
> Passing the following string fails:
>
> "spx dec 1350 c 43 44"
>
> As it takes 1350 to be an APAC_NUMERIC_TICKER when I it to be considered
> to be a NUMBER. Interestingly, the following works:
>
> "spx dec 135 c 43 44"
>
> My definition for the lexer rule is:
>
> APAC_NUMERIC_TICKER
>
> ;
>
> I want this to only be used if a string entered "has at least one DIGIT
> and is followed by a COMMA then two CHARs". This is clearly not the case
> for the string 1350 - and yet it matches, and then throws the exception:
>
>
> antlr.TokenStreamRecognitionException: expecting ',', found ' '
>
>
> Can anyone suggest a way to only match this rule if it is in the correct
> format ((DIGIT)+ (COMMA) (CHAR) (CHAR)) ?
>
> Thanks in advance,
>
> Clive
>
>
>
> Attached is my grammar file.
>
>
>
>
> Generally, this communication is for informational purposes only
> and it is not intended as an offer or solicitation for the purchase
> or sale of any financial instrument or as an official confirmation
> of any transaction. In the event you are receiving the offering
> materials attached below related to your interest in hedge funds or
> private equity, this communication may be intended as an offer or
> solicitation for the purchase or sale of such fund(s). All market
> prices, data and other information are not warranted as to
> completeness or accuracy and are subject to change without notice.
> Any comments or statements made herein do not necessarily reflect
> those of JPMorgan Chase & Co., its subsidiaries and affiliates.
>
> This transmission may contain information that is privileged,
> confidential, legally privileged, and/or exempt from disclosure
> under applicable law. If you are not the intended recipient, you
> are hereby notified that any disclosure, copying, distribution, or
> use of the information contained herein (including any reliance
> thereon) is STRICTLY PROHIBITED. Although this transmission and any
> attachments are believed to be free of any virus or other defect
> that might affect any computer system into which it is received and
> opened, it is the responsibility of the recipient to ensure that it
> is virus free and no responsibility is accepted by JPMorgan Chase &
> Co., its subsidiaries and affiliates, as applicable, for any loss
> or damage arising in any way from its use. If you received this
> transmission in error, please immediately contact the sender and
> destroy the material in its entirety, whether in electronic or hard
> copy format. Thank you.
> Please refer to http://www.jpmorgan.com/pages/disclosures for
> disclosures relating to UK legal entities.
--
Ist Ihr Browser Vista-kompatibel? Jetzt die neuesten
Browser-Versionen downloaden: http://www.gmx.net/de/go/browser
More information about the antlr-interest
mailing list