The Machine Perception Toolbox

[Introduction]- [News]- [Download]- [Screenshots]- [Manual (pdf)]- [Forums]- [API Reference]- [Repository ]

 

Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

parse.h File Reference

#include "frames.h"
#include "modules.h"
#include "lists.h"

Include dependency graph for parse.h:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Classes

struct  _PARSE

Functions

LISTparse_evaluate (PARSE *p, FRAME *frame)
void parse_file (char *f, FRAME *frame)
void parse_free (PARSE *p)
PARSEparse_make (LIST *(*func)(PARSE *p, FRAME *frame), PARSE *left, PARSE *right, PARSE *third, char *string, char *string1, int num)
void parse_refer (PARSE *p)
void parse_save (PARSE *p)


Function Documentation

LIST* parse_evaluate PARSE p,
FRAME frame
 

Definition at line 135 of file parse.c.

References FRAME, _PARSE::func, LIST, p, PARSE, and frame::procedure.

Referenced by compile_append(), compile_class(), compile_eval(), compile_foreach(), compile_if(), compile_include(), compile_local(), compile_module(), compile_on(), compile_rule(), compile_rules(), compile_set(), compile_setcomp(), compile_setexec(), compile_settings(), compile_switch(), compile_while(), evaluate_in_module(), evaluate_rule(), and parse_file().

00136 {
00137     frame->procedure = p;
00138     return (*p->func)(p, frame);
00139 }

void parse_file char *  f,
FRAME frame
 

Definition at line 35 of file parse.c.

References f(), FRAME, p, PARSE, parse_evaluate(), parse_free(), yyfparse(), yyparse(), and yypsave.

Referenced by compile_include(), and main().

00036 {
00037         /* Suspend scan of current file */
00038         /* and push this new file in the stream */
00039 
00040         yyfparse(f);
00041 
00042         /* Now parse each block of rules and execute it. */
00043         /* Execute it outside of the parser so that recursive */
00044         /* calls to yyrun() work (no recursive yyparse's). */
00045 
00046         for(;;)
00047         {
00048             PARSE *p;
00049 
00050             /* Filled by yyparse() calling parse_save() */
00051 
00052             yypsave = 0;
00053 
00054             /* If parse error or empty parse, outta here */
00055 
00056             if( yyparse() || !( p = yypsave ) )
00057                 break;
00058 
00059             /* Run the parse tree. */
00060 
00061             parse_evaluate( p, frame );
00062             parse_free( p );
00063         }
00064 }

Here is the call graph for this function:

void parse_free PARSE p  ) 
 

Definition at line 114 of file parse.c.

References freestr(), _PARSE::left, p, PARSE, _PARSE::refs, _PARSE::right, _PARSE::rulename, _PARSE::string, _PARSE::string1, and _PARSE::third.

Referenced by evaluate_rule(), parse_file(), rule_free(), and set_rule_body().

00115 {
00116         if( --p->refs )
00117             return;
00118 
00119         if( p->string )
00120             freestr( p->string );
00121         if( p->string1 )
00122             freestr( p->string1 );
00123         if( p->left )
00124             parse_free( p->left );
00125         if( p->right )
00126             parse_free( p->right );
00127         if( p->third )
00128             parse_free( p->third );
00129         if ( p->rulename )
00130             freestr( p->rulename );
00131         
00132         free( (char *)p );
00133 }

Here is the call graph for this function:

PARSE* parse_make LIST *(*)(PARSE *p, FRAME *frame func,
PARSE left,
PARSE right,
PARSE third,
char *  string,
char *  string1,
int  num
 

Referenced by bind_builtin().

void parse_refer PARSE p  ) 
 

Definition at line 108 of file parse.c.

References p, PARSE, and _PARSE::refs.

Referenced by evaluate_rule(), and set_rule_body().

00109 {
00110         ++p->refs;
00111 }

void parse_save PARSE p  ) 
 

Definition at line 67 of file parse.c.

References PARSE, and yypsave.

Referenced by yyparse().

00068 {
00069         yypsave = p;
00070 }


Generated on Mon Nov 8 17:08:16 2004 for MPT by  doxygen 1.3.9.1