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., aStateMachineinstance plus optional properties defined by the user that they would like verified.SpecificationParser.scala: Parses text into aSpecificationinstance using Scala's combinator parsing library.Solidity.scala: Defines a translator from aSpecificationto equivalent Solidity source code.PlusCal.scala: Defines a translator from aSpecificationto 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.