2

En cours de développement d'un nouveau langage. Comment peuvent être liés les concepts de "haut niveau" tels que "LALR parser", "arbre de syntaxe abstraite", "grammaires contextuelles", etc. avec d'autres concepts de "bas niveau" comme les règles de grammaire "A -> B" . Je veux dire comme une sorte de relation métalangue, ou similaire. Des idées ou des suggestions pour regarder plus d'informations sur ce sujet? N'hésitez pas à reformuler ma question pour obtenir plus de clarté.Méta-relations sur la programmation orientée langage

Toute aide sera grandement appréciée.

+1

Je ne suis pas sûr de comprendre, vous recherchez la connexion entre vos productions de grammaire et des trucs comme des parseurs? C'est très large, pouvez-vous préciser votre question? Par exemple, comment les parsers LALR fonctionnent en général, etc. Je peux recommander ce livre en passant http://en.wikipedia.org/wiki/Dragon_Book_(computer_science) C'est très bien, et facile à suivre. Peut-être que vous avez déjà quelque chose de similaire? – Skurmedel

+0

La question est plutôt obscure, peut-être quelques exemples fournissent une certaine clarté. Comme les relations dont je parle le genre de relation comme (dans le contexte de la POO): - analyseur LALR "hérite" de "abstrait" Parser - MyParser "outils" analyseur LALR - MyParser "reconnaît" MyGrammar - MyGrammar "est composé" par un ensemble de règles qui "décrit" ma langue d'affaires. Est-il sensé d'essayer de lier ces concepts de mon entreprise avec les éléments qui le décrivent comme un langage spécifique à un domaine? Merci beaucoup pour votre temps et pour le livre référencé. – amorales

Répondre

2

Habituellement, ces entités (règles de grammaire, analyseurs, ASTs) ont des relations conceptuelles telles qu'elles sont capturées par des livres tels que le livre du compilateur Dragon (déjà mentionné dans un commentaire). Je ne pense pas que ces relations soient très intéressantes quand il s'agit de concevoir une nouvelle langue; la syntaxe du langage (souvent exprimée sous la forme ) est une grammaire "contextuelle" avec des contraintes supplémentaires, et la sémantique de la langue (généralement exprimée comme un très grand document de référence, parfois exprimée dans une notation formelle telle comme denotational semantics qui peut interpréter un arbre d'analyse abstraite produit par magie

Les relations «réelles» se produisent lorsque vous avez des machines qui les relie: Si je donne la grammaire A au générateur d'analyseur B, et que j'utilise le résultat pour traiter le code source S , Je peux obtenir AST T. A ce niveau, vous ne concevez pas votre langage autant que vous l'avez implémenté Ce que vous voulez ici est un ensemble intégré d'outils pour le traitement de votre définition de langue: idéalement, il acceptera votre grammaire et nota sémantique directement. Il n'y a pas d'outils pratiques qui font les deux idéalement que je connais, donc vous devez choisir parmi ceux qui existent.

Deux outils pouvant être utilisés à des degrés d'efficacité différents sont ANTLR et DMS Software Reengineering Toolkit. DMS fournit au moins une façon de définir la sémantique, en fournissant des moyens pour écrire des lois «algébriques» d'équivalence entre les formes de langage. Essentiellement, vous pouvez dire cette forme de langage équivaut à cette forme langauge en écrivant motif1 = pattern2 comme vous le faites avec l'algèbre. Vous pouvez voir comment cela est fait using algebra as an example.

+0

Un outil sur lequel j'ai travaillé fait quelque chose de similaire: http: //metasharp.codeplex.com –

+0

Bonjour, merci beaucoup pour votre réponse détaillée. J'ai examiné en détail les liens que vous m'avez envoyés et j'ai clarifié quelques doutes. Je pense que vous avez atteint la cible au deuxième paragraphe. Mais si le contexte était la réutilisation des langages développés, disons pour des domaines similaires, pensez-vous que ce serait utile un tel outil? – amorales

+0

Hé, http://metasharp.codeplex.com/ a aussi fière allure! Merci pour les liens. – amorales

Questions connexes