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

📄 scan.l

📁 linux 下用c++ 开发的一个小型数据库系统
💻 L
字号:
%{//// scan.l: lex spec for simple SQL-like query language//#include "parse.h"#include "y.tab.h"static int get_id(char *s);static char *get_qstring(char *qstring, int len);static char *mk_string(char *s, int len);%}letter				[A-Za-z]digit				[0-9]num				{digit}+s_num				[+\-]?{num}%x comment%x shell_cmd%%"/*"				{BEGIN(comment);}<comment>[^*]			{/* ignore the text of the comment */}<comment>"*/"			{BEGIN(INITIAL);}<comment>\*			{/* ignore *'s that aren't part of */}[ \n\t]				{/* ignore spaces, tabs, and newlines */}{s_num}				{sscanf(yytext, "%d", &yylval.ival);				 return T_INT;}{s_num}\.{num}			{sscanf(yytext, "%f", &yylval.rval);				 return T_REAL;}{s_num}\.{num}[Ee]{s_num}	{sscanf(yytext, "%f", &yylval.rval);				 return T_REAL;}\"([^\"\n]|(\"\"))*\"		{yylval.sval = get_qstring(yytext, yyleng);				 return T_QSTRING;}\"([^\"\n]|(\"\"))*\n		{printf("newline in string constant\n");}{letter}({letter}|{digit}|_)*	{return get_id(yylval.sval = yytext);}"<"				{return T_LT;}"<="				{return T_LE;}">"				{return T_GT;}">="				{return T_GE;}"="				{return T_EQ;}"!="				{return T_NE;}"<>"				{return T_NE;}!				{BEGIN(shell_cmd);}<shell_cmd>[^\n]*		{yylval.sval = yytext; return T_SHELL_CMD;}<shell_cmd>\n			{BEGIN(INITIAL);}[*/+\-=<>':;,.|&()]		{return yytext[0];}<<EOF>>				{return T_EOF;}.				{printf("illegal character [%c]\n", yytext[0]);}%%#include "scanhelp.C"

⌨️ 快捷键说明

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