RE: Incomplete compiler?

Quinn Tyler Jackson <>
29 Apr 2002 01:52:30 -0400

          From comp.compilers

Related articles
Incomplete compiler? (Uwe Altenburg) (2002-04-24)
RE: Incomplete compiler? (Quinn Tyler Jackson) (2002-04-29)
| List of all articles for this month |

From: Quinn Tyler Jackson <>
Newsgroups: comp.compilers
Date: 29 Apr 2002 01:52:30 -0400
Organization: Compilers Central
References: 02-04-147
Keywords: design, syntax
Posted-Date: 29 Apr 2002 01:52:30 EDT

> I would like to know, if there is a compiler (and a language) where I
> tell the compiler in the source-code how to compile the source? Let's
> say an "incomplete" or "simple" compiler that can be extended if
> needed or is this a "perpetuum mobile"?
> Thanks for comments
> Uwe
> [Look at the work done in the 1970s on extensible languages, where
> you could add BNF and semantics right in the middle of your program.
> It seemed like a cool idea but turned out to be useless. -John]

Extensible languages may not be of much use, but grammars that modify
themselves based upon the parse can be useful in NLP parsing*, and in
the case of languages such as HTML that can have tags that are
specific to certain browsers.

For instance, let us suppose that we wish to generate a proper tree
for an HTML parse, but we do not know in advance if some unknown tag
is supposed to be stand alone or balanced. If we go the traditional
route, we can accept unknown tags by having a default drop through
lexemes such as:

OPEN_TAG '<[a-zA-Z][a-zA-Z0-9]*>'
CLOSE_TAG '</[a-zA-Z][a-zA-Z0-9]*>'

The trouble with such things is that the productions that accept these
will not produce a balanced tree.

In Meta-S**, however, it is possible for the grammar to learn during
the parse whether or not an unknown tag is balanced during a predicate
pass, and then reparse the input once this information is known,
producing a more appropriate tree on the second pass. This is also
useful in NLP, as discussed in [Jackson & Langan] below.

There are other uses of adaptation, such as symbol table generation
and semantic checking without need for ad hockery or attached code.

Of course, such grammars are Type 1, and therefore, prone to the
standard caveats (any grammar that modifies itself during a parse
cannot be known to terminate in a general sense, and the grammar
developer must therefore be careful to anticipate and handle
non-termination pathologies in user-supplied input that may be


* Quinn Tyler Jackson & Christopher Michael Langan, "Adaptive Predicates in
Empty-Start Natural Language Parsing," Noesis-E, Vol. 1 No. 6, Nov. 2001.

** DISCLAIMER: I am the author of Meta-S, a commercial adaptive grammar
development environment:

My opinions are therefore biased.
Quinn Tyler Jackson

Post a followup to this message

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