checkpoint
[sbp.git] / src / edu / berkeley / sbp / misc / Demo2.java
1 package edu.berkeley.sbp.misc;
2
3 import edu.berkeley.sbp.*;
4
5 public class Demo2 {
6
7     private static Atom atom(char c) {
8         return new edu.berkeley.sbp.chr.CharAtom(c); }
9     private static Atom atom(char c1, char c2) {
10         return new edu.berkeley.sbp.chr.CharAtom(c1, c2); }
11
12     public static void main(String[] s) throws Exception {
13
14         Union expr = new Union("Expr");
15
16         Element[] add   = new Element[] { expr, atom('+'), expr };
17         Element[] mult  = new Element[] { expr, atom('*'), expr };
18         Element[] paren = new Element[] { atom('('), expr, atom(')') };
19         
20         Sequence addSequence = Sequence.create("add", add, null, false);
21         Sequence multSequence = Sequence.create("mult", mult, null, false);
22
23         // uncomment this line to disambiguate
24         multSequence = multSequence.andnot(Sequence.create("add", add, null, false));
25
26         expr.add(Sequence.create(paren, 1));
27         expr.add(addSequence);
28         expr.add(multSequence);
29         expr.add(Sequence.create(atom('0', '9')));
30
31         String input = "8+(1+3)*7";
32
33         System.out.println("input:  \""+input+"\"");
34
35         StringBuffer sb = new StringBuffer();
36         expr.toString(sb);
37         System.out.println("grammar: \n"+sb);
38
39         Forest f = new edu.berkeley.sbp.chr.CharParser(expr).parse(input);
40         System.out.println("output: "+f.expand1().toPrettyString());
41     }
42
43 }