eval.hh File Reference

Interface of the block diagram evaluator. More...

#include "boxes.hh"
#include "sourcereader.hh"
Include dependency graph for eval.hh:
This graph shows which files directly or indirectly include this file:

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.

Detailed Description

Interface of the block diagram evaluator.

A strict lambda-calculus evaluator for block diagram expressions.

Definition in file eval.hh.


Function Documentation

Tree evaldocexpr ( Tree  docexpr,
Tree  eqlist 
)

Definition at line 110 of file eval.cpp.

References a2sb(), eval(), nil, and pushMultiClosureDefs().

Referenced by mapEvalDocEqn(), and printDocDgm().

00111 {
00112     return a2sb(eval(docexpr, nil, pushMultiClosureDefs(eqlist, nil, nil)));
00113 }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree evalprocess ( Tree  eqlist  ) 

Eval the definition of 'process'.

Eval the definition of 'process' in the environment passed as argument

Parameters:
eqlist the global environment (a list of definitions)
Returns:
the 'process' block diagram in normal form that is

Eval the definition of 'process'.

Strict evaluation of a block diagram expression by applying beta reduction.

Parameters:
eqlist a list of faust defintions forming the the global environment
Returns:
the process block diagram in normal form

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 }

Here is the call graph for this function:

Here is the caller graph for this function:

Tree pushValueDef ( Tree  id,
Tree  def,
Tree  lenv 
)

Push a new layer and add a single definition.

Parameters:
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
Returns:
the new environment

Definition at line 1189 of file eval.cpp.

01190 {
01191     Tree lenv2 = pushNewLayer(lenv);
01192     addLayerDef(id, def, lenv2);
01193     return lenv2;
01194 }

bool searchIdDef ( Tree  id,
Tree def,
Tree  lenv 
)

Search the environment for the definition of a symbol ID and return it.

Parameters:
id the symbol ID to search
def where to store the definition if any
lenv the environment
Returns:
true if a definition was found

Definition at line 1229 of file eval.cpp.

01230 {
01231     // search the environment until a definition is found
01232     // or nil (the empty environment) is reached
01233     while (!isNil(lenv) && !getProperty(lenv, id, def)) {
01234         lenv = lenv->branch(0);
01235     }
01236     return !isNil(lenv);
01237 }

Tree simplifyPattern ( Tree  value  ) 

Simplify a block-diagram pattern by computing its numerical sub-expressions.

Parameters:
pattern an evaluated block-diagram
Returns:
a simplified pattern

Definition at line 605 of file eval.cpp.

00606 {
00607     Tree num;
00608     if (!getNumericProperty(value,num)) {
00609         if (!isBoxNumeric(value,num)) {
00610             num = value;
00611         }
00612         setNumericProperty(value,num);
00613     }
00614     return num;
00615 }

Generated on Thu Apr 29 00:00:06 2010 for FAUST compiler by  doxygen 1.6.3