-
Notifications
You must be signed in to change notification settings - Fork 8
Panda Smalltalk
License
vgeddes/panda-smalltalk
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Panda is a new Smalltalk implementation, written from scratch in C99. Implemented features: * All Smalltalk-80 syntax supported. * Fast bytecode interpreter (optionally uses gcc's computed goto) * Mark-Compact garbage collector * A small class library, with language core, data structures, and streams * Basic support for reading code from command line Next on the TODO: * Image support * Interactive command line client and better script file support Building ======== $ ./configure && make Panda isn't installable right now. The `panda' executable runs in the directory in which it was built ("src/"), and expects the kernel library files to be in "../st". Usage ===== The main executable `panda', reads Smalltalk statements from stdin, interprets them and outputs the result of the last statement. Variables can be declared in the usual Smalltalk way. Examples ======== Here are some short examples. Make sure to browse through the class library in "st/" to see all the implemented classes. 1. Sort a constant array of SmallIntegers $ echo "#(3 7 5 7 12 1) sort" | ./panda 2. Bignum arithmetic $ echo "1000000000000000000000000 + 1" | ./panda 3. Data Structures: Put a pair #key -> 'foo' into a dictionary and attempt retrieval echo "|map| map := Dictionary new. map at: #key put: 'foo'. map at: #key." | ./panda 4. Fun with blocks: Use block to select elements of array which are greater than 5 $ echo "#(3 7 5 7 12 1) select: [ :x | x > 5 ]" | ./panda 5. Errors: Panda prints a useful traceback if there is an runtime error $ echo "#(3 7 5 7 12 1) reverse" | ./panda An error occurred during program execution message: reverse Traceback: Array(Object)>>error: Array(Object)>>doesNotUnderstand: UndefinedObject>>doIt[] UndefinedObject>>doIt System>>startupSystem
About
Panda Smalltalk
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published