Grammar CPPLexer ANTLR-generated HTML file from CPP_parser.g
Terence Parr, MageLang Institute
|
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' )* ;