|
Goals
|
|
The primary goal of the meeting was to optimize and correct the RUSL Language
Definition. Since this part of the RUSL Language
Specification defines the Keywords of the Language, it is very important for the
future development.
Other goals where to discuss some future goals and to discuss the design of the
Platypus web pages.
|
The RUSL Language Definition
|
|
Methods and Operators
We renamed the keyword for method definitions to method. The operator
definition will be similar to method, but maybe with a bindlevel -
Attribute.
Else If
We decided to introduce a elseif - keyword. Elseif is a block statement
which can occure in if-blocks, but all elseif - Blocks must stand before
the <else/> statement
The definition of elseif in the DTD is the following:
<!ELEMENT elseif (#PCDATA|try|if|while|for|new|drop|throw|var|return|doc|break|
continue)*>
<!ATTLIST elseif cond CDATA #REQUIRED>
Enumerated Types
There will be an enumerated - datatype with the following definition:
<!ELEMENT enum (#PCDATA)*>
<!ATTLIST enum name CDATA #REQUIRED>
Where the #PCDATA in the Definition is interpreted as Comma - List. Maybe we need
another List-type id_list to interprete that.
RUSL Scripts
We decided to introduce RUSL - Scripts. There is a separated DTD for RUSL Scripts,
which you can find here. The separated DTD
means, that a program is either a RUSL-script or a RUSL-source program. If sombody includes
RUSL into his own document format, he can include rusl-source and rusl-script. Scripts have
nearly the same behaviour as methods, but they are always public, global and do not belong
to any class.
Minor Changes
We changed some Attributes from REQUIRED to IMPLIED, changed some Attlists,... .
You can look at the new pre-release of RLS,
and if you know the old one, you'll see what we did.
|
Interface
|
|
Because of the introduction of RUSL-Scripts and some other reasons, we decided to
add some methods to the interface of the parser (which is the class Environment). As soon as
the source documentation is avaliable, you can read more about it there. The additional
methods are:
Envrionment::getExecutableList()
Which will provide a list of all executable classes and scripts.
Environment::execClass(string name)
Which will execute the class "name".
Environment::execScript(string name)
see above.
|
Exceptions
|
|
We now have decided some more details about the extended Exception handling of RUSL.
This exception handling follows a simple principle: there is not only try and catch,
but also retrys are possible. An exception is "dropped" at any point, and then
"handled" in the <handle/> - Section of the next higher try -
block. There a <retry/> can be done. This means, that the call frame
which lead to the exception is executed again. If the exception is dropped at the same point
again, the handle - block which did the retry must not handle the exception again: The next
higher handle-block gets a chance. If an exception falls through all the handle - blocks of
a program, the Interpreter exits with an Error. An exception which is "thrown"
is forced to fall through all handle - blocks.
|
Summary
|
|
We think that the Meeting was a success. The RLD is pretty good now, and I think we
might "freeze" it in a few weeks. We wo'nt make any big changes anymore, except with a
*REALLY GOOD* reason.
Alex was not at the meeting - he had to work. Rene drank two cups of Fruit tea
"Vita Mix" and I had two cups of Darjeeling with milk.
|