#!/usr/bin/perl -w
#
# jakoc - compile a Jako source file Parrot assembly file.
#
# by Gregor N. Purdy <gregor@focusresearch.com>
#
# Copyright (C) 2001-2003 Gregor N. Purdy. All rights reserved.
# This program is free software. It is subject to the same license
# as Perl itself.
#
# $Id: jakoc,v 1.31 2002/12/15 22:17:34 gregor Exp $
#

use strict;

use Carp;
use Data::Dumper;

$Data::Dumper::Terse = 1;
$Data::Dumper::Indent = 1;
$Data::Dumper::Quotekeys = 0;

use Jako::Lexer;
use Jako::Parser;
use Jako::Compiler;

use FileHandle;

my $lexer    = Jako::Lexer->new;
my $parser   = Jako::Parser->new;
my $compiler = Jako::Compiler->new;

$lexer->debug(1);
$parser->debug(1);
$compiler->debug(1);

use Getopt::Std;

my %opts;
getopts('ctT', \%opts);

die "$0: usage: $0 <source>\n" unless @ARGV == 1;
$compiler->file(shift @ARGV);

#
# Tokenize the input, and possibly dump the tokens.
#

$lexer->scan_file($compiler->file);

if ($opts{t}) {
  $lexer->dump;
  exit 0;
}

$parser->tokens($lexer->tokens);
my $root = $parser->parse();

if ($opts{T}) {
  print Dumper $root;
  exit 0;
}

unless ($opts{c}) { # -c means "Check", like with Perl.
  my $fh = FileHandle->new('>-');
  $compiler->compile($root, $fh);
}

exit 0;

#
# End of file.
#
