Fix grammar for assert

This commit is contained in:
elvis
2025-09-11 02:20:31 +02:00
parent 63c34981ae
commit b714643b33

View File

@ -342,7 +342,7 @@ AssertExpression: relabel::Expression = {
<unp: AssertUnaryPrefix> "(" <e: AssertExpression> ")" => <unp: AssertUnaryPrefix> "(" <e: AssertExpression> ")" =>
relabel::Expression::Unary(unp, Box::new(e)), relabel::Expression::Unary(unp, Box::new(e)),
#[precedence(level="100")] #[precedence(level="50")]
<e: AssertExpression> "." <uns: AssertUnarySuffix> => <e: AssertExpression> "." <uns: AssertUnarySuffix> =>
relabel::Expression::Unary(uns, Box::new(e)), relabel::Expression::Unary(uns, Box::new(e)),
@ -355,9 +355,6 @@ AssertExpression: relabel::Expression = {
"(" <e1: AssertExpression> "," <e2: AssertExpression> ")" => "(" <e1: AssertExpression> "," <e2: AssertExpression> ")" =>
relabel::Expression::Binary(b, Box::new(e1), Box::new(e2)), relabel::Expression::Binary(b, Box::new(e1), Box::new(e2)),
#[precedence(level="50")]
"(" <e: AssertExpression> ")" => e,
#[precedence(level="0")] #[precedence(level="0")]
<t: AssertTerm> => t, <t: AssertTerm> => t,
} }
@ -381,8 +378,12 @@ AssertTerm: relabel::Expression = {
PATH => relabel::Expression::String(<>.trim_end_matches("\"") PATH => relabel::Expression::String(<>.trim_end_matches("\"")
.trim_start_matches("\"") .trim_start_matches("\"")
.to_string()), .to_string()),
// allow arbitrary parenthesis
"(" <e: AssertExpression> ")" => e,
} }
#[inline]
AssertRange: relabel::Range = { AssertRange: relabel::Range = {
"{" <e: AssertExpression> "}" => "{" <e: AssertExpression> "}" =>
relabel::Range::IterateOverSet(Box::new(e)), relabel::Range::IterateOverSet(Box::new(e)),
@ -390,11 +391,13 @@ AssertRange: relabel::Range = {
relabel::Range::IterateInRange(Box::new(e1), Box::new(e2)), relabel::Range::IterateInRange(Box::new(e1), Box::new(e2)),
} }
#[inline]
AssertUnaryPrefix: relabel::Unary = { AssertUnaryPrefix: relabel::Unary = {
"not" => relabel::Unary::Not, "not" => relabel::Unary::Not,
"rand" => relabel::Unary::Rand, "rand" => relabel::Unary::Rand,
} }
#[inline]
AssertUnarySuffix: relabel::Unary = { AssertUnarySuffix: relabel::Unary = {
#[precedence(level="0")] #[precedence(level="0")]
"empty" => relabel::Unary::Empty, "empty" => relabel::Unary::Empty,
@ -406,6 +409,7 @@ AssertUnarySuffix: relabel::Unary = {
<q: AssertQualifier> => relabel::Unary::Qualifier(q), <q: AssertQualifier> => relabel::Unary::Qualifier(q),
} }
#[inline]
AssertQualifierRestricted: relabel::QualifierRestricted = { AssertQualifierRestricted: relabel::QualifierRestricted = {
"Entities" => relabel::QualifierRestricted::Entities, "Entities" => relabel::QualifierRestricted::Entities,
"Context" => relabel::QualifierRestricted::Context, "Context" => relabel::QualifierRestricted::Context,
@ -416,27 +420,32 @@ AssertQualifierRestricted: relabel::QualifierRestricted = {
"Products" => relabel::QualifierRestricted::Products, "Products" => relabel::QualifierRestricted::Products,
} }
#[inline]
AssertQualifierLabel: relabel::QualifierLabel = { AssertQualifierLabel: relabel::QualifierLabel = {
"AvailableEntities" => relabel::QualifierLabel::AvailableEntities, "AvailableEntities" => relabel::QualifierLabel::AvailableEntities,
"AllReactants" => relabel::QualifierLabel::AllReactants, "AllReactants" => relabel::QualifierLabel::AllReactants,
"AllInhibitors" => relabel::QualifierLabel::AllInhibitors, "AllInhibitors" => relabel::QualifierLabel::AllInhibitors,
} }
#[inline]
AssertQualifierSystem: relabel::QualifierSystem = { AssertQualifierSystem: relabel::QualifierSystem = {
"SystemEntities" => relabel::QualifierSystem::Entities, "SystemEntities" => relabel::QualifierSystem::Entities,
"SystemContext" => relabel::QualifierSystem::Context, "SystemContext" => relabel::QualifierSystem::Context,
} }
#[inline]
AssertQualifierEdge: relabel::QualifierEdge = { AssertQualifierEdge: relabel::QualifierEdge = {
"source" => relabel::QualifierEdge::Source, "source" => relabel::QualifierEdge::Source,
"target" => relabel::QualifierEdge::Target, "target" => relabel::QualifierEdge::Target,
} }
#[inline]
AssertQualifierNode: relabel::QualifierNode = { AssertQualifierNode: relabel::QualifierNode = {
"neighbours" => relabel::QualifierNode::Neighbours, "neighbours" => relabel::QualifierNode::Neighbours,
"system" => relabel::QualifierNode::System, "system" => relabel::QualifierNode::System,
} }
#[inline]
AssertQualifier: relabel::Qualifier = { AssertQualifier: relabel::Qualifier = {
<q: AssertQualifierSystem> => relabel::Qualifier::System(q), <q: AssertQualifierSystem> => relabel::Qualifier::System(q),
<q: AssertQualifierLabel> => relabel::Qualifier::Label(q), <q: AssertQualifierLabel> => relabel::Qualifier::Label(q),
@ -445,6 +454,7 @@ AssertQualifier: relabel::Qualifier = {
<q: AssertQualifierNode> => relabel::Qualifier::Node(q), <q: AssertQualifierNode> => relabel::Qualifier::Node(q),
} }
#[inline]
AssertBinary: relabel::Binary = { AssertBinary: relabel::Binary = {
"&&" => relabel::Binary::And, "&&" => relabel::Binary::And,
"||" => relabel::Binary::Or, "||" => relabel::Binary::Or,
@ -464,6 +474,7 @@ AssertBinary: relabel::Binary = {
"::" => relabel::Binary::Concat, "::" => relabel::Binary::Concat,
} }
#[inline]
AssertBinaryPrefix: relabel::Binary = { AssertBinaryPrefix: relabel::Binary = {
"substr" => relabel::Binary::SubStr, "substr" => relabel::Binary::SubStr,
"min" => relabel::Binary::Min, "min" => relabel::Binary::Min,