131 lines
3.3 KiB
Plaintext
131 lines
3.3 KiB
Plaintext
D [0-9]
|
|
L [a-zA-Z_]
|
|
H [a-fA-F0-9]
|
|
E [Ee][+-]?{D}+
|
|
FS (f|F|l|L)
|
|
IS (u|U|l|L)*
|
|
|
|
%{
|
|
#include <stdio.h>
|
|
#include "parser.hpp"
|
|
|
|
void count();
|
|
int check_type();
|
|
int comment();
|
|
|
|
%}
|
|
|
|
%%
|
|
"newaxis" { count(); return(NEWAXIS); }
|
|
"if" { count(); return(IF); }
|
|
"else" { count(); return(ELSE); }
|
|
"for" { count(); return(FOR); }
|
|
"void" { count(); return(VOID); }
|
|
"uint8" { count(); return(UINT8); }
|
|
"uint16" { count(); return(UINT16); }
|
|
"uint32" { count(); return(UINT32); }
|
|
"uint64" { count(); return(UINT64); }
|
|
"int8" { count(); return(INT8); }
|
|
"int16" { count(); return(INT16); }
|
|
"int32" { count(); return(INT32); }
|
|
"int64" { count(); return(INT64); }
|
|
"fp32" { count(); return(FP32); }
|
|
"fp64" { count(); return(FP64); }
|
|
"..." { count(); return(ELLIPSIS); }
|
|
"get_global_range" { count(); return GET_GLOBAL_RANGE; }
|
|
"dot" { count(); return DOT;}
|
|
|
|
{L}({L}|{D})* { count(); return(check_type()); }
|
|
|
|
0[xX]{H}+{IS}? { count(); return(CONSTANT); }
|
|
0{D}+{IS}? { count(); return(CONSTANT); }
|
|
{D}+{IS}? { count(); return(CONSTANT); }
|
|
L?'(\\.|[^\\'])+' { count(); return(CONSTANT); }
|
|
|
|
{D}+{E}{FS}? { count(); return(CONSTANT); }
|
|
{D}*"."{D}+({E})?{FS}? { count(); return(CONSTANT); }
|
|
{D}+"."{D}*({E})?{FS}? { count(); return(CONSTANT); }
|
|
|
|
L?\"(\\.|[^\\"])*\" { count(); return(STRING_LITERAL); }
|
|
|
|
">>=" { count(); return(RIGHT_ASSIGN); }
|
|
"<<=" { count(); return(LEFT_ASSIGN); }
|
|
"+=" { count(); return(ADD_ASSIGN); }
|
|
"-=" { count(); return(SUB_ASSIGN); }
|
|
"*=" { count(); return(MUL_ASSIGN); }
|
|
"/=" { count(); return(DIV_ASSIGN); }
|
|
"%=" { count(); return(MOD_ASSIGN); }
|
|
"&=" { count(); return(AND_ASSIGN); }
|
|
"^=" { count(); return(XOR_ASSIGN); }
|
|
"|=" { count(); return(OR_ASSIGN); }
|
|
">>" { count(); return(RIGHT_OP); }
|
|
"<<" { count(); return(LEFT_OP); }
|
|
"++" { count(); return(INC_OP); }
|
|
"--" { count(); return(DEC_OP); }
|
|
"->" { count(); return(PTR_OP); }
|
|
"&&" { count(); return(AND_OP); }
|
|
"||" { count(); return(OR_OP); }
|
|
"<=" { count(); return(LE_OP); }
|
|
">=" { count(); return(GE_OP); }
|
|
"==" { count(); return(EQ_OP); }
|
|
"!=" { count(); return(NE_OP); }
|
|
";" { count(); return(';'); }
|
|
("{"|"<%") { count(); return('{'); }
|
|
("}"|"%>") { count(); return('}'); }
|
|
"," { count(); return(','); }
|
|
":" { count(); return(':'); }
|
|
"=" { count(); return('='); }
|
|
"(" { count(); return('('); }
|
|
")" { count(); return(')'); }
|
|
("["|"<:") { count(); return('['); }
|
|
("]"|":>") { count(); return(']'); }
|
|
"." { count(); return('.'); }
|
|
"&" { count(); return('&'); }
|
|
"!" { count(); return('!'); }
|
|
"~" { count(); return('~'); }
|
|
"-" { count(); return('-'); }
|
|
"+" { count(); return('+'); }
|
|
"*" { count(); return('*'); }
|
|
"/" { count(); return('/'); }
|
|
"%" { count(); return('%'); }
|
|
"<" { count(); return('<'); }
|
|
">" { count(); return('>'); }
|
|
"^" { count(); return('^'); }
|
|
"|" { count(); return('|'); }
|
|
"?" { count(); return('?'); }
|
|
|
|
[ \t\v\n\f] { count(); }
|
|
. { /* ignore bad characters */ }
|
|
|
|
%%
|
|
|
|
int yywrap()
|
|
{ return(1); }
|
|
|
|
|
|
int column = 0;
|
|
|
|
void count()
|
|
{
|
|
int i;
|
|
|
|
for (i = 0; yytext[i] != '\0'; i++)
|
|
if (yytext[i] == '\n')
|
|
column = 0;
|
|
else if (yytext[i] == '\t')
|
|
column += 8 - (column % 8);
|
|
else
|
|
column++;
|
|
//ECHO;
|
|
}
|
|
|
|
void yyerror (const char *s) /* Called by yyparse on error */
|
|
{
|
|
printf ("Error: %s\n", s);
|
|
}
|
|
|
|
int check_type()
|
|
{
|
|
return(IDENTIFIER);
|
|
}
|