81 lines
1.5 KiB
Plaintext
81 lines
1.5 KiB
Plaintext
/* Lex spesification for geo2bog */
|
|
%option noyywrap
|
|
%o 4000
|
|
%{
|
|
#define YYLEX
|
|
|
|
#include "globals.h"
|
|
|
|
|
|
int lineno;
|
|
|
|
char tokenString[MAXTOKENLEN+1];
|
|
|
|
%}
|
|
|
|
digit [0-9]
|
|
nat {digit}+
|
|
signedNat ("+"|"-")?{nat}
|
|
floating {signedNat}("."{nat})?(E{signedNat})?
|
|
string \"([^\"]|\\\")+\"
|
|
comment #[^\n]*
|
|
newline \n
|
|
whitespace [ \t\r]+
|
|
|
|
%%
|
|
|
|
"GEO" { return GEO; }
|
|
"Version" { return FILEVERSION; }
|
|
"Geometry" { return GEOMETRY ; }
|
|
"Name" { return NAME ; }
|
|
"VertexList" { return VERTEXLIST ; }
|
|
"NormalList" { return NORMALLIST ; }
|
|
"TexCoordList" { return TEXCOORDLIST ; }
|
|
"Vertex" { return VERTEX ; }
|
|
"Normal" { return NORMAL ; }
|
|
"TexCoord" { return TEXCOORD ; }
|
|
"Polygon" { return POLYGON ; }
|
|
"Type" { return TYPE ; }
|
|
|
|
"POLYGON" { return POLYGON ; }
|
|
"TRIANGLES" { return TRIANGLES ; }
|
|
"QUADS" { return QUADS ; }
|
|
"QUAD_STRIP" { return QUAD_STRIP ; }
|
|
"TRIANGLE_STRIP" { return TRIANGLE_STRIP ; }
|
|
"TRIANGLE_FAN" { return TRIANGLE_FAN ; }
|
|
|
|
"Material" { return MATERIAL ; }
|
|
"=" { return ASSIGN ; }
|
|
[;,()\[\]{}] { return yytext[0]; }
|
|
{nat} { return NUM; }
|
|
{floating} { return FLOAT; }
|
|
{string} { return STRING; }
|
|
{comment} { /* Skip */ }
|
|
{whitespace} { /* Skip */ }
|
|
{newline} { lineno++; }
|
|
. { return ERROR; }
|
|
%%
|
|
|
|
TokenType getToken(){
|
|
TokenType currentToken;
|
|
static int firstTime = TRUE;
|
|
|
|
if (firstTime){
|
|
firstTime = FALSE;
|
|
yyin = source;
|
|
lineno++;
|
|
}
|
|
|
|
currentToken = yylex();
|
|
strncpy(tokenString,yytext,MAXTOKENLEN);
|
|
|
|
return currentToken;
|
|
}
|
|
|
|
#if 0 /* ndef LINUX */
|
|
int yywrap(void){
|
|
return 1;
|
|
}
|
|
#endif
|
|
|