Grammar CPPLexer
ANTLR-generated HTML file from CPP_parser.g

Terence Parr, MageLang Institute
ANTLR Version 2.7.5 (20050403); 1989-2005


Definition of lexer CPPLexer, which is a subclass of CharScanner.

/** Lexer nextToken rule:
 *  The lexer nextToken rule is synthesized from all of the user-defined
 *  lexer rules.  It logically consists of one big alternative block with
 *  each user-defined rule being an alternative.
 */
mASSIGNEQUAL 
|	mCOLON 
|	mCOMMA 
|	mQUESTIONMARK 
|	mSEMICOLON 
|	mPOINTERTO 
|	mLPAREN 
|	mRPAREN 
|	mLSQUARE 
|	mRSQUARE 
|	mLCURLY 
|	mRCURLY 
|	mEQUAL 
|	mNOTEQUAL 
|	mLESSTHANOREQUALTO 
|	mLESSTHAN 
|	mGREATERTHANOREQUALTO 
|	mGREATERTHAN 
|	mDIVIDE 
|	mDIVIDEEQUAL 
|	mPLUS 
|	mPLUSEQUAL 
|	mPLUSPLUS 
|	mMINUS 
|	mMINUSEQUAL 
|	mMINUSMINUS 
|	mSTAR 
|	mTIMESEQUAL 
|	mMOD 
|	mMODEQUAL 
|	mSHIFTRIGHT 
|	mSHIFTRIGHTEQUAL 
|	mSHIFTLEFT 
|	mSHIFTLEFTEQUAL 
|	mAND 
|	mNOT 
|	mOR 
|	mAMPERSAND 
|	mBITWISEANDEQUAL 
|	mTILDE 
|	mBITWISEOR 
|	mBITWISEOREQUAL 
|	mBITWISEXOR 
|	mBITWISEXOREQUAL 
|	mPOINTERTOMBR 
|	mDOTMBR 
|	mSCOPE 
|	mWhitespace 
|	mComment 
|	mCPPComment 
|	mPREPROC_DIRECTIVE 
|	mStringLiteral 
|	mPragma 
|	mError 
|	mCharLiteral 
|	mNumber 
|	mID 
mASSIGNEQUAL
	:	'=' 
	;

mCOLON
	:	':' 
	;

mCOMMA
	:	',' 
	;

mQUESTIONMARK
	:	'?' 
	;

mSEMICOLON
	:	';' 
	;

mPOINTERTO
	:	"->" 
	;

mLPAREN
	:	'(' 
	;

mRPAREN
	:	')' 
	;

mLSQUARE
	:	'[' 
	;

mRSQUARE
	:	']' 
	;

mLCURLY
	:	'{' 
	;

mRCURLY
	:	'}' 
	;

mEQUAL
	:	"==" 
	;

mNOTEQUAL
	:	"!=" 
	;

mLESSTHANOREQUALTO
	:	"<=" 
	;

mLESSTHAN
	:	"<" 
	;

mGREATERTHANOREQUALTO
	:	">=" 
	;

mGREATERTHAN
	:	">" 
	;

mDIVIDE
	:	'/' 
	;

mDIVIDEEQUAL
	:	"/=" 
	;

mPLUS
	:	'+' 
	;

mPLUSEQUAL
	:	"+=" 
	;

mPLUSPLUS
	:	"++" 
	;

mMINUS
	:	'-' 
	;

mMINUSEQUAL
	:	"-=" 
	;

mMINUSMINUS
	:	"--" 
	;

mSTAR
	:	'*' 
	;

mTIMESEQUAL
	:	"*=" 
	;

mMOD
	:	'%' 
	;

mMODEQUAL
	:	"%=" 
	;

mSHIFTRIGHT
	:	">>" 
	;

mSHIFTRIGHTEQUAL
	:	">>=" 
	;

mSHIFTLEFT
	:	"<<" 
	;

mSHIFTLEFTEQUAL
	:	"<<=" 
	;

mAND
	:	"&&" 
	;

mNOT
	:	'!' 
	;

mOR
	:	"||" 
	;

mAMPERSAND
	:	'&' 
	;

mBITWISEANDEQUAL
	:	"&=" 
	;

mTILDE
	:	'~' 
	;

mBITWISEOR
	:	'|' 
	;

mBITWISEOREQUAL
	:	"|=" 
	;

mBITWISEXOR
	:	'^' 
	;

mBITWISEXOREQUAL
	:	"^=" 
	;

mPOINTERTOMBR
	:	"->*" 
	;

mDOTMBR
	:	".*" 
	;

mSCOPE
	:	"::" 
	;

mWhitespace
	:	(	(	' ' 
			|	'\t' 
			|	'\f' 
			) 
		|	(	"\r\n" 
			|	'\r' 
			|	'\n' 
			) 
			
		|	(	"\\\r\n" 
			|	"\\\r" 
			|	"\\\n" 
			) 
			
		) 
		
	;

mComment
	:	"/*" 
		(	'*' 
		|	mEndOfLine 
		|	(	'*' 
			|	'\r' 
			|	'\n' 
			) 
		)* 
		"*/" 
	;

protected mEndOfLine
	:	(	"\r\n" 
		|	'\r' 
		|	'\n' 
		) 
	;

mCPPComment
	:	"//" ( (	'\n' 
			|	'\r' 
			) )* mEndOfLine 
	;

mPREPROC_DIRECTIVE
	:	'#' mLineDirective 
	;

protected mLineDirective
	:	(	"line" 
		|	
		) 
		( mSpace )+ mDecimal ( mSpace )+ 
		(	mStringLiteral 
		|	
		) 
		mEndOfLine 
	;

protected mSpace
	:	(	' ' 
		|	'\t' 
		|	'\f' 
		) 
	;

protected mDecimal
	:	( 			'0'..'9' )+ 
	;

mStringLiteral
	:	'"' 
		(	mEscape 
		|	(	"\\\r\n" 
			|	"\\\r" 
			|	"\\\n" 
			) 
			
		|	(	'"' 
			|	'\r' 
			|	'\n' 
			|	'\\' 
			) 
		)* 
		'"' 
	;

mPragma
	:	( '#' "pragma" ( (	'\r' 
				|	'\n' 
				) )* mEndOfLine ) 
	;

mError
	:	( '#' "error" ( (	'\r' 
				|	'\n' 
				) )* mEndOfLine ) 
	;

mCharLiteral
	:	'\'' 
		(	mEscape 
		|	( '\'' ) 
		) 
		'\'' 
	;

protected mEscape
	:	'\\' 
		(	'a' 
		|	'b' 
		|	'f' 
		|	'n' 
		|	'r' 
		|	't' 
		|	'v' 
		|	'"' 
		|	'\'' 
		|	'\\' 
		|	'?' 
		|	( 				'0'..'3' ) 
			(	mDigit 
				(	mDigit 
				|	
				) 
			|	
			) 
		|	( 				'4'..'7' ) 
			(	mDigit 
			|	
			) 
		|	'x' 
			(	mDigit 
			|					'a'..'f' 
			|					'A'..'F' 
			)+ 
		) 
	;

protected mDigit
	:			'0'..'9' 
	;

protected mLongSuffix
	:	'l' 
	|	'L' 
	;

protected mUnsignedSuffix
	:	'u' 
	|	'U' 
	;

protected mFloatSuffix
	:	'f' 
	|	'F' 
	;

protected mExponent
	:	(	'e' 
		|	'E' 
		) 
		(	'+' 
		|	'-' 
		|	
		) 
		( mDigit )+ 
	;

protected mVocabulary
	:			'\3'..'\377' 
	;

mNumber
	:	( mDigit )+ 
		(	'.' ( mDigit )* 
			(	mExponent 
			|	
			) 
			
		|	mExponent 
		) 
		(	mFloatSuffix 
		|	mLongSuffix 
		|	
		) 
	|	"..." 
	|	'.' 
		(	( mDigit )+ 
			(	mExponent 
			|	
			) 
			
			(	mFloatSuffix 
			|	mLongSuffix 
			|	
			) 
		|	
		) 
	|	'0' ( 			'0'..'7' )* 
		(	mLongSuffix 
		|	mUnsignedSuffix 
		)* 
		
	|			'1'..'9' ( mDigit )* 
		(	mLongSuffix 
		|	mUnsignedSuffix 
		)* 
		
	|	'0' 
		(	'x' 
		|	'X' 
		) 
		(				'a'..'f' 
		|				'A'..'F' 
		|	mDigit 
		)+ 
		(	mLongSuffix 
		|	mUnsignedSuffix 
		)* 
		
	;

mID
	:	(				'a'..'z' 
		|				'A'..'Z' 
		|	'_' 
		) 
		(				'a'..'z' 
		|				'A'..'Z' 
		|	'_' 
		|				'0'..'9' 
		)* 
	;