2010-11-08 21 views
3

Une fois, j'ai mis en œuvre un générateur d'analyseur SLR qui génère des analyseurs incrémentaux. L'analyseur peut analyser un morceau de texte du début à la fin, mais lorsque vous supprimez ou insérez du texte, il effectue une quantité minimale de travail et un minimum de modifications dans le flux de jetons et l'arborescence de syntaxe. Le problème est que je n'ai pas pu trouver quelque chose à ce sujet? L'analyseur fait un peu plus de travail qu'un analyseur normal. Y a-t-il un usage d'une telle chose? PS. Si vous voulez savoir comment, google 'bases de compilateur conception diku', c'est un livre gratuit, alors tout ce que je devais faire était de modifier l'algorithme un peu de sorte qu'il stocke l'état de l'analyseur partout, ce qui est le travail supplémentaire J'ai mentionné ci-dessus.À quoi sert un générateur d'analyseur SLR incrémentiel?

+1

Syntaxe de vérification en édition ors? –

+0

"savoir, google, c'est un livre gratuit" Cette phrase n'a aucun sens. Google pour un livre sur l'analyse SLR? –

+0

Oups, ce que j'ai dit était google "bases de conception de compilateur diku" mais au lieu de '"' j'ai utilisé les symboles, uhm '<' and '>' et je pense qu'ils vont probablement disparaître à nouveau –

Répondre

3

La réponse évidente est le support d'un éditeur structuré, dans lequel ce que l'éditeur détient est l'AST plutôt que le texte. Cela permet à l'éditeur de suggérer comment continuer à éditer quand seulement une entrée partielle est fournie (par exemple, après le mot clé "while", l'éditeur sait que "(" est nécessaire et peut le suggérer, il peut mettre un "if" complet juste après que le mot-clé est fourni, il peut se plaindre que la syntaxe entrée est incorrecte lorsque vous tapez, etc.)

De nombreux éditeurs de ce type ont été créés, la plupart d'entre eux ayant échoué, les gens semblent aimer/détester les éditeurs qui le font. ce

le projet actuel le plus avancé, je sais que ce n'est le projet Harmonia à Berkeley Ils utilisent la version grand-frère de votre analyseur supplémentaire:... un analyseur GLR incrémentale