package project.scangen.spec; import project.scangen.regex.RegexExpander; import java.util.Map; public class TokenType { private final String name; private final String re; public TokenType(final String name, final String re, final Map<String, CharClass> charClasses) { this.name = name; this.re = collapse(re, charClasses); } public String getName() { return this.name; } public String getRe() { return this.re; } private String collapse(String re, Map<String, CharClass> charClasses) { for (Map.Entry<String, CharClass> entry : charClasses.entrySet()) { re = re.replace("$" + entry.getKey(), entry.getValue().getRe()); } return RegexExpander.expandRegex(re); } @Override public String toString() { return String.format("<TokenType $%s %s>", this.name, this.re); } }