9,090 research outputs found

    Open Programming Language Interpreters

    Get PDF
    Context: This paper presents the concept of open programming language interpreters and the implementation of a framework-level metaobject protocol (MOP) to support them. Inquiry: We address the problem of dynamic interpreter adaptation to tailor the interpreter's behavior on the task to be solved and to introduce new features to fulfill unforeseen requirements. Many languages provide a MOP that to some degree supports reflection. However, MOPs are typically language-specific, their reflective functionality is often restricted, and the adaptation and application logic are often mixed which hardens the understanding and maintenance of the source code. Our system overcomes these limitations. Approach: We designed and implemented a system to support open programming language interpreters. The prototype implementation is integrated in the Neverlang framework. The system exposes the structure, behavior and the runtime state of any Neverlang-based interpreter with the ability to modify it. Knowledge: Our system provides a complete control over interpreter's structure, behavior and its runtime state. The approach is applicable to every Neverlang-based interpreter. Adaptation code can potentially be reused across different language implementations. Grounding: Having a prototype implementation we focused on feasibility evaluation. The paper shows that our approach well addresses problems commonly found in the research literature. We have a demonstrative video and examples that illustrate our approach on dynamic software adaptation, aspect-oriented programming, debugging and context-aware interpreters. Importance: To our knowledge, our paper presents the first reflective approach targeting a general framework for language development. Our system provides full reflective support for free to any Neverlang-based interpreter. We are not aware of any prior application of open implementations to programming language interpreters in the sense defined in this paper. Rather than substituting other approaches, we believe our system can be used as a complementary technique in situations where other approaches present serious limitations

    BSML: A Binding Schema Markup Language for Data Interchange in Problem Solving Environments (PSEs)

    Full text link
    We describe a binding schema markup language (BSML) for describing data interchange between scientific codes. Such a facility is an important constituent of scientific problem solving environments (PSEs). BSML is designed to integrate with a PSE or application composition system that views model specification and execution as a problem of managing semistructured data. The data interchange problem is addressed by three techniques for processing semistructured data: validation, binding, and conversion. We present BSML and describe its application to a PSE for wireless communications system design

    Learning morphological phenomena of Modern Greek an exploratory approach

    Get PDF
    This paper presents a computational model for the description of concatenative morphological phenomena of modern Greek (such as inflection, derivation and compounding) to allow learners, trainers and developers to explore linguistic processes through their own constructions in an interactive open‐ended multimedia environment. The proposed model introduces a new language metaphor, the ‘puzzle‐metaphor’ (similar to the existing ‘turtle‐metaphor’ for concepts from mathematics and physics), based on a visualized unification‐like mechanism for pattern matching. The computational implementation of the model can be used for creating environments for learning through design and learning by teaching

    Methods and masters: multilingual teaching in 16th-century Louvain

    Get PDF
    En el siglo XVI se hablaban y se practicaban varias lenguas en Flandes, especialmente en la ciudad universitaria de Lovaina y en Amberes, centro económico de los Países Bajos españoles. El multilingüismo que se practicaba era por un lado un multilingüismo ‘vertical’, implicando el estudio de las tres lenguas ‘sagradas’ (hebreo, griego, latín); este tipo de estudio se concretizó con la fundación del Collegium Trilingue de Lovaina (1517). Por otro lado, estaba muy difundido un multilingüismo ‘horizontal’, que implicaba las lenguas vernáculas, como el español, el francés y el italiano; este tipo de multilingüismo se explica por el ascenso de la clase comerciante. La presente contribución analiza la documentación disponible (sobre los maestros de lengua y los instrumentos didácticos) y rastrea los factores contextuales que influían en la enseñanza y el aprendizaje de lenguas extranjeras en Flandes, con particular atención a Lovaina.In 16th-century Flanders, various languages were spoken and practiced, especially in the university town of Louvain and the city of Antwerp, the economic heart of the Southern Low Countries. On the one hand, the multilingualism to be observed there was a ‘vertical’ one: it concerned the study of the three ‘sacred’ languages (Hebrew, Greek, and Latin), and is typically exemplified by the creation of the Collegium Trilingue in Louvain (1517). On the other hand, there was a widespread ‘horizontal’ multilingualism, involving the vernaculars (e.g., French, Italian, Spanish) and serving the needs of the ascending merchant class. The present paper surveys the extant documentation (language masters, didactic tools), and investigates the contextual factors underlying the teaching and learning of foreign languages in Flanders, with a focus on Louvain

    DrAST - An attribute debugger for JastAdd

    Get PDF
    Here we present a solution for debugging compilers that use abstract-syntax trees as their internal structure. The solution focuses on capturing one specific state of the compilation process, and should not be confused with the more known step-by-step debugging. The goal is to visualize the current state of the abstract-syntax tree and present its data to the user in an intuitive and interactive way. We believe that deeper understanding of an abstract-syntax tree, and bugs in its structure, can be achieved by visualization of the tree. Few such debuggers exist today however, but with this master thesis we aim to fill this gap. The main feature of the developed tool DrAST is the ability to visualize the abstract-syntax tree. It is also possible to filter the tree, so that only nodes of interest are visualized, while the rest are gathered in what we call clusters. Further, DrAST can display attributes, draw references between nodes, calculate parameterized attributes and is built for further extension. DrAST mainly debugs compilers created in the attribute-grammar-based system JastAdd. By the use of Java reflection and annotations from the JastAdd system, the debugger is able to extract the abstract-syntax tree from a compiler without knowing the specific grammar. In short, DrAST provides a new solution in compiler debugging which can be of use for both students and professionals
    corecore