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.