我正在尝试构建一个编译器,目前我很迷茫。我有一个主类,并且希望能够声明具有继承的其他类,即class newClass extends classThatHasBeenDeclaredBefore { }
我的输入看起来像
input:
class_main class_list { /* New program created */ }
并且 myclass_list
包含我程序中的所有课程,它也可以为空。
一个简单的类声明如下:
class_decl:
CLASS_KWORD CLASS_ID
OPENCURLYBRACE
attributes_list
method_list
CLOSEDCURLYBRACE { /* Ok new class is created */}
| CLASS_KWORD CLASS_ID EXTENDS_KWORD CLASS_ID
OPENCURLYBRACE
attributes_list
method_list
CLOSEDCURLYBRACE { /* Has CLASS_ID Number 2 been declared before? */ }
;
有什么方法可以检查第二个CLASS_ID
是否已经以某种方式被声明或使用过?我的想法是,我class_list
无法从我尝试添加新课程的地方到达,但我在 OCaml 上很烂。