Design di classe per costanti Token, TokenType e regex

0

Per l'uso in una classe lexer a ha una classe Token che rappresenta un token di un tipo specifico e il suo valore, mentre i tipi sono definiti dal enum TokenType in cui ogni token detiene la propria stringa di espressione regolare, anch'essa memorizzata nelle variabili static String Ora il mio problema è che naturalmente creerei due file separati, uno per Token e uno per TokenType e localizzo le stringhe regex in TokenType , a cui appartengono.
Poiché non è possibile, al momento ho tutti e tre insieme nella classe Token , ma poi tutto viene trascinato per ogni nuovo oggetto Token . E non posso davvero pensare ad una ragionevole "classe wrapper" per mettere attorno TokenType e le sue costanti.

public class Token {

private static final String WHITESPACE_REGEX = "[\s\f\r\n]";
private static final String COMMA_REGEX = WHITESPACE_REGEX + "*," + WHITESPACE_REGEX + 
// ...

public enum TokenType {

    // can't be defined here...

    WHITESPACE(WHITESPACE_REGEX + "+"),
    COMMA(COMMA_REGEX),
    // ...

    // ... or here

    public final String pattern;

    private TokenType(String pattern) {
        this.pattern = pattern;
    }
}

private TokenType type;
private String value;

public Token(TokenType type, String value) {
    this.type = type;
    this.value = value;
}

public TokenType getType() {
    return type;
}

public String getValue() {
    return value;
}
}
    
posta Benjoyo 10.06.2015 - 01:25
fonte

0 risposte

Leggi altre domande sui tag