News  |  About  |  Tools  |  Training Courses |  Services |  Contact Us

 
 


 
 

The Refactory News
About Us
Tools
Refactoring Browser
Method Wrappers
Sharp Smalltalk
SmaCC
SmaCC Download
SmaCC Tutorial
SmaCC Scanner
SmaCC Parser
Training
Services
 
Tools  

  SmaCC - Download

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.

File Description Date
SmaCC-Dolphin.zip Dolphin packages March 25, 2004
SmaCC-VA.zip VisualAge applications September 27, 2003
SmaCC-VW.zip VisualWorks parcels March 25. 2004
  Squeak packages available on the SqueakMap February 6, 2003

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.