1 #include "recipe.h" 2 #include "lexer.h" 3 #include "token.h" 4 #include "funcs.h" 5 6 static const char rcsid[]="$Id: recipe.C,v 1.1 1998/04/16 23:53:22 mrsam Exp $"; 7 Recipe()8Recipe::Recipe() : firstNode(0), lastNode(0), 9 topNode(0) 10 { 11 } 12 ~Recipe()13Recipe::~Recipe() 14 { 15 RecipeNode *n; 16 17 while ((n=firstNode) != 0) 18 { 19 firstNode=n->nextNode; 20 delete n; 21 } 22 } 23 alloc(RecipeNode::RecipeNodeType t)24RecipeNode *Recipe::alloc(RecipeNode::RecipeNodeType t) 25 { 26 RecipeNode *n=new RecipeNode(t); 27 28 if (!n) outofmem(); 29 30 n->prevNode=lastNode; 31 n->nextNode=0; 32 33 if (lastNode) lastNode->nextNode=n; 34 else firstNode=n; 35 lastNode=n; 36 n->linenum=lex->Linenum(); 37 return (n); 38 } 39 errmsg(RecipeNode & r,const char * emsg)40void Recipe::errmsg(RecipeNode &r, const char *emsg) 41 { 42 lex->errmsg(r.linenum, emsg); 43 } 44 ExecuteRecipe()45void Recipe::ExecuteRecipe() 46 { 47 Buffer b; 48 49 if (topNode) topNode->Evaluate(*this, b); 50 } 51