Strict Standards: Declaration of action_plugin_blog::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /www/htdocs/w00d9226/oliverh.com/lib/plugins/blog/action.php on line 13
Strict Standards: Declaration of action_plugin_discussion::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /www/htdocs/w00d9226/oliverh.com/lib/plugins/discussion/action.php on line 745
Strict Standards: Declaration of action_plugin_importoldchangelog::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /www/htdocs/w00d9226/oliverh.com/lib/plugins/importoldchangelog/action.php on line 157
Deprecated: Assigning the return value of new by reference is deprecated in /www/htdocs/w00d9226/oliverh.com/inc/parserutils.php on line 202
Deprecated: Assigning the return value of new by reference is deprecated in /www/htdocs/w00d9226/oliverh.com/inc/parserutils.php on line 205
Deprecated: Assigning the return value of new by reference is deprecated in /www/htdocs/w00d9226/oliverh.com/inc/parserutils.php on line 314
Deprecated: Assigning the return value of new by reference is deprecated in /www/htdocs/w00d9226/oliverh.com/inc/parserutils.php on line 454
Strict Standards: Declaration of cache_instructions::retrieveCache() should be compatible with cache::retrieveCache($clean = true) in /www/htdocs/w00d9226/oliverh.com/inc/cache.php on line 291
Deprecated: Function split() is deprecated in /www/htdocs/w00d9226/oliverh.com/inc/auth.php on line 146
Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w00d9226/oliverh.com/lib/plugins/blog/action.php:13) in /www/htdocs/w00d9226/oliverh.com/inc/auth.php on line 236
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /www/htdocs/w00d9226/oliverh.com/inc/auth.php on line 390
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /www/htdocs/w00d9226/oliverh.com/inc/auth.php on line 390
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /www/htdocs/w00d9226/oliverh.com/inc/auth.php on line 387
Strict Standards: Only variables should be passed by reference in /www/htdocs/w00d9226/oliverh.com/doku.php on line 69
Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w00d9226/oliverh.com/lib/plugins/blog/action.php:13) in /www/htdocs/w00d9226/oliverh.com/inc/actions.php on line 350
====== Picotalk ======
Picotalk is a simple Smalltalk-like programming language and environment implemented in ECMAScript (JavaScript), mainly intended (but not limited) to teaching basic concepts of programming.
Project page at berliOS: [[https://developer.berlios.de/projects/picotalk/]]
===== Picotalk Isn't Smalltalk =====
Picotalk
* **Case is important**: Picotalk distinguishes between identifiers starting with an uppercase letter and those starting with a lowercase letter. A beginning uppercase letter denotes a global name, e.g. a class name.
* **Brace array literals**: Picotalk only supports the brace array notation for array literals.
* **Declaration of temporaries is a statement**:
===== Data Structures =====
All data structures (AST, runtime objects) are now pure JSON data structures. This allows easier transport ove
==== AST Nodes ====
Each AST node is represented by a plain JavaScript object. The type of an AST node is determined by its ''type'' property. Legal values are the
^ Type ^ Properties ^
| (all) | ''loc'' |
| **Code** ||
| Script | ''args'', ''stmts'' |
| Block | ''args'', ''stmts'' |
| Method | ''kind'', ''selector'', ''args'', ''stmts'' |
| **Misc Statements** ||
| Temporaries | ''temps'' |
| Return | ''expr '' |
| **Expressions** ||
| Assignment | ''name'', ''expr '' |
| MessageSend | ''kind'', ''selector'', ''receiver'', ''args'' |
| Name | ''name'' |
| GlobalName | ''name'' |
| Literal | ''literal'' |
| Self | - |
| Super | - |
| BraceArray | ''exprs'' |
| Primitive | ''module'', ''method'' |
===== Bytecode =====
Picotalk code is compiled to bytecode. In the current version the generated "bytecode" is just a simple JavaScript array.
^ Opcode ^ Parameters ^ Description ^
| NOP | - | Does nothing |
| PUSH_NIL | - | Pushes the ''nil'' object onto the stack |
===== History ======
* Nov 2006: All AST node objects are now pure JSON data structures.