|
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'
)*
;