add oversampler

This commit is contained in:
2024-05-24 13:28:31 +02:00
parent e4a4a661a0
commit 989dba5a6b
484 changed files with 313937 additions and 0 deletions

View File

@@ -0,0 +1,113 @@
%option reentrant
%option prefix="nseel"
%option bison-bridge
%option bison-locations
%option noyywrap
%option never-interactive
%option batch
%option nounput
%{
#include <stdlib.h>
#include <stdio.h>
#define YY_USER_ACTION yylloc->first_line = yylineno;
#define YY_FATAL_ERROR(msg) { ((struct yyguts_t*)yyscanner)->yyextra_r->errVar=1; }
#define YY_INPUT(buf,result,max_size) { (result) = nseel_gets(yyextra,(buf),max_size); }
#define YY_EXTRA_TYPE compileContext *
#undef YY_BUF_SIZE
#define YY_BUF_SIZE (NSEEL_MAX_VARIABLE_NAMELEN*2)
#undef YY_READ_BUF_SIZE
#define YY_READ_BUF_SIZE (NSEEL_MAX_VARIABLE_NAMELEN)
#include "y.tab.h"
#ifdef _WIN32
#define YY_NO_UNISTD_H
#endif
#include "ns-eel-int.h"
int nseel_gets(compileContext *ctx, char *buf, size_t sz);
#define PARSENUM *yylval = nseel_translate(yyextra,yytext, 0); return VALUE;
#define EEL_ACTION(x) return x;
#ifdef stdin
#undef stdin
#endif
#define stdin (0)
#ifdef stdout
#undef stdout
#endif
#define stdout (0)
static int g_fake_errno;
#ifdef errno
#undef errno
#endif
#define errno g_fake_errno
static void comment(yyscan_t yyscanner);
%}
%%
[0-9]+\.?[0-9]* PARSENUM;
\.[0-9]+ PARSENUM;
0[xX][0-9a-fA-F]* PARSENUM;
\$[xX][0-9a-fA-F]* PARSENUM;
\$\~[0-9]* PARSENUM;
\$[Ee] PARSENUM;
\$[Pp][Ii] PARSENUM;
\$[Pp][Hh][Ii] PARSENUM;
\$\'.\' PARSENUM;
\#[a-zA-Z0-9\._]* *yylval = nseel_translate(yyextra,yytext, 0); return STRING_IDENTIFIER;
\<\< return TOKEN_SHL;
\>\> return TOKEN_SHR;
\<= return TOKEN_LTE;
\>= return TOKEN_GTE;
== return TOKEN_EQ;
=== return TOKEN_EQ_EXACT;
\!= return TOKEN_NE;
\!== return TOKEN_NE_EXACT;
\&\& return TOKEN_LOGICAL_AND;
\|\| return TOKEN_LOGICAL_OR;
\+= return TOKEN_ADD_OP;
-= return TOKEN_SUB_OP;
%= return TOKEN_MOD_OP;
\|= return TOKEN_OR_OP;
\&= return TOKEN_AND_OP;
\~= return TOKEN_XOR_OP;
\/= return TOKEN_DIV_OP;
\*= return TOKEN_MUL_OP;
\^= return TOKEN_POW_OP;
[a-zA-Z_][a-zA-Z0-9\._]* &yylval = nseel_createCompiledValuePtr((compileContext *)yyextra, NULL, yytext); return IDENTIFIER;
[ \t\r\n]+ /* whitespace */
\/\/.*$ /* comment */
"/*" { comment(yyscanner); }
. return (int)yytext[0];
%%
static void comment(yyscan_t yyscanner)
{
int c,lc=0;
while (0 != (c = input(yyscanner)))
{
if (c == '/' && lc == '*') return;
lc = c;
}
// end of file, ignore for now
}