69 research outputs found
A parser generator system to handle complete syntax
To define a language completely, it is necessary to define both its syntax and semantics. If these definitions are in a suitable form, the parser and code-generator of a compiler, respectively, can be generated from them. This thesis addresses the problem of syntax definition and automatic parser generation
Automatic error recovery for LR parsers in theory and practice
This thesis argues the need for good syntax error handling schemes in language
translation systems such as compilers, and for the automatic incorporation of such schemes
into parser-generators. Syntax errors are studied in a theoretical framework and practical
methods for handling syntax errors are presented.
The theoretical framework consists of a model for syntax errors based on the concept of
a minimum prefix-defined error correction,a sentence obtainable from an erroneous string by
performing edit operations at prefix-defined (parser defined) errors. It is shown that for an
arbitrary context-free language, it is undecidable whether a better than arbitrary choice of edit
operations can be made at a prefix-defined error. For common programming languages,it is
shown that minimum-distance errors and prefix-defined errors do not necessarily coincide,
and that there exists an infinite number of programs that differ in a single symbol only; sets
of equivalent insertions are exhibited.
Two methods for syntax error recovery are, presented. The methods are language
independent and suitable for automatic generation. The first method consists of two stages,
local repair followed if necessary by phrase-level repair. The second method consists of a
single stage in which a locally minimum-distance repair is computed. Both methods are
developed for use in the practical LR parser-generator yacc, requiring no additional
specifications from the user. A scheme for the automatic generation of diagnostic messages
in terms of the source input is presented. Performance of the methods in practice is evaluated
using a formal method based on minimum-distance and prefix-defined error correction. The
methods compare favourably with existing methods for error recovery
Implementace parseru pro soubory s RDF daty
Import 03/11/2016This thesis focuses on implementation of parser for RDF data in Turtle and N-Triples formats. The resulting implementation is push (event) parser with lexer and parser created by two sepa- rate tools: Ragel and Lemon respectively. It also deals with correct support of UTF-8 encoding as well as uses Clang compiler features.Tato práce se zabýva implementaci RDF parseru pro formáty Turtle a N-Triples. Výsledkem práce je implementace push (event) parseru, kde lexer a parser jsou vytvořeny dvěmi nástroji: Ragel a Lemon. Zároveň se věnuje podpoře UTF-8 a využívá možnosti clang compileru.460 - Katedra informatikyvýborn
Theory and practice in the construction of efficient interpreters
Various characteristics of a programming language, or of the hardware on which it is to be
implemented, may make interpretation a more attractive implementation technique than compilation
into machine instructions. Many interpretive techniques can be employed; this thesis is mainly
concerned with an efficient and flexible technique using a form of interpretive code known as
indirect threaded code (ITC). An extended example of its use is given by the Setl-s implementation
of Setl, a programming language based on mathematical set theory. The ITC format, in which pointers
to system routines are embedded in the code, is described and its extension to cope with
polymorphic operators. The operand formats and some of the system routines are described in detail
to illustrate the effect of the language design on the interpreter.
Setl must be compiled into indirect threaded code and its elaborate syntax demands the use of a
sophisticated parser. In Setl-s an LR(1) parser is implemented as a data structure which is
interpreted in a way resembling that in which ITC is interpreted at runtime. Qualitative and
quantitative aspects of the compiler, interpreter and system as a whole are discussed.
The semantics of a language can be defined mathematically using denotational semantics. By setting
up a suitable domain structure, it is possible to devise a semantic definition which embodies the
essential features of ITC. This definition can be related, on the one hand to the standard
semantics of the language, and on the other to its implementation as an ITC-based interpreter. This
is done for a simple language known as X10. Finally, an indication is given of how this approach
could be extended to describe Setl-s, and of the insight gained from such a description. Some
possible applications of the theoretical analysis in the building of ITC-based interpreters are
suggested
Parsing for agile modeling
Agile modeling refers to a set of methods that allow for a quick initial development of an importer and its further refinement. These requirements are not met simultaneously by the current parsing technology. Problems with parsing became a bottleneck in our research of agile modeling.
In this thesis we introduce a novel approach to specify and build parsers. Our approach allows for expressive, tolerant and composable parsers without sacrificing performance. The approach is based on a context-sensitive extension of parsing expression grammars that allows a grammar engineer to specify complex language restrictions. To insure high parsing performance we automatically analyze a grammar definition and choose different parsing strategies for different parts of the grammar.
We show that context-sensitive parsing expression grammars allow for highly composable, tolerant and variable-grained parsers that can be easily refined. Different parsing strategies significantly insure high-performance of parsers without sacrificing expressiveness of the underlying grammars
Recommended from our members
Rapid software prototyping
Rapid Prototyping is an approach to software development which emphasizes quick implementation of a working program. This dissertation makes two principal contributions. First, it provides concepts, techniques, and a philosophy of Rapid Software Prototyping and characterizes the benefits and limitations of its use. Second, it makes a contribution to programming environments which support Rapid Prototyping. An experimental language, Castor, is described which was implemented to validate this approach in the prototyping of Ada programs*. The following summarize the main results of this research:..
- …