/*
 * This file was generated by mknodes.sh
 */

#define NSEMI 0
#define NCMD 1
#define NPIPE 2
#define NREDIR 3
#define NBACKGND 4
#define NSUBSHELL 5
#define NAND 6
#define NOR 7
#define NIF 8
#define NWHILE 9
#define NUNTIL 10
#define NFOR 11
#define NCASE 12
#define NCLIST 13
#define NDEFUN 14
#define NARG 15
#define NTO 16
#define NCLOBBER 17
#define NFROM 18
#define NFROMTO 19
#define NAPPEND 20
#define NTOFD 21
#define NFROMFD 22
#define NHERE 23
#define NXHERE 24
#define NNOT 25



struct nbinary {
#ifdef KASH_SEPARATE_PARSER_ALLOCATOR
	struct pstack_block *pblock;
#endif
	int type;
	union node *ch1;
	union node *ch2;
};


struct ncmd {
#ifdef KASH_SEPARATE_PARSER_ALLOCATOR
	struct pstack_block *pblock;
#endif
	int type;
	int backgnd;
	union node *args;
	union node *redirect;
};


struct npipe {
#ifdef KASH_SEPARATE_PARSER_ALLOCATOR
	struct pstack_block *pblock;
#endif
	int type;
	int backgnd;
	struct nodelist *cmdlist;
};


struct nredir {
#ifdef KASH_SEPARATE_PARSER_ALLOCATOR
	struct pstack_block *pblock;
#endif
	int type;
	union node *n;
	union node *redirect;
};


struct nif {
#ifdef KASH_SEPARATE_PARSER_ALLOCATOR
	struct pstack_block *pblock;
#endif
	int type;
	union node *test;
	union node *ifpart;
	union node *elsepart;
};


struct nfor {
#ifdef KASH_SEPARATE_PARSER_ALLOCATOR
	struct pstack_block *pblock;
#endif
	int type;
	union node *args;
	union node *body;
	char *var;
};


struct ncase {
#ifdef KASH_SEPARATE_PARSER_ALLOCATOR
	struct pstack_block *pblock;
#endif
	int type;
	union node *expr;
	union node *cases;
};


struct nclist {
#ifdef KASH_SEPARATE_PARSER_ALLOCATOR
	struct pstack_block *pblock;
#endif
	int type;
	union node *next;
	union node *pattern;
	union node *body;
};


struct narg {
#ifdef KASH_SEPARATE_PARSER_ALLOCATOR
	struct pstack_block *pblock;
#endif
	int type;
	union node *next;
	char *text;
	struct nodelist *backquote;
};


struct nfile {
#ifdef KASH_SEPARATE_PARSER_ALLOCATOR
	struct pstack_block *pblock;
#endif
	int type;
	int fd;
	union node *next;
	union node *fname;
};


struct ndup {
#ifdef KASH_SEPARATE_PARSER_ALLOCATOR
	struct pstack_block *pblock;
#endif
	int type;
	int fd;
	union node *next;
	int dupfd;
	union node *vname;
};


struct nhere {
#ifdef KASH_SEPARATE_PARSER_ALLOCATOR
	struct pstack_block *pblock;
#endif
	int type;
	int fd;
	union node *next;
	union node *doc;
};


struct nnot {
#ifdef KASH_SEPARATE_PARSER_ALLOCATOR
	struct pstack_block *pblock;
#endif
	int type;
	union node *com;
};


union node {
#ifdef KASH_SEPARATE_PARSER_ALLOCATOR
# ifdef __GNUC__
	__extension__
# endif
	struct {
		struct pstack_block *pblock;
		int type;
	};
#else
	int type;
#endif
	struct nbinary nbinary;
	struct ncmd ncmd;
	struct npipe npipe;
	struct nredir nredir;
	struct nif nif;
	struct nfor nfor;
	struct ncase ncase;
	struct nclist nclist;
	struct narg narg;
	struct nfile nfile;
	struct ndup ndup;
	struct nhere nhere;
	struct nnot nnot;
};


struct nodelist {
	struct nodelist *next;
	union node *n;
};


union node *copyfunc(struct shinstance *, union node *);
void freefunc(struct shinstance *, union node *);
