use v5.10;
use MooseX::Declare;
use utf8;
{
package Mildew::AST;
BEGIN {
  $Mildew::AST::VERSION = '0.04';
}
sub unique_id {
    state $id = 0;
    '$id'.$id++;
}
sub unique_reg {
    Mildew::AST::Reg->new(name=>unique_id);
}
sub unique_label {
    state $lab = 0;
    'lab'.$lab++;
}
sub indent {
    my $x = shift;
    my $i = shift || 1;
    my $s = '    ' x $i;
    $x =~ s/^/$s/mg;
    $x;
}
sub terminate_stmt {
    my $stmt = shift;
    if ($stmt =~ /;|}$/) {
        $stmt . "\n";
    } elsif ($stmt =~ /\n$/) {
        $stmt;
    } else {
        $stmt . ";\n";
    }
}
}

use Mildew::AST::Base;
use Mildew::AST::Call;
use Mildew::AST::If;
use Mildew::AST::Let;
use Mildew::AST::Assign;
use Mildew::AST::Helpers;
use Mildew::AST::Comment;
use Mildew::AST::While;
use Mildew::AST::Pair;
use Mildew::AST::IntegerConstant;
use Mildew::AST::StringConstant;
use Mildew::AST::Branch;
use Mildew::AST::Reg;
use Mildew::AST::Capture;
use Mildew::AST::Goto;
use Mildew::AST::Block;
use Mildew::AST::Block::SSA;
use Mildew::AST::Seq;
use Mildew::AST::Loop;
use Mildew::AST::InferredTypeTest;
use Mildew::AST::Phi;
use Mildew::AST::Block::Simplified;
1;
