summaryrefslogtreecommitdiff
path: root/frontends/verilog
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2014-11-24 14:39:24 +0100
committerClifford Wolf <clifford@clifford.at>2014-11-24 14:39:24 +0100
commit56c7d1e266cf6b2f9bfcb9f76f2ddf388ddc51ea (patch)
tree7c89e9f64d8a0ab64c13c2dfd66c2cef67420238 /frontends/verilog
parent751fb33688b06d8dab01b7f8334055d5cd227c94 (diff)
Fixed two minor bugs in constant parsing
Diffstat (limited to 'frontends/verilog')
-rw-r--r--frontends/verilog/const2ast.cc6
-rw-r--r--frontends/verilog/verilog_lexer.l4
2 files changed, 7 insertions, 3 deletions
diff --git a/frontends/verilog/const2ast.cc b/frontends/verilog/const2ast.cc
index ca995915..735bc5f9 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 5e739842..c3dfa8b9 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;
}