[antlr-interest] how to resolve the nondeterminism between INT and DATE?

Oliver Kowalke oliver.kowalke at gmx.de
Sat Jan 8 05:19:16 PST 2005


Hello,
I've a problem resolving a nondeterminism between INT and DATE
('mm'-'dd'-'yy'). Could you give me a hint pleas.
thanks
Oliver

--- grammar ---

header "pre_include_hpp" 
{
    #include <iostream>
}

options
{
	language="Cpp";
	namespace="kla"; 
}



/////////////////////////////////////////////////////////////////////      
//	Lexer
/////////////////////////////////////////////////////////////////////  
    
class KlarfLexer extends Lexer;

options 
{
    k=3;	
    exportVocab=KLARF;
    charVocabulary='\u0000'..'\u007F';
    caseSensitive=false;
    caseSensitiveLiterals=false;
}

tokens
{
	FILEVERSION="fileversion";
	FILETIMESTAMP="filetimestamp";
}

INT
	: ( '0'..'9' )+
;

CHARLIT
	: '\''! . '\''!
;

IDENT
  : ( 'a'..'z' ) ( 'a'..'z' | '0'..'9' )*
;
        
EODS 
	: ';' 
; 

DELIM 
	: ( ' '
	| '\t'
	| '\f'
	|	( "\r\n"
		| '\r'
		| '\n'
		)
		{ newline(); }
	)
	{ $setType(antlr::Token::SKIP); }
;

DATE
	: ( ('0'..'9')('0'..'9') '-')=>
		('0'..'9')('0'..'9') '-' ('0'..'9')('0'..'9') '-' ('0'..'9')('0'..'9')
	| { $setType(INT); }
;
 
      
      
/////////////////////////////////////////////////////////////////////
//	Parser
/////////////////////////////////////////////////////////////////////

class KlarfParser extends Parser;

options 
{	
	k=1;	
    exportVocab=KLARF;
}

parse 
	: ( dataset ( EODS )+ )+ EOF
;

dataset
	: fileversion | filetimestamp
;

fileversion
	{ int i1, i2; }
	: FILEVERSION i1=int32 i2=int32
	{ std::cout << "FileVersion = " << i1 << "." << i2 << std::endl; }
;

filetimestamp
	: FILETIMESTAMP r1:DATE r2:IDENT
	{ std::cout << "FileTimeStamp = " << r1->getText() << " " << r2->getText()
<< std::endl; }
;

int32
	returns [ int ret ]
	: i:INT
	{ ret = atoi( i->getText().c_str() ); }
;

-- 
+++ GMX - die erste Adresse für Mail, Message, More +++
1 GB Mailbox bereits in GMX FreeMail http://www.gmx.net/de/go/mail


More information about the antlr-interest mailing list