Hi Ross,
Some people suggested trying moose for analysis of SAS
programs, and
I'm
trying to figure out where to start with the meta-modeling.
Welcome to Moose :).
SAS is not object oriented, though parts of it could
be imagined to
be.
The main SAS code contains blocks of statements that begin with DATA
or
PROC; each block could probably be thought of as a function--to be
precise, the application of a function.
If I want to make some new models, where do I start? FM3? FAMIX?
elsewhere? The 4.0 release announcement says FM3 and FAMIX3 are both
implemented in Fame, so maybe start with Fame? I've read some
documentation, but I can't tell.
FAMIX is a meta-model, FM3 is the meta-meta-model. If a clarification
of terms is needed, you can check:
http://www.tudorgirba.com/blog/subject-model-meta-model
The core of FAMIX models in a language independent fashion object-
oriented and procedural languages. You can see a diagrammatic overview
here:
http://www.themoosebook.org/book/internals/famix/core
I do not know SAS, but you should check to see if the concepts present
in FAMIX are of use to you. If yes, you can directly instantiate them
from your parser. If not, then you will want to code a new meta-model,
or extend the current ones to accommodate your needs. You can then
describe this new meta-model using FM3 (this is achieved via Smalltalk
pragmas) and you get a browser and import-export in the MSE format for
free.
Once you have your Smalltalk objects as instances of the meta-model,
you can then use Mondrian and Glamour for building visual tools, or
the MooseAlgos to express graph-specific algorithms.
Does this help?
Cheers,
Doru
My inspiration for the project is understanding how
some SAS datasets
were produced. I have a system that creates numerous datasets, which
feed into later datasets, etc. This is split at least across a couple
of program files and it's really too complicated to keep in the brain.
If I get ambitious it would also be useful to trace where particular
variables came from, in the sense of both datasets and individual
expressions.
The only thing resembling a SAS parser I've run into (except for SAS,
which is closed source) is a Perl module, and it looked relatively
primitive. I've been using PetitParser, and at the point I started
thinking about what it would parse results into.
Thanks for any pointers.
Ross Boylan
_______________________________________________
Moose-dev mailing list
Moose-dev(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
--
www.tudorgirba.com
"Relationships are of two kinds: those we choose and those that
happen. They both matter."