KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > fri > patterns > interpreter > parsergenerator > examples > HelloWorldParser


1 package fri.patterns.interpreter.parsergenerator.examples;
2
3 import fri.patterns.interpreter.parsergenerator.Token;
4 import fri.patterns.interpreter.parsergenerator.Lexer;
5 import fri.patterns.interpreter.parsergenerator.Parser;
6 import fri.patterns.interpreter.parsergenerator.ParserTables;
7 import fri.patterns.interpreter.parsergenerator.syntax.Syntax;
8 import fri.patterns.interpreter.parsergenerator.syntax.builder.SyntaxSeparation;
9 import fri.patterns.interpreter.parsergenerator.lexer.LexerBuilder;
10 import fri.patterns.interpreter.parsergenerator.parsertables.SLRParserTables;
11 import fri.patterns.interpreter.parsergenerator.semantics.PrintSemantic;
12
13 /**
14     "Hello World" example. Checks if "Hello" is followed by "World", arbitrary whitespaces.
15     This example shows how to build parser and lexer from scratch.
16     
17     @author Fritz Ritzberger
18 */

19
20 public class HelloWorldParser
21 {
22     private static final String JavaDoc [][] syntax = {
23         { "Start", "\"Hello\"", "\"World\"" },
24         { Token.IGNORED, "`whitespaces`" },
25     };
26     
27     public static void main(String JavaDoc [] args)
28         throws Exception JavaDoc
29     {
30         SyntaxSeparation separation = new SyntaxSeparation(new Syntax(syntax)); // separate lexer and parser syntax
31
LexerBuilder builder = new LexerBuilder(separation.getLexerSyntax(), separation.getIgnoredSymbols()); // build a Lexer
32
Lexer lexer = builder.getLexer();
33         lexer.setInput("\tHello \r\n\tWorld\n"); // give the lexer some very complex input :-)
34
ParserTables parserTables = new SLRParserTables(separation.getParserSyntax());
35         Parser parser = new Parser(parserTables);
36         parser.parse(lexer, new PrintSemantic()); // start parsing with a print-semantic
37
}
38
39 }
40
Popular Tags