Skip to content

Commit

Permalink
Experimental error message generation
Browse files Browse the repository at this point in the history
- Implemented better error message generation on choice parsers
- Upgraded  to petitparser 2.4.0
- Upgraded to Java 11
  • Loading branch information
laurenzlevi committed Jan 16, 2024
1 parent 78ca08a commit cd19555
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 4 deletions.
4 changes: 2 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
[versions]
java-jdk = "9"
java-jdk = "11"
kotlin = "1.9.21"
nodejs = "20.5.1"
prettier-toml = "0.3.1"
Expand All @@ -35,7 +35,7 @@ versions = { id = "com.github.ben-manes.versions", version = "0.50.0" }
junit-bom = { group = "org.junit", name = "junit-bom", version = "5.10.1" }
junit-jupiter = { group = "org.junit.jupiter", name = "junit-jupiter" } # version from BOM
z3-turnkey = { group = "tools.aqua", name = "z3-turnkey", version = "4.12.2.1" }
petitparser-core = { group = "com.github.petitparser", name = "petitparser-core", version = "2.3.1" }
petitparser-core = { group = "com.github.petitparser", name = "petitparser-core", version = "2.4.0" }
kotlin-coroutines = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version = "1.8.0-RC" }

[bundles]
6 changes: 4 additions & 2 deletions src/main/kotlin/tools/aqua/konstraints/parser/Parser.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

package tools.aqua.konstraints.parser

import org.petitparser.context.Result
import java.math.BigDecimal
import org.petitparser.context.Token
import org.petitparser.parser.Parser
Expand All @@ -28,6 +29,7 @@ import org.petitparser.parser.primitive.CharacterParser.anyOf
import org.petitparser.parser.primitive.CharacterParser.of
import org.petitparser.parser.primitive.CharacterParser.range
import org.petitparser.parser.primitive.StringParser.of
import org.petitparser.utils.FailureJoiner
import tools.aqua.konstraints.CheckSat

operator fun Parser.plus(other: Parser): ChoiceParser = or(other)
Expand Down Expand Up @@ -400,8 +402,8 @@ object Parser {
rparen)
.map { results: ArrayList<Any> -> "(set-logic)" }

val command =
assertCMD + checkSatCMD + declareConstCMD + declareFunCMD + exitCMD + setInfoCMD + setLogicCMD
val command = ChoiceParser(FailureJoiner.SelectFarthest(), assertCMD, checkSatCMD, declareConstCMD, declareFunCMD, exitCMD, setInfoCMD, setLogicCMD)

val script = command.star().end()

// TODO missing commands
Expand Down
18 changes: 18 additions & 0 deletions src/test/kotlin/tools/aqua/konstraints/ParserTests.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import java.lang.Exception
import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.ValueSource
import org.petitparser.context.Failure
import org.petitparser.context.ParseError
import tools.aqua.konstraints.parser.*

Expand Down Expand Up @@ -58,6 +59,23 @@ class ParserTests {
}
}

@ParameterizedTest
@ValueSource(
strings =
[
"(declare-fun A Bool)",
"(assert (not (= (bvlshr s (bvshl t #b00000000000000000000000000000000)) (bvlshr s t)))"
]
)
fun testIllegalCommands(command: String) {
val result = Parser.command.parse(command)
assert(result.isFailure)

println(result.message)
println(result.position)
println(result.buffer)
}

@ParameterizedTest
@ValueSource(
strings =
Expand Down

0 comments on commit cd19555

Please sign in to comment.