aboutsummaryrefslogtreecommitdiffstats
path: root/frontends/verilog/lexer.l
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2014-08-21 12:43:51 +0200
committerClifford Wolf <clifford@clifford.at>2014-08-21 12:43:51 +0200
commit7bfc4ae12030648cd73686d3779c6d412a3c33c0 (patch)
treedff31bd0f98d3c75f3c394cb6f0420bb0855933f /frontends/verilog/lexer.l
parent38addd4c67905e3d1514ba839f07d94058e42560 (diff)
downloadyosys-7bfc4ae12030648cd73686d3779c6d412a3c33c0.tar.gz
yosys-7bfc4ae12030648cd73686d3779c6d412a3c33c0.tar.bz2
yosys-7bfc4ae12030648cd73686d3779c6d412a3c33c0.zip
Added Verilog/AST support for DPI functions (dpi_call() still unimplemented)
Diffstat (limited to 'frontends/verilog/lexer.l')
-rw-r--r--frontends/verilog/lexer.l22
1 files changed, 22 insertions, 0 deletions
diff --git a/frontends/verilog/lexer.l b/frontends/verilog/lexer.l
index fdb9bb02c..cf51aac82 100644
--- a/frontends/verilog/lexer.l
+++ b/frontends/verilog/lexer.l
@@ -74,6 +74,7 @@ YOSYS_NAMESPACE_END
%x STRING
%x SYNOPSYS_TRANSLATE_OFF
%x SYNOPSYS_FLAGS
+%x IMPORT_DPI
%%
@@ -274,6 +275,27 @@ supply1 { return TOK_SUPPLY1; }
<SYNOPSYS_FLAGS>. /* ignore everything else */
<SYNOPSYS_FLAGS>"*/" { BEGIN(0); }
+import[ \t\r\n]+\"(DPI|DPI-C)\"[ \t\r\n]+function[ \t\r\n]+ {
+ BEGIN(IMPORT_DPI);
+ return TOK_DPI_FUNCTION;
+}
+
+<IMPORT_DPI>[(),] {
+ return *yytext;
+}
+
+<IMPORT_DPI>[a-zA-Z_$][a-zA-Z0-9_$]* {
+ frontend_verilog_yylval.string = new std::string(std::string("\\") + yytext);
+ return TOK_ID;
+}
+
+<IMPORT_DPI>[ \t\r\n] /* ignore whitespaces */
+
+<IMPORT_DPI>";" {
+ BEGIN(0);
+ return *yytext;
+}
+
"\\"[^ \t\r\n]+ {
frontend_verilog_yylval.string = new std::string(yytext);
return TOK_ID;