46 lines
1.3 KiB
Plaintext
46 lines
1.3 KiB
Plaintext
|
variable interpolation in strings:
|
||
|
==================================
|
||
|
|
||
|
"foo" -> ("foo")
|
||
|
"hi $name" is expanded -> ("hi " + $name)
|
||
|
"my name is ${name}athon" -> ("my name is " + $name + "athon")
|
||
|
|
||
|
NOTE: extra tokens for parens and opt. plus signs
|
||
|
|
||
|
|
||
|
typing:
|
||
|
=======
|
||
|
|
||
|
strong typing.
|
||
|
casting functions builtin.
|
||
|
|
||
|
|
||
|
class declarations:
|
||
|
===================
|
||
|
|
||
|
only allowed in the core.
|
||
|
they could be allowed in the layout layer as well, but then there are problems:
|
||
|
- need syntax to create objects at run-time
|
||
|
- class namespace (what if we add a new class to the core later?)
|
||
|
- little need, anyway.
|
||
|
|
||
|
|
||
|
function declarations:
|
||
|
=====================
|
||
|
|
||
|
function declarations inside class declarations (method declations)
|
||
|
are only declarations. since class declarations can only be in the
|
||
|
core, so can declarations of new methods.
|
||
|
|
||
|
function declarations outside classes are either:
|
||
|
1) empty (no StmtBlock). look like C prototypes. this implies the
|
||
|
function is built-in (defined in s2builtin.pl). only allowed in
|
||
|
core.
|
||
|
2) defined, with body. allowed in all layers, with the following
|
||
|
restrictions:
|
||
|
- can only override existing functions in theme, i18n, user
|
||
|
layers
|
||
|
- free users can only define 1 or 2 functions in their user
|
||
|
layer, though they can define all available properties.
|
||
|
|