<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">import bali.Scanner212;
import bali.BaliException;

import java.io.FileReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

/**
 * Use on command line to run the Bali compiler (see Usage message)
 */
public class BC{
    
    public static void main(String args[]){
        if(args.length &gt; 2 || args.length &lt; 1){
            System.out.println("Usage: java BC &lt;inputfile&gt; [&lt;outputfile&gt;]");
            System.exit(1);
        }
        try{
            // Prepare the scanner and the input file
            Scanner212 scanner = Scanner212.baliScanner();
            FileReader in = new FileReader(args[0]);
            scanner.setSource(in);
            
            // Determine name for output file
            String outFileName = "";
            if (args.length == 2) outFileName = args[1];
            else if(args[0].indexOf(".") &lt; 0) outFileName = args[0] + ".sam";
            else outFileName = args[0].substring(0, args[0].lastIndexOf(".")) + ".sam";
            
            // Open the output file and try to fill it with SaM code
            BufferedWriter out = new BufferedWriter(new FileWriter(outFileName));
            try{
                out.write((new BaliCompiler()).compile(scanner));
            }
            catch(BaliException e){
                System.out.println(e.toString());
            }
            out.close(); in.close();
        }
        catch(IOException e){
            System.out.println("I/O Error: " + e.getMessage());
            System.exit(0);
        }
    }
}
</pre></body></html>