⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 awk.h

📁 操作系统源代码
💻 H
字号:
/* * a small awk clone * * (C) 1989 Saeko Hirabauashi & Kouichi Hirabayashi * * Absolutely no warranty. Use this software with your own risk. * * Permission to use, copy, modify and distribute this software for any * purpose and without fee is hereby granted, provided that the above * copyright and disclaimer notice. * * This program was written to fit into 64K+64K memory of the Minix 1.2. *//* lexical/parser tokens and executable statements */#define FIRSTP	256#define ARG	256#define ARITH	257#define ARRAY	258#define ASSIGN	259#define CALL	260#define CAT	261#define COND	262#define DELETE	263#define DO	264#define ELEMENT	265#define FIELD	266#define FOR	267#define FORIN	268#define GETLINE	269#define IF	270#define IN	271#define JUMP	272#define MATHFUN	273#define NULPROC	274#define P1STAT	275#define P2STAT	276#define PRINT	277#define PRINT0	278#define STRFUN	279#define SUBST	280#define USRFUN	281#define WHILE	282#define LASTP	282	/* lexical token */#define ADD	300	/* + */#define ADDEQ	301	/* += */#define AND	302	/* && */#define BEGIN	303	/* BEGIN */#define BINAND	304	/* & */#define BINOR	305	/* | */#define BREAK	306	/* break */#define CLOSE	307	/* close */#define CONTIN	308	/* continue */#define DEC	309	/* -- */#define DIV	310	/* / */#define DIVEQ	311	/* /= */#define	ELSE	312	/* else */#define END	313	/* END */#define EOL	314	/* ; or '\n' */#define EQ	315	/* == */#define EXIT	316	/* exit */#define FUNC	317	/* function */#define GE	318	/* >= */#define GT	319	/* > */#define IDENT	320	/* identifier */#define INC	321	/* ++ */#define LE	322	/* <= */#define LT	323	/* < */#define MATCH	324	/* ~ */#define MOD	325	/* % */#define MODEQ	326	/* %= */#define MULT	327	/* * */#define MULTEQ	328	/* *= */#define NE	329	/* != */#define NEXT	330	/* next */#define NOMATCH	331	/* !~ */#define NOT	332	/* ! */#define NUMBER	333	/* integer or floating number */#define OR	334	/* || */#define POWEQ	335	/* ^= */#define POWER	336	/* ^ */#define PRINTF	337	/* printf */#define REGEXP	338	/* /REG/ */#define RETURN	339	/* return */#define SHIFTL	340	/* << */#define SHIFTR	341	/* >> */#define SPRINT	342	/* sprint */#define SPRINTF	343	/* sprintf */#define STRING	344	/* ".." */#define SUB	345	/* - */#define SUBEQ	346	/* -= */#define SYSTEM	347	/* system */#define UMINUS	348	/* - *//* tokens in parser */#define VALUE	400	/* value node */#define INCDEC	401	/* ++, -- */#define PRE	402	/* pre incre/decre */#define POST	403	/* post incre/decre *//* redirect in print(f) statement */#define R_OUT	410	/* > */#define R_APD	411	/* >> */#define R_PIPE	412	/* | */#define R_IN	413	/* < */#define R_PIN	414	/* | getline */#define R_POUT	415	/* print | *//* function */#define ATAN2	500	/* atan2 */#define COS	501	/* cos */#define EXP	502	/* exp */#define INDEX	503	/* index */#define INT	504	/* int */#define LENGTH	505	/* length */#define LOG	506	/* log */#define RAND	507	/* rand */#define RGSUB	508	/* gsub */#define RMATCH	509	/* match */#define RSUB	510	/* sub */#define SIN	511	/* sin */#define SPLIT	512	/* split */#define SQRT	513	/* sqrt */#define SRAND	514	/* srand */#define SUBSTR	515	/* substr *//* print(f) options */#define FORMAT	1024	/* PRINTF, SPRINTF */#define STROUT	2048	/* SPRINTF */#define PRMASK	0x3ff	/* ~(FORMAT|STROUT) */	/* node - used in parsed tree */struct node {  int n_type;			/* node type */  struct node *n_next;		/* pointer to next node */  struct node *n_arg[1];	/* argument (variable length) */};typedef struct node NODE;	/* object cell */struct cell {  int c_type;		/* cell type */  char *c_sval;		/* string value */  double c_fval;	/* floating value */};typedef struct cell CELL;	/* cell type */#define UDF	0	/* pass parameter */#define VAR	1	/* variable */#define NUM	2	/* number */#define ARR	4	/* array */#define STR	8	/* string */#define REC	16	/* record */#define FLD	32	/* filed */#define PAT	64	/* pattern (compiled REGEXPR) */#define BRK	128	/* break */#define CNT	256	/* continue */#define NXT	512	/* next */#define EXT	1024	/* exit */#define RTN	2048	/* return */#define TMP	4096	/* temp cell */#define POS	8192	/* argument position */#define FUN	16384	/* function */	/* symbol cell - linked to symbol table */struct symbol {  char *s_name;  CELL *s_val;  struct symbol *s_next;};typedef struct symbol SYMBOL;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -