📄 simplecparser.m
字号:
// $ANTLR 3.0b6 SimpleC.g 2007-02-01 01:27:57#import "SimpleCParser.h"#pragma mark Cyclic DFA@implementation SimpleCParserDFA2const static int SimpleCParserdfa2_eot[13] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};const static int SimpleCParserdfa2_eof[13] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};const static unichar SimpleCParserdfa2_min[13] = {4,4,7,4,0,4,7,9,0,0,4,4,9};const static unichar SimpleCParserdfa2_max[13] = {13,4,8,13,0,4,14,10,0,0,13,4,10};const static int SimpleCParserdfa2_accept[13] = {-1,-1,-1,-1,1,-1,-1,-1,3,2,-1,-1,-1};const static int SimpleCParserdfa2_special[13] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};const static int SimpleCParserdfa2_transition[] = {};const static int SimpleCParserdfa2_transition0[] = {2};const static int SimpleCParserdfa2_transition1[] = {4, 3};const static int SimpleCParserdfa2_transition2[] = {10, 6};const static int SimpleCParserdfa2_transition3[] = {1, -1, -1, -1, -1, -1, -1, 1, 1, 1};const static int SimpleCParserdfa2_transition4[] = {7};const static int SimpleCParserdfa2_transition5[] = {12};const static int SimpleCParserdfa2_transition6[] = {5, -1, -1, -1, -1, -1, 6, 5, 5, 5};const static int SimpleCParserdfa2_transition7[] = {11, -1, -1, -1, -1, -1, -1, 11, 11, 11};const static int SimpleCParserdfa2_transition8[] = {9, -1, -1, -1, -1, -1, -1, 8};- (id) initWithRecognizer:(ANTLRBaseRecognizer *) theRecognizer{ if ((self = [super initWithRecognizer:theRecognizer]) != nil) { eot = SimpleCParserdfa2_eot; eof = SimpleCParserdfa2_eof; min = SimpleCParserdfa2_min; max = SimpleCParserdfa2_max; accept = SimpleCParserdfa2_accept; special = SimpleCParserdfa2_special; if (!(transition = calloc(13, sizeof(void*)))) { [self release]; return nil; } transition[0] = SimpleCParserdfa2_transition3; transition[1] = SimpleCParserdfa2_transition0; transition[2] = SimpleCParserdfa2_transition1; transition[3] = SimpleCParserdfa2_transition6; transition[4] = SimpleCParserdfa2_transition; transition[5] = SimpleCParserdfa2_transition4; transition[6] = SimpleCParserdfa2_transition8; transition[7] = SimpleCParserdfa2_transition2; transition[8] = SimpleCParserdfa2_transition; transition[9] = SimpleCParserdfa2_transition; transition[10] = SimpleCParserdfa2_transition7; transition[11] = SimpleCParserdfa2_transition5; transition[12] = SimpleCParserdfa2_transition2; } return self;}- (void) dealloc{ free(transition); [super dealloc];}- (NSString *) description{ return @"11:1: declaration : ( variable | functionHeader ';' | functionHeader block );";}@end#pragma mark Bitsetsconst static unsigned long long FOLLOW_declaration_in_program27_data[] = {0x0000000000003812LL};static ANTLRBitSet *FOLLOW_declaration_in_program27;const static unsigned long long FOLLOW_variable_in_declaration49_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_variable_in_declaration49;const static unsigned long long FOLLOW_functionHeader_in_declaration59_data[] = {0x0000000000000080LL};static ANTLRBitSet *FOLLOW_functionHeader_in_declaration59;const static unsigned long long FOLLOW_7_in_declaration61_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_7_in_declaration61;const static unsigned long long FOLLOW_functionHeader_in_declaration74_data[] = {0x0000000000004000LL};static ANTLRBitSet *FOLLOW_functionHeader_in_declaration74;const static unsigned long long FOLLOW_block_in_declaration76_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_block_in_declaration76;const static unsigned long long FOLLOW_type_in_variable98_data[] = {0x0000000000000010LL};static ANTLRBitSet *FOLLOW_type_in_variable98;const static unsigned long long FOLLOW_declarator_in_variable100_data[] = {0x0000000000000080LL};static ANTLRBitSet *FOLLOW_declarator_in_variable100;const static unsigned long long FOLLOW_7_in_variable102_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_7_in_variable102;const static unsigned long long FOLLOW_SimpleCParser_ID_in_declarator121_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_SimpleCParser_ID_in_declarator121;const static unsigned long long FOLLOW_type_in_functionHeader150_data[] = {0x0000000000000010LL};static ANTLRBitSet *FOLLOW_type_in_functionHeader150;const static unsigned long long FOLLOW_SimpleCParser_ID_in_functionHeader152_data[] = {0x0000000000000100LL};static ANTLRBitSet *FOLLOW_SimpleCParser_ID_in_functionHeader152;const static unsigned long long FOLLOW_8_in_functionHeader154_data[] = {0x0000000000003C10LL};static ANTLRBitSet *FOLLOW_8_in_functionHeader154;const static unsigned long long FOLLOW_formalParameter_in_functionHeader158_data[] = {0x0000000000000600LL};static ANTLRBitSet *FOLLOW_formalParameter_in_functionHeader158;const static unsigned long long FOLLOW_9_in_functionHeader162_data[] = {0x0000000000003810LL};static ANTLRBitSet *FOLLOW_9_in_functionHeader162;const static unsigned long long FOLLOW_formalParameter_in_functionHeader164_data[] = {0x0000000000000600LL};static ANTLRBitSet *FOLLOW_formalParameter_in_functionHeader164;const static unsigned long long FOLLOW_10_in_functionHeader172_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_10_in_functionHeader172;const static unsigned long long FOLLOW_type_in_formalParameter194_data[] = {0x0000000000000010LL};static ANTLRBitSet *FOLLOW_type_in_formalParameter194;const static unsigned long long FOLLOW_declarator_in_formalParameter196_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_declarator_in_formalParameter196;const static unsigned long long FOLLOW_set_in_type223_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_set_in_type223;const static unsigned long long FOLLOW_14_in_block285_data[] = {0x000000000001F9B0LL};static ANTLRBitSet *FOLLOW_14_in_block285;const static unsigned long long FOLLOW_variable_in_block299_data[] = {0x000000000001F9B0LL};static ANTLRBitSet *FOLLOW_variable_in_block299;const static unsigned long long FOLLOW_stat_in_block314_data[] = {0x000000000001C1B0LL};static ANTLRBitSet *FOLLOW_stat_in_block314;const static unsigned long long FOLLOW_15_in_block325_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_15_in_block325;const static unsigned long long FOLLOW_forStat_in_stat337_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_forStat_in_stat337;const static unsigned long long FOLLOW_expr_in_stat345_data[] = {0x0000000000000080LL};static ANTLRBitSet *FOLLOW_expr_in_stat345;const static unsigned long long FOLLOW_7_in_stat347_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_7_in_stat347;const static unsigned long long FOLLOW_block_in_stat361_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_block_in_stat361;const static unsigned long long FOLLOW_assignStat_in_stat369_data[] = {0x0000000000000080LL};static ANTLRBitSet *FOLLOW_assignStat_in_stat369;const static unsigned long long FOLLOW_7_in_stat371_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_7_in_stat371;const static unsigned long long FOLLOW_7_in_stat379_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_7_in_stat379;const static unsigned long long FOLLOW_16_in_forStat398_data[] = {0x0000000000000100LL};static ANTLRBitSet *FOLLOW_16_in_forStat398;const static unsigned long long FOLLOW_8_in_forStat400_data[] = {0x0000000000000010LL};static ANTLRBitSet *FOLLOW_8_in_forStat400;const static unsigned long long FOLLOW_assignStat_in_forStat402_data[] = {0x0000000000000080LL};static ANTLRBitSet *FOLLOW_assignStat_in_forStat402;const static unsigned long long FOLLOW_7_in_forStat404_data[] = {0x0000000000000130LL};static ANTLRBitSet *FOLLOW_7_in_forStat404;const static unsigned long long FOLLOW_expr_in_forStat406_data[] = {0x0000000000000080LL};static ANTLRBitSet *FOLLOW_expr_in_forStat406;const static unsigned long long FOLLOW_7_in_forStat408_data[] = {0x0000000000000010LL};static ANTLRBitSet *FOLLOW_7_in_forStat408;const static unsigned long long FOLLOW_assignStat_in_forStat410_data[] = {0x0000000000000400LL};static ANTLRBitSet *FOLLOW_assignStat_in_forStat410;const static unsigned long long FOLLOW_10_in_forStat412_data[] = {0x0000000000004000LL};static ANTLRBitSet *FOLLOW_10_in_forStat412;const static unsigned long long FOLLOW_block_in_forStat414_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_block_in_forStat414;const static unsigned long long FOLLOW_SimpleCParser_ID_in_assignStat441_data[] = {0x0000000000020000LL};static ANTLRBitSet *FOLLOW_SimpleCParser_ID_in_assignStat441;const static unsigned long long FOLLOW_17_in_assignStat443_data[] = {0x0000000000000130LL};static ANTLRBitSet *FOLLOW_17_in_assignStat443;const static unsigned long long FOLLOW_expr_in_assignStat445_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_expr_in_assignStat445;const static unsigned long long FOLLOW_condExpr_in_expr467_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_condExpr_in_expr467;const static unsigned long long FOLLOW_aexpr_in_condExpr486_data[] = {0x00000000000C0002LL};static ANTLRBitSet *FOLLOW_aexpr_in_condExpr486;const static unsigned long long FOLLOW_set_in_condExpr491_data[] = {0x0000000000000130LL};static ANTLRBitSet *FOLLOW_set_in_condExpr491;const static unsigned long long FOLLOW_aexpr_in_condExpr498_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_aexpr_in_condExpr498;const static unsigned long long FOLLOW_atom_in_aexpr520_data[] = {0x0000000000100002LL};static ANTLRBitSet *FOLLOW_atom_in_aexpr520;const static unsigned long long FOLLOW_20_in_aexpr524_data[] = {0x0000000000000130LL};static ANTLRBitSet *FOLLOW_20_in_aexpr524;const static unsigned long long FOLLOW_atom_in_aexpr526_data[] = {0x0000000000100002LL};static ANTLRBitSet *FOLLOW_atom_in_aexpr526;const static unsigned long long FOLLOW_SimpleCParser_ID_in_atom546_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_SimpleCParser_ID_in_atom546;const static unsigned long long FOLLOW_SimpleCParser_INT_in_atom560_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_SimpleCParser_INT_in_atom560;const static unsigned long long FOLLOW_8_in_atom574_data[] = {0x0000000000000130LL};static ANTLRBitSet *FOLLOW_8_in_atom574;const static unsigned long long FOLLOW_expr_in_atom576_data[] = {0x0000000000000400LL};static ANTLRBitSet *FOLLOW_expr_in_atom576;const static unsigned long long FOLLOW_10_in_atom578_data[] = {0x0000000000000002LL};static ANTLRBitSet *FOLLOW_10_in_atom578;#pragma mark Dynamic Global Scopes#pragma mark Dynamic Rule Scopes#pragma mark Rule return scopes start@implementation SimpleCParser+ (void) initialize{ FOLLOW_declaration_in_program27 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_declaration_in_program27_data count:1]; FOLLOW_variable_in_declaration49 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_variable_in_declaration49_data count:1]; FOLLOW_functionHeader_in_declaration59 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_functionHeader_in_declaration59_data count:1]; FOLLOW_7_in_declaration61 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_7_in_declaration61_data count:1]; FOLLOW_functionHeader_in_declaration74 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_functionHeader_in_declaration74_data count:1]; FOLLOW_block_in_declaration76 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_block_in_declaration76_data count:1]; FOLLOW_type_in_variable98 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_type_in_variable98_data count:1]; FOLLOW_declarator_in_variable100 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_declarator_in_variable100_data count:1]; FOLLOW_7_in_variable102 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_7_in_variable102_data count:1]; FOLLOW_SimpleCParser_ID_in_declarator121 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_SimpleCParser_ID_in_declarator121_data count:1]; FOLLOW_type_in_functionHeader150 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_type_in_functionHeader150_data count:1]; FOLLOW_SimpleCParser_ID_in_functionHeader152 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_SimpleCParser_ID_in_functionHeader152_data count:1]; FOLLOW_8_in_functionHeader154 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_8_in_functionHeader154_data count:1]; FOLLOW_formalParameter_in_functionHeader158 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_formalParameter_in_functionHeader158_data count:1]; FOLLOW_9_in_functionHeader162 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_9_in_functionHeader162_data count:1]; FOLLOW_formalParameter_in_functionHeader164 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_formalParameter_in_functionHeader164_data count:1]; FOLLOW_10_in_functionHeader172 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_10_in_functionHeader172_data count:1]; FOLLOW_type_in_formalParameter194 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_type_in_formalParameter194_data count:1]; FOLLOW_declarator_in_formalParameter196 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_declarator_in_formalParameter196_data count:1]; FOLLOW_set_in_type223 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_set_in_type223_data count:1]; FOLLOW_14_in_block285 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_14_in_block285_data count:1]; FOLLOW_variable_in_block299 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_variable_in_block299_data count:1]; FOLLOW_stat_in_block314 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_stat_in_block314_data count:1]; FOLLOW_15_in_block325 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_15_in_block325_data count:1]; FOLLOW_forStat_in_stat337 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_forStat_in_stat337_data count:1]; FOLLOW_expr_in_stat345 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_expr_in_stat345_data count:1]; FOLLOW_7_in_stat347 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_7_in_stat347_data count:1]; FOLLOW_block_in_stat361 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_block_in_stat361_data count:1]; FOLLOW_assignStat_in_stat369 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_assignStat_in_stat369_data count:1]; FOLLOW_7_in_stat371 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_7_in_stat371_data count:1]; FOLLOW_7_in_stat379 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_7_in_stat379_data count:1]; FOLLOW_16_in_forStat398 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_16_in_forStat398_data count:1]; FOLLOW_8_in_forStat400 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_8_in_forStat400_data count:1]; FOLLOW_assignStat_in_forStat402 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_assignStat_in_forStat402_data count:1]; FOLLOW_7_in_forStat404 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_7_in_forStat404_data count:1]; FOLLOW_expr_in_forStat406 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_expr_in_forStat406_data count:1]; FOLLOW_7_in_forStat408 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_7_in_forStat408_data count:1]; FOLLOW_assignStat_in_forStat410 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_assignStat_in_forStat410_data count:1]; FOLLOW_10_in_forStat412 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_10_in_forStat412_data count:1]; FOLLOW_block_in_forStat414 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_block_in_forStat414_data count:1]; FOLLOW_SimpleCParser_ID_in_assignStat441 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_SimpleCParser_ID_in_assignStat441_data count:1]; FOLLOW_17_in_assignStat443 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_17_in_assignStat443_data count:1]; FOLLOW_expr_in_assignStat445 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_expr_in_assignStat445_data count:1]; FOLLOW_condExpr_in_expr467 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_condExpr_in_expr467_data count:1]; FOLLOW_aexpr_in_condExpr486 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_aexpr_in_condExpr486_data count:1]; FOLLOW_set_in_condExpr491 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_set_in_condExpr491_data count:1]; FOLLOW_aexpr_in_condExpr498 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_aexpr_in_condExpr498_data count:1]; FOLLOW_atom_in_aexpr520 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_atom_in_aexpr520_data count:1]; FOLLOW_20_in_aexpr524 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_20_in_aexpr524_data count:1]; FOLLOW_atom_in_aexpr526 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_atom_in_aexpr526_data count:1]; FOLLOW_SimpleCParser_ID_in_atom546 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_SimpleCParser_ID_in_atom546_data count:1]; FOLLOW_SimpleCParser_INT_in_atom560 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_SimpleCParser_INT_in_atom560_data count:1]; FOLLOW_8_in_atom574 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_8_in_atom574_data count:1]; FOLLOW_expr_in_atom576 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_expr_in_atom576_data count:1]; FOLLOW_10_in_atom578 = [[ANTLRBitSet alloc] initWithBits:FOLLOW_10_in_atom578_data count:1];}- (id) initWithTokenStream:(id<ANTLRTokenStream>)aStream{ if ((self = [super initWithTokenStream:aStream])) { tokenNames = [[NSArray alloc] initWithObjects:@"<invalid>", @"<EOR>", @"<DOWN>", @"<UP>", @"ID", @"INT", @"WS", @"';'", @"'('", @"','", @"')'", @"'int'", @"'char'", @"'void'", @"'{'", @"'}'", @"'for'", @"'='", @"'=='", @"'<'", @"'+'", nil]; dfa2 = [[SimpleCParserDFA2 alloc] initWithRecognizer:self]; } return self;}- (void) dealloc{ [tokenNames release]; [dfa2 release]; [super dealloc];}- (NSString *) grammarFileName{ return @"SimpleC.g";}// $ANTLR start program// SimpleC.g:7:1: program : ( declaration )+ ;- (void) program{ // token labels // token+rule list labels // rule labels // rule list labels // rule refs in alts with rewrites @try { // SimpleC.g:8:9: ( ( declaration )+ ) // ruleBlockSingleAlt // SimpleC.g:8:9: ( declaration )+ // alt { // SimpleC.g:8:9: ( declaration )+ // positiveClosureBlock int cnt1=0; do { int alt1=2; { int LA1_0 = [input LA:1]; if ( LA1_0==SimpleCParser_ID||(LA1_0>=11 && LA1_0<=13) ) { alt1 = 1; } } switch (alt1) { case 1 : // SimpleC.g:8:9: declaration // alt { [following addObject:FOLLOW_declaration_in_program27]; [self declaration]; [following removeLastObject]; } break; default : if ( cnt1 >= 1 ) goto loop1; ANTLREarlyExitException *eee = [ANTLREarlyExitException exceptionWithStream:input decisionNumber:1]; @throw eee; } cnt1++; } while (YES); loop1: ; } } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input exception:re]; } @finally { // token labels // token+rule list labels // rule labels // rule refs in alts with rewrites } return ;}// $ANTLR end program// $ANTLR start declaration// SimpleC.g:11:1: declaration : ( variable | functionHeader ';' | functionHeader block );- (void) declaration{ // token labels // token+rule list labels // rule labels NSString* _functionHeader1 = nil; NSString* _functionHeader2 = nil; // rule list labels // rule refs in alts with rewrites @try { // SimpleC.g:21:9: ( variable | functionHeader ';' | functionHeader block ) //ruleblock int alt2=3; alt2 = [dfa2 predict]; switch (alt2) { case 1 : // SimpleC.g:21:9: variable // alt { [following addObject:FOLLOW_variable_in_declaration49]; [self variable]; [following removeLastObject]; } break; case 2 : // SimpleC.g:22:9: functionHeader ';' // alt { [following addObject:FOLLOW_functionHeader_in_declaration59]; _functionHeader1 = [self functionHeader]; [following removeLastObject]; [self match:input tokenType:7 follow:FOLLOW_7_in_declaration61]; NSLog(@"%@ is a declaration", _functionHeader1); } break; case 3 : // SimpleC.g:24:9: functionHeader block // alt { [following addObject:FOLLOW_functionHeader_in_declaration74]; _functionHeader2 = [self functionHeader]; [following removeLastObject]; [following addObject:FOLLOW_block_in_declaration76]; [self block]; [following removeLastObject]; NSLog(@"%@ is a definition", _functionHeader2); } break; } } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input exception:re]; } @finally { // token labels // token+rule list labels
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -