ljr/wcmtools/s2/doc/language.txt

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.