Skip to content
andygill edited this page Jun 26, 2012 · 5 revisions

HERMIT has state. Here is a break down of what we have.

AST / ModGuts

We have a map of ModGuts AST's.

ASTs : AST -> ModGuts

were AST is an Int label.

Properties

  • An AST's id number is always higher that its parent

Scoped AST

ScopedASTs : ScopedAST -> ModGuts x Path x [Path]

Commands

There are four types of commands: Commands, Queries, Shell

Commands changes things. We record this using a list.

Commands : [ ScopedAST x Command x ScopedAST ]

Queries ask questions, and perhaps fail. An assertion has type TranslateH Core (); perhaps only these are stored.

Queries : [ ScopedAST x Query ] -- assertions only???

Groups

Groups join together sequences of commands. They overlay on top of the list of commands.

Groups : [ ScopedAST x ScopedAST x Text ]

To Consider

???