1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.millscript.millscript;
23
24 import org.millscript.commons.alert.Alert;
25 import org.millscript.commons.alert.reporters.StandardMishapAlertReporter;
26 import org.millscript.commons.alert.reporters.StandardWarningAlertReporter;
27 import org.millscript.millscript.syntax.Parser;
28 import org.millscript.millscript.syntax.ParserImpl;
29
30 import java.io.Reader;
31
32 /**
33 * This class is used to start a batch MillScript session.
34 */
35 public class Batch extends Session {
36
37 /**
38 * @see org.millscript.millscript.Session#compile(java.lang.String, java.io.Reader)
39 */
40 @Override
41 public void compile( final String origin, final Reader r ) {
42 Parser parser = new ParserImpl( origin, r, true, config );
43 try {
44 this.state.compileAllowResults( parser, false );
45 } catch ( Exception e ) {
46 this.config.reportException( e );
47 System.out.flush();
48 System.err.flush();
49 System.exit( 1 );
50 }
51 }
52
53 /**
54 * Runs a batch session for the specified parameters. Each parameter is
55 * taken to be a file containing MillScript to execute.
56 *
57 * @param args array of String arguments, treated as files to compile and
58 * execute
59 */
60 public static void main( final String[] args ) {
61 try {
62 final Batch batch = new Batch();
63 long startTime = System.currentTimeMillis();
64 batch.compile( args );
65 batch.printStatistics( startTime );
66 batch.summarizeResults();
67 } catch ( Alert ex ) {
68 if ( ex.isMishap() ) {
69 StandardMishapAlertReporter.MISHAP_REPORTER.report( ex );
70 } else {
71 StandardWarningAlertReporter.WARNING_REPORTER.report( ex );
72 }
73 }
74 }
75
76 }