Home

Basic Concepts

Compiler Generators

Virtual Machines

Links

Home

ANTLR

ANTLR, ANother Tool for Language Recognition, (formerly PCCTS) is a language tool that provides a framework for constructing recognizers, compilers, and translators from grammatical descriptions containing Java, C#, C++, or Python actions. ANTLR provides support for tree construction, tree walking, and translation.

Manual

Examples (Lavanda.w Lavanda.pdf)

Original Page

 


CoCo/R

Coco/R is a compiler generator, that takes an attribute grammar of a source language and generates a scanner, parser and a semantic evaluator for this language. The scanner works as a deterministic finite automaton. The parser is recursive descent. LL(1) conflicts can be resolved by a multi-symbol lookahead or by semantic checks.

Inherited and synthesized attributes are allowed; however evaluation is done in a top-down, left to right, tree traversal, during parsing.

Thus the class of accepted grammars is LL(k) for an arbitrary k.

There are versions of Coco/R for Java, C#, C++, Delphi, Modula-2, Oberon and other languages.

Manual

Examples (Lavanda.w Lavanda.pdf)

Original Page

 


Lex/Yacc

Lex - A Lexical Analyzer Generator

Lex helps write programs whose control flow is directed by instances of regular expressions in the input stream.

It is well suited for editor-script type transformations and for segmenting input in preparation for a parsing routine. Lex source is a table of regular expressions and corresponding program fragments. The table is translated to a program which reads an input stream, copying it to an output stream and partitioning the input into strings which match the given expressions. As each such string is recognized the corresponding program fragment is executed. The recognition of the expressions is performed by a deterministic finite automaton generated by Lex. The program fragments written by the user are executed in the order in which the corresponding regular expressions occur in the input stream.

Manual

Original Page

 

Yacc: Yet Another Compiler-Compiler 

Computer program input generally has some structure; in fact, every computer program that does input can be thought of as defining an ``input language'' which it accepts.

An input language may be as complex as a programming language, or as simple as a sequence of numbers. Unfortunately, usual input facilities are limited, difficult to use, and often are lax about checking their inputs for validity.

Yacc provides a general tool for describing the input to a computer program. The Yacc user specifies the structures of his input, together with code to be invoked as each such structure is recognized. Yacc turns such a specification into a subroutine that han- dles the input process; frequently, it is convenient and appropriate to have most of the flow of control in the user's application handled by this subroutine.

Manual

Original Page

 

Examples (Lavanda.w Lavanda.pdf)


LISA

LISA is a set of related tools such as scanner generator, parser generator, a semantic evaluator,  graphic tools, editor and conversion tools, which are integrated by well designed interfaces.

Therefore, it has the advantages of a single system and federated environment. LISA and the generated processors are written in Java which enables high portability to different platforms.

User friendly multiwindow interface enable us to write formal language description in a quick and simple manner. 

Manual

Examples (Lavanda.w Lavanda.pdf)

Original Page

 


LRC

LRC is a generator for graphical, easy to use, language-oriented tools. LRC accepts as input a Higher Order Attribute Grammar specifying a particular language and generates incremental attribute evaluators. LRC generates tools that have advanced interactive interfaces and these interfaces are specified within the AG formalism.

Manual

Examples (Lavanda.w Lavanda.pdf)

Original Page

 

Go up
ANTLR
CoCo/R
Lex/Yacc
LISA
LRC

All rights reserved.

{danieladacruz,prh}@di.uminho.pt

Departamento de Informática - Universidade do Minho