KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > fri > patterns > interpreter > parsergenerator > syntax > builder > examples > Example


1 package fri.patterns.interpreter.parsergenerator.syntax.builder.examples;
2
3 import java.io.*;
4 import fri.patterns.interpreter.parsergenerator.*;
5 import fri.patterns.interpreter.parsergenerator.syntax.Syntax;
6 import fri.patterns.interpreter.parsergenerator.syntax.builder.SyntaxBuilder;
7 import fri.patterns.interpreter.parsergenerator.parsertables.LALRParserTables;
8
9 /**
10     This example reads the SyntaxBuilder EBNF specification, builds
11     a lexer and parser from it, and parses its own specification with
12     these rules.
13     
14     @author (c) 2002, Fritz Ritzberger
15 */

16
17 public class Example
18 {
19     public static void main(String JavaDoc [] args) {
20         try {
21             System.out.println("Input is: "+(args.length > 0 ? args[0] : "SyntaxBuilder.syntax"));
22             InputStreamReader in = args.length <= 0
23                     ? new InputStreamReader(Example.class.getResourceAsStream("SyntaxBuilder.syntax"))
24                     : new InputStreamReader(new FileInputStream(args[0]));
25             SyntaxBuilder builder = new SyntaxBuilder(in);
26             Syntax syntax = builder.getSyntax();
27             System.out.println("Resolved syntax rules are: ==============");
28             System.out.println(syntax.toString());
29
30             // now lets see if we can parse the syntax specification text with its own syntax
31
in = args.length <= 0
32                     ? new InputStreamReader(Example.class.getResourceAsStream("SyntaxBuilder.syntax"))
33                     : new InputStreamReader(new FileInputStream(args[0]));
34             Lexer lexer = builder.getLexer();
35             lexer.setInput(in);
36             lexer.setDebug(true);
37             Syntax parserSyntax = builder.getParserSyntax();
38             ParserTables parserTables = new LALRParserTables(parserSyntax);
39             Parser parser = new Parser(parserTables);
40             boolean ok = parser.parse(lexer);
41             if (ok == false)
42                 throw new Exception JavaDoc("Failed parsing syntax specification text!");
43             else
44                 System.out.println("SyntaxBuilder succeeded parsing its own syntax specification text!");
45         }
46         catch (Exception JavaDoc e) {
47             e.printStackTrace();
48         }
49     }
50     
51 }
52
Popular Tags