When I try loading the latest version of moose.
Warning: Package "SmallDudeUtils" cannot be loaded.
The following classes cannot be loaded because their superclasses are
neither in the image nor in the package being loaded:
BooleanVector (subclass of Root.Smalltalk.SCG.Vector)
BooleanMatrix (subclass of Root.Smalltalk.SCG.Matrix)
BooleanSymetricMatrix (subclass of
Root.Smalltalk.SCG.SymetricMatrix)
Please find below the latest draft of the MSE format
There is a new mse element, annotations, which can be used twofold
(1) To structure mse files into multiple documents. For example an
mse file may contain an @mse header document and both a @metamodel
and @model document, or even multiple @version1 @version2 ...
documents. The only reserved annotation would be @mse for the leading
header document.
So a valid document could eg look like this
@mse ((MSE.File
(metamodel 'http://moose.unibe.ch/spec/famix/3.0')
(model '@model'))
@model
((FAMIX.Package (id: 1)
(name 'LAN')
(classes
(FAMIX.Class ...
...
...
))))
(2) Annotations for elements. Attribute names may start with an @ to
indicate an attribute not conforming to the metamodel, for example
the longDesc of a Moose measurement, or the category of a Moose meny
entry would use this feature. But also the variable indexed slots of
Magritte elements.
(MA.Element
(name 'ABC')
(attr 0.5 0.75 -1 0.2)
(@1 'foo')
(@2 'bar')
(@3 nil)
(@4 'qux'))
Also there are two new primitives
- Nil
- Datetime
Nil is not to be confused with unset values, which may have a default
value different from nil
(...
absent = default value
(attr ) = default value
(attr nil) = nil value
(attr "..some..") = some value
...)
Similar to SAX, there is a ParserClient interface for reading MSE
documents using callbacks. This interface allows an application to
register for MSE document parsing. The sequence of callbacks is
limited to the following protocol
MAIN := beginFile ( annotation* beginDocument ELEM* endDocument )*
endFile
ELEM := beginElement serial? (beginAttribute ( primitive | reference
| ELEM )* endAttribute) endElement
which is based on this grammer and tokens
root := fragment | file
fragment := elementNode
file := document*
document := annotation* "(" elementNode* ")"
annotation := AT_NAME
elementNode := "(" elementName serial? attributeNode* ")"
elementName := NAME
attributeNode := "(" attributeName valueNode* ")"
attributeName := NAME | AT_NAME
valueNode := primitive | id-reference | reference | elementNode
primitive := STRING | NUMBER | BOOLEAN | DATE | NIL
serial := "(" "id:" INTEGER ")"
id-reference := "(" "idref:" INTEGER ")"
reference := "(" "ref:" NAME ")"
Breaks input-stream into tokens. Accepts the following grammar
Tokens
Open ::= "("
Close ::= ")"
AtName ::= "@" ( Letter | Digit )+
Keyword ::= "id:" | "idref:" | "ref:"
Name ::= Letter ( Letter | Digit )* ( "." ( Letter | Digit )+ )*
String ::= ( "'" [ˆ']* "'" )+
Boolean ::= "true" | "false"
Nil ::= "nil"
Date ::= Digit{4} "-" Digit{2} "-" Digit{2} ( "," Digit{2}
":" Digit{2} ":" Digit{2} )
Number ::= "-"? Digit+ ( "." Digit+ )? ( "e" ( "-"? Digit+ ))?
Terminals
Digit ::= [0-9]
Letter ::= [a-zA-Z_]
Whitespace
Whitespace ::= Space Tab ecetera...
Comment ::= "\"" [ˆ"] "\""
----
What do you think?
AA
> Importers for Java, C++, Python and Smalltalk.
How to run the Python and C++ importer? Which tools are doing this
anyway? The only thing I now is that Martin once write some python
scripts, but I do not remember where they are and how to run them.
Java import refers to iPlasma, currently, I guess.
AA
Hi,
I added two components to moose.unibe.ch for reusing the mail
addresses of the mailing lists.
So, now you can use the followings:
+/reusable/moosecontact+ will produce moose(a)iam.unibe.ch
+/reusable/moosedev+ will produce moose-dev(a)iam.unibe.ch
The howto page is here:
http://moose.unibe.ch/varia/howtoedit/mails
Cheers,
Doru
--
www.tudorgirba.comwww.tudorgirba.com/blog
"Beauty is where we see it."
I am trying to create custom visulizations with Mondrian using the scripts
described in "Mondrian: An Agile Information Visualization Framework", but I
am not able to execute this script...
*view := ViewRenderer new.
view nodes: model classes using: RectangleShape withBorder.
view open.*
I have tried "model allClasses" as well, but it says there is no model
class.
Hi,
currently opposites are described as
opposite and opposite+derived. This can be one->one, one->many,
many->one and many->many. We
can easily generate code which handles all those different cases.
Secondly, when we are writing out instances of fm3-described classes; we
know when attributes
have an opposite. There the derived is quite unimportant; since it is
just a hint to the writer "which" of
the 2 opposites it should write and which it should derive. However,
since you can
generate code which takes all different cases into account, writing it
out (and reading it in) either way is
possible. The opposite can be filled in from either of the available
relationships. So which opposite you
file out could be chosen randomly. Coming to my point: do attributes
which have an opposite need a
derived statement? Isn't it more logical that only real algorithmic
"attributes" are derived? When choosing
automatically you will only have to take care that if an opposite is its
own opposite (the opposite of the
attribute "opposite" in fm3.Property is like this; that's probably the
only case :)), that it always gets written.
#(((
#This fact would again strengthen my case that the opposite of an
opposite should not necessarily be
#declared as an opposite in the MSE file. Nor should the type be in
either of them. If we find (prop (id: 2)
#(opposite (idref: 1))), then we should automatically do (objectAtId:
1).setOpposite(objectAtId: 2),
#which sets the owner of (objectAtId: 2) as it's type, sets the type of
the (objectAtId: 2) as the owner of
#(objectAtId: 1); and then sets (objectAtId: 2) as the opposite of
(objectAtId: 1)
#
#---->> if you use an opposite-declaration for an attribute; you have 1
statement instead of 5 for which 4 are
#redundant ----> less redundancy => better performance
#)))
any ideas / comments? Does this seem right / clean?
cheers,
Toon
Dear list,
Is there no way to describes an interface in FAMIX?
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.