Liberty file newline handling is more relaxed. More descriptive error message
authorNiels Moseley <n.a.moseley@moseleyinstrumnets.com>
Sat, 3 Nov 2018 17:38:49 +0000 (18:38 +0100)
committerNiels Moseley <n.a.moseley@moseleyinstrumnets.com>
Sat, 3 Nov 2018 17:38:49 +0000 (18:38 +0100)
passes/techmap/libparse.cc

index d3b1ff02f5db0464e0a25f8bd6f2bd02c92647da..bb09117e21e1e49c2cb81fe8128d786ab2a0b29c 100644 (file)
@@ -159,7 +159,7 @@ int LibertyParser::lexer(std::string &str)
 
        if (c == '\n') {
                line++;
-               return ';';
+               return 'n';
        }
 
        // if (c >= 32 && c < 255)
@@ -175,7 +175,7 @@ LibertyAst *LibertyParser::parse()
 
        int tok = lexer(str);
 
-       while (tok == ';')
+       while (tok == 'n')
                tok = lexer(str);
 
        if (tok == '}' || tok < 0)
@@ -194,6 +194,9 @@ LibertyAst *LibertyParser::parse()
                if (tok == ';')
                        break;
 
+               if (tok == 'n')
+                       continue;
+
                if (tok == ':' && ast->value.empty()) {
                        tok = lexer(ast->value);
                        if (tok != 'v')
@@ -249,14 +252,14 @@ LibertyAst *LibertyParser::parse()
 
 void LibertyParser::error()
 {
-       log_error("Syntax error in line %d.\n", line);
+       log_error("Syntax error in liberty file on line %d.\n", line);
 }
 
 #else
 
 void LibertyParser::error()
 {
-       fprintf(stderr, "Syntax error in line %d.\n", line);
+       fprintf(stderr, "Syntax error in liberty file on line %d.\n", line);
        exit(1);
 }