580e851718e779127fd2e0e3b489c9f14cb05241
[sbp.git] / src / edu / berkeley / sbp / misc / CharToken.java
1 package edu.berkeley.sbp.misc;
2 import java.io.*;
3 import java.util.*;
4 import java.lang.reflect.*;
5 import java.lang.ref.*;
6 import edu.berkeley.sbp.*;
7 import edu.berkeley.sbp.Token.Location;
8 import edu.berkeley.sbp.util.*;
9
10 /** an implementation of Token for streams of Java <tt>char</tt> values */
11 public class CharToken {
12
13     public static final Functor<CharToken,Integer> c2i = new Functor<CharToken,Integer>() {
14         public Integer invoke(CharToken c) { return new Integer(c.c); }
15     };
16
17     public static final Atom leftBrace  = new CharRange(new IntegerTopology<CharToken>(c2i, 9998)) { public String toString() { return "{"; } };
18     public static final Atom rightBrace = new CharRange(new IntegerTopology<CharToken>(c2i, 9999)) { public String toString() { return "}"; } };
19     public static final CharToken left       = new CharToken((char)9998);
20     public static final CharToken right      = new CharToken((char)9999);
21     
22     // Private //////////////////////////////////////////////////////////////////////////////
23
24     public final char c;
25     public CharToken(char c)        { this.c = c; }
26     public String result()          { return c+""; }
27     public String  toString()       { return "\'"+StringUtil.escapify(c+"")+"\'"; }
28
29     //////////////////////////////////////////////////////////////////////////////////////////
30
31     public int toInt() { return (int)c; }
32
33 }