Research Article
SPOT: A DSL for Extending Fortran Programs with Metaprogramming
Algorithm 5
(a) A rule in the tree grammar; (b) a template for generating OpenFortran code.
(a) | transformScope | : ∧(‘Within’ ‘Project’ programName=ID) | -> createMetaGlobal (transformer={$transformerName}, progName={$programName.text}); | (b) | createMetaGlobal (transformer, progName, funName, varName)::=<< | class MetaClass_<transformer>_<progName>: public MetaGlobal | { | public: | MetaClass_<transformer>_<progName> (string name); | virtual bool ofExtendDefinition(); | <if(funName)>virtual bool ofExtendFunctionCall(string “<funName>”)<endif>; | <if(VarName)>virtual bool ofExtendVariableRead(string “<varName>”)<endif>; | <if(VarName)>virtual bool ofExtendVariableRead(string “<varName>”)<endif>; | }; | >> |
|