]> git.saurik.com Git - bison.git/blame - TODO
Regen.
[bison.git] / TODO
CommitLineData
416bd7a9
MA
1-*- outline -*-
2
3c146b5e
AD
3* Header guards
4
32f0598d 5From Franc,ois: should we keep the directory part in the CPP guard?
3c146b5e
AD
6
7
c19988b7
AD
8* Yacc.c: CPP Macros
9
10Do some people use YYPURE, YYLSP_NEEDED like we do in the test suite?
11They should not: it is not documented. But if they need to, let's
12find something clean (not like YYLSP_NEEDED...).
13
14
ae7453f2
AD
15* readpipe
16
17It should be replaced to avoid tmp files and to improve portability.
18Also, as it is it does not call error () when execve fails, and
19therefore, running M4='m4 --version' bison will silently fail instead
20of:
21
22 bison: cannot run m4 --version: No such file or directory
23
24BTW: I would really like to be able to pass arguments to m4...
25
26
efea6231
AD
27* URGENT: Documenting C++ output
28Write a first documentation for C++ output.
29
bc933ef1 30
88bce5a2
AD
31* Documentation
32Before releasing, make sure the documentation refers to the current
33`output' format.
34
35
2ab9a04f
AD
36* Error messages
37Some are really funky. For instance
38
39 type clash (`%s' `%s') on default action
40
41is really weird. Revisit them all.
42
2ab9a04f
AD
43
44* read_pipe.c
45This is not portable to DOS for instance. Implement a more portable
46scheme. Sources of inspiration include GNU diff, and Free Recode.
47
bc933ef1 48
3ae2b51f
AD
49* value_components_used
50Was defined but not used: where was it coming from? It can't be to
51check if %union is used, since the user is free to $<foo>n on her
52union, doesn't she?
53
efea6231 54
d43baf71
AD
55* GLR & C++
56Currently, the GLR parser cannot compile with a C++ compiler.
57
58
2ab9a04f 59* Report
ec3bc396 60
2ab9a04f
AD
61** GLR
62How would Paul like to display the conflicted actions? In particular,
63what when two reductions are possible on a given lookahead, but one is
64part of $default. Should we make the two reductions explicit, or just
65keep $default? See the following point.
d7215705 66
2ab9a04f
AD
67** Disabled Reductions
68See `tests/conflicts.at (Defaulted Conflicted Reduction)', and decide
69what we want to do.
d7215705 70
2ab9a04f 71** Documentation
bc933ef1
AD
72Extend with error productions. The hard part will probably be finding
73the right rule so that a single state does not exhibit too many yet
74undocumented ``features''. Maybe an empty action ought to be
75presented too. Shall we try to make a single grammar with all these
76features, or should we have several very small grammars?
ec3bc396 77
2ab9a04f
AD
78** --report=conflict-path
79Provide better assistance for understanding the conflicts by providing
80a sample text exhibiting the (LALR) ambiguity. See the paper from
81DeRemer and Penello: they already provide the algorithm.
82
ec3bc396 83
948be909 84* Extensions
2ab9a04f
AD
85
86** yyerror, yysymprint interface
87It should be improved, in particular when using Bison features such as
88locations, and YYPARSE_PARAMS. For the time being, it is recommended
89to #define yyerror and yyprint to steal internal variables...
90
91** Several %unions
6cbfbcc5
AD
92I think this is a pleasant (but useless currently) feature, but in the
93future, I want a means to %include other bits of grammars, and _then_
94it will be important for the various bits to define their needs in
95%union.
76551463 96
5c0a0514
AD
97When implementing multiple-%union support, bare the following in mind:
98
99- when --yacc, this must be flagged as an error. Don't make it fatal
100 though.
101
102- The #line must now appear *inside* the definition of yystype.
103 Something like
104
105 {
106 #line 12 "foo.y"
107 int ival;
108 #line 23 "foo.y"
109 char *sval;
110 }
111
fa770c86
AD
112* Unit rules
113Maybe we could expand unit rules, i.e., transform
114
115 exp: arith | bool;
116 arith: exp '+' exp;
117 bool: exp '&' exp;
118
119into
120
121 exp: exp '+' exp | exp '&' exp;
122
123when there are no actions. This can significantly speed up some
d7215705
AD
124grammars. I can't find the papers. In particular the book `LR
125parsing: Theory and Practice' is impossible to find, but according to
126`Parsing Techniques: a Practical Guide', it includes information about
127this issue. Does anybody have it?
fa770c86 128
51dec47b 129
51dec47b 130
2ab9a04f 131* Documentation
51dec47b 132
2ab9a04f
AD
133** History/Bibliography
134Some history of Bison and some bibliography would be most welcome.
135Are there any Texinfo standards for bibliography?
136
137
138
948be909
PE
139* Java, Fortran, etc.
140
948be909 141
f414d77d
AD
142** Java
143
144There are a couple of proposed outputs:
145
146- BYACC/J
147 which is based on Byacc.
148 <http://troi.lincom-asg.com/~rjamison/byacc/>
149
150- Bison Java
151 which is based on Bison.
948be909
PE
152 <http://www.goice.co.jp/member/mo/hack-progs/bison-java.html>
153
f414d77d
AD
154