J'essaie de construire un compilateur et je suis assez perdu pour le moment. J'ai une classe principale et que vous souhaitez être en mesure de déclarer des classes supplémentaires avec l'héritage, i.e. class newClass extends classThatHasBeenDeclaredBefore { }
Mon entrée ressembleObtenir la liste en grammaire
input:
class_main class_list { /* New program created */ }
et mon class_list
se compose de toutes mes classes dans mon programme, il peut aussi être vide.
Une classe simple est déclarée comme ceci:
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? */ }
;
Est-il possible que je peux vérifier si le second CLASS_ID
a déjà été déclarée ou utilisé avant d'une certaine manière? Ma pensée est que mon class_list
est inaccessible d'où j'essaye d'ajouter ma nouvelle classe, mais je suce chez OCaml.