Related articles |
---|
Semantic actions in Yacc ? frazerw@dseg.ti.com (1995-03-02) |
Re: Semantic actions in Yacc ? c1veeru@WATSON.IBM.COM (Virendra K. Mehta) (1995-03-03) |
Re: Semantic actions in Yacc ? parrt@parr-research.com (Terence John Parr) (1995-03-04) |
Re: Semantic actions in Yacc ? C.A.Elliott@dcs.warwick.ac.uk (1995-03-06) |
Re: Semantic actions in Yacc ? clark@quarry.zk3.dec.com (1995-03-06) |
Re: Semantic actions in Yacc ? caibmnfx@ibmmail.com (Parag V. Tijare) (1995-03-08) |
Newsgroups: | comp.compilers |
From: | C.A.Elliott@dcs.warwick.ac.uk (Charles Elliott) |
Keywords: | yacc |
Organization: | Department of Computer Science, Warwick University, England |
References: | 95-03-023 |
Date: | Mon, 6 Mar 1995 13:43:53 GMT |
frazerw@dseg.ti.com writes:
>I want to add semantic actions to a Yacc parser. The way I'd considered
>of doing this is to add actions before and after each nonterminal in
>digit : {} ZERO_TOK {}
> | {} ONE_TOK {}
> ;
I'll just leave this one example. The problem that occurs is due to the
way that Bison actually creates this rule. A seperate nonterminal is created
for the first semantic action in the rule. Now before it has read any input,
(but a digit is expected), Bison has to execute a semantic action, as it is
placed before the rule. However, either one of these is possible, and a
reduce/reduce conflict is created.
To avoid this
1) Don't put semantic actions before rules -- BEST METHOD
2) Do something like this
digit : { semantic action } digit2
digit2 : ZERO_TOK { }
| ONE_TOK { }
but of course this only works if the initial semantic action is the same.
Cheers,
Charles
---
cae@dcs.warwick.ac.uk
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.