mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-13 04:28:18 +00:00
preprocessor: do not destroy double slash escaped identifiers
The preprocessor currently destroys double slash containing escaped identifiers (for example \a//b ). This is due to next_token trying to convert single line comments (//) into /* */ comments. This then leads to an unintuitive error message like this: ERROR: syntax error, unexpected '*' This patch fixes the error by recognizing escaped identifiers and returning them as single token. It also adds a testcase.
This commit is contained in:
parent
477eeefd9b
commit
4cd2f03e36
|
@ -142,6 +142,16 @@ static std::string next_token(bool pass_newline = false)
|
||||||
return_char(ch);
|
return_char(ch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (ch == '\\')
|
||||||
|
{
|
||||||
|
while ((ch = next_char()) != 0) {
|
||||||
|
if (ch < 33 || ch > 126) {
|
||||||
|
return_char(ch);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
token += ch;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (ch == '/')
|
else if (ch == '/')
|
||||||
{
|
{
|
||||||
if ((ch = next_char()) != 0) {
|
if ((ch = next_char()) != 0) {
|
||||||
|
|
19
tests/verilog/doubleslash.ys
Normal file
19
tests/verilog/doubleslash.ys
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
read_verilog -sv <<EOT
|
||||||
|
module doubleslash
|
||||||
|
(input logic a,
|
||||||
|
input logic b,
|
||||||
|
output logic z);
|
||||||
|
|
||||||
|
logic \a//b ;
|
||||||
|
|
||||||
|
assign \a//b = a & b;
|
||||||
|
assign z = ~\a//b ;
|
||||||
|
|
||||||
|
endmodule : doubleslash
|
||||||
|
EOT
|
||||||
|
|
||||||
|
hierarchy
|
||||||
|
proc
|
||||||
|
opt -full
|
||||||
|
|
||||||
|
write_verilog doubleslash.v
|
Loading…
Reference in a new issue