Modified the netgen token parser, which (unwisely) is used both for
SPICE and verilog, in spite of the syntactical differences, to account for the trick that qflow uses to replace the trailing space in a verilog backslash-escaped name with a second backslash to get a SPICE-compatible name that can be easily converted back to its original verilog name without loss of information. What this means is that verilog can read SPICE files containing verilog names (which is illegal SPICE) and verilog files containing hacked-backslash names (which is illegal verilog). This should be mostly harmless although the wisdom of it is surely questionable.
This commit is contained in:
parent
a31390f152
commit
a8576d26a9
|
|
@ -478,9 +478,19 @@ char *strdtok(char *pstring, char *delim1, char *delim2)
|
|||
/* space character becomes part of the verilog name. The remainder of the */
|
||||
/* name is parsed according to the rules of "delim2". */
|
||||
|
||||
/* Special verilog rule exception: To handle the problems caused by */
|
||||
/* translating verilog backslash-escaped names into other netlist formats */
|
||||
/* like SPICE where the convention is strictly prohibited, I have used the */
|
||||
/* convention in qflow scripts to replace the trailing space with another */
|
||||
/* backslash, so the name is effectively delimited by a pair of back- */
|
||||
/* slashes. Therefore check for a space or another backslash, whichever */
|
||||
/* comes first. That will satisfy both methods. Technically this routine */
|
||||
/* should know whether it is parsing SPICE or verilog and handle the syntax */
|
||||
/* accordingly (needs to be done). */
|
||||
|
||||
if (*s == '\\') {
|
||||
while (*s != '\0') {
|
||||
if (*s == ' ') {
|
||||
if ((*s == ' ') || (*s == '\\')) {
|
||||
s++;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue