From c8450b94be661a6d9d9d2718cc16befa4a5abae9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Zrounba?= Date: Tue, 14 Nov 2023 17:45:45 +0000 Subject: Improve parsing - Make multi-file more robust - Error reporting is more accurate (shows file:line and prints offending string) - Allow `.include` directives in subcircuits --- src/parser/parse_tree.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/parser/parse_tree.cpp') diff --git a/src/parser/parse_tree.cpp b/src/parser/parse_tree.cpp index 76c67b0..bbafeb8 100644 --- a/src/parser/parse_tree.cpp +++ b/src/parser/parse_tree.cpp @@ -1,6 +1,7 @@ #include "parse_tree.h" #include "parse_directive.h" #include "parse_element.h" +#include "parser_state.h" #include "specs.h" #include @@ -310,9 +311,10 @@ ParseTree::ParseTree(const string &name, const ParseSubcircuit &subcircuit, cons } yyscan_t scanner; + ParserState *parser_state = new ParserState; YY_BUFFER_STATE buf; - yylex_init(&scanner); + yylex_init_extra(parser_state, &scanner); buf = yy_scan_string(subcircuit.netlist.c_str(), scanner); yy_switch_to_buffer(buf, scanner); @@ -320,6 +322,7 @@ ParseTree::ParseTree(const string &name, const ParseSubcircuit &subcircuit, cons //yy_delete_buffer(buf, scanner); yylex_destroy(scanner); + delete parser_state; // Return if unsuccessful if (parsing_result != 0) { -- cgit v1.2.3