Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Error handling

Good error reporting should be integral to the compiler.

We need to think about what errors could be encountered and what information is needed to generate a useful message.

MiniZinc <-> MicroZinc

  • Could keep a stack of the transformations, so we always know the origin of any new constraints
  • Transformations generate explanations of why they were done, so the logic can be followed for debugging

Bytecode

  • Could generate bytecode with debugging symbols giving locations for instructions
  • Interpreter could have a debugging runtime mode enabling full tracing