Skip to content

Commit e8697aa

Browse files
authored
Merge pull request #21 from KuterBora/kuter/defns-fixes
minor fixes to package and defns
2 parents a5c33fc + 4393db2 commit e8697aa

4 files changed

Lines changed: 22 additions & 5 deletions

File tree

langs/tla/defns.scala

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,9 @@ object defns:
7474
case object PROPOSITION extends ReservedWord
7575
case object ONLY extends ReservedWord
7676

77-
sealed trait Operator extends Token, HasSpelling
77+
sealed trait Operator extends Token, HasSpelling:
78+
def highPrecedence: Int
79+
def lowPrecedence: Int
7880

7981
object Operator:
8082
lazy val instances: IArray[Operator] =
@@ -100,7 +102,7 @@ object defns:
100102

101103
sealed trait InfixOperator(
102104
val lowPrecedence: Int,
103-
val highPredecence: Int,
105+
val highPrecedence: Int,
104106
val isAssociative: Boolean = false,
105107
) extends Operator
106108
object InfixOperator extends util.HasInstanceArray[InfixOperator]
@@ -209,7 +211,9 @@ object defns:
209211
case object `\\supset` extends InfixOperator(5, 5)
210212
case object `%%` extends InfixOperator(10, 11, true)
211213

212-
sealed trait PostfixOperator(val predecence: Int) extends Operator
214+
sealed trait PostfixOperator(val precedence: Int) extends Operator:
215+
def highPrecedence: Int = precedence
216+
def lowPrecedence: Int = precedence
213217
object PostfixOperator extends util.HasInstanceArray[PostfixOperator]
214218

215219
case object `^+` extends PostfixOperator(15)

langs/tla/package.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ object lang extends WellformedDef:
101101
Expr.TupleLiteral,
102102
Expr.RecordLiteral,
103103
Expr.Project,
104+
Expr.RecordSetLiteral,
104105
Expr.OpCall,
105106
Expr.FnCall,
106107
Expr.If,
@@ -180,14 +181,17 @@ object lang extends WellformedDef:
180181
),
181182
)
182183

183-
object Case extends t(repeated(Case.Branch, minCount = 1)):
184+
object Case extends t(fields(Case.Branches, Case.Other)):
185+
object Branches extends t(repeated(Branch, minCount = 1))
184186
object Branch
185187
extends t(
186188
fields(
187189
Expr,
188190
Expr,
189191
),
190192
)
193+
object Other extends t(choice(Expr, None))
194+
object None extends t(Atom)
191195
end Case
192196

193197
object Let

src/Node.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ object Node:
391391

392392
require(
393393
results.size == 1,
394-
s"token(s) not found ${(tok +: toks).map(_.name).mkString(", ")}",
394+
s"token(s) not found ${(tok +: toks).map(_.name).mkString(", ")}, in ${this.toShortString()}",
395395
)
396396
results.head
397397

src/wf/Wellformed.scala

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,15 @@ object Wellformed:
555555
s"$token's shape is not appropriate for adding cases ($shape)",
556556
)
557557

558+
def deleteShape(): Unit =
559+
token match
560+
case Node.Top =>
561+
require(topShapeOpt.nonEmpty)
562+
topShapeOpt = None
563+
case token: Token =>
564+
require(assigns.contains(token))
565+
assigns.remove(token)
566+
558567
def importFrom(wf2: Wellformed): Unit =
559568
def fillFromShape(shape: Shape): Unit =
560569
shape match

0 commit comments

Comments
 (0)