diff options
author | Clifford Wolf <clifford@clifford.at> | 2014-11-24 14:39:24 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2014-11-24 14:39:24 +0100 |
commit | 56c7d1e266cf6b2f9bfcb9f76f2ddf388ddc51ea (patch) | |
tree | 7c89e9f64d8a0ab64c13c2dfd66c2cef67420238 /frontends | |
parent | 751fb33688b06d8dab01b7f8334055d5cd227c94 (diff) | |
download | yosys-56c7d1e266cf6b2f9bfcb9f76f2ddf388ddc51ea.tar.gz yosys-56c7d1e266cf6b2f9bfcb9f76f2ddf388ddc51ea.tar.bz2 yosys-56c7d1e266cf6b2f9bfcb9f76f2ddf388ddc51ea.zip |
Fixed two minor bugs in constant parsing
Diffstat (limited to 'frontends')
-rw-r--r-- | frontends/verilog/const2ast.cc | 6 | ||||
-rw-r--r-- | frontends/verilog/verilog_lexer.l | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/frontends/verilog/const2ast.cc b/frontends/verilog/const2ast.cc index ca995915f..735bc5f99 100644 --- a/frontends/verilog/const2ast.cc +++ b/frontends/verilog/const2ast.cc @@ -182,7 +182,7 @@ AstNode *VERILOG_FRONTEND::const2ast(std::string code, char case_type, bool warn if (str == endptr) len_in_bits = -1; - // The "<bits>'s?[bodh]<digits>" syntax + // The "<bits>'s?[bodhBODH]<digits>" syntax if (*endptr == '\'') { std::vector<RTLIL::State> data; @@ -194,15 +194,19 @@ AstNode *VERILOG_FRONTEND::const2ast(std::string code, char case_type, bool warn switch (*(endptr+1)) { case 'b': + case 'B': my_strtobin(data, endptr+2, len_in_bits, 2, case_type); break; case 'o': + case 'O': my_strtobin(data, endptr+2, len_in_bits, 8, case_type); break; case 'd': + case 'D': my_strtobin(data, endptr+2, len_in_bits, 10, case_type); break; case 'h': + case 'H': my_strtobin(data, endptr+2, len_in_bits, 16, case_type); break; default: diff --git a/frontends/verilog/verilog_lexer.l b/frontends/verilog/verilog_lexer.l index 5e739842b..c3dfa8b92 100644 --- a/frontends/verilog/verilog_lexer.l +++ b/frontends/verilog/verilog_lexer.l @@ -177,12 +177,12 @@ YOSYS_NAMESPACE_END "genvar" { return TOK_GENVAR; } "real" { return TOK_REAL; } -[0-9]+ { +[0-9][0-9_]* { frontend_verilog_yylval.string = new std::string(yytext); return TOK_CONST; } -[0-9]*[ \t]*\'s?[bodh][ \t\r\n]*[0-9a-fA-FzxZX?_]+ { +[0-9]*[ \t]*\'s?[bodhBODH][ \t\r\n]*[0-9a-fA-FzxZX?_]+ { frontend_verilog_yylval.string = new std::string(yytext); return TOK_CONST; } |