1 package edu.berkeley.sbp.misc;
3 import edu.berkeley.sbp.*;
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); }
12 public static void main(String[] s) throws Exception {
14 Union expr = new Union("Expr");
16 Element[] add = new Element[] { expr, atom('+'), expr };
17 Element[] mult = new Element[] { expr, atom('*'), expr };
18 Element[] paren = new Element[] { atom('('), expr, atom(')') };
20 Sequence addSequence = Sequence.create("add", add, null, false);
21 Sequence multSequence = Sequence.create("mult", mult, null, false);
23 // uncomment this line to disambiguate
24 //multSequence = multSequence.andnot(Sequence.create("add", add, null, false));
26 expr.add(Sequence.create(paren, 1));
27 expr.add(addSequence);
28 expr.add(multSequence);
29 expr.add(Sequence.create(atom('0', '9')));
31 String input = "(1+3*8)*7";
33 System.out.println("input: \""+input+"\"");
35 StringBuffer sb = new StringBuffer();
37 System.out.println("grammar: \n"+sb);
39 Forest f = new edu.berkeley.sbp.chr.CharParser(expr).parse(input);
40 System.out.println("output: "+f.expand1().toPrettyString());