9
votes

Toute références pour analyser le code incomplet ou incorrect?

Quelqu'un peut-il me signaler aux références sur les techniques de l'analyse de l'analyse contenant des erreurs de syntaxe ou manque la ponctuation nécessaire, par exemple?

L'application sur laquelle je travaille est une IDE, où nous aimerions fournir des fonctionnalités telles que "Sauter à la définition", des fonctionnalités automatiques complètes et de refactoring, sans que la source soit syntaxiquement correcte au moment où la Les fonctions sont invoquées.

La plupart du code d'analyseur que j'ai vu semble travailler sur le principe de "échouer tôt" plutôt que de se concentrer sur la récupération des erreurs ou de l'analyse de code partiellement complet.


0 commentaires

3 Réponses :



0
votes

Recherche sur "Island Grammars" peut vous intéresser. Cela fait longtemps que je les ai regardés, mais je crois qu'ils sont censés manipuler raisonnablement les cas où il y a beaucoup de morceaux de non-sens dans le dossier. Je n'avais pas beaucoup de chance avec Citeser (étrangement; généralement c'est plutôt bien), mais Google Scholar a trouvé un certain nombre de documents pertinents. générer des analyseurs robustes utilisant des grammaires d'îles ressemble à un bon endroit pour commencer.


1 commentaires

Oh, excellent. Cela aborde la question de savoir comment extraire des informations certaines du code qui ne peut pas être analysée, par opposition à une insertion et de suppression de symboles à un seul symbole, qui est un mode de récupération d'erreur plus typique dans les compilateurs traditionnels.



3
votes

Avez-vous essayé antlr ?

in " La référence AntLR définitive ", section 10.7 automatique Stratégie de récupération des erreurs pour 5 pages Terrence parle à ce sujet. Il références algorithmes + structures de données = programmes , < un href = "http://dl.acm.org/citation.cfm?id=947905" rel = "NOfollow NOREFERRER"> une note sur la récupération d'erreur dans des analyseurs de descente récursive , Récupération d'erreur efficace et confortable dans des analyseurs de descente récursive .

Voir également les pages du site Web:


5 commentaires

Intéressant - Antlr apparemment propose un générateur de source JavaScript. Cela pourrait en faire un candidat plus raisonnable pour une refonte de feuille propre de l'analyseur existant. Merci pour les liens de récupération des erreurs - ils me donnent une idée de ce qui est pris en charge pour les options de récupération autres que l'insertion et la suppression de symboles simples.


@MarkBessey Je ne sais pas si la cible JavaScript est maintenue. J'ai posté une question de statut au forum ANTLR pour vous. Vous pouvez le vérifier à antlr. markmail.org/search/... sans la sigrir. :)


@MarkBessey Le dernier message de l'auteur de l'objectif JavaScript est ici ici Antlr.markmail.org/Search/... . Notez que c'était seulement Alpha alors et l'auteur n'a pas été sur le forum depuis.


Eh bien, le pire des cas, c'est toujours une source potentielle d'idées.


@MarkBessey pendant que vous prenez la bonne décision d'éviter la version JavaScript actuelle pour ANTLR Considérez ceci: le code est open source et une licence BSD. Vous êtes plus que bienvenu pour prendre la cible JavaScript existante, qui est alpha et le faire fonctionner. Je ne peux pas m'empêcher de faire la conversion, mais le forum ANTLR vous donnera ce qui vous aide. Quelqu'un cherche maintenant à faire une version rubis d'Antlr à partir de zéro. Vous pouvez le suivre sur le forum ANTLR.