mirror of
https://github.com/YosysHQ/yosys
synced 2025-06-24 14:53:42 +00:00
Added "autoidx" statement to ilang file format
This commit is contained in:
parent
e035f1d886
commit
4147b55c23
3 changed files with 24 additions and 26 deletions
|
@ -31,7 +31,6 @@
|
|||
|
||||
#include "kernel/rtlil.h"
|
||||
#include "parser.tab.h"
|
||||
void update_autoidx(const char *p);
|
||||
|
||||
%}
|
||||
|
||||
|
@ -44,6 +43,7 @@ void update_autoidx(const char *p);
|
|||
|
||||
%%
|
||||
|
||||
"autoidx" { return TOK_AUTOIDX; }
|
||||
"module" { return TOK_MODULE; }
|
||||
"attribute" { return TOK_ATTRIBUTE; }
|
||||
"parameter" { return TOK_PARAMETER; }
|
||||
|
@ -76,11 +76,11 @@ void update_autoidx(const char *p);
|
|||
[a-z]+ { return TOK_INVALID; }
|
||||
|
||||
"\\"[^ \t\r\n]+ { rtlil_frontend_ilang_yylval.string = strdup(yytext); return TOK_ID; }
|
||||
"$"[^ \t\r\n]+ { rtlil_frontend_ilang_yylval.string = strdup(yytext); update_autoidx(yytext); return TOK_ID; }
|
||||
"$"[^ \t\r\n]+ { rtlil_frontend_ilang_yylval.string = strdup(yytext); return TOK_ID; }
|
||||
"."[0-9]+ { rtlil_frontend_ilang_yylval.string = strdup(yytext); return TOK_ID; }
|
||||
|
||||
[0-9]+'[01xzm-]* { rtlil_frontend_ilang_yylval.string = strdup(yytext); return TOK_VALUE; }
|
||||
[0-9]+ { rtlil_frontend_ilang_yylval.integer = atoi(yytext); return TOK_INT; }
|
||||
-?[0-9]+ { rtlil_frontend_ilang_yylval.integer = atoi(yytext); return TOK_INT; }
|
||||
|
||||
\" { BEGIN(STRING); }
|
||||
<STRING>\\. { yymore(); }
|
||||
|
@ -124,27 +124,6 @@ void update_autoidx(const char *p);
|
|||
|
||||
%%
|
||||
|
||||
void update_autoidx(const char *p)
|
||||
{
|
||||
if (*p != '$')
|
||||
return;
|
||||
|
||||
while (*p) {
|
||||
if (*(p++) != '$')
|
||||
continue;
|
||||
if ('0' <= *p && *p <= '9') {
|
||||
const char *q = p;
|
||||
while ('0' <= *q && *q <= '9')
|
||||
q++;
|
||||
if ((q - p) < 10) {
|
||||
int idx = atoi(p);
|
||||
if (idx >= RTLIL::autoidx)
|
||||
RTLIL::autoidx = idx+1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// this is a hack to avoid the 'yyinput defined but not used' error msgs
|
||||
void *rtlil_frontend_ilang_avoid_input_warnings() {
|
||||
return (void*)&yyinput;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue