0

JavaCC のトークンの構文を使用して、ファイル TXT を作成する必要があります。

例: (私のコード..)

PARSER_BEGIN(ExaF)
import java.io.*;

public class ExaF
{
    public static void main( String[] args )throws ParseException
    {
        try
        {
            ExaF analizador = new ExaF( System.in ) ;
            An.Prog();
            System.out.println("\n\n All Ok"); 
        }
        catch(ParseException e)
        {
            System.out.println(e.getMessage());
            System.out.println("\n\n Problem...");
        }
    }
}
PARSER_END(ExaF)

TOKEN:
{
      <GAT: "#" >   {System.out.print("00 ");}
    | <FIN: ";" >   {System.out.print("01 ");}
    | <LLA: "{" >   {System.out.print("02 ");}
    | <LLC: "}" >   {System.out.print("03 ");}
}

しかし、私はこのようなものが必要です:

TOKEN:
{
      <GAT: "#" >   {tex.write("00 ");}
    | <FIN: ";" >   {tex.write("01 ");}
    | <LLA: "{" >   {tex.write("02 ");}
    | <LLC: "}" >   {tex.write("03 ");}
}

私は試してみます...

PrintStream stext;
stext = new PrintStream(new File("3S.txt"));
stext.print("00 ");

と...

File sfile=new File("3S.txt");
FileWriter texto = new FileWriter(sfile,true);
texto.write("00 ");
texto.close();

何か案が???JavaCC は次のように述べています。

javac:821: エラー: シンボルstext.print("00 ")が見つかりません。

4

1 に答える 1

0

stext はトークン マネージャーで使用されるため、次のように宣言する必要があります。

TOKEN_MGR_DECLS: {
 PrintStream stext = new PrintStream(new File("3S.txt"));
}

これで、トークン アクションで stext を使用できるようになります。詳細については、 https: //javacc.java.net/doc/javaccgrm.html#prod12 のドキュメントを参照してください。

于 2013-11-13T20:41:50.117 に答える