home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.parl.clemson.edu
/
2015-02-07.ftp.parl.clemson.edu.tar
/
ftp.parl.clemson.edu
/
pub
/
coven
/
coven-utils-1.1.tgz
/
coven-utils-1.1.tar
/
utils
/
coven-language
/
Coven_scanner.l
< prev
next >
Wrap
Text File
|
2003-01-28
|
3KB
|
107 lines
/*
* (C) 2001 Clemson University
*
* See COPYING in top-level directory.
*/
%{
#include "Coven_lang.h"
#include "symbol.h"
#include "y.tab.h"
extern YYSTYPE yylval;
int atoi();
double atof();
//. {LIST; report_error(00,line);}
#define LIST strcat(text,yytext);
#define RETURNVAL(x) yylval.i = (int)(token = x); return((int)x);
#define MAKELIST produce_listing(line,text);text[0]=0;
char text[132];
int token;
%}
string ["][^"]*["]
float1 [-+]?[0-9]+"."[0-9]*([eE][-+]?[0-9]+)?
float2 [-+]?"."[0-9]+([eE][-+]?[0-9]+)?
float3 [-+]?[0-9]+[eE][-+]?[0-9]+
int [-+]?[0-9]+
id [_a-zA-Z][_0-9a-zA-Z]*
w [ \t\n]*
%%
"MODULES" {LIST; RETURNVAL(MODULES);}
"modules" {LIST; RETURNVAL(MODULES);}
"CONSTANTS" {LIST; RETURNVAL(CONSTANTS);}
"constants" {LIST; RETURNVAL(CONSTANTS);}
"VARIABLES" {LIST; RETURNVAL(VARIABLES);}
"variables" {LIST; RETURNVAL(VARIABLES);}
"PROGRAM" {LIST; RETURNVAL(PROGRAM);}
"program" {LIST; RETURNVAL(PROGRAM);}
"MODULE" {LIST; RETURNVAL(MODULE);}
"module" {LIST; RETURNVAL(MODULE);}
"INPUT" {LIST; RETURNVAL(INPUT);}
"input" {LIST; RETURNVAL(INPUT);}
"OUTPUT" {LIST; RETURNVAL(OUTPUT);}
"output" {LIST; RETURNVAL(OUTPUT);}
"INOUT" {LIST; RETURNVAL(INPUT);}
"inout" {LIST; RETURNVAL(INPUT);}
"STATIC" {LIST; RETURNVAL(STATIC);}
"static" {LIST; RETURNVAL(STATIC);}
"CONST" {LIST; RETURNVAL(CONST);}
"const" {LIST; RETURNVAL(CONST);}
"BUFFER" {LIST; RETURNVAL(BUFFER);}
"buffer" {LIST; RETURNVAL(BUFFER);}
"PARAMETER" {LIST; RETURNVAL(PARAMETER);}
"parameter" {LIST; RETURNVAL(PARAMETER);}
"THREAD" {LIST; RETURNVAL(THREAD);}
"thread" {LIST; RETURNVAL(THREAD);}
"PARALLEL" {LIST; RETURNVAL(PARALLEL);}
"parallel" {LIST; RETURNVAL(PARALLEL);}
"IF" {LIST; RETURNVAL(IF);}
"if" {LIST; RETURNVAL(IF);}
"ELSEIF" {LIST; RETURNVAL(ELSEIF);}
"elseif" {LIST; RETURNVAL(ELSEIF);}
"ELSE" {LIST; RETURNVAL(ELSE);}
"else" {LIST; RETURNVAL(ELSE);}
"WHILE" {LIST; RETURNVAL(WHILE);}
"while" {LIST; RETURNVAL(WHILE);}
"FOR" {LIST; RETURNVAL(FOR);}
"for" {LIST; RETURNVAL(FOR);}
"<" {LIST; RETURNVAL(LT);}
"<=" {LIST; RETURNVAL(LEQ);}
">" {LIST; RETURNVAL(GT);}
">=" {LIST; RETURNVAL(GEQ);}
"==" {LIST; RETURNVAL(EQEQ);}
"!=" {LIST; RETURNVAL(NEQ);}
"++" {LIST; RETURNVAL(PLUSPLUS);}
"--" {LIST; RETURNVAL(MINUSMINUS);}
"+=" {LIST; RETURNVAL(PLUSEQ);}
"-=" {LIST; RETURNVAL(MINUSEQ);}
\{ {LIST; RETURNVAL(LBRACE);}
\} {LIST; RETURNVAL(RBRACE);}
\, {LIST; RETURNVAL(COMMA);}
\; {LIST; RETURNVAL(SEMICOLON);}
\= {LIST; RETURNVAL(EQUALS);}
\( {LIST; RETURNVAL(LPAREN);}
\) {LIST; RETURNVAL(RPAREN);}
{id} {LIST; yylval.c = yytext; return(IDENTIFIER);}
{string} {LIST; yylval.c = yytext; return(STRING);}
{float1} {LIST; yylval.f = atof(yytext); return(FLOAT);}
{float2} {LIST; yylval.f = atof(yytext); return(FLOAT);}
{float3} {LIST; yylval.f = atof(yytext); return(FLOAT);}
{int} {LIST; yylval.i = atoi(yytext); return(INTEGER);}
"//"[^\n]* {}
"\n" {MAKELIST; line++;}
[ \t]+ {LIST; /* eat white space */ }
. {LIST; fprintf(stderr,"scanner error bad char %s\n",yytext);}
%%