2013-11-13 4 views
0

Мне нужно написать файл TXT, используя синтаксис лексем на JavaCCКак написать TXT-файл на JavaCC?

Eample: (мой код ..)

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 ");} 
} 

I попробовать ...

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: ошибка: не удается найти Simbol stext.print ("00");

ответ

0

Поскольку stext используется в маркере менеджера вы должны объявить его следующим образом

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

Сделав это, вы будете иметь возможность использовать stext в символических действиях. Для получения дополнительной информации обратитесь к документации по телефону https://javacc.java.net/doc/javaccgrm.html#prod12.

Смежные вопросы