⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplecparser.m

📁 antlr最新版本V3源代码
💻 M
📖 第 1 页 / 共 3 页
字号:
// $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 + -