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

📄 symboltable.g

📁 ANTLR(ANother Tool for Language Recognition)它是这样的一种工具
💻 G
字号:
grammar SymbolTable;/* Scope of symbol names.  Both globals and block rules need to push a new * symbol table upon entry and they must use the same stack.  So, I must * define a global scope and say that globals and block use this by saying * 'scope Symbols;' in those rule definitions. */options {	language=ObjC;}scope Symbols {  NSMutableArray *names;}@ivars {int level;}@init {level = 0;}prog:   globals (method)*    ;globalsscope Symbols;@init {    level++;    $Symbols::names = [[NSMutableArray alloc] init];}    :   (decl)*        {        NSLog(@"globals: \%@", $Symbols::names);        level--;        }    ;method    :   'method' ID '(' ')' block    ;blockscope Symbols;@init {    level++;    $Symbols::names = [[NSMutableArray alloc] init];}    :   '{' (decl)* (stat)* '}'        {        NSLog(@"level \%d symbols: \%@", level, $Symbols::names);        level--;        }    ;stat:   ID '=' INT ';'    |   block    ;decl:   'int' ID ';'        {[$Symbols::names addObject:$ID];} // add to current symbol table    ;ID  :   ('a'..'z')+    ;INT :   ('0'..'9')+    ;WS  :   (' '|'\n'|'\r')+ {$channel=99;}    ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -