1
this 자습서 (계산기 예제로 시작하기 직전까지 13 번째 페이지까지) 파일을 작성하여 숫자 결과를 얻고 구문 적으로 올바른 방법으로 더하기 기호 (예 : "4 +3 +7 "은 14를 반환하고,"4 ++ 3 "은 오류를 나타냄), 숫자와 + 기호는 텍스트 파일에서 가져옵니다 (이것은 약간 설명되어 있습니다). 이전에 설명한 작업을 수행하는 데 필요한 클래스를 생성하는 데 사용하는 코드.javaCC adder.jj를 어떻게 변경하여 명령 프롬프트에서 스트림 대신 문자열을받을 수 있습니까?
options
{
STATIC = false ;
}
PARSER_BEGIN(Adder)
class Adder
{
public static void main (String[] args)
throws ParseException, TokenMgrError, NumberFormatException
{
Adder parser = new Adder (System.in) ;
int val = parser.Start() ;
System.out.println(val) ;
}
}
PARSER_END(Adder)
SKIP : { " " }
SKIP : { "\n" | "\r" | "\r\n" }
TOKEN : { < PLUS :"+"> }
TOKEN : { < NUMBER : (["0"-"9"])+ > }
int Start() throws NumberFormatException :
{
int i ;
int value ;
}
{
value = Primary()
(
<PLUS>
i = Primary()
{ value += i ; }
)*
{ return value ; }
}
int Primary() throws NumberFormatException :
{
Token t ;
}
{
t=<NUMBER>
{ return Integer.parseInt(t.image) ; }
}
클래스 내가
javac *.java
그리고 마지막으로
java Adder < ex1.txt
으로 생성 된 클래스를 컴파일 그리고
javacc adder.jj
으로 생성되는이의 내용 경우 오른쪽 출력을 제공합니다 ex1.txt
은 앞서 설명한 형식을 가지고 있습니다.
문자열을받는 대신 실제로 명령 줄의 스트림 대신 프로젝트에서 사용할 수 있도록이 코드를 변경할 수 있습니까? 오류 :
와
를 교체하십시오 "(기호 리더 리더 = 새로운 StringReader를 찾을 수 없습니다 4 + 2 + 88 "); ^ 기호 : 클래스 Reader 위치 : 클래스 Adder Adder.java:7 : 오류 : 기호를 찾을 수 없습니다. 독자 reader = new StringReader ("4 + 2 + 88"); ^ 기호 : 클래스 StringReader를 위치 : 클래스 가산기 2 errors' 또한 일식 내가 java.io.Reader를 가져 후에도 StringReader를 인식하지 않습니다 말한다 – newbie
내가 '수입하는 java.io.Reader를 가져올 수 있었다 죄송합니다; import java.io.StringReader; 'Adder.java 생성 클래스의 그리고 작동합니다! 고마워, 남자 ... 지금은 그냥 메인과 다른 정적 방법으로 작동하도록 변경해야합니다! – newbie