3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-05-11 01:35:49 +00:00

Factor report_unexpected_token out into its own function.

This commit is contained in:
Sean Luchen 2025-03-31 10:44:23 -07:00
parent 314842d2a0
commit 0a6d9f4dc9
2 changed files with 30 additions and 40 deletions

View file

@ -332,6 +332,32 @@ int LibertyParser::lexer(std::string &str)
return c; return c;
} }
void LibertyParser::report_unexpected_token(int tok)
{
std::string eReport;
switch(tok)
{
case 'n':
error("Unexpected newline.");
break;
case '[':
case ']':
case '}':
case '{':
case '\"':
case ':':
eReport = "Unexpected '";
eReport += static_cast<char>(tok);
eReport += "'.";
error(eReport);
break;
default:
eReport = "Unexpected token: ";
eReport += static_cast<char>(tok);
error(eReport);
}
}
LibertyAst *LibertyParser::parse() LibertyAst *LibertyParser::parse()
{ {
std::string str; std::string str;
@ -350,26 +376,7 @@ LibertyAst *LibertyParser::parse()
return NULL; return NULL;
if (tok != 'v') { if (tok != 'v') {
std::string eReport; report_unexpected_token(tok);
switch(tok)
{
case 'n':
error("Unexpected newline.");
break;
case '[':
case ']':
case '}':
case '{':
case '\"':
case ':':
eReport = "Unexpected '";
eReport += static_cast<char>(tok);
eReport += "'.";
error(eReport);
break;
default:
error();
}
} }
LibertyAst *ast = new LibertyAst; LibertyAst *ast = new LibertyAst;
@ -460,25 +467,7 @@ LibertyAst *LibertyParser::parse()
continue; continue;
} }
if (tok != 'v') { if (tok != 'v') {
std::string eReport; report_unexpected_token(tok);
switch(tok)
{
case 'n':
continue;
case '[':
case ']':
case '}':
case '{':
case '\"':
case ':':
eReport = "Unexpected '";
eReport += static_cast<char>(tok);
eReport += "'.";
error(eReport);
break;
default:
error();
}
} }
ast->args.push_back(arg); ast->args.push_back(arg);
} }
@ -495,7 +484,7 @@ LibertyAst *LibertyParser::parse()
break; break;
} }
error(); report_unexpected_token(tok);
} }
return ast; return ast;

View file

@ -105,6 +105,7 @@ namespace Yosys
*/ */
int lexer(std::string &str); int lexer(std::string &str);
void report_unexpected_token(int tok);
LibertyAst *parse(); LibertyAst *parse();
void error() const; void error() const;
void error(const std::string &str) const; void error(const std::string &str) const;