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

Method parseOneFile_

src/SourceCompile/ParseFile.cpp:283–422  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

281}
282
283bool ParseFile::parseOneFile_(PathId fileId, uint32_t lineOffset) {
284 FileSystem* const fileSystem = FileSystem::getInstance();
285 CommandLineParser* clp = getCompileSourceFile()->getCommandLineParser();
286 PreprocessFile* pp = getCompileSourceFile()->getPreprocessor();
287 Timer tmr;
288 m_antlrParserHandler = new AntlrParserHandler();
289 m_antlrParserHandler->m_clearAntlrCache = clp->lowMem();
290 if (m_sourceText.empty()) {
291 std::istream& stream = fileSystem->openForRead(fileId);
292 if (!stream.good()) {
293 Location ppfile(fileId);
294 Error err(ErrorDefinition::PA_CANNOT_OPEN_FILE, ppfile);
295 addError(err);
296 return false;
297 }
298 m_antlrParserHandler->m_inputStream = new antlr4::ANTLRInputStream(stream);
299 fileSystem->close(stream);
300 } else {
301 m_antlrParserHandler->m_inputStream =
302 new antlr4::ANTLRInputStream(m_sourceText);
303 }
304
305 m_antlrParserHandler->m_errorListener = new AntlrParserErrorListener(
306 this, false, lineOffset, fileId, clp->printExtraPpLineInfo());
307 m_antlrParserHandler->m_lexer =
308 new SV3_1aLexer(m_antlrParserHandler->m_inputStream);
309 VerilogVersion version = VerilogVersion::SystemVerilog;
310 if (pp) version = pp->getVerilogVersion();
311 if (version != VerilogVersion::NoVersion) {
312 switch (version) {
313 case VerilogVersion::NoVersion:
314 break;
315 case VerilogVersion::Verilog1995:
316 m_antlrParserHandler->m_lexer->sverilog = false;
317 break;
318 case VerilogVersion::Verilog2001:
319 m_antlrParserHandler->m_lexer->sverilog = false;
320 break;
321 case VerilogVersion::Verilog2005:
322 m_antlrParserHandler->m_lexer->sverilog = false;
323 break;
324 case VerilogVersion::SVerilog2005:
325 m_antlrParserHandler->m_lexer->sverilog = true;
326 break;
327 case VerilogVersion::Verilog2009:
328 m_antlrParserHandler->m_lexer->sverilog = true;
329 break;
330 case VerilogVersion::SystemVerilog:
331 m_antlrParserHandler->m_lexer->sverilog = true;
332 break;
333 }
334 } else {
335 std::string_view type = std::get<1>(
336 fileSystem->getType(fileId, getCompileSourceFile()->getSymbolTable()));
337 m_antlrParserHandler->m_lexer->sverilog =
338 (type == ".sv") || clp->fullSVMode() || clp->isSVFile(fileId);
339 }
340

Callers

nothing calls this directly

Calls 15

StrAppendFunction · 0.85
getPreprocessorMethod · 0.80
lowMemMethod · 0.80
printExtraPpLineInfoMethod · 0.80
getVerilogVersionMethod · 0.80
fullSVModeMethod · 0.80
isSVFileMethod · 0.80
profileMethod · 0.80
resetMethod · 0.80
elapsed_roundedMethod · 0.80
toPathMethod · 0.80
getCommandLineParserMethod · 0.45

Tested by

no test coverage detected