📄 cpp.g
字号:
| ('\\\n') => ('\\\n') | ('\\\r\n') => ('\\\n') | ~'\n' ) + ;SIZEOF : 'sizeof' ;DEFINED : 'defined' { if(!inDirective) _type = CKEYWORD; } ; IDENTIFIER : LETTER (LETTER|'0'..'9')* { if(inDirective == true) { if(cpp == 'D') { if(input.LA(1) != '(' ) { inDefineMode= true; inDirective = false; cpp = 'X'; } else { cpp = '('; } } } } ;fragmentLETTER : '$' | 'A'..'Z' | 'a'..'z' | '_' ;/* Operators: */ STRINGIFICATION : '#_#_' ;SHARPSHARP : '##';ASSIGNEQUAL : '=' ;COLON : ':' ;COMMA : ',' ;QUESTIONMARK : '?' ;SEMICOLON : ';' ;POINTERTO : '->' ;LPAREN : '(' ;RPAREN : ')' { if(cpp=='(') { if(input.LA(1) != '\n') { inDefineMode = true; inDirective = false; } cpp ='X'; } } ;LSQUARE : '[' ;RSQUARE : ']' ;LCURLY : '{' ;RCURLY : '}' ;EQUAL : '==';NOTEQUAL : '!=';LESSTHANOREQUALTO : '<=';LESSTHAN : '<' ;GREATERTHANOREQUALTO : '>=';GREATERTHAN : '>' ;DIVIDE : '/' ;DIVIDEEQUAL : '/=';PLUS : '+' ;PLUSEQUAL : '+=';PLUSPLUS : '++';MINUS : '-' ;MINUSEQUAL : '-=';MINUSMINUS : '--';STAR : '*' ;TIMESEQUAL : '*=';MOD : '%' ;MODEQUAL : '%=';SHIFTRIGHT : '>>';SHIFTRIGHTEQUAL : '>>=';SHIFTLEFT : '<<';SHIFTLEFTEQUAL : '<<=';AND : '&&';NOT : '!' ;OR : '||';AMPERSAND : '&' ;BITWISEANDEQUAL : '&=';TILDE : '~' ;BITWISEOR : '|' ;BITWISEOREQUAL : '|=';BITWISEXOR : '^' ;BITWISEXOREQUAL : '^=';DOT : '.' ; POINTERTOMBR : '->*' ;DOTMBR : '.*' ;SCOPE : '::' ;ELLIPSIS : '...' ;fragmentINCLUDE_FILE : '<' ( ' ' | '!' | '#' ..';' | '=' | '?' .. '[' | ']' .. '\u00FF')+ '>' | '"' ( ' ' | '!' | '#' ..';' | '=' | '?' .. '[' | ']' .. '\u00FF')+ '"' ;CHARACTER_LITERAL : ('L')? '\'' ( EscapeSequence | ~('\''|'\\') ) '\'' ;//STRING_LITERAL : '"' (options {greedy=false;} : EscapeSequence | ~('"'))* '"'STRING_LITERAL : '"' (EscapeSequence | ~('"'))* '"' ;HEX_LITERAL : '0' ('x'|'X') HexDigit+ IntegerTypeSuffix? ;DECIMAL_LITERAL : ('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix? ;OCTAL_LITERAL : '0' ('0'..'7')+ IntegerTypeSuffix? ;fragment HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;fragment IntegerTypeSuffix : 'u' | 'ul' | 'U' | 'UL' | 'l' | 'L' ;FLOATING_POINT_LITERAL : ('0'..'9')+ '.' ('0'..'9')* Exponent? FloatTypeSuffix? | '.' ('0'..'9')+ Exponent? FloatTypeSuffix? | ('0'..'9')+ Exponent FloatTypeSuffix? | ('0'..'9')+ FloatTypeSuffix ;fragment Exponent : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;fragment FloatTypeSuffix : ('f'|'F'|'d'|'D') ;fragment EscapeSequence : '\\' ('b'|'t'|'n'|'f'|'r'|'v'|'\"'|'\''|'\\') | '\\' 'x' HexDigit+ | OctalEscape ;fragment OctalEscape : '\\' ('0'..'3') ('0'..'7') ('0'..'7') | '\\' ('0'..'7') ('0'..'7') | '\\' ('0'..'7') ;fragment UnicodeEscape : '\\' 'u' HexDigit HexDigit HexDigit HexDigit ;COMMENT : '/*' ( options {greedy=false;}:.)* '*/' {_channel=99;} | '/' '\\' '\n' '*' ( options {greedy=false;}:.)* '*/' {_channel=99;} ;LINE_COMMENT : '//' ~('\n'|'\r')* '\r'? '\n' { if(!inDirective) { try{ if(input.LT(1) != '#' && input.LT(1) != -1 ) { _type = TEXT_END; } else { _type = End; } } catch(Exception e) { _type = End; } } else { _type=End; } inDirective=false; inDefineMode=false; discardSpace = true; } ;WS : { if( this.getLine() != 1) { if(input.LA(-1) == '\n') ltoken = End; else ltoken = input.LA(-1); } else { try { if(input.LA(-1) == '\n') ltoken = End; else ltoken = input.LA(-1); } catch (Exception e) { ltoken = End; } } } (' '|'\r'|'\t'|'\f')+ { if(inDirective == true) { if(discardSpace == true) { _channel = 99; } else { _type = WS; } } else { if(!inDefineMode) { try { if(input.LA(1) != EOF && input.LA(1) == '#' && ltoken == End ) { _type = End; } } catch (Exception e) { _channel = 99; } } } } ;macro_text : source_text+ -> ^(MACRO_DEFINE source_text+) ;End : WS? '\n' { if(!inDirective) { if(inDefineMode) { _type=End; } else { try{ if(input.LT(1) != '#' && input.LT(1) != -1 ) { _type = TEXT_END; } } catch(Exception e) { _type = End; } } } else {_type=End;} ltoken =End; inDirective=false; inDefineMode=false; discardSpace=true; } ;ESCAPED_NEWLINE : ('\\\n' | '\\\r\n') { _channel=99; } ;COPERATOR : {!inDirective}? ( COLON | QUESTIONMARK | POINTERTO | LCURLY | RCURLY | LSQUARE | RSQUARE | STAR | EQUAL | NOTEQUAL | LESSTHANOREQUALTO | LESSTHAN | GREATERTHANOREQUALTO| GREATERTHAN | DIVIDE | PLUSPLUS | MINUSMINUS | MOD | SHIFTRIGHT | SHIFTLEFT | AND | OR | BITWISEOR | BITWISEXOR | DOT | POINTERTOMBR | DOTMBR | SCOPE | AMPERSAND | PLUS | MINUS | TILDE | ASSIGNEQUAL | TIMESEQUAL | DIVIDEEQUAL | MODEQUAL | PLUSEQUAL | MINUSEQUAL | SHIFTLEFTEQUAL | SHIFTRIGHTEQUAL | BITWISEANDEQUAL | BITWISEXOREQUAL | BITWISEOREQUAL | NOT | ELLIPSIS ) ;CKEYWORD : {!inDirective}? 'typedef' | '__va_list__' | 'extern' | 'static' | 'auto' | 'register' | 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned'| '__fpreg' | '__float80' | 'struct' | 'union' | 'enum' | 'const' | 'volatile'| 'case' | 'default' | 'switch' | 'while' | 'do' | 'for' | 'goto' | 'continue' | 'break' | 'return' | 'if' | 'else' ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -