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@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."