REFINE (Russell Brand)
Tue, 1 Mar 1994 19:27:28 GMT

          From comp.compilers

Related articles
REFINE (1994-03-01)
| List of all articles for this month |

Newsgroups: comp.compilers
From: (Russell Brand)
Summary: Software Refinery language system and University Licensing
Keywords: tools
Organization: Reasoning Systems
Date: Tue, 1 Mar 1994 19:27:28 GMT

Lun Ye writes:

> somebody told me there is a compiler compiler REFINE (or some sort) that
> is extremely powerful (you can write a compiler for a large language using
> it in two days). is this really true? is there such a tool available in
> public domain? what $$ and OS for commercial? info on this is greatly
> appreciated.

I am president of Reasoning Systems, the company that develops and markets
REFINE and related products. REFINE is part of a larger product named
Software Refinery that is a toolkit for rapid development of software
processing tools -- tools that take source code as input, produce source
code as output or both. Our products run on Unix workstations (currently
Sun, HP, and IBM). Example tools built using Software Refinery include
compilers, test case generators, program synthesizers, language
translators, and reverse engineering tools. Although I would not claim
that you can write a compiler for a large language in two days, Software
Refinery is the fastest way I know of to build these kind of tools.

Software Refinery is used at hundreds of sites worldwide, mostly within
software tools groups at large companies but also at many universities and
research centers. Reasoning Systems has a UNIVERSITY LICENSING program
for Software Refinery with very deep discounts. Contact Maria Pryce at for information on university licensing.

The technical approach in Software Refinery is to store source code as
annotated abstract syntax trees (ASTs) in a persistent object-oriented
database, and to use a high-level language (called REFINE) that allows you
to write terse specifications of algorithms that analyze and transform the
AST representation of the code. The REFINE language is compiled into
Common Lisp, and the development environment has the same advantages as a
Common Lisp environment -- dynamic linking, good debugging tools, fast
edit-compile-debug loop etc.

The main features of Software Refinery are:

    * persistent object-oriented database used to store ASTs and
        related information (e.g., test cases, control-flow graphs).

    * LALR(1) parser/printer generator with high-level grammar language (DIALECT)
        - regular-right-part productions, good compile- and parse-time diagnostics
        - builds ASTs automatically (no need to write semantics for productions)
        - parsers can retain info on comments, formatting etc.

    * REFINE language (high-level, wide-spectrum specification language)
        - set-theoretic data types (sets, mappings, sequences)
        - first-order logic operations (for all, there exists)
        - syntax-directed pattern matching
        - object-oriented data modeling
        - strong typing and type inference (you can leave out type declarations)
        - a declarative transformation operator (you specify pre- and

    * X Window based GUI Toolkit (INTERVISTA)
        - window types: diagrams, hypertext, tables, outlines, dialog boxes,
menus, text editors ...
        - graph layout
        - hyperlinking between windows

    * Interactive development environment
        - dynamic linking
        - unit-level incremental compilation
        - fast edit-compile-debug loop
        - can restart within debugger
        - Emacs interface to compiler
        - profiling and metering tools

Reasoning Systems also sells REFINE Language Tools, a family of
interactive language analyzers for C, FORTRAN, COBOL, and Ada. These
products are built with Software Refinery. These tools analyze code and
produce interactive graphical reports such as call graphs, control-flow
graphs, cross-reference reports and reports on where the code violates
coding standards. These tools can be extended and customized using
Software Refinery. Each tool has a Mac-like graphical interface and also
a documented API (including the internal representation of source code) so
you can add new commands, windows, and analysis techniques, or customize
the tool to handle a variant dialects of the language.

Please contact us if you would like more information:


Gordon Kotik email:
Reasoning Systems, Inc. phone: (415) 494-6201
3260 Hillview Avenue fax: (415) 494-8053
Palo Alto, CA 94304

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.