annotate src/plparser/DictProperty.java @ 6:563bcb96e4fa

pretty printer
author one
date Mon, 30 Aug 2010 12:35:23 +0900
parents 1f46c9d09c1e
children 79d492bce828
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
1 package plparser;
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
2
6
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
3 import java.io.PrintStream;
1
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
4 import java.util.HashMap;
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
5 import java.util.LinkedList;
6
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
6 import java.util.Set;
1
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
7
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
8 public class DictProperty extends Property {
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
9 HashMap<Property, Property> map;
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
10
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
11 public DictProperty(LinkedList<Property> list) {
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
12 map = new HashMap<Property, Property>();
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
13 while(!list.isEmpty()) {
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
14 Property key = list.poll();
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
15 Property value = list.poll();
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
16 map.put(key, value);
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
17 }
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
18 }
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
19
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
20 public String toString() {
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
21 String s = "Dictionary{" ;
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
22 for(Property p:map.keySet()) {
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
23 s += p;
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
24 s += "->";
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
25 s += map.get(p);
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
26 s += ",";
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
27 }
3
1f46c9d09c1e Simple Example worked.
kono@ie.u-ryukyu.ac.jp
parents: 1
diff changeset
28 s = s.substring(0, s.length()-1);
1
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
29 s += "}";
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
30 return s;
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
31 }
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
32
6
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
33 public void pp(PrintStream out, int indent,int flag) {
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
34 indent(out, indent,flag); out.print("Dict{");
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
35 int i = 0; int size = map.size();
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
36 flag = 0;
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
37 for(Property p:map.keySet()) {
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
38 p.pp(out,indent+indent_step,flag);out.print("->");
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
39 flag = 1;
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
40 map.get(p).pp(out,indent+indent_step+2,0);
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
41 if (i<size-1) out.println(",");
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
42 else {
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
43 if (size>1) indent(out,indent,1);
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
44 out.print("}");
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
45 }
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
46 i++;
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
47 }
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
48 }
563bcb96e4fa pretty printer
one
parents: 3
diff changeset
49
1
b149a5aa465a Parser is written
kono@ie.u-ryukyu.ac.jp
parents:
diff changeset
50 }