📖
【No.10】字句解析器のリファクタリング(その3)
リファクタというより、書き直し
Tokenクラスと派生クラスが複雑になってきました。
トークンの種類が少なければ今の実装でも問題なさそうなのですが、これからの機能拡張を考えると、今のうちに対応した方がよさそうです。
と、いうわけでEnumを使用して改良したのですが、変更点が多くなり、リファクタというよりも書き直しになってしまいました。
実装
Token.java
package lexer;
public class Token {
private TokenType tokenType;
private String contents;
Token(TokenType tokenType,String contents){
this.tokenType = tokenType;
this.contents = contents;
}
public String getContents() {
return this.contents;
}
public TokenType tokenTypeIs() {
return this.tokenType;
}
}
TokenType.java
package lexer;
public enum TokenType {
NUMBER,
PRIMITIVECOMMAND,
REPEAT,
STARTPROGRAM,
ENDPROGRAM,
EQUAL,
VARIABLE;
}
あとがき
今回の改修で、コードは極めて簡潔なものとなりました。
トークンの種類を追加することも、簡単にできそうです。
Discussion