562 research outputs found
The Use of Translator Implementation Methods for Writing Nonprocedural Interfaces to Application Software Systems
One of the results of advances in computer hardware technology is a wider use of computers in almost all areas of society. There is a need to make it possible for many people to use application software systems that are produced for different areas. For people without data processing backgrounds it would seem wise to use a nonprocedural interface to these systems. The implementation of a nonprocedural interface as a part of an application software system can be facilitated using aspects of the theory and practice of the translator construction for programming languages.
The purpose of this paper is to introduce programmers who lack theoretical background and/or practical experience in the area of translator design and implementation to the relevant aspects of its theory and practice
Comparing generators for language-based tools
The first step in any language development project is the Compiler Generator choice. Nowadays there are many offers, based on
translation grammars, attribute grammars or other language specification formalisms. To make up a decision, more factors than just the tool user-friendliness and the processor’s quality should be taken into account.
To aid the language developer, we analyze in this paper three Compiler Generators. The traditional and well known YACC, and two more recent ones, LISA and AnTLR-3. The first produces a Syntax-Directed Translator,
while the others generate a Semantic-Directed Translator based on attribute evaluation. Moreover both the AG-based generators also
produce other Language-based Tools that are mentioned and compared.FC
Generating flex lexical scanners for perl parse:: Yapp
Perl is known for its versatile regular expressions. Nevertheless, using Perl regular expressions for creating fast lexical analyzer is not easy. As an alternative, the authors defend the automated generation of the lexical analyzer in a well known fast application (flex) based on a simple Perl definition in the syntactic analyzer. In this paper we extend the syntax used by Parse::Yapp, one of the most used parser generators for Perl, making the automatic generation of flex lexical scanners possible. We explain how this is performed and conclude with some benchmarks that show the relevance of the approach
Parsing Fortran-77 with proprietary extensions
Far from the latest innovations in software development, many organizations
still rely on old code written in "obsolete" programming languages. Because
this source code is old and proven it often contributes significantly to the
continuing success of these organizations. Yet to keep the applications
relevant and running in an evolving environment, they sometimes need to be
updated or migrated to new languages or new platforms. One difficulty of
working with these "veteran languages" is being able to parse the source code
to build a representation of it. Parsing can also allow modern software
development tools and IDEs to offer better support to these veteran languages.
We initiated a project between our group and the Framatome company to help
migrate old Fortran-77 with proprietary extensions (called Esope) into more
modern Fortran. In this paper, we explain how we parsed the Esope language with
a combination of island grammar and regular parser to build an abstract syntax
tree of the code.Comment: Accepted at ICSME'23 Industrial trac
Lily: A parser generator for LL(1) languages
This paper discusses the design and implementation of Lily, a language for generating LL(1) language parsers, originally designed by Dr. Thomas J. Sager of the University of Missouri--Rolla. A method for the automatic generation of parser tables is described which creates small, highly optimized tables, suitable for conversion to minimal perfect hash functions.
An implementation of Lily is discussed with attention to design goals, implementation of parser table generation, and table optimization techniques. Proposals are made detailing possibilities for further augmentation of the system. Examples of Lily programs are given as well as a manual for the system
Recommended from our members
GPERF : a perfect hash function generator
gperf is a widely available perfect hash function generator written in C++. It automates a common system software operation: keyword recognition. gperf translates an n element user-specified keyword list keyfile into source code containing a k element lookup table and a pair of functions, phash and in_word_set. phash uniquely maps keywords in keyfile onto the range 0 .. k - 1, where k >/= n. If k = n, then phash is considered a minimal perfect hash function. in_word_set uses phash to determine whether a particular string of characters str occurs in the keyfile, using at most one string comparison.This paper describes the user-interface, options, features, algorithm design and implementation strategies incorporated in gperf. It also presents the results from an empirical comparison between gperf-generated recognizers and other popular techniques for reserved word lookup
- …