01: package fri.patterns.interpreter.parsergenerator.semantics;
02:
03: import java.util.*;
04: import fri.patterns.interpreter.parsergenerator.Token;
05: import fri.patterns.interpreter.parsergenerator.Semantic;
06: import fri.patterns.interpreter.parsergenerator.syntax.Rule;
07:
08: /**
09: Simple test semantic that outputs the rule nonterminal on left side
10: and its parsed values.
11:
12: @author (c) 2000, Fritz Ritzberger
13: */
14:
15: public class PrintSemantic implements Semantic {
16: public Object doSemantic(Rule rule, List inputTokens, List ranges) {
17: StringBuffer sb = new StringBuffer();
18: for (int i = 0; i < inputTokens.size(); i++)
19: sb.append((i > 0 ? " " : "")
20: + inputTokens.get(i).toString());
21:
22: String range = "";
23: if (ranges.size() > 0) {
24: Token.Range startRange = (Token.Range) ranges.get(0);
25: Token.Range endRange = (Token.Range) ranges.get(ranges
26: .size() - 1);
27: range = startRange.start + "-" + endRange.end;
28: }
29:
30: String s = sb.toString();
31: System.err.println("Nonterminal=" + rule.getNonterminal()
32: + ", range(" + range + "), Input=\"" + s + "\"");
33: return s;
34: }
35:
36: }
|