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? p>
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. p>
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. p>
3 Réponses :
Je ne connais pas de papiers ou de tutoriels, mais UU-PARSINGLIB < / a> est une bibliothèque d'analyse de haskell pouvant récupérer des erreurs de syntaxe de manière générale. Si, par exemple, C'est à vous de décider où l'analyseur échouera et où il procédera à des corrections, et les résultats seront livrés à côté d'un ensemble d'erreurs corrigées lors de l'analyse. Même si vous n'avez pas l'intention de mettre en œuvre votre code d'analyse à Haskell, un examen de la bibliothèque peut vous offrir une idée. Ou vous pouvez écrire un analyseur à Haskell et Appelez-le de C . P> ; code> était attendu, mais
int code> a été reçu, l'analyseur peut continuer comme si
; code> a été inséré à cette position source. p>
Va vérifier les idées, au moins. Je vais y mettre en œuvre dans JavaScript, la bibliothèque Haskell elle-même n'est donc probablement pas utile pour moi.
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. p>
Oh, excellent. Cela aborde la question de savoir comment extraire des informations certaines i> 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.
Avez-vous essayé antlr ? P>
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 . P>
Voir également les pages du site Web: p>
récupération d'erreur de syntaxe personnalisée p> li> ul>
Vérifiez également le Tag Antlr pour accéder au forum ANTLR où Terrence Parr répond aux questions. Il répond à quelques questions ici comme The Antlr Guy . P>
Aussi la nouvelle version de ANTLR 4 est due ainsi que le Réservez A >. p>
Désolé de sonner comme une hauteur de vente, mais j'utilise Antlr depuis des années, car il est utilisé par beaucoup de personnes, est utilisé dans des systèmes de production, a quelques versions solides: Java, C, C #, a une communauté très active , possède un site Web, possède des livres, évolue, maintenue, open source, une licence BSD, facile à utiliser et possède des outils d'interface graphique. P>
L'une des personnes travaillant sur un GUI A> Pour AntLR 4, la syntaxe de la syntaxe et l'achèvement automatique entre autres édition de l'IDE utile sont Sam Harwell. Si vous pouvez le rejoindre via le forum AntLR, il pourrait peut-être vous aider. p>
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.