Bison is a tool used to write parsers, such as the parser for GNU cc.
It is similar to Yacc, which is included in the base FreeBSD system.
The main difference between Bison and Yacc that I know of is that
Bison supports the @N construction, which gives you access to
the starting and ending line number and character number associated
with any of the symbols in the current rule.
Also, Bison supports the command `%expect N' which says not to mention
the conflicts if there are N shift/reduce conflicts and no reduce/reduce
conflicts.
The differences in the algorithms stem mainly from the horrible
kludges that Johnson had to perpetrate to make Yacc fit in a PDP-11.
Also, Bison uses a faster but less space-efficient encoding for the
parse tables (see Corbett's PhD thesis from Berkeley, "Static
Semantics in Compiler Error Recovery", June 1985, Report No. UCB/CSD
85/251), and more modern technique for generating the lookahead sets.
(See "Efficient Construction of LALR(1) Lookahead Sets" by F. DeRemer
and A. Pennello, in ACM TOPLS Vol 4 No 4, October 1982. Their
technique is the standard one now.)
devel/bison1875's time has come and gone and its only consumer is the
databases/postgresql-devel port, which isn't needed either now that 8.1 has
officially landed.
Submitted by: ade@
A few more cleanups after recent events with bison
* lose the bison175 port, it's not needed for now and will
only confuse matters
* clean up devel/Makefile, modules, and MOVED appropriately
* take maintainership of the bison* ports
Approved by: portmgr
Bison 1.875 was generating broken C++ code. This patch will be submitted
to GNU for inclusion in the main tree.
PR: ports/74436
Submitted by: Uranus uranus - a t - it dot muds dot net
When installing bison, create a symlink from bin/bison to bin/bison1875
that way ports that require bison1875 (ie: PostgreSQL 7.4+) can properly
detect this dependency. Given both bison's have the appropriate CONFLICTS
sections, this should be a big enough hint to users to move from
bison < 1.875 to something more recent. Bump port revision.
Pointy hat to: bison(1) authors for grammar incompatibilities
Add bison 1.875. Some grammars require the new version of Bison (such as
PostgreSQL), however the new bison also breaks many many ports. Compromise
with a new port. Installs as bison and _not_ bison1875 and should be
mutually exclusive to the main bison port. Hopefully the bison authors will
clean up their product and this port can disappear when the base bison port
is updated in the future or enough ports are updated to work with newer
versions of bison.
Repo copied by: fjoe
Approved by: kris