From 847da199823a35c6ceff840f20dd717a8eb1b17a Mon Sep 17 00:00:00 2001 From: pawelkaczor Date: Mon, 5 Jul 2021 08:03:54 +0200 Subject: [PATCH] allow uderscore in variable name --- build.sbt | 4 ++-- project/build.properties | 2 +- .../br/com/virsox/scalexpr/ExpressionParser.scala | 2 +- .../virsox/scalexpr/ExpressionParserTest.scala | 15 +++++++++++++++ version.sbt | 2 +- 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/build.sbt b/build.sbt index 863ec23..3d945fe 100644 --- a/build.sbt +++ b/build.sbt @@ -1,10 +1,10 @@ -scalacOptions in ThisBuild ++= Seq("-deprecation", "-feature") +ThisBuild / scalacOptions ++= Seq("-deprecation", "-feature") organization := "pl.newicom.scalexpr" name := "scalexpr" -scalaVersion := "2.13.3" +scalaVersion := "2.13.6" publishMavenStyle := true homepage := Some(new URL("http://github.com/pawelkaczor/scalexpr")) diff --git a/project/build.properties b/project/build.properties index c06db1b..9edb75b 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.4.5 +sbt.version=1.5.4 diff --git a/src/main/scala/br/com/virsox/scalexpr/ExpressionParser.scala b/src/main/scala/br/com/virsox/scalexpr/ExpressionParser.scala index 7fa5c46..6e941a9 100644 --- a/src/main/scala/br/com/virsox/scalexpr/ExpressionParser.scala +++ b/src/main/scala/br/com/virsox/scalexpr/ExpressionParser.scala @@ -70,7 +70,7 @@ class ExpressionParser extends DateParser { // --------------------------------------------------------------- // ----------------- General parsers ---------------------- // --------------------------------------------------------------- - def chars[_: P]: P[Unit] = P(CharIn("a-zA-Z")) + def chars[_: P]: P[Unit] = P(CharIn("a-zA-Z_")) def digits[_: P]: P[Unit] = P(CharIn("0-9")) // --------------------------------------------------------------- diff --git a/src/test/scala/br/com/virsox/scalexpr/ExpressionParserTest.scala b/src/test/scala/br/com/virsox/scalexpr/ExpressionParserTest.scala index 4404f50..eab2956 100644 --- a/src/test/scala/br/com/virsox/scalexpr/ExpressionParserTest.scala +++ b/src/test/scala/br/com/virsox/scalexpr/ExpressionParserTest.scala @@ -100,6 +100,13 @@ class ExpressionParserTest extends AnyFlatSpec with Matchers { ) } + it should "parse relational expression with a var containing underscore" in new Fixture { + verify( + parser.parseRelationalExpression("""a_var > 5"""), + RelationalExpression(BigDecimalVar("a_var"), GreaterThan, BigDecimalConstant(5)) + ) + } + it should "parse comparison expressions with variables on both sides" in new Fixture { verify(parser.parseBooleanExpression("""a == b"""), BigDecimalVar("a") == BigDecimalVar("b")) verify(parser.parseBooleanExpression("""a != b"""), BigDecimalVar("a") != BigDecimalVar("b")) @@ -154,6 +161,14 @@ class ExpressionParserTest extends AnyFlatSpec with Matchers { ) } + it should "parse boolean expressions with parenthesis 2" in new Fixture { + verify( + parser.parseBooleanExpression("""isFirst == 1 || (name == "Test" && age == 19)"""), + (BigDecimalVar("isFirst") == BigDecimalConstant(1)) || + ((StringVar("name") == StringConstant("Test")) && (BigDecimalVar("age") == BigDecimalConstant(19))) + ) + } + it should "parse complex boolean expressions with parenthesis" in new Fixture { verify( parser.parseBooleanExpression("""(name == "Wilson" && age > (base + 2.0)) || (name == "Test" && age == ( 4 * 2))"""), diff --git a/version.sbt b/version.sbt index 93e409e..0aea67a 100644 --- a/version.sbt +++ b/version.sbt @@ -1 +1 @@ -version in ThisBuild := "0.1.2" +ThisBuild / version := "0.1.3"