source: proto/pablo/src/test/TestSampleAbstractSyntaxTree.java @ 2364

Last change on this file since 2364 was 2364, checked in by ksherdy, 7 years ago

Added simple driver to validate Pablo grammar with test cases.

File size: 3.0 KB
Line 
1// DO NOT MODIFY
2//
3// This code is generated by the scatter parser-generator
4// Any modifications will be lost next time scatter is run.
5//
6
7package test;
8
9import java.io.BufferedReader;
10import java.io.FileNotFoundException;
11import java.io.FileReader;
12import java.io.IOException;
13
14import java.io.PrintStream;
15
16import applications.SampleApplication;
17import  ast.ASTNode;
18import  ast.ASTPrinter;
19
20import  parser.Parser;
21
22import  lexicalAnalyzer.LexicalController;
23import  tokens.Tokens;
24
25import java.io.File;
26import java.util.ArrayList;
27import java.util.Arrays;
28import java.util.Collections;
29import java.util.List;
30
31/**
32 * Recursive function to descend into the directory tree and find all the files
33 * that end with ".mp3"
34 * @param dir A file object defining the top directory
35 **/
36
37public class TestSampleAbstractSyntaxTree extends SampleApplication {
38        /** Prints abstract syntax tree of a Sample file.
39         *  Prints errors if syntax incorrect.
40         * @param args
41         * @throws FileNotFoundException
42         */
43        public static void main(String[] args) throws FileNotFoundException {
44                checkArguments(args, "SampleAbstractSyntaxTree");
45               
46                ASTPrinter.setPrintLevel(ASTPrinter.Level.FULL);
47                Tokens.setPrintLevel(Tokens.Level.TYPE_VALUE_SEQ);
48               
49                List<File> list = listFilesInDirectory(new File(args[0]),".pablo");
50               
51                Collections.sort(list);
52               
53                for(File f : list) {
54                        System.out.println(delimeterLine());
55                       
56                        System.out.println("File: " + f.getName() + "\n");     
57       
58                        try {
59                                System.out.println("Code: \n" );
60                                System.out.println(file2String(f));
61                        } catch (IOException e) {
62                                // TODO Auto-generated catch block
63                                e.printStackTrace();
64                        }
65                       
66                        System.out.println("AST: \n");
67                        parseFileToAST(f.getAbsolutePath(), System.out);
68                       
69                }
70               
71        }
72       
73        /** analyzes a file specified by filename.
74         * @param filename the name of the file to be analyzed.
75         * @throws FileNotFoundException
76         */
77        public static void parseFileToAST(String filename, PrintStream out) throws FileNotFoundException {
78                LexicalController lexController     = LexicalController.make(filename);
79                ASTNode syntaxTree    = Parser.parse(lexController);
80               
81                out.print(syntaxTree);
82        }
83       
84        public static List<File> listFilesInDirectory(File dir, String pattern) {
85                List<File> file = new ArrayList<File>();
86                File [] files = dir.listFiles();
87                if (files != null) {
88                        for (File f : files) {
89                                if (f.isDirectory()) {
90                                        file.addAll(listFilesInDirectory(f, pattern));
91                                }
92                                else {
93                                        if (f.getName().endsWith(pattern)) {
94                                                file.add(f);
95                                        }
96                                }
97                        }
98                }
99                return file;
100        }
101       
102    public static String file2String(File f) throws IOException {
103        BufferedReader reader = new BufferedReader(new FileReader(f));
104
105        StringBuffer buffer = new StringBuffer();
106        String line = null;
107        while ((line=reader.readLine()) != null) {
108            buffer.append(line + "\n");
109        }
110
111        reader.close();
112       
113        return buffer.toString();
114    }   
115       
116    public static String delimeterLine() {
117        return new String("--------------------------------------------------------------------------------");
118    }
119   
120}
121
Note: See TracBrowser for help on using the repository browser.