[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Enable experimental report features?
From: |
Akim Demaille |
Subject: |
Enable experimental report features? |
Date: |
05 May 2002 14:01:37 +0200 |
User-agent: |
Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.4 (Common Lisp) |
There is an item of TODO about which I'd appreciate the input of
others. It is included below (it might help people who don't know the
gory details of LR that I explain `core item set': when there is an
item, say `$axiom -> . input $', where the current point is before a
nonterminal, then you have to add all the rhs of the rules deriving
`input' (transitivily). For sake of memory saving, bison stores (and
displays) only the core items, but when computing the automaton, it
completes the core item set with the others, which are easily deducible):
* Experimental report features
Decide whether they should be enabled, or optional. For instance, on:
input:
exp
| input exp
;
exp:
token1 "1"
| token2 "2"
| token3 "3"
;
token1: token;
token2: token;
token3: token;
the traditional Bison reports:
state 0
$axiom -> . input $ (rule 0)
token shift, and go to state 1
input go to state 2
exp go to state 3
token1 go to state 4
token2 go to state 5
token3 go to state 6
state 1
token1 -> token . (rule 6)
token2 -> token . (rule 7)
token3 -> token . (rule 8)
"2" reduce using rule 7 (token2)
"3" reduce using rule 8 (token3)
$default reduce using rule 6 (token1)
while with --trace, i.e., when enabling both the display of non-core
item sets and the display of lookaheads, Bison now displays:
state 0
$axiom -> . input $ (rule 0)
input -> . exp (rule 1)
input -> . input exp (rule 2)
exp -> . token1 "1" (rule 3)
exp -> . token2 "2" (rule 4)
exp -> . token3 "3" (rule 5)
token1 -> . token (rule 6)
token2 -> . token (rule 7)
token3 -> . token (rule 8)
token shift, and go to state 1
input go to state 2
exp go to state 3
token1 go to state 4
token2 go to state 5
token3 go to state 6
state 1
token1 -> token . ["1"] (rule 6)
token2 -> token . ["2"] (rule 7)
token3 -> token . ["3"] (rule 8)
"2" reduce using rule 7 (token2)
"3" reduce using rule 8 (token3)
$default reduce using rule 6 (token1)
so decide whether this should be an option, or always enabled. I'm in
favor of making it the default, but maybe we should tune the output to
distinguish core item sets from non core:
state 0
Core:
$axiom -> . input $ (rule 0)
Derived:
input -> . exp (rule 1)
input -> . input exp (rule 2)
exp -> . token1 "1" (rule 3)
exp -> . token2 "2" (rule 4)
exp -> . token3 "3" (rule 5)
token1 -> . token (rule 6)
token2 -> . token (rule 7)
token3 -> . token (rule 8)
token shift, and go to state 1
input go to state 2
exp go to state 3
token1 go to state 4
token2 go to state 5
token3 go to state 6
- Enable experimental report features?,
Akim Demaille <=