46 lines
1.3 KiB
Plaintext
Executable File
46 lines
1.3 KiB
Plaintext
Executable File
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.
|
|
|