Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions langs/tla/defns.scala
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,9 @@ object defns:
case object PROPOSITION extends ReservedWord
case object ONLY extends ReservedWord

sealed trait Operator extends Token, HasSpelling
sealed trait Operator extends Token, HasSpelling:
def highPrecedence: Int
def lowPrecedence: Int

object Operator:
lazy val instances: IArray[Operator] =
Expand All @@ -100,7 +102,7 @@ object defns:

sealed trait InfixOperator(
val lowPrecedence: Int,
val highPredecence: Int,
val highPrecedence: Int,
val isAssociative: Boolean = false,
) extends Operator
object InfixOperator extends util.HasInstanceArray[InfixOperator]
Expand Down Expand Up @@ -209,7 +211,9 @@ object defns:
case object `\\supset` extends InfixOperator(5, 5)
case object `%%` extends InfixOperator(10, 11, true)

sealed trait PostfixOperator(val predecence: Int) extends Operator
sealed trait PostfixOperator(val precedence: Int) extends Operator:
def highPrecedence: Int = precedence
def lowPrecedence: Int = precedence
object PostfixOperator extends util.HasInstanceArray[PostfixOperator]

case object `^+` extends PostfixOperator(15)
Expand Down
6 changes: 5 additions & 1 deletion langs/tla/package.scala
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ object lang extends WellformedDef:
Expr.TupleLiteral,
Expr.RecordLiteral,
Expr.Project,
Expr.RecordSetLiteral,
Expr.OpCall,
Expr.FnCall,
Expr.If,
Expand Down Expand Up @@ -180,14 +181,17 @@ object lang extends WellformedDef:
),
)

object Case extends t(repeated(Case.Branch, minCount = 1)):
object Case extends t(fields(Case.Branches, Case.Other)):
object Branches extends t(repeated(Branch, minCount = 1))
object Branch
extends t(
fields(
Expr,
Expr,
),
)
object Other extends t(choice(Expr, None))
object None extends t(Atom)
end Case

object Let
Expand Down
2 changes: 1 addition & 1 deletion src/Node.scala
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ object Node:

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

Expand Down
9 changes: 9 additions & 0 deletions src/wf/Wellformed.scala
Original file line number Diff line number Diff line change
Expand Up @@ -555,6 +555,15 @@ object Wellformed:
s"$token's shape is not appropriate for adding cases ($shape)",
)

def deleteShape(): Unit =
token match
case Node.Top =>
require(topShapeOpt.nonEmpty)
topShapeOpt = None
case token: Token =>
require(assigns.contains(token))
assigns.remove(token)

def importFrom(wf2: Wellformed): Unit =
def fillFromShape(shape: Shape): Unit =
shape match
Expand Down