Vous ne devriez pas appeler l'analyse syntaxique en voyant callSomething()
(je suppose que vous vouliez dire callSomething
plutôt que doSomething
). La différence entre a
et callSomething
est que l'un est une définition de méthode tandis que l'autre est un appel de méthode.
Lorsque vous voyez une nouvelle définition, vous voudrez faire des vérifications pour vous assurer que vous pouvez ajouter cette définition, donc:
- Vérifier si la fonction n'existe pas déjà avec la même signature
- Assurez-vous que la déclaration de méthode est effectuée dans la portée appropriée (c'est-à-dire que les méthodes peuvent être déclarées à l'intérieur d'autres déclarations de méthode?)
En supposant que ces vérifications réussissent, vous pouvez l'ajouter à votre carte et commencer à vérifier le contenu de cette méthode.
Lorsque vous trouvez un appel de méthode comme callSomething()
, vous devez effectuer les vérifications suivantes:
callSomething
Existe- t- il sur votre carte?
- Est-il correctement appelé (le nombre d'arguments correspond à la signature que vous avez trouvée)?
- Les arguments sont-ils valides (si des noms de variables sont utilisés, sont-ils déclarés? Sont-ils accessibles à cette portée?)?
- Est-ce que callSomething peut être appelé d'où vous êtes (est-ce privé, public, protégé?)?
Si cela vous callSomething()
convient, à ce stade, ce que vous voulez faire dépend vraiment de la façon dont vous souhaitez l'aborder. À strictement parler, une fois que vous savez qu'un tel appel est correct à ce stade, vous ne pouvez enregistrer que le nom de la méthode et les arguments sans entrer dans les détails. Lorsque vous exécutez votre programme, vous invoquerez la méthode avec les arguments que vous devriez avoir au moment de l'exécution.
Si vous voulez aller plus loin, vous pouvez enregistrer non seulement la chaîne mais un lien vers la méthode actuelle. Ce serait plus efficace, mais si vous devez gérer la mémoire, cela peut devenir déroutant. Je vous recommanderais simplement de conserver la chaîne au début. Plus tard, vous pouvez essayer d'optimiser.
Notez que tout cela suppose que vous avez lexxed votre programme, ce qui signifie que vous avez reconnu tous les jetons de votre programme et que vous savez ce qu'ils sont . Cela ne veut pas dire que vous savez s'ils ont encore du sens ensemble, ce qui est la phase d'analyse. Si vous ne savez pas encore ce que sont les jetons, je vous suggère de vous concentrer d'abord sur l'obtention de ces informations en premier.
J'espère que ça aide! Bienvenue chez Programmers SE!