이것은 내가 사용하고있는 코드이며 here (13 페이지의 복사)에서 숫자와 숫자가 포함 된 input.txt 파일의 추가 예제를 성공적으로 실행하고 구문 분석 할 수 있습니다. + sintactically 정확한 사인 즉 4 + 2 returns six
하지만 4 ++ 2 gives an error
)javaCC 파서 생성기가 EOF를 처리 할 수 없다
options {
STATIC = false ;
}
PARSER_BEGIN (Calculator)
import java.io.PrintStream ;
class Calculator
{
public static void main (String [] args)
throws ParseException, TokenMgrError, NumberFormatException
{
Calculator parser = new Calculator(System.in) ;
parser.Start(System.out) ;
}
double previousValue = 0.0 ;
}
PARSER_END (Calculator)
SKIP : { " " }
TOKEN : { < EOL : "\n" | "\r" | "\r\n" > }
TOKEN : { < PLUS : "+" > }
TOKEN : { < NUMBER : <DIGITS> | <DIGITS> "." <DIGITS> | <DIGITS> "." | "." <DIGITS> > }
TOKEN : { <#DIGITS : (["0"-"9"])+ > }
void Start(PrintStream printStream) throws NumberFormatException :
{}
{
(
previousValue = Expression()
<EOL>
{printStream.println(previousValue) ; }
)*
<EOF>
}
double Expression() throws NumberFormatException :
{
double i ;
double value ;
}
{
value = Primary()
(
<PLUS>
i = Primary()
{ value += i ; }
)*
{ return value ; }
}
double Primary() throws NumberFormatException :
{
Token t ;
}
{
t = <NUMBER>
{ return Double.parseDouble(t.image) ; }
}
'
C:\Users\Jay\workspace\javaCC>javacc calculator0.jj
가 제대로 필요한 모든 자바 파일, 내가
01,235,164와 오류없이 나 경고와 함께 컴파일 모든를 생성
javac *.java
하지만, input.txt를이 새로운 버전의 몇 가지 이유로
4 + 2 + 2
을 포함 어디
java Calculator < input.txt
를 실행하려고하면 나는
Exception in thread "main" ParseException: Encountered "<EOF>" at line 1, column 11.
Was expecting one of:
<EOL> ...
"+" ...
at Calculator.generateParseException(Calculator.java:218)
at Calculator.jj_consume_token(Calculator.java:156)
at Calculator.Start(Calculator.java:27)
at Calculator.main(Calculator.java:10)
어떻게 해결할 수 있습니까?
문법은 한 줄에 하나의 표현식을 필요로합니다. 그것은 의도적 인 디자인 결정이었습니다. 아마 튜토리얼은 그 결정을 더 잘 설명 할 수있었습니다. –