字句解析:MORE と image の置き換え

PARSER_BEGIN(Test)

public class Test {
  public static void main(String args[]) throws ParseException {
    Test parser = new Test(System.in);
    parser.Input();
  }
}

PARSER_END(Test)

SKIP :
{
    <SPACE:  " " | "\t" | "\n" | "\r">
}

TOKEN :
{
      <A: "a">
}

MORE :
{
    <B: "b"> { System.out.println("+");
               image.insert(0, "/"); image.append("/"); } : E
}

<E> TOKEN :
{
    <C: "c"> { System.out.println("+" + image + "+"); } : DEFAULT
}

void Input() :
{ Token t; }
{
    ((t = <A> | t = <C> )
        { System.out.println("*" + t.image + "*"); })+ <EOF>
}

で、

abc
*a*
+
+/b/c+
*bc*
  • MORE の中では、変数 matchedToken は使えない
  • TokenManager MiniTutorial を参考にしたが、その中のコード「image.charAt(l).toUpperCase()」は「char は間接参照できません。」というエラーに
  • トークン内の image と 構文解析内の Token の image とは違うの???