Question

Je me demande où est la limite entre la spécification de la grammaire et l'analyse sémantique. Ce qui est mieux: utiliser une description de grammaire détaillée, ou les détails de la phase sémantique? Par exemple: imaginez une langue OO comme C # avec le type de ENUM, qui peut « dériver » d'un type primitif

enum X : int { a = 1 }

, si l'exactitude (dans ce cas: type primitif ou non primitif)? De base type de ENUM être un sujet de vérification de la grammaire ou l'analyse sémantique

Était-ce utile?

La solution

Ceci est une question extrêmement large. Il y a tellement d'autres considérations telles qu'il serait très difficile de dire simplement qu'une tactique est meilleure qu'une autre dans toutes les situations. Cela dépend de votre objectif et la définition du reste de la langue. Si d'autres parties de la langue sont intrinsèquement syntaxiquement ambigus (et doivent être désambiguïsé en utilisant des informations sémantiques), alors il est évident qu'il est nécessaire d'effectuer des tâches comme une étape d'analyse sémantique.

Cela dit, je suis fan d'attraper toutes les erreurs le plus tôt possible. Si votre langue et cible vous permet d'analyser une représentation sémantique totalement univoque de votre entrée sans nécessiter une analyse sémantique de rejeter les programmes non valides, alors je crois que va être la meilleure approche de loin.

En fait, vous équilibrez certainement votre capacité à rejeter les programmes erronés le plus tôt possible avec la complexité de votre grammaire et l'analyseur et la duplication des efforts entre la description de la grammaire et la phase d'analyse sémantique. Je ne crois pas qu'il soit jamais possible de dire que faire les choses d'une manière est meilleure qu'une autre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top