Skip to content
Snippets Groups Projects
Select Git revision
  • master default
1 result

GenCompiler.java

Blame
  • GenCompiler.java 1.83 KiB
    // package programs;
    
    /* 
     * Copyright (C) 2007  Anders Nilsson <anders.nilsson@cs.lth.se>
     *
     * This file is part of XmlSchemaCompiler.
     */
    
    import AST.Start;
    import java.io.File;
    import java.io.PrintStream;
    
    public class GenCompiler extends Parser {
    	public static void main(String args[]) {
    
            String dir = "examples/x3d";
            String outName = "x3d";
            String[] schema = new String[1];
            boolean first = true;
    
            for (int i=0; i<args.length; i++) {
                if (args[i].equals("-d")) {
                    dir = args[++i];
                } else if (args[i].equals("-o")) {
                    outName = args[++i];
                } else {
                    // OK, we suppose the remaing arg to be parsed.
                    schema[0] = args[i++];
                }
            }
    
    
    		Start ast = parse(schema);
    
    		File siarasDir = new File(dir);
    		if (!siarasDir.isDirectory()) {
    			siarasDir.mkdir();
    		}
    		
    		String fileName = null;
            String common = dir+File.separator+outName;
    		try {
    			// Generate JastAdd abstract grammar
    			fileName = common+".ast";
    			PrintStream pStream = new PrintStream(new File(fileName));
    			ast.genAbsGrammar(pStream);
    
    			// Generate JavaCC input
    			fileName = common+".jjt";
    			pStream = new PrintStream(new File(fileName));
    			ast.genJavaCC(pStream);
    
    			// Generate Parser.java
    			fileName = dir+"/Parser.java";
    			pStream = new PrintStream(new File(fileName));
    			ast.genParser(pStream);
    
    			// Generate PrettyPrint.java
    			fileName = dir+"/PrettyPrint.java";
    			pStream = new PrintStream(new File(fileName));
    			ast.genPrettyPrint(pStream);
    
    			// Generate aspects
    			fileName = dir+"/GeneratedAspects.jrag";
    			pStream = new PrintStream(new File(fileName));
    			ast.genAspects(pStream);
    
    		} catch (java.io.FileNotFoundException e) {
    			System.out.println("Could not create file: "+fileName);
    			e.printStackTrace();
    		}
    	}
    }