dsl.l

来自「一个SQL解析器」· L 代码 · 共 90 行

L
90
字号
/*Distributed data base FacilitatorParserVersion 1.0Copyright 1986 Columbia Union CollegeBy Leroy G. Cain*/%{#include "string.h"#include "parser.h"#include "rwsearch.c"%}D       [0-9]E       [Ee][-+]?{D}+%%[a-zA-Z]+   {int     rw;        if((rw= rwsearch(yytext)) == IDENTIFIER )        {                yylval.nsbuf = strcpy(scratch,yytext);        }                return rw;}"$"[a-zA-Z_][a-zA-Z0-9_#@]* return( PARM );[a-zA-Z_][a-zA-Z0-9_#@]* {   	yylval.nsbuf = strcpy (scratch, yytext);   /* KMW */	return IDENTIFIER ;}\"[^\"]*        |\'[^\']*        {        if(yytext[yyleng-1] ==  '\\')                yymore();        else        {                yytext[yyleng++] = input();                yytext[yyleng] = '\0';                return( STRING );        }}{D}+    return ( INTEGER );{D}+"."{D}*({E})?       |{D}+"."{D}+({E})?       |{D}+{E} return ( REAL );":"     return ':' ;";"     return ';' ;".*"    return ALLFIELDS ;"."     return '.' ;","     return ',' ;"!"     return NOT ;"!="    return NE ;"<="    return LE ;">="    return GE ;"<"     return LT ;"!<"    return NLT ;">"     return GT ;"!>"    return NGT ;"("     return '(' ;")"     return ')' ;">>"    return RIGHTSHIFT ;"<<"    return LEFTSHIFT ;"|"     return '|' ; /* Bit or */"||"    return E_OR ; /* or */"^"     return '^' ; /* Bit ex-or */"&"     return '&' ; /* Bit and */"&&"    return E_AND ; /* and */"~"     return '~' ; /* Ones compliment */"`"     return '`' ; /* Sematic control */"]"     return ']' ;"["     return '[' ;"="     return EQ ;"+"     return '+' ;"-"     return '-' ;"*"     return '*' ;"**"    return PWR ;"/"     return '/' ;"%"     return '%' ; /* Modulus */"?"     return '?' ;[/] return( ILLEGAL );[ \n\t\r] ;%%

⌨️ 快捷键说明

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