Interface of the block diagram evaluator. More...
#include "boxes.hh"
#include "sourcereader.hh"
#include "environment.hh"
Go to the source code of this file.
Functions | |
Tree | evalprocess (Tree eqlist) |
Eval the definition of 'process'. | |
Tree | evaldocexpr (Tree docexpr, Tree eqlist) |
bool | searchIdDef (Tree id, Tree &def, Tree lenv) |
Search the environment for the definition of a symbol ID and return it. | |
Tree | pushValueDef (Tree id, Tree def, Tree lenv) |
Push a new layer and add a single definition. | |
Tree | simplifyPattern (Tree pattern) |
Simplify a block-diagram pattern by computing its numerical sub-expressions. |
Interface of the block diagram evaluator.
A strict lambda-calculus evaluator for block diagram expressions.
Definition in file eval.hh.
Definition at line 110 of file eval.cpp.
References a2sb(), eval(), nil, and pushMultiClosureDefs().
Referenced by mapEvalDocEqn(), and printDocDgm().
Eval the definition of 'process'.
Eval the definition of 'process' in the environment passed as argument
eqlist | the global environment (a list of definitions) |
Eval the definition of 'process'.
Strict evaluation of a block diagram expression by applying beta reduction.
eqlist | a list of faust defintions forming the the global environment |
Definition at line 102 of file eval.cpp.
References a2sb(), boxIdent(), eval(), nil, and pushMultiClosureDefs().
Referenced by main().
00103 { 00104 return a2sb(eval(boxIdent("process"), nil, pushMultiClosureDefs(eqlist, nil, nil))); 00105 }
Push a new layer and add a single definition.
id | the symbol id to be defined | |
def | the definition to be binded to the symbol id | |
lenv | the environment where to push the layer and add the definition |
Definition at line 64 of file environment.cpp.
00065 { 00066 Tree lenv2 = pushNewLayer(lenv); 00067 addLayerDef(id, def, lenv2); 00068 return lenv2; 00069 }
Search the environment for the definition of a symbol ID and return it.
id | the symbol ID to search | |
def | where to store the definition if any | |
lenv | the environment |
Definition at line 104 of file environment.cpp.
00105 { 00106 // search the environment until a definition is found 00107 // or nil (the empty environment) is reached 00108 while (!isNil(lenv) && !getProperty(lenv, id, def)) { 00109 lenv = lenv->branch(0); 00110 } 00111 return !isNil(lenv); 00112 }
Simplify a block-diagram pattern by computing its numerical sub-expressions.
pattern | an evaluated block-diagram |
Definition at line 623 of file eval.cpp.
00624 { 00625 Tree num; 00626 if (!getNumericProperty(value,num)) { 00627 if (!isBoxNumeric(value,num)) { 00628 num = value; 00629 } 00630 setNumericProperty(value,num); 00631 } 00632 return num; 00633 }