Re: "Bootstrapping yacc in yacc" -> "Bootstrapping yacc in lex"!

Kaz Kylheku <>
Mon, 15 Mar 2021 02:37:16 -0000 (UTC)

          From comp.compilers

Related articles
"Bootstrapping yacc in yacc" -> "Bootstrapping yacc in lex"! (Rock Brentwood) (2021-03-14)
Re: "Bootstrapping yacc in yacc" -> "Bootstrapping yacc in lex"! (Kaz Kylheku) (2021-03-15)
| List of all articles for this month |

From: Kaz Kylheku <>
Newsgroups: comp.compilers
Date: Mon, 15 Mar 2021 02:37:16 -0000 (UTC)
Organization: A noiseless patient Spider
References: 21-03-004
Injection-Info:; posting-host=""; logging-data="83188"; mail-complaints-to=""
Keywords: yacc
Posted-Date: 15 Mar 2021 11:52:38 EDT

On 2021-03-15, Rock Brentwood <> wrote:
> It's a recurrent question that's come up in other forums "can yacc be
> bootstrapped in yacc?" Now, I'm adding a twist.
> I'll repeat one of my recent replies here. In the syntax for yacc files, laid
> out by the POSIX standard, there is no mandatory semi-colon at the ends of
> rules, so an extra look-ahead is required to determine whether an identifier
> is followed by a colon. If so, then this indicates the left-hand side of a new
> rule.
> A grammar rule has the form
> left-hand-side ":" stuff on the right optional ";"'s.
> If you see a ":" in the middle of the rules on the right, then you've actually
> sneaked on over into the *next* rule.
> Bison hacks the syntax, by making left-hand-side + ":" into a single token.

You could simply allow rules of this form

    ":" right side ...

With a semantic restrction that this must be preceded by a rule that
is not terminated with a semicolon, whose last element is a symbol:

    blah ":" previous rule material ending in symbol /* no semicolon */

    ":" next rule ";"

Then we make the AST transformation of moving "symbol" to be the head
of the following rule:


    blah ":" previous rule material ending in

    symbol ":" next rule ";"

Situations where it's not a symbol, or the prior rule has ended in
a semicolon (which is thus followed by a colon) are not syntax
errors, but are diagnosed semantically.
TXR Programming Language:
Cygnal: Cygwin Native Application Library:

Post a followup to this message

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