2010-02-20 1 views
0

합리적인 숫자와 값을 계산하는 'Rational'토큰을 javacc에서 만드는 방법은 무엇입니까? 예를 들어 '2/5'값 = 0.4. 이 정규식을 작성하는 방법을 알고 있지만 모르겠다, 그리고 제대로 가르쳐 적이, 어떻게/javacc 코드에서 자바 메서드를 통합 할 수 있습니다. 나는 다음과 같이 권고했다.Javacc의 'Rational'토큰

0의 분모를 갖는 유리수는 정의되지 않았다. 위의 그림과 같이 오류가 발생하는 대신 무한대가 인쇄됩니다. 조언 : Java String 클래스의 indexOf 및 substring 메서드를 의 순서로 사용하여 유리수의 분자 및 분모 부분을 추출 할 수 있습니다. 분모의 값을 저장하려면 두 번째 변수 (예 : val2)를 정의하는 것이 좋습니다. 또한 의 결과를 double (double) val/val2로 곱합니다.

저는 javacc을 처음 사용했지만 java에 대한 기본 지식이 있음을 기억하십시오. 이 문제에 대한 조언은 대단히 감사하겠습니다. 많은 감사합니다.

답변

0

이 다음과 같은 구문을 사용할 수있는 문법 내에서 선택 포인트와 관련된 문제가 아닌 경우 :

JAVACODE 
void parse_rational() { 
    Token num, den; 
    num = getToken(1); // first value 
    getNextToken(); // trash fract symbol 
    den = getToken(1); // second value 

    /* do whatever you want */ 
} 

는 그러나이 방법은 JavaCC에서이 블랙 박스로 "토큰"parse_rational, 그 이유에 대해 생각하게 그것을 사용하여 선택 (예 : S(): { parse_rational() | SomethingElse } 그것은 좋지 않아.

당신이 전체 컴파일러 또는 분수 파서를 작성 해야할지 모르겠다 대답은 두 번째는이 일을 꽤 잘할 수 있습니다 ..