Summary of source code files:
LangDefs.scala
: Defines all language structures: expressions, statements, types, etc. Also contains type-checking logic.StateMachine.scala
: Defines a Quartz state machine, consisting of states, fields, and transitions. Also defines logic to validate that a state machine is properly structured.Specification.scala
: Defines a Quartz specification, i.e., aStateMachine
instance plus optional properties defined by the user that they would like verified.SpecificationParser.scala
: Parses text into aSpecification
instance using Scala's combinator parsing library.Solidity.scala
: Defines a translator from aSpecification
to equivalent Solidity source code.PlusCal.scala
: Defines a translator from aSpecification
to partially complete PlusCal code.TLA.scala
: Generates auxiliary files (configuration, external definitions) required by TLA+. Converts generated PlusCal code into a complete TLA+ specification.Main.scala
: Executed when Quartz is invoked from the command line. Dispatches to appropriate translator and writes to output file(s).ArgumentParser.scala
: Parses the flags used when Quartz is invoked from the command line.Utils.scala
: Miscellaneous utility functions for use in other files.
There are also many sample Quartz contracts defined in src/test/resources
. Note that not all of these contracts are well-formed, as some are used in unit tests to verify that we properly identify errors.