diff options
author | N. Engelhardt <nak@symbioticeda.com> | 2020-03-23 13:43:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-23 13:43:35 +0100 |
commit | b86905d9523767bccc9224ce33a0b51265e4950c (patch) | |
tree | f0b4b717df853f6933dab6246b1dcce3aa2c497b /frontends/verilog/verilog_lexer.l | |
parent | eb2bf340fb46c263c869ff7ce3083864f931c4fb (diff) | |
parent | 6cad865d1258cc4b9a2fc84219823004f59d5b3c (diff) | |
download | yosys-b86905d9523767bccc9224ce33a0b51265e4950c.tar.gz yosys-b86905d9523767bccc9224ce33a0b51265e4950c.tar.bz2 yosys-b86905d9523767bccc9224ce33a0b51265e4950c.zip |
Merge pull request #1803 from Grazfather/typedef
Support standard typedef grammar (Fixed)
Diffstat (limited to 'frontends/verilog/verilog_lexer.l')
-rw-r--r-- | frontends/verilog/verilog_lexer.l | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/frontends/verilog/verilog_lexer.l b/frontends/verilog/verilog_lexer.l index d22a18458..74e8dce7f 100644 --- a/frontends/verilog/verilog_lexer.l +++ b/frontends/verilog/verilog_lexer.l @@ -372,9 +372,33 @@ supply1 { return TOK_SUPPLY1; } "$signed" { return TOK_TO_SIGNED; } "$unsigned" { return TOK_TO_UNSIGNED; } +[a-zA-Z_][a-zA-Z0-9_]*::[a-zA-Z_$][a-zA-Z0-9_$]* { + // package qualifier + auto s = std::string("\\") + yytext; + if (pkg_user_types.count(s) > 0) { + // found it + yylval->string = new std::string(s); + return TOK_USER_TYPE; + } + else { + // backup before :: just return first part + size_t len = strchr(yytext, ':') - yytext; + yyless(len); + yylval->string = new std::string(std::string("\\") + yytext); + return TOK_ID; + } +} + [a-zA-Z_$][a-zA-Z0-9_$]* { - yylval->string = new std::string(std::string("\\") + yytext); - return TOK_ID; + auto s = std::string("\\") + yytext; + if (user_types.count(s) > 0) { + yylval->string = new std::string(s); + return TOK_USER_TYPE; + } + else { + yylval->string = new std::string(std::string("\\") + yytext); + return TOK_ID; + } } [a-zA-Z_$][a-zA-Z0-9_$\.]* { |