X-Git-Url: http://git.osdn.net/view?p=mikutoga%2FTogaGem.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fjp%2Fsourceforge%2Fmikutoga%2Fparser%2FParseStage.java;h=3814cbabec5e81d815defa5bafd0b242e084004c;hp=859e03859b82c07dce27cafd9295e6a461b85e16;hb=62c3ea1ac34f716aa621707032274a2289780b7a;hpb=bc7fe8d3150632a417cd40e86bf1e8af5323b539 diff --git a/src/main/java/jp/sourceforge/mikutoga/parser/ParseStage.java b/src/main/java/jp/sourceforge/mikutoga/parser/ParseStage.java index 859e038..3814cba 100644 --- a/src/main/java/jp/sourceforge/mikutoga/parser/ParseStage.java +++ b/src/main/java/jp/sourceforge/mikutoga/parser/ParseStage.java @@ -11,25 +11,41 @@ package jp.sourceforge.mikutoga.parser; * パース処理の進行ステージ種別を表す。 * ループ構造の識別に用いられる。 */ -public class ParseStage { +public abstract class ParseStage { private final String name; /** * コンストラクタ。 - * 進行ステージ名は空文字列が指定される。 + * 進行ステージ名は実行時クラス名(パッケージ名抜き)が指定される。 */ - public ParseStage(){ - this(""); + protected ParseStage(){ + super(); + + Class klass = getClass(); + String fullName = klass.getName(); + int idx = fullName.lastIndexOf('.'); + + String stripName; + if(idx >= 0){ + stripName = fullName.substring(idx + 1); + }else{ + stripName = fullName; + } + + this.name = stripName; + return; } /** * コンストラクタ。 * @param name 進行ステージ名 + * @throws NullPointerException 引数がnull */ - public ParseStage(String name){ + protected ParseStage(String name) throws NullPointerException{ super(); + if(name == null) throw new NullPointerException(); this.name = name; return; }