| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package jplag.csharp;
- import java.io.File;
- import java.io.FileInputStream;
- import jplag.Structure;
- import jplag.UnicodeReader;
- import jplag.csharp.grammar.CSharpLexer;
- import jplag.csharp.grammar.CSharpParser;
- public class Parser extends jplag.Parser implements CSharpTokenConstants {
- private Structure struct;
- private String currentFile;
- public jplag.Structure parse(File dir, String files[]) {
- struct = new Structure();
- errors = 0;
- for (int i = 0; i < files.length; i++) {
- // getProgram().print(null, "Parsing file " + files[i] + "\n");
- if (!parseFile(dir, files[i]))
- errors++;
- struct.addToken(new CSharpToken(FILE_END, files[i], -1, -1, -1));
- }
- this.parseEnd();
- return struct;
- }
- private boolean parseFile(File dir, String file) {
- try {
- FileInputStream fis = new FileInputStream(new File(dir, file));
- currentFile = file;
- // Create a scanner that reads from the input stream passed to us
- CSharpLexer lexer = new CSharpLexer(new UnicodeReader(fis, "UTF-8"));
- lexer.setFilename(file);
- lexer.setTabSize(1);
- // Create a parser that reads from the scanner
- CSharpParser parser = new CSharpParser(lexer);
- parser.setFilename(file);
- parser.parser = this;//Added by emeric 22.01.05
- // start parsing at the compilationUnit rule
- parser.compilation_unit();
- // close file
- fis.close();
- } catch (Exception e) {
- getProgram().addError(" Parsing Error in '" + file + "':\n " + e.toString() + "\n");
- return false;
- }
- return true;
- }
- public void add(int type, antlr.Token tok) {
- if (tok == null) {
- System.out.println("tok == null ERROR!");
- return;
- }
- struct.addToken(new CSharpToken(type, currentFile, tok.getLine(), tok.getColumn(), tok.getText().length()));
- // System.out.println("type: " + CSharpToken.type2string(type) +
- // " text: '"+tok.getText()+"'");
- }
- public void add(int type, CSharpParser p) {
- add(type, p.getLastConsumedToken());
- }
- }
|