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

📄 scanner.l

📁 早期freebsd实现
💻 L
字号:
%{#ifndef lintstatic char RCSid[] = "$Header: scanner.l,v 2.1 86/07/29 06:48:21 jqj Exp $";#endif/* * scanner.l -- scanner for the XNS courier compiler *//* $Log:	scanner.l,v $ * Revision 2.1  86/07/29  06:48:21  jqj * added support for 37D style comments. *  * Revision 2.0  85/11/21  07:21:45  jqj * 4.3BSD standard release *  * Revision 1.1  85/11/20  12:56:17  jqj * Initial revision *  * Revision 1.3  85/03/11  16:40:08  jqj * Public alpha-test version, released 11 March 1985 *  * Revision 1.2  85/02/21  11:05:51  jqj * alpha test version *  * Revision 1.1  85/02/15  13:55:58  jqj * Initial revision *  */#include "compiler.h"#include "y.tab.h"%}%%"--"$			|"----"			|\-(\-[^\n-]+)+(\n|"--")	|[ \t\n]			/* whitespace */;ARRAY			{ return (ARRAY); }BEGIN			{ return (_BEGIN); }BOOLEAN			{ return (BOOLEAN); }CARDINAL		{ return (CARDINAL); }CHOICE			{ return (CHOICE); }DEPENDS			{ return (DEPENDS); }END			{ return (END); }ERROR			{ return (ERROR); }INTEGER			{ return (INTEGER); }LONG			{ return (LONG); }OF			{ return (OF); }PROCEDURE		{ return (PROCEDURE); }PROGRAM			{ return (PROGRAM); }RECORD			{ return (RECORD); }REPORTS			{ return (REPORTS); }RETURNS			{ return (RETURNS); }SEQUENCE		{ return (SEQUENCE); }STRING			{ return (STRING); }TYPE			{ return (TYPE); }UNSPECIFIED		{ return (UNSPECIFIED); }UPON			{ return (UPON); }VERSION			{ return (VERSION); }TRUE			{ return (TRUE); }FALSE			{ return (FALSE); }"=>"			{ return (_CHOOSES); }"-"?[0-9]+		{				/*				 * decimal constant.				 */				yylval.stringvalue = copy(yytext);				return (number);			}"-"?[0-9]+[Dd]		{				/*				 * decimal constant.				 */				yytext[yyleng-1] = '\0';				yylval.stringvalue = copy(yytext);				return (number);			}"-"?[0-7]+[Bb]		{				char buf[BUFSIZ];				/*				 * octal constant.				 * change to C representation				 */				yytext[yyleng-1] = '\0';				if (*yytext != '-')					sprintf(buf,"0%s", yytext);				else					sprintf(buf,"-0%s", yytext+1);				yylval.stringvalue = copy(buf);				return (number);			}"-"?[0-9][0-9A-Fa-f]*[Xx]	{				char buf[BUFSIZ];				/*				 * hex constant.				 * change to C representation				 */				yytext[yyleng-1] = '\0';				if (*yytext != '-')					sprintf(buf,"0x%s", yytext);				else					sprintf(buf,"-0x%s", yytext+1);				yylval.stringvalue = copy(buf);				return (number);			}\"[^"\n"]*\"		{				/*				 * string constant				 */								yylval.stringvalue = copy(yytext);				return (string);			}\"([^\n"]|\"\")*\"	{				register char *p;				/*				 * string constant with embedded ""				 */				for (p=yytext+1; p<yytext+yyleng-1; p++)					if (*p == '"') *p++='\\';				yylval.stringvalue = copy(yytext);				return (string);			}[a-zA-Z_][a-zA-Z0-9_]*	{				yylval.stringvalue = copy(yytext);				return (identifier);			}.			{				return ((int) yytext[0]);			}%%

⌨️ 快捷键说明

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