diff --git a/.scalafmt.conf b/.scalafmt.conf new file mode 100644 index 0000000..8134e97 --- /dev/null +++ b/.scalafmt.conf @@ -0,0 +1,2 @@ +version = "3.7.15" +runner.dialect = scala3 \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..79f250c --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,7 @@ +{ + // Use o IntelliSense para saber mais sobre os atributos possíveis. + // Focalizar para exibir as descrições dos atributos existentes. + // Para obter mais informações, acesse: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [] +} \ No newline at end of file diff --git a/build.sbt b/build.sbt index 3846027..b4f17b9 100644 --- a/build.sbt +++ b/build.sbt @@ -1,6 +1,6 @@ -ThisBuild / scalaVersion := "3.3.1" +ThisBuild / scalaVersion := "3.3.3" ThisBuild / organization := "com.github.lrlucena" -ThisBuild / version := "1.3.1" +ThisBuild / version := "1.3.3" enablePlugins(Antlr4Plugin) diff --git a/project/build.properties b/project/build.properties index 2743082..04267b1 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.9.6 +sbt.version=1.9.9 diff --git a/project/metals.sbt b/project/metals.sbt index 05fd2b3..119c929 100644 --- a/project/metals.sbt +++ b/project/metals.sbt @@ -2,5 +2,5 @@ // This file enables sbt-bloop to create bloop config files. -addSbtPlugin("ch.epfl.scala" % "sbt-bloop" % "1.5.6") +addSbtPlugin("ch.epfl.scala" % "sbt-bloop" % "1.5.15") diff --git a/src/main/scala/whilelang/compiler/Semantics.scala b/src/main/scala/whilelang/compiler/Semantics.scala index 2467711..e755fd1 100644 --- a/src/main/scala/whilelang/compiler/Semantics.scala +++ b/src/main/scala/whilelang/compiler/Semantics.scala @@ -17,22 +17,23 @@ extension (src: Any)(using ids: Ids) def meaning: String = m private def m: String = src match case If(cond, tSmt, eSmt) => s"if ${cond.m} then\n ${tSmt.m}\nelse\n ${eSmt.m}" - case Write(exp) => s"println(${exp.m})" - case Print(text) => s"println(\"$text\")" - case While(cond, doSmt) => s"while ${cond.m} do\n ${doSmt.m}" - case SeqStatement(stmts) => stmts.map(_.m).mkString("\n").replaceAll("\n", "\n ") - case Attrib(id, exp) => ids.add(id); s"$id = ${exp.m}" - case Program(seq) => val main = seq.m; s"@main def main() =\n ${vars(ids)}\n $main" - case Skip => "()" - case Read => "readInt()" - case Id(id) => id - case Integer(value) => s"$value" - case ExpSum(lhs, rhs) => s"(${lhs.m} + ${rhs.m})" - case ExpSub(lhs, rhs) => s"(${lhs.m} - ${rhs.m})" - case ExpMult(lhs, rhs) => s"(${lhs.m} * ${rhs.m})" - case Boole(b) => s"$b" - case ExpEq(lhs, rhs) => s"(${lhs.m} == ${rhs.m})" - case ExpLe(lhs, rhs) => s"(${lhs.m} <= ${rhs.m})" - case Not(b) => s"!(${b.m})" - case And(lhs, rhs) => s"(${lhs.m} && ${rhs.m})" - case _ => "~~~ Not Implemented ~~~" + case Write(exp) => s"println(${exp.m})" + case Print(text) => s"println(\"$text\")" + case While(cond, doSmt) => s"while ${cond.m} do\n ${doSmt.m}" + case SeqStatement(stmts) => stmts.map(_.m).mkString("\n").replaceAll("\n", "\n ") + case Attrib(id, exp) => ids.add(id); s"$id = ${exp.m}" + case Program(seq) => val main = seq.m + s"@main def main() =\n ${vars(ids)}\n $main" + case Skip => "()" + case Read => "readInt()" + case Id(id) => id + case Integer(value) => s"$value" + case ExpSum(lhs, rhs) => s"(${lhs.m} + ${rhs.m})" + case ExpSub(lhs, rhs) => s"(${lhs.m} - ${rhs.m})" + case ExpMult(lhs, rhs) => s"(${lhs.m} * ${rhs.m})" + case Boole(b) => s"$b" + case ExpEq(lhs, rhs) => s"(${lhs.m} == ${rhs.m})" + case ExpLe(lhs, rhs) => s"(${lhs.m} <= ${rhs.m})" + case Not(b) => s"!(${b.m})" + case And(lhs, rhs) => s"(${lhs.m} && ${rhs.m})" + case _ => "~~~ Not Implemented ~~~" diff --git a/src/main/scala/whilelang/parser/MyListener.scala b/src/main/scala/whilelang/parser/MyListener.scala index df124b5..c959ba0 100644 --- a/src/main/scala/whilelang/parser/MyListener.scala +++ b/src/main/scala/whilelang/parser/MyListener.scala @@ -74,4 +74,4 @@ class MyListener extends BaseListener with ContextValue: val Seq(lhs, rhs) = ctx.expression.map(_.value[Expression]) ctx(1).text match case "=" => ExpEq(lhs, rhs) - case _ => ExpLe(lhs, rhs) + case _ => ExpLe(lhs, rhs) \ No newline at end of file diff --git a/while b/while index 10bb9b7..8e98193 100755 --- a/while +++ b/while @@ -1,3 +1,3 @@ #!/bin/bash -java -Xmx1879m -jar ./target/scala-3.2.0/WhileLang-assembly-1.2.jar $1 \ No newline at end of file +java -Xmx1879m -jar ./target/scala-3.3.3/WhileLang-assembly-1.3.3.jar $1 \ No newline at end of file