Views provided by UsageCounts
handle: 1822/68618
Les concepteurs linguistiques doivent généralement mettre en œuvre des analyseurs et des imprimantes. Bien qu'il s'agisse de deux programmes étroitement liés, dans la pratique, ils sont souvent conçus séparément, puis doivent être révisés et maintenus cohérents à mesure que le langage évolue. Il sera plus pratique si l'analyseur et l'imprimante peuvent être unifiés et développés dans un seul programme, avec leur cohérence garantie automatiquement. En outre, dans certains scénarios (comme montrer les résultats d'optimisation du compilateur au programmeur), il est souhaitable d'avoir une imprimante réfléchissante plus puissante qui, lorsqu'un arbre de syntaxe abstrait correspondant à un morceau de texte de programme est modifié, peut propager la modification du texte du programme tout en préservant les mises en page, les commentaires et le sucre syntaxique. Pour répondre à ces besoins, nous proposons un langage spécifique au domaine BiYacc, dont les programmes désignent à la fois un analyseur et une imprimante réfléchissante pour une grammaire sans contexte entièrement désambiguë. BiYacc est basé sur la théorie des transformations bidirectionnelles, qui permet de garantir par construction que les paires générées d'analyseurs et d'imprimantes réfléchissantes sont cohérentes. La gestion de l'ambiguïté grammaticale est particulièrement difficile : nous proposons une approche basée sur des filtres d'analyse et de désambiguïsation généralisés, qui produisent tous les résultats d'analyse et (tentent de) sélectionner le seul correct dans le sens de l'analyse ; les filtres sont soigneusement bidirectionnels afin qu'ils fonctionnent également dans le sens de l'impression et ne rompent pas la cohérence entre les analyseurs et les imprimantes réfléchissantes. Nous montrons que BiYacc est capable de faciliter de nombreuses tâches telles que le « resugaring » de Pombrio et Krishnamurthi, le refactoring simple et l'évolution du langage.
Los diseñadores de lenguaje generalmente necesitan implementar analizadores e impresoras. A pesar de ser dos programas estrechamente relacionados, en la práctica a menudo se diseñan por separado y luego deben revisarse y mantenerse consistentes a medida que el lenguaje evoluciona. Será más conveniente si el analizador y la impresora se pueden unificar y desarrollar en un solo programa, con su consistencia garantizada automáticamente. Además, en ciertos escenarios (como mostrar los resultados de optimización del compilador al programador), es deseable tener una impresora reflectante más potente que, cuando se modifica un árbol de sintaxis abstracta correspondiente a un fragmento de texto del programa, pueda propagar la modificación al texto del programa conservando los diseños, los comentarios y el azúcar sintáctico. Para abordar estas necesidades, proponemos un lenguaje específico de dominio BiYacc, cuyos programas denotan tanto un analizador como una impresora reflectante para una gramática libre de contexto totalmente desambiguada. BiYacc se basa en la teoría de las transformaciones bidireccionales, que ayuda a garantizar mediante la construcción que los pares generados de analizadores e impresoras reflectantes son consistentes. El manejo de la ambigüedad gramatical es particularmente desafiante: proponemos un enfoque basado en filtros de análisis y desambiguación generalizados, que producen todos los resultados del análisis e (intentan) seleccionar el único correcto en la dirección del análisis; los filtros se bidireccionalizan cuidadosamente para que también funcionen en la dirección de impresión y no rompan la consistencia entre los analizadores y las impresoras reflectantes. Mostramos que BiYacc es capaz de facilitar muchas tareas como el 'resugaring' de Pombrio y Krishnamurthi, la simple refactorización y la evolución del lenguaje.
Language designers usually need to implement parsers and printers. Despite being two closely related programs, in practice they are often designed separately, and then need to be revised and kept consistent as the language evolves. It will be more convenient if the parser and printer can be unified and developed in a single program, with their consistency guaranteed automatically. Furthermore, in certain scenarios (like showing compiler optimisation results to the programmer), it is desirable to have a more powerful reflective printer that, when an abstract syntax tree corresponding to a piece of program text is modified, can propagate the modification to the program text while preserving layouts, comments, and syntactic sugar. To address these needs, we propose a domain-specific language BiYacc, whose programs denote both a parser and a reflective printer for a fully disambiguated context-free grammar. BiYacc is based on the theory of bidirectional transformations, which helps to guarantee by construction that the generated pairs of parsers and reflective printers are consistent. Handling grammatical ambiguity is particularly challenging: we propose an approach based on generalised parsing and disambiguation filters, which produce all the parse results and (try to) select the only correct one in the parsing direction; the filters are carefully bidirectionalised so that they also work in the printing direction and do not break the consistency between the parsers and reflective printers. We show that BiYacc is capable of facilitating many tasks such as Pombrio and Krishnamurthi's 'resugaring', simple refactoring, and language evolution.
عادة ما يحتاج مصممو اللغات إلى تنفيذ المحللون والطابعات. على الرغم من كونهما برنامجين مرتبطين ارتباطًا وثيقًا، إلا أنهما غالبًا ما يتم تصميمهما بشكل منفصل، ومن ثم يجب مراجعتهما والحفاظ عليهما متسقين مع تطور اللغة. سيكون الأمر أكثر ملاءمة إذا كان من الممكن توحيد المحلل والطابعة وتطويرهما في برنامج واحد، مع ضمان اتساقهما تلقائيًا. علاوة على ذلك، في بعض السيناريوهات (مثل عرض نتائج تحسين المترجم على المبرمج)، من المستحسن أن يكون لديك طابعة عاكسة أكثر قوة، عندما يتم تعديل شجرة بناء الجملة المجردة المقابلة لجزء من نص البرنامج، يمكنها نشر التعديل على نص البرنامج مع الحفاظ على التخطيطات والتعليقات والسكر النحوي. لتلبية هذه الاحتياجات، نقترح لغة BiYacc الخاصة بالمجال، والتي تشير برامجها إلى كل من المحلل والطابعة العاكسة لقواعد خالية من السياق. يعتمد BiYacc على نظرية التحولات ثنائية الاتجاه، والتي تساعد على ضمان اتساق الأزواج المتولدة من المحللون والطابعات العاكسة من خلال البناء. يعد التعامل مع الغموض النحوي أمرًا صعبًا بشكل خاص: نقترح نهجًا يعتمد على مرشحات التحليل وإزالة الغموض المعممة، والتي تنتج جميع نتائج التحليل و (تحاول) تحديد النتيجة الصحيحة الوحيدة في اتجاه التحليل ؛ يتم تنظيم المرشحات بعناية في اتجاهين بحيث تعمل أيضًا في اتجاه الطباعة ولا تكسر الاتساق بين المحللات والطابعات العاكسة. نظهر أن BiYacc قادر على تسهيل العديد من المهام مثل "إعادة التوطين" لبومبريو وكريشنامورثي، وإعادة الهيكلة البسيطة، وتطور اللغة.
FOS: Computer and information sciences, Programmer, Artificial intelligence, Refactoring, Compiler, LR parser, Memoization, Parsing expression grammar, Bidirectional transformations, L-attributed grammar, Parser combinator, Subcategorization, Abstract syntax tree, Syntax, Context-free grammar, Model-Driven Engineering in Software Development, Parsing, Asymmetric lenses, Grammar, Automated Software Testing Techniques, Natural language processing, Reflective printing, Linguistics, Computer science, Rule-based machine translation, Programming language, FOS: Philosophy, ethics and religion, Philosophy, Top-down parsing, Verb, Disambiguation filters, Computer Science, Physical Sciences, FOS: Languages and literature, Domain-specific languages, Software, Consistency (knowledge bases), Empirical Studies in Software Engineering, Information Systems
FOS: Computer and information sciences, Programmer, Artificial intelligence, Refactoring, Compiler, LR parser, Memoization, Parsing expression grammar, Bidirectional transformations, L-attributed grammar, Parser combinator, Subcategorization, Abstract syntax tree, Syntax, Context-free grammar, Model-Driven Engineering in Software Development, Parsing, Asymmetric lenses, Grammar, Automated Software Testing Techniques, Natural language processing, Reflective printing, Linguistics, Computer science, Rule-based machine translation, Programming language, FOS: Philosophy, ethics and religion, Philosophy, Top-down parsing, Verb, Disambiguation filters, Computer Science, Physical Sciences, FOS: Languages and literature, Domain-specific languages, Software, Consistency (knowledge bases), Empirical Studies in Software Engineering, Information Systems
| selected citations These citations are derived from selected sources. This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | 7 | |
| popularity This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network. | Top 10% | |
| influence This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | Average | |
| impulse This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network. | Average |
| views | 1 |

Views provided by UsageCounts