package jazz.circuit.esterel;

//////////////////////////////////////////////////////////////////////////////
//
//                 Esterel module (module <name>: <stmt>.)
//
//  The Syntax is that of "A Hardware Implementation of Pure Esterel" by
//  Gérard Berry, except for brackets which are used to parenthesize the
//  parallel construct
//
//             [ stmt ; ... ; stmt || stmt ; ... ; stmt ]
//
//  instead of being the grouping symbols for statements.
//
//////////////////////////////////////////////////////////////////////////////

import jazz.circuit.*;
import jazz.util.List;

public final class Module {

  // Module parameters
  public name: String;
  public inputs: List<String>;
  public outputs: List<String>;
  public stmt: Stmt;

  // Parse a Pure Esterel module
  public static parse(fileName: String): Module;

  // Compile a Pure Esterel module into a circuit
  public compile()(inputs: Net[]): (outputs: Net[]);
  
}