+#endif
+
+static ast* newAst_(unsigned type)
+{
+ ast *ex ;
+ static int oldLineno = 0 ;
+
+ ALLOC(ex,sizeof(ast));
+
+ ex->type = type ;
+ ex->lineno = (noLineno ? oldLineno : yylineno);
+ ex->filename = currFname ;
+ ex->level = NestLevel ;
+ ex->block = currBlockno ;
+ ex->initMode = inInitMode;
+ return ex;
+}
+
+ast* newAst_VALUE(value*val)
+{
+ ast* ex = newAst_(EX_VALUE);
+ ex->opval.val = val;
+ return ex;
+}
+
+ast* newAst_OP(unsigned op)
+{
+ ast*ex = newAst_(EX_OP);
+ ex->opval.op = op;
+ return ex;
+}
+
+ast* newAst_LINK(link*val)
+{
+ ast* ex = newAst_(EX_LINK);
+ ex->opval.lnk = val;
+ return ex;
+}
+
+ast* newAst_STMNT(unsigned val)
+{
+ ast* ex = newAst_(EX_STMNT);
+ ex->opval.stmnt = val;
+ return ex;
+}