]> git.saurik.com Git - bison.git/blame - TODO
(errno): Remove declaration, as we are now assuming C89 or better, and
[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
efea6231
AD
15* URGENT: Documenting C++ output
16Write a first documentation for C++ output.
17
bc933ef1 18
88bce5a2
AD
19* Documentation
20Before releasing, make sure the documentation refers to the current
21`output' format.
22
23
2ab9a04f
AD
24* Error messages
25Some are really funky. For instance
26
27 type clash (`%s' `%s') on default action
28
29is really weird. Revisit them all.
30
2ab9a04f 31
d43baf71
AD
32* GLR & C++
33Currently, the GLR parser cannot compile with a C++ compiler.
34
35
2ab9a04f 36* Report
ec3bc396 37
2ab9a04f
AD
38** GLR
39How would Paul like to display the conflicted actions? In particular,
40what when two reductions are possible on a given lookahead, but one is
41part of $default. Should we make the two reductions explicit, or just
42keep $default? See the following point.
d7215705 43
2ab9a04f
AD
44** Disabled Reductions
45See `tests/conflicts.at (Defaulted Conflicted Reduction)', and decide
46what we want to do.
d7215705 47
2ab9a04f 48** Documentation
bc933ef1
AD
49Extend with error productions. The hard part will probably be finding
50the right rule so that a single state does not exhibit too many yet
51undocumented ``features''. Maybe an empty action ought to be
52presented too. Shall we try to make a single grammar with all these
53features, or should we have several very small grammars?
ec3bc396 54
2ab9a04f
AD
55** --report=conflict-path
56Provide better assistance for understanding the conflicts by providing
57a sample text exhibiting the (LALR) ambiguity. See the paper from
58DeRemer and Penello: they already provide the algorithm.
59
ec3bc396 60
948be909 61* Extensions
2ab9a04f
AD
62
63** yyerror, yysymprint interface
64It should be improved, in particular when using Bison features such as
65locations, and YYPARSE_PARAMS. For the time being, it is recommended
66to #define yyerror and yyprint to steal internal variables...
67
68** Several %unions
6cbfbcc5
AD
69I think this is a pleasant (but useless currently) feature, but in the
70future, I want a means to %include other bits of grammars, and _then_
71it will be important for the various bits to define their needs in
72%union.
76551463 73
5c0a0514
AD
74When implementing multiple-%union support, bare the following in mind:
75
76- when --yacc, this must be flagged as an error. Don't make it fatal
77 though.
78
79- The #line must now appear *inside* the definition of yystype.
80 Something like
81
82 {
83 #line 12 "foo.y"
84 int ival;
85 #line 23 "foo.y"
86 char *sval;
87 }
88
f0e48240
AD
89** %if and the like
90It should be possible to have %if/%else/%endif. The implementation is
91not clear: should it be lexical or syntactic. Vadim Maslow thinks it
92must be in the scanner: we must not parse what is in a switched off
93part of %if. Akim Demaille thinks it should be in the parser, so as
94to avoid falling into another CPP mistake.
95
96** -D, --define-muscle NAME=VALUE
97To define muscles via cli. Or maybe support directly NAME=VALUE?
98
99
fa770c86
AD
100* Unit rules
101Maybe we could expand unit rules, i.e., transform
102
103 exp: arith | bool;
104 arith: exp '+' exp;
105 bool: exp '&' exp;
106
107into
108
109 exp: exp '+' exp | exp '&' exp;
110
111when there are no actions. This can significantly speed up some
d7215705
AD
112grammars. I can't find the papers. In particular the book `LR
113parsing: Theory and Practice' is impossible to find, but according to
114`Parsing Techniques: a Practical Guide', it includes information about
115this issue. Does anybody have it?
fa770c86 116
51dec47b 117
51dec47b 118
2ab9a04f 119* Documentation
51dec47b 120
2ab9a04f
AD
121** History/Bibliography
122Some history of Bison and some bibliography would be most welcome.
123Are there any Texinfo standards for bibliography?
124
125
126
948be909
PE
127* Java, Fortran, etc.
128
948be909 129
f414d77d
AD
130** Java
131
132There are a couple of proposed outputs:
133
134- BYACC/J
135 which is based on Byacc.
136 <http://troi.lincom-asg.com/~rjamison/byacc/>
137
138- Bison Java
139 which is based on Bison.
948be909
PE
140 <http://www.goice.co.jp/member/mo/hack-progs/bison-java.html>
141
f414d77d
AD
142