KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > fri > patterns > interpreter > parsergenerator > semantics > PrintSemantic


1 package fri.patterns.interpreter.parsergenerator.semantics;
2
3 import java.util.*;
4 import fri.patterns.interpreter.parsergenerator.Token;
5 import fri.patterns.interpreter.parsergenerator.Semantic;
6 import fri.patterns.interpreter.parsergenerator.syntax.Rule;
7
8 /**
9     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 {
17     public Object JavaDoc doSemantic(Rule rule, List inputTokens, List ranges) {
18         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
19         for (int i = 0; i < inputTokens.size(); i++)
20             sb.append((i > 0 ? " " : "")+inputTokens.get(i).toString());
21
22         String JavaDoc range = "";
23         if (ranges.size() > 0) {
24             Token.Range startRange = (Token.Range) ranges.get(0);
25             Token.Range endRange = (Token.Range) ranges.get(ranges.size() - 1);
26             range = startRange.start+"-"+endRange.end;
27         }
28         
29         String JavaDoc s = sb.toString();
30         System.err.println("Nonterminal="+rule.getNonterminal()+", range("+range+"), Input=\""+s+"\"");
31         return s;
32     }
33     
34 }
35
Popular Tags