Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

248 lines
6.4 KiB

%option yylineno
%{
/*
This file must be translated to C and modified to build everywhere.
Run flex like this:
flex -olex.yy.c vtkParse.l
Modify lex.yy.c:
- remove yyunput function
- remove TABs
*/
/* We do not care of interactive mode */
#define YY_NEVER_INTERACTIVE 1
#define YY_NO_UNPUT 1
/* Do not include unistd.h in generated source. */
#define YY_NO_UNISTD_H
/* Skip declaring this function. It is a macro. */
#define YY_SKIP_YYWRAP
#ifdef _WIN32
#pragma warning ( disable : 4127 )
#pragma warning ( disable : 4131 )
#pragma warning ( disable : 4244 )
#pragma warning ( disable : 4251 )
#pragma warning ( disable : 4267 )
#pragma warning ( disable : 4305 )
#pragma warning ( disable : 4309 )
#pragma warning ( disable : 4706 )
#pragma warning ( disable : 4786 )
#endif
%}
%%
"/*" { int c1 = 0, c2 = input();
for (;;)
{
if (c2 == 0)
{
fprintf(yyout,"Cannot find closing comment.\n");
break;
}
if (c1 == '*' && c2 == '/') break;
c1 = c2; c2 = input();
}
};
^[\t ]*"//BTX".*$ {
int c1 = 0, c2 = 0, c3 = 0, c4 = 0, c5 = input();
for (;;)
{
if (c5 == 0)
{
fprintf(yyout,"Cannot find matching //ETX.\n");
break;
}
if (c1 == '/' && c2 == '/' && c3 == 'E' && c4 == 'T' && c5 == 'X') break;
c1 = c2; c2 = c3; c3 = c4; c4 = c5; c5 = input();
}
for (;;)
{
if (c5 == 0) break;
if (c5 == '\n') break;
c5 = input();
}
};
^[\t ]*"// .NAME".* {
int pos = 1;
while (yytext[pos-1] != 'M' || yytext[pos] != 'E')
{
pos++;
}
yylval.str = (char *)malloc(yyleng + 1 - pos - 1);
memcpy(yylval.str,yytext+ pos + 1,yyleng - pos - 1);
yylval.str[yyleng - pos - 1] = '\0';
data.NameComment = vtkstrdup(yylval.str);
};
^[\t ]*"// .SECTION Description".* {
CommentState = 1;
data.Description = (char*)malloc(100000);
data.Description[0] = '\0';
};
^[\t ]*"// .SECTION See Also".* {
CommentState = 3;
data.SeeAlso = (char*)malloc(100000);
data.SeeAlso[0] = '\0';
};
^[\t ]*"// .SECTION see also".* {
CommentState = 3;
data.SeeAlso = (char*)malloc(100000);
data.SeeAlso[0] = '\0';
};
^[\t ]*"// .SECTION Caveats".* {
CommentState = 4;
data.Caveats = (char*)malloc(100000);
data.Caveats[0] = '\0';
};
^[\t ]*"// Description:".* {
CommentState = 2;
HaveComment = 1;
CommentText[0] = '\0';
};
^[\t ]*[\r\n] {
HaveComment = 0;
CommentState = 0;
};
^[\t ]*"//".* {
int pos = 1;
while (yytext[pos-1] != '/' || yytext[pos] != '/') pos++;
yylval.str = (char *)malloc(yyleng + 1 - pos - 1 + 1);
memcpy(yylval.str,yytext+ pos + 1,yyleng - pos - 1);
yylval.str[yyleng - pos - 1] = '\n';
yylval.str[yyleng - pos] = '\0';
switch (CommentState)
{
case 1: strcat(data.Description,yylval.str); break;
case 2: strcat(CommentText,yylval.str); break;
case 3: strcat(data.SeeAlso,yylval.str); break;
case 4: strcat(data.Caveats,yylval.str); break;
}
};
"//".* ;
[A-Za-z0-9_]*"_EXPORT" ;
"vtkNotUsed"[ ]*"("[^)]*")" ;
"["[\t\n\r\ ]*[1-9][0-9]*[\t\n\r ]*"]" {
sscanf(yytext+1,"%d",&yylval.integer); return(ARRAY_NUM);}
"class "[\t\n\r ]*"vtk"[a-zA-Z0-9_]*[\t\n\r ]*";" return(CLASS_REF);
"void"[\t\n\r ]*"("[\t\n\r ]*"*"[a-zA-Z0-9_]*[\t\n\r ]*")"[\t\n\r ]*"("[\t\n\r ]*"void"[\t\n\r ]*"*"[\n\t ]*")" return(VAR_FUNCTION);
"short"[\t\n\r ]*"int" return(SHORT);
"long"[\t\n\r ]*"int" return(LONG);
"int"[\t\n\r ]*"short" return(SHORT);
"int"[\t\n\r ]*"long" return(LONG);
"long"[\t\n\r ]*"long" return(LONG_LONG);
"int"[\t\n\r ]*"long"[\t\n\r ]*"long" return(LONG_LONG);
"long"[\t\n\r ]*"long"[\t\n\r ]*"int" return(LONG_LONG);
"__int64" return(INT64__);
"signed"[\t\n\r ]*"char" return(SIGNED_CHAR);
"class" return(CLASS);
"public" return(PUBLIC);
"private" return(PRIVATE);
"protected" return(PROTECTED);
"int" return(INT);
"float" return(FLOAT);
"short" return(SHORT);
"long" return(LONG);
"double" return(DOUBLE);
"void" return(VOID);
"char" return(CHAR);
"virtual" return(VIRTUAL);
"const" return(CONST);
"operator" return(OPERATOR);
"unsigned" return(UNSIGNED);
"friend" return(FRIEND);
"static" return(STATIC);
"vtkFloatingPointType" return(DOUBLE);
"vtkIdType" return(IdType);
"vtkStdString" return(StdString);
"vtkSetMacro" return(SetMacro);
"vtkGetMacro" return(GetMacro);
"vtkSetStringMacro" return(SetStringMacro);
"vtkGetStringMacro" return(GetStringMacro);
"vtkSetClampMacro" return(SetClampMacro);
"vtkSetObjectMacro" return(SetObjectMacro);
"vtkSetReferenceCountedObjectMacro" return(SetReferenceCountedObjectMacro);
"vtkGetObjectMacro" return(GetObjectMacro);
"vtkBooleanMacro" return(BooleanMacro);
"vtkSetVector2Macro" return(SetVector2Macro);
"vtkSetVector3Macro" return(SetVector3Macro);
"vtkSetVector4Macro" return(SetVector4Macro);
"vtkSetVector6Macro" return(SetVector6Macro);
"vtkGetVector2Macro" return(GetVector2Macro);
"vtkGetVector3Macro" return(GetVector3Macro);
"vtkGetVector4Macro" return(GetVector4Macro);
"vtkGetVector6Macro" return(GetVector6Macro);
"vtkSetVectorMacro" return(SetVectorMacro);
"vtkGetVectorMacro" return(GetVectorMacro);
"vtkViewportCoordinateMacro" return(ViewportCoordinateMacro);
"vtkWorldCoordinateMacro" return(WorldCoordinateMacro);
"vtkTypeMacro" return(TypeMacro);
"vtkTypeRevisionMacro" return(TypeMacro);
"VTK_LEGACY" return(VTK_LEGACY);
[0-9]+ { sscanf(yytext,"%d",&yylval.integer); return(NUM);}
\"[^\"]+\" {
yylval.str = vtkstrdup(yytext + 1);
yylval.str[strlen(yytext)-2] = '\0';
return(STRING);
}
^"#"[^\n]*$ ;
"vtk"[0-9a-zA-Z_]* { yylval.str = (char *)malloc(yyleng + 1);
memcpy(yylval.str,yytext,yyleng);
yylval.str[yyleng] = '\0';
return(VTK_ID);
}
[a-zA-Z_][0-9a-zA-Z_]* { yylval.str = (char *)malloc(yyleng + 1);
memcpy(yylval.str,yytext,yyleng);
yylval.str[yyleng] = '\0';
return(ID);
}
[\t\n\r ] ;
"[" return(yytext[0]);
"]" return(yytext[0]);
[~{}():;*=,&.\-] { return(yytext[0]); }
. return(OTHER);
%%