mirror of
https://git.osgeo.org/gitea/postgis/postgis
synced 2024-10-24 17:12:35 +00:00
Added very basic flex files for raster MapAlgebra implementation. The file
'ma_lexer_only' is for testing only the lexer, without the parser git-svn-id: http://svn.osgeo.org/postgis/trunk@6424 b70326c6-7e19-0410-871a-916f4a2858ee
This commit is contained in:
parent
578d0ac9a0
commit
b07b512790
61
raster/ma_lexer.l
Normal file
61
raster/ma_lexer.l
Normal file
|
@ -0,0 +1,61 @@
|
|||
%{
|
||||
|
||||
/* MapAlgebra lexer */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "ma_parser.tab.h"
|
||||
|
||||
int nlines = 0;
|
||||
|
||||
%}
|
||||
|
||||
DIGIT [0-9]
|
||||
ID [a-zA-Z][a-zA-Z0-9_]*
|
||||
|
||||
%%
|
||||
|
||||
{DIGIT}+("."{DIGIT}+)? {//printf("Found TKN_REAL: %d\n", atoi(yytext));
|
||||
yylval.real = atof(yytext);
|
||||
return TKN_REAL;}
|
||||
"=" {//printf("Found TKN_ASSIGN: %s\n",yytext);
|
||||
return TKN_ASSIGN;}
|
||||
";" {//printf("Found TKN_SEMICOLON: %s\n",yytext);
|
||||
return TKN_SEMICOLON;}
|
||||
"*" {//printf("Found TKN_PROD: %s\n",yytext);
|
||||
return TKN_PROD;}
|
||||
"/" {//printf("Found TKN_DIV: %s\n",yytext);
|
||||
return TKN_DIV;}
|
||||
"+" {//printf("Found TKN_PLUS: %s\n",yytext);
|
||||
return TKN_PLUS;}
|
||||
"-" {//printf("Found TKN_MINUS: %s\n",yytext);}
|
||||
return TKN_MINUS;
|
||||
"(" {//printf("Found TKN_LFT_PAR: %s\n",yytext);
|
||||
return TKN_LFT_PAR;}
|
||||
")" {//printf("Found TKN_RGT_PAR: %s\n",yytext);
|
||||
return TKN_RGT_PAR;}
|
||||
"cos" {//printf("Found TKN_COS: %s\n",yytext);
|
||||
return TKN_COS;}
|
||||
"sin" {//printf("Found TKN_SIN: %s\n",yytext);
|
||||
return TKN_SIN;}
|
||||
"\n" {nlines++;}
|
||||
{ID} {//printf("Found TKN_ID: %s\n", yytext);
|
||||
return TKN_ID;}
|
||||
.
|
||||
|
||||
%%
|
||||
|
||||
void main(int argc, char **argv)
|
||||
{
|
||||
if (argc > 1)
|
||||
yyin = fopen(argv[1], "rt");
|
||||
else
|
||||
yyin = stdin;
|
||||
yylex();
|
||||
printf("%d lines analyzed\n", nlines);
|
||||
}
|
||||
|
||||
|
||||
/* To compile:
|
||||
flex ma_lexer.l
|
||||
gcc lex.yy.c -o ma_lexer -lfl -lm
|
||||
*/
|
47
raster/ma_lexer_only.l
Normal file
47
raster/ma_lexer_only.l
Normal file
|
@ -0,0 +1,47 @@
|
|||
%{
|
||||
|
||||
/* MapAlgebra lexer */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int nlines = 0;
|
||||
|
||||
%}
|
||||
|
||||
DIGIT [0-9]
|
||||
ID [a-zA-Z][a-zA-Z0-9_]*
|
||||
|
||||
%%
|
||||
|
||||
{DIGIT}+ {printf("Found TKN_INTEGER: %d\n", atoi(yytext));}
|
||||
{DIGIT}+"."{DIGIT}+ {printf("Found TKN_REAL: %d\n", atoi(yytext));}
|
||||
"=" {printf("Found TKN_ASSIGN: %s\n",yytext);}
|
||||
";" {printf("Found TKN_SEMICOLON: %s\n",yytext);}
|
||||
"*" {printf("Found TKN_PROD: %s\n",yytext);}
|
||||
"/" {printf("Found TKN_DIV: %s\n",yytext);}
|
||||
"+" {printf("Found TKN_PLUS: %s\n",yytext);}
|
||||
"-" {printf("Found TKN_MINUS: %s\n",yytext);}
|
||||
"(" {printf("Found TKN_LFT_PAR: %s\n",yytext);}
|
||||
")" {printf("Found TKN_RGT_PAR: %s\n",yytext);}
|
||||
"cos" {printf("Found TKN_COS: %s\n",yytext);}
|
||||
"sin" {printf("Found TKN_SIN: %s\n",yytext);}
|
||||
"\n" {nlines++;}
|
||||
{ID} {printf("Found TKN_ID: %s\n", yytext);}
|
||||
.
|
||||
|
||||
%%
|
||||
|
||||
void main(int argc, char **argv)
|
||||
{
|
||||
if (argc > 1)
|
||||
yyin = fopen(argv[1], "rt");
|
||||
else
|
||||
yyin = stdin;
|
||||
yylex();
|
||||
printf("%d lines analyzed\n", nlines);
|
||||
}
|
||||
|
||||
/* To compile:
|
||||
flex ma_lexer_only.l
|
||||
gcc lex.yy.c -o ma_lexer_only -lfl -lm
|
||||
*/
|
Loading…
Reference in a new issue