SmaCC is available for free use under the
MIT License. We request that if you create a parser
for some widely available language, you make it available for others to use.
If you would like to report
a bug, please email them to
John Brant and Don
Roberts. We also welcome usability enhancements and general comments.
If you need help creating a parser for your special language or more
detailed support, we are also available for hire.
SmaCC is available for VisualWorks 7, Dolphin 5.1 Professional, VisualAge Smalltalk 6.0,
and Squeak.
Each of these files contains 5 packages. The main package is SmaCC Runtime.
The SmaCC Runtime package is the only package that is required for a SmaCC
parser. The other packages are SmaCC Development, SmaCC Development UI, SmaCC
Example Parsers, and SmaCC Tests. The SmaCC Development and SmaCC Development UI
packages are needed to create new parsers. The SmaCC Example Parsers package has
example parsers for VisualWorks Smalltalk, C, and Java. The VisualWorks
Smalltalk parser produces Refactoring Browser parse trees, but the C and Java
parsers do not produce anything useful. Furthermore, the C parser does not include a
preprocessor. Finally, the SmaCC Tests package has some
simple tests for SmaCC. It should not be needed for most users of SmaCC, but can
be handy for someone wanting to port SmaCC to another vendor's Smalltalk.
If you are running SmaCC under VisualAge Smalltalk, you will need to install
the
Refactoring Browser
from the Camp Smalltalk wiki. The SmaCC
Development packages require the Refactoring Browser for some of its code
generation. Also for VisualAge, you will need to create
an ArrayedCollection class>>withAll: method. The version of #withAll: inherited
from Collection class does not work for arrayed collections.
ArrayedCollection class>>withAll: aCollection
| new |
new := self new: aCollection size.
(1 to: aCollection size) with: aCollection
do: [:i :each | new at: i put: each].
^new
If you run the tests under VA, then you may get some
failures when you try to run the tests, but if you debug the tests, then
they run fine. This is a bug in VA's ANSI exceptions. The Exception>>handlesByDefault
method is incorrectly setting the resumeBlock. If you remove the line, then
the tests should run correctly.