module IBAF-Start

imports
  libstratego-gpp
  signatures/-
  pp/IBAF-parenthesize
  pp/IBAF-pp

imports
  cbs-gen/IBAF-Expressions
  cbs-gen/IBAF-Statements

// Language "IBAFlang"

rules
to-funcons:
  |[ start[: (:Pgm:) :] ]| ->
  |[ initialise-binding finalise-failing run[: (:Pgm:) :] ]|
to-funcons:
  |[ run[: int(:IL:);(:Stmt:) :] ]| ->
  |[ scope (collateral (declare-int-vars[: (:IL:) :]), 
             execute[: (:Stmt:) :]) ]|
to-funcons:
  |[ declare-int-vars[: (:Id:) :] ]| ->
  |[ bind (\"(:Id:)\", 
             allocate-initialised-variable (integers, 
                     0)) ]|
to-funcons:
  |[ declare-int-vars[: (:Id:),(:IL:) :] ]| ->
  |[ declare-int-vars[: (:Id:) :], 
     declare-int-vars[: (:IL:) :] ]|

