MCPcopy Create free account
hub / github.com/chipsalliance/Surelog / parseLibraryDefinition

Method parseLibraryDefinition

src/Library/ParseLibraryDef.cpp:109–166  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

107}
108
109bool ParseLibraryDef::parseLibraryDefinition(PathId fileId, Library* lib) {
110 FileSystem* const fileSystem = FileSystem::getInstance();
111 m_fileId = fileId;
112 std::istream& stream = fileSystem->openForRead(m_fileId);
113
114 if (!stream.good()) {
115 fileSystem->close(stream);
116
117 Location ppfile(fileId);
118 Error err(ErrorDefinition::PA_CANNOT_OPEN_FILE, ppfile);
119 m_errors->addError(err);
120 return false;
121 }
122
123 Location ppfile(fileId);
124 Error err(ErrorDefinition::PP_PROCESSING_SOURCE_FILE, ppfile);
125 m_errors->addError(err);
126 m_errors->printMessage(err, m_commandLineParser->muteStdout());
127
128 AntlrLibParserErrorListener* errorListener =
129 new AntlrLibParserErrorListener(this);
130 antlr4::ANTLRInputStream* inputStream = new antlr4::ANTLRInputStream(stream);
131 SV3_1aLexer* lexer = new SV3_1aLexer(inputStream);
132 lexer->removeErrorListeners();
133 lexer->addErrorListener(errorListener);
134 antlr4::CommonTokenStream* tokens = new antlr4::CommonTokenStream(lexer);
135 tokens->fill();
136 SV3_1aParser* parser = new SV3_1aParser(tokens);
137 parser->removeErrorListeners();
138 parser->addErrorListener(errorListener);
139 antlr4::tree::ParseTree* m_tree = parser->top_level_library_rule();
140
141 SVLibShapeListener* listener = new SVLibShapeListener(this, tokens);
142 m_fileContent = listener->getFileContent();
143
144 antlr4::tree::ParseTreeWalker::DEFAULT.walk(listener, m_tree);
145
146 if (m_fileContent->getLibrary() == nullptr) {
147 if (lib) {
148 m_fileContent->setLibrary(lib);
149 } else {
150 m_fileContent->setLibrary(m_librarySet->getLibrary(m_fileId));
151 }
152 }
153
154 if (m_commandLineParser->getDebugAstModel()) {
155 std::cout << m_fileContent->printObjects();
156 }
157
158 // delete m_tree;
159 delete parser;
160 delete tokens;
161 delete lexer;
162 delete inputStream;
163 delete listener;
164 fileSystem->close(stream);
165 return parseConfigDefinition();
166}

Callers 2

Calls 9

printMessageMethod · 0.80
muteStdoutMethod · 0.80
setLibraryMethod · 0.80
getDebugAstModelMethod · 0.80
printObjectsMethod · 0.80
closeMethod · 0.45
addErrorMethod · 0.45
getFileContentMethod · 0.45
getLibraryMethod · 0.45

Tested by

no test coverage detected