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()8 Recipe::Recipe() : firstNode(0), lastNode(0),
9 	topNode(0)
10 {
11 }
12 
~Recipe()13 Recipe::~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)24 RecipeNode *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)40 void Recipe::errmsg(RecipeNode &r, const char *emsg)
41 {
42 	lex->errmsg(r.linenum, emsg);
43 }
44 
ExecuteRecipe()45 void Recipe::ExecuteRecipe()
46 {
47 Buffer	b;
48 
49 	if (topNode)	topNode->Evaluate(*this, b);
50 }
51