Performable


Overview

A performable element can be executed on the XMF VM. It must provide a collection of operations that support its evaluation or its translation into VM machine instructions. In particular it must support 'compile/4', 'FV/0', 'maxLocals/0' and 'eval/3'. Performable is the root class for all extensions to executable XMF. For example OCL is a sub-class of Performable. If you inte-nd to define your own languages in XMF then they should exte-nd Performable.



Parents Object ,Element


Constructors



Attributes
endLineIntegerNo Documentation Specified
lineIntegerNo Documentation Specified



Operations
FV():Set(String) All performable things contain variables. If the variables are not bound then they are free. This returns the set of free variables in a performable thing.
compile(env:Element,frame:Element,isLast:Element,saveSource:Element):Element Every performable thing must be able to be compiled. The arguments are as follows: env contains information about the context; frame defines how statically nested inside binding contours we are; isLast is a boolean determining whether we are the last performable thing; saveSource controls whether or not source is dumped to the output.
endLine():IntegerNo Documentation Specified
eval(target:Element,env:Element,imports:Element):Element Every performable thing can be evaluated (as opposed to compiled and then performed).Evaluation occurs in a context that includes the value of 'self' (i.e. the target of the evaluating message), an environment of local variables and a sequence of imported name spaces.
line():IntegerNo Documentation Specified
maxLocals():Integer Any performable thing requires some local storage. This will occur in the machine stack frame. It is possible to statically determine how much storage is required and this operation returns the amount of storage needed.
pprint(out:Element,indent:Integer):String Any performable thing can be turned into code. The default behaviour is to produce a comment. All performable subclasses should redefined this operation as appropriate.
pprint():String Pretty prints the receiver to a string.
pprint(indent:Element):String Pretty prints the receiver to a string.
setEndLine(endLine:Integer):ElementNo Documentation Specified
setLine(line:Integer):ElementNo Documentation Specified
From Object: slotMissing, slotMissing, setProperty, setHotLoad, setDaemonsActive, setDaemons, set, renameSlot, removeStructuralFeature, removeDaemonsWithTarget, removeDaemonsWithId, removeDaemonNamed, removeDaemon, machineInit, initSlots, init, hotLoaded, hotLoad, hasSlot, hasProperty, getProperty, get, hasStructuralFeature, getStructuralFeatureNames, hasDaemonWithTarget, hasDaemonWithIdAndTarget, hasDaemonWithId, hasDaemonNamed, fire, destroyDaemon, daemonWithIdAndTarget, daemonWithId, daemonNamed, daemonsActive, daemons, allDaemonsWithTarget, allDaemonsWithId, compositeValues, allCompositeValuesAndSelf, allCompositeValues, addStructuralFeature, addPersistentDaemon, addMultiDaemon, addDaemon. From Element: pprint, pprint, pprint, writeXMLFile, writeXMLFile, writeXML, lift, toSnapshot, toSnapshot, allHTMLEntries, allHTMLPackages, toHTML, writeHTML, writeHTML, writeHTMLAllEntries, writeHTMLAllPackages, writeHTMLIndex, writeHTMLOverview, yield, toString, systemId, setOf, send, save2, save, removeDaemon, removeDaemon, println, print, oclIsKindOf, oclIsTypeOf, noOperationFound, isTypeOf, isReallyKindOf, init, init, of, isKindOf, addTo, checkConstraints, copy, deleteRecursive, die, edit, equals, error, ferror, hashCode.