Skip to content

Commit

Permalink
Merge pull request chipsalliance#1850 from chipsalliance/alainmarcel-…
Browse files Browse the repository at this point in the history
…patch-1

 grammar opt
  • Loading branch information
alaindargelas authored Sep 13, 2021
2 parents 41d7414 + 60e16eb commit f3573b5
Show file tree
Hide file tree
Showing 8 changed files with 1,741 additions and 2,262 deletions.
32 changes: 16 additions & 16 deletions grammar/SV3_1aParser.g4
Original file line number Diff line number Diff line change
Expand Up @@ -3184,22 +3184,22 @@ binary_module_path_operator
;

number
: Integral_number # Number_Integral
| Real_number # Number_Real
| ONE_TICK_b0 # Number_1Tickb0
| ONE_TICK_b1 # Number_1Tickb1
| ONE_TICK_B0 # Number_1TickB0
| ONE_TICK_B1 # Number_1TickB1
| TICK_b0 # Number_Tickb0
| TICK_b1 # Number_Tickb1
| TICK_B0 # Number_TickB0
| TICK_B1 # Number_TickB1
| TICK_0 # Number_Tick0
| TICK_1 # Number_Tick1
| ONE_TICK_bx # Number_1Tickbx
| ONE_TICK_bX # Number_1TickbX
| ONE_TICK_Bx # Number_1TickBx
| ONE_TICK_BX # Number_1TickBX
: Integral_number
| Real_number
| ONE_TICK_b0
| ONE_TICK_b1
| ONE_TICK_B0
| ONE_TICK_B1
| TICK_b0
| TICK_b1
| TICK_B0
| TICK_B1
| TICK_0
| TICK_1
| ONE_TICK_bx
| ONE_TICK_bX
| ONE_TICK_Bx
| ONE_TICK_BX
;


Expand Down
2 changes: 1 addition & 1 deletion src/CommandLine/CommandLineParser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ static std::string defaultLogFileName = "surelog.log";
// !!! Update this number when the grammar changes !!!
// Or when the cache schema changes
// This will render the cache invalid
std::string CommandLineParser::m_versionNumber = "1.12";
std::string CommandLineParser::m_versionNumber = "1.13";

static const std::vector<std::string> copyright = {
"Copyright (c) 2017-2021 Alain Dargelas,",
Expand Down
88 changes: 57 additions & 31 deletions src/SourceCompile/SV3_1aTreeShapeListener.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -737,13 +737,6 @@ void SV3_1aTreeShapeListener::enterSurelog_macro_not_defined(
logError(ErrorDefinition::PA_UNKOWN_MACRO, ctx, text);
}

void SV3_1aTreeShapeListener::exitNumber_Integral(
SV3_1aParser::Number_IntegralContext *ctx) {
auto number = ctx->Integral_number();
addVObject(ctx, number->getText(),
VObjectType::slIntConst); // TODO: Octal, Hexa...
}

void SV3_1aTreeShapeListener::exitInitVal_Integral(
SV3_1aParser::InitVal_IntegralContext *ctx) {
auto number = ctx->Integral_number();
Expand All @@ -758,11 +751,6 @@ void SV3_1aTreeShapeListener::exitScalar_Integral(
VObjectType::slIntConst); // TODO: Octal, Hexa...
}

void SV3_1aTreeShapeListener::exitNumber_Real(
SV3_1aParser::Number_RealContext *ctx) {
addVObject(ctx, ctx->Real_number()->getText(), VObjectType::slRealConst);
}

void SV3_1aTreeShapeListener::exitUnbased_unsized_literal(
SV3_1aParser::Unbased_unsized_literalContext *ctx) {
if (ctx->TICK_0())
Expand Down Expand Up @@ -1812,25 +1800,63 @@ void SV3_1aTreeShapeListener::exitNon_integer_type(
addVObject(ctx, VObjectType::slNonIntType_RealTime);
}

void SV3_1aTreeShapeListener::exitAlways_keyword(SV3_1aParser::Always_keywordContext * ctx) {
if (ctx->ALWAYS_COMB()) {
addVObject(ctx, VObjectType::slAlwaysKeywd_Comb);
} else if (ctx->ALWAYS_FF()) {
addVObject(ctx, VObjectType::slAlwaysKeywd_FF);
} else if (ctx->ALWAYS_LATCH()) {
addVObject(ctx, VObjectType::slAlwaysKeywd_Latch);
} else if (ctx->ALWAYS()) {
addVObject(ctx, VObjectType::slAlwaysKeywd_Always);
}
}

void SV3_1aTreeShapeListener::exitEdge_identifier(SV3_1aParser::Edge_identifierContext * ctx) {
if (ctx->POSEDGE())
addVObject (ctx, VObjectType::slEdge_Posedge);
else if (ctx->NEGEDGE())
addVObject (ctx, VObjectType::slEdge_Negedge);
else if (ctx->EDGE())
addVObject (ctx, VObjectType::slEdge_Edge);
void SV3_1aTreeShapeListener::exitAlways_keyword(
SV3_1aParser::Always_keywordContext *ctx) {
if (ctx->ALWAYS_COMB()) {
addVObject(ctx, VObjectType::slAlwaysKeywd_Comb);
} else if (ctx->ALWAYS_FF()) {
addVObject(ctx, VObjectType::slAlwaysKeywd_FF);
} else if (ctx->ALWAYS_LATCH()) {
addVObject(ctx, VObjectType::slAlwaysKeywd_Latch);
} else if (ctx->ALWAYS()) {
addVObject(ctx, VObjectType::slAlwaysKeywd_Always);
}
}

void SV3_1aTreeShapeListener::exitEdge_identifier(
SV3_1aParser::Edge_identifierContext *ctx) {
if (ctx->POSEDGE())
addVObject(ctx, VObjectType::slEdge_Posedge);
else if (ctx->NEGEDGE())
addVObject(ctx, VObjectType::slEdge_Negedge);
else if (ctx->EDGE())
addVObject(ctx, VObjectType::slEdge_Edge);
}

void SV3_1aTreeShapeListener::exitNumber(SV3_1aParser::NumberContext *ctx) {
if (ctx->Integral_number()) {
auto number = ctx->Integral_number();
addVObject(ctx, number->getText(), VObjectType::slIntConst);
} else if (ctx->Real_number())
addVObject(ctx, ctx->Real_number()->getText(), VObjectType::slRealConst);
else if (ctx->ONE_TICK_b0())
addVObject(ctx, VObjectType::slNumber_1Tickb0);
else if (ctx->ONE_TICK_b1())
addVObject(ctx, VObjectType::slNumber_1Tickb1);
else if (ctx->ONE_TICK_B0())
addVObject(ctx, VObjectType::slNumber_1TickB0);
else if (ctx->ONE_TICK_B1())
addVObject(ctx, VObjectType::slNumber_1TickB1);
else if (ctx->TICK_b0())
addVObject(ctx, VObjectType::slNumber_Tickb0);
else if (ctx->TICK_b1())
addVObject(ctx, VObjectType::slNumber_Tickb1);
else if (ctx->TICK_B0())
addVObject(ctx, VObjectType::slNumber_TickB0);
else if (ctx->TICK_B1())
addVObject(ctx, VObjectType::slNumber_TickB1);
else if (ctx->TICK_0())
addVObject(ctx, VObjectType::slNumber_Tick0);
else if (ctx->TICK_1())
addVObject(ctx, VObjectType::slNumber_Tick1);
else if (ctx->ONE_TICK_bx())
addVObject(ctx, VObjectType::slNumber_1Tickbx);
else if (ctx->ONE_TICK_bX())
addVObject(ctx, VObjectType::slNumber_1TickbX);
else if (ctx->ONE_TICK_Bx())
addVObject(ctx, VObjectType::slNumber_1TickBx);
else if (ctx->ONE_TICK_BX())
addVObject(ctx, VObjectType::slNumber_1TickbX);
}

} // namespace SURELOG
17 changes: 17 additions & 0 deletions src/SourceCompile/generate_parser_listener.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,23 @@ set TYPES(slEdge_Posedge) 1
set TYPES(slEdge_Negedge) 1
set TYPES(slEdge_Edge) 1
set TYPES(slNumber_Integral) 1
set TYPES(slNumber_Real) 1
set TYPES(slNumber_1Tickb0) 1
set TYPES(slNumber_1Tickb1) 1
set TYPES(slNumber_1TickB0) 1
set TYPES(slNumber_1TickB1) 1
set TYPES(slNumber_Tickb0) 1
set TYPES(slNumber_Tickb1) 1
set TYPES(slNumber_TickB0) 1
set TYPES(slNumber_TickB1) 1
set TYPES(slNumber_Tick0) 1
set TYPES(slNumber_Tick1) 1
set TYPES(slNumber_1Tickbx) 1
set TYPES(slNumber_1TickbX) 1
set TYPES(slNumber_1TickBx) 1
set TYPES(slNumber_1TickBX) 1
set TYPES(slIntegerAtomType_Byte) 1
set TYPES(slIntegerAtomType_Shortint) 1
set TYPES(slIntegerAtomType_Int) 1
Expand Down
Loading

0 comments on commit f3573b5

Please sign in to comment.