📖

【No.10】字句解析器のリファクタリング(その3)

2023/02/28に公開

リファクタというより、書き直し

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