diff --git a/src/main/kotlin/no/uio/microobject/ast/stmt/AccessStmt.kt b/src/main/kotlin/no/uio/microobject/ast/stmt/AccessStmt.kt index e8f8b4cd..468aee08 100644 --- a/src/main/kotlin/no/uio/microobject/ast/stmt/AccessStmt.kt +++ b/src/main/kotlin/no/uio/microobject/ast/stmt/AccessStmt.kt @@ -2,7 +2,9 @@ package no.uio.microobject.ast.stmt import com.sksamuel.hoplite.ConfigLoader import no.uio.microobject.ast.* +import no.uio.microobject.ast.expr.FALSEEXPR import no.uio.microobject.ast.expr.LiteralExpr +import no.uio.microobject.ast.expr.TRUEEXPR import no.uio.microobject.runtime.* import no.uio.microobject.type.* import org.apache.jena.datatypes.xsd.XSDDatatype @@ -80,12 +82,12 @@ data class AccessStmt(val target : Location, val query: Expression, val params : else if(objNameCand.matches("\\d+".toRegex()) || objNameCand.matches("\\d+\\^\\^http://www.w3.org/2001/XMLSchema#integer".toRegex())) newMemory["content"] = LiteralExpr(found.split("^^")[0], INTTYPE) else if (objNameCand.matches("\\d+".toRegex()) || objNameCand.matches("\\d+\\^\\^http://www.w3.org/2001/XMLSchema#int".toRegex())) - LiteralExpr(found.split("^^")[0], INTTYPE) + newMemory["content"] = LiteralExpr(found.split("^^")[0], INTTYPE) else if(objNameCand.matches("\\d+.\\d+".toRegex())) newMemory["content"] = LiteralExpr(found, DOUBLETYPE) - else if (objNameCand == "true" || objNameCand == "false") LiteralExpr(found, BOOLEANTYPE) - else if (objNameCand.matches("(true|false)".toRegex()) || objNameCand.matches("(true|false)\\^\\^http://www.w3.org/2001/XMLSchema#boolean".toRegex())) - LiteralExpr(found.split("^^")[0], BOOLEANTYPE) + else if (objNameCand.matches("(true|false)".toRegex()) || objNameCand.matches("(true|false)\\^\\^http://www.w3.org/2001/XMLSchema#boolean".toRegex())) { + newMemory["content"] = if (objNameCand.split("^^")[0] == "true") TRUEEXPR else FALSEEXPR + } else throw Exception("Query returned unknown object/literal: $found") } newMemory["next"] = list diff --git a/src/main/kotlin/no/uio/microobject/ast/stmt/ConstructStmt.kt b/src/main/kotlin/no/uio/microobject/ast/stmt/ConstructStmt.kt index 2da832c8..1cc8aba7 100644 --- a/src/main/kotlin/no/uio/microobject/ast/stmt/ConstructStmt.kt +++ b/src/main/kotlin/no/uio/microobject/ast/stmt/ConstructStmt.kt @@ -1,6 +1,7 @@ package no.uio.microobject.ast.stmt import no.uio.microobject.ast.* +import no.uio.microobject.ast.expr.FALSEEXPR import no.uio.microobject.ast.expr.LiteralExpr import no.uio.microobject.ast.expr.TRUEEXPR import no.uio.microobject.runtime.EvalResult @@ -69,12 +70,12 @@ data class ConstructStmt(val target : Location, val query: Expression, val param newObjMemory[f.name] = LiteralExpr(extractedName.split("^^")[0], DOUBLETYPE) else if (r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix) == "true" || r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix) == "false") { - LiteralExpr(r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix), BOOLEANTYPE) +// LiteralExpr(r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix), BOOLEANTYPE) + newObjMemory[f.name] = if (r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix) == "true") TRUEEXPR else FALSEEXPR } else if (r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix) - .matches("(true|false)".toRegex()) || - r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix) - .matches("(true|false)\\^\\^http://www.w3.org/2001/XMLSchema#boolean".toRegex())) { - LiteralExpr(r.get(f.name).toString().removePrefix(interpreter.settings.runPrefix).split("^^")[0], BOOLEANTYPE) + .matches("(true|false)\\^\\^http://www.w3.org/2001/XMLSchema#boolean".toRegex()) + || extractedName.matches("(true|false)\\^\\^http://www.w3.org/2001/XMLSchema#boolean".toRegex())) { + newObjMemory[f.name] = if (extractedName.split("^^")[0] == "true") TRUEEXPR else FALSEEXPR } else if(f.type == STRINGTYPE) newObjMemory[f.name] = LiteralExpr("\""+extractedName+"\"", f.type)