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

📄 ic.l

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 L
字号:
%{#ifndef lintstatic char lSccsid[] = "@(#)ic.l	4.1	(ULTRIX)	7/17/90";#endif/* * ic -- lexical analysis */#include "ic.h"#include "y.tab.h"#define LAST(v)	(v - 1 + sizeof v / sizeof v[0])%}letter		[a-zA-Z_]digit		[0-9]letter_or_digit	[a-zA-Z_0-9]let_or_dig_or_x	[a-zA-Z_0-9.]hexdigit	[a-fA-F0-9]white_space	[ \t\n]blank		[ \t]other		.%%^"#"{blank}*{digit}+({blank}+.*)?\n	yymark();{letter}{letter_or_digit}*		return screen();{letter}{let_or_dig_or_x}*{letter_or_digit}	return screen();{digit}+				return sym_lookup(Constant);{digit}+[/x]{hexdigit}*			return sym_lookup(Constant);'([^\\'\n]|\\[\\'ntbrf0])*'		return sym_lookup(Constant);\"([^"\n]|\\[\\"ntbrf0])*\"		return sym_lookup(String);"->"					return sym_lookup(IS);{white_space}+				;{other}					{#ifdef EBUG					  if (lex_dbg)						dbg_prt(DBGTIN, "lex -> %c",							yytext[0]);#endif					  return yytext[0];					}%%typedef struct rwtable {		/* reserved words table */	char *rw_name;			/* representation */	int   rw_yylex;			/* yylex value */} rwtable;rwtable rwtab[] = {			/* sorted table of reserved words */	"ARITH",	Property,	/* arithmetic sign 	*/	"BLANK",	Property,	/* blank character	*/	"CODE",		CODE,		/* KEYWORD 	  	*/	"CODESET",	CODESET,	/* KEYWORD		*/	"COLLATION",	COLLATION,	/* KEYWORD		*/	"CONVERSION",	CONVERSION,	/* KEYWORD		*/	"CTRL",		Property,	/* control character	*/	"CURENCY",	Property,	/* currency character	*/	"DEFAULT",	DEFAULT,	/* KEYWORD		*/	"DIACRIT",	Property,	/* diacritical sign	*/	"DIPHTONG",	Property,	/* diphtong		*/	"DOUBLE",	Property,	/* double letter	*/	"END",		END,		/* KEYWORD		*/	"EQUAL",	EQUAL,		/* KEYWORD		*/	"EXTENDED",	EXTENDED,	/* KEYWORD		*/	"FRACTION",	Property,	/* fraction character	*/	"HEX",		Property,	/* hex character	*/	"ILLEGAL",	Property,	/* illegal character	*/	"LOWER",	Property,	/* lowercase letter	*/	"MISCEL",	Property,	/* miscellaneous symbol */	"NUMERAL",	Property,	/* numeral character	*/	"PRIMARY",	PRIMARY,	/* KEYWORD		*/	"PROPERTY",	PROPERTY,	/* KEYWORD		*/	"PUNCT",	Property,	/* punctuation char	*/	"REST",		REST,		/* KEYWORD		*/	"SAME",		SAME,		/* KEYWORD		*/	"SPACE",	Property,	/* space character	*/	"STRING",	STRING,		/* intro for string conversion   */	"STRINGTABLE",	STRINGTABLE,	/* KEYWORD		*/	"SUPSUB",	Property,	/* super-/sub scripts	*/	"UPPER",	Property,	/* upper case letter	*/	"VOID",		VOID,		/* KEYWORD		*/};/* * screen() -- processor for reserved words */static intscreen(){	rwtable *low = rwtab;	rwtable *high = LAST(rwtab);	rwtable *mid;	int c;	while (low <= high)	{		mid = low + (high - low) / 2;		if ((c = strcmp(mid->rw_name, yytext)) == 0)		{			/*			 * here a keyword or a property is returned			 */			if (mid->rw_yylex == Property)				return sym_lookup(Property);#ifdef EBUG			if (lex_dbg)				dbg_prt(DBGTIN, "lex: %s -> %x", yytext,					mid->rw_yylex);#endif			return mid->rw_yylex;		}		else if (c < 0)			low = mid + 1;		else			high = mid - 1;	}	/*	 * not found in table of reserved words. must be Identifier	 */	return sym_lookup(Identifier);}

⌨️ 快捷键说明

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