JavaCC 선택 충돌 경고

율피

현재 JavaCC에 대한 단일 문제가 있습니다. 문법을 정의했고 언어는 LL (1)이고 모든 Left Recursion이 제거되었습니다. 선택 충돌 오류가 발생합니다 (아래 덤프 됨). 나는 그것이 expr2()자신을 부르고 갈등을 일으키는 라인 라인 에 의해 발생한다고 생각합니다 . 나는 솔직히 완전히 당황했다. 나는 문제를 해결하는 방법도 모릅니다.

다음은 경고를 생성하는 코드 스 니펫입니다.

void expr() : {}
{
  <LBRAC> arg_list() <RBRAC> expression2()
}

void expr2() : {}
{
  section() (<SUB>|<ADD>|<MUL>|<DIV>|<MOD> section())* expr2()
  | {}
}

void section() : {}
{
  <IDENTIFIER> | <TRUE> | <FALSE> | <REAL> | (<ADD> | <SUB>) section() | expr()
}

그리고 경고는 다음과 같습니다.

Warning: 
Choice conflict in (...)* construct at line 233, column 14.
     Expansion nested within construct and expansion following construct
     have common prefixes, one of which is: "-"
     Consider using a lookahead of 2 or more for nested expansion.
Parser generated with 0 errors and 1 warnings.

233 번 줄이 expr2 ()의 첫 번째 줄에 해당하는 경우

브라이언 톰셋-톰 레인

@Juan Lopes는 다음과 같이 썼습니다.

"2 + 2"를 고려하십시오. "+"는 <ADD>at expr2()또는 <ADD>at section()?

OP는 다음과 같이 답했습니다.

Add / Sub 명령을 제거해 section()도 여전히 동일한 문제가 발생합니다. 나는 당신이 의미하는 바를 이해하지만 그것이 문제를 일으키는 것 같지 않습니다.

@Theodore Norvell은 다음과 같이 썼습니다.

Juan이 말한 것은 전적으로 정확합니다. 그러나 변화 (<ADD> | <SUB>) section()section()소개하고 새로운 문제를. 본문의 첫 번째 줄 변경 시도 expr2에 하나 section() (<MUL>|<DIV>|<MOD> section())* expr2()또는 section() ((<MUL>|<DIV>|<MOD>) section())* expr2()당신이 실제로 원하는에 따라. 그래도 작동하지 않으면 새로운 질문을하십시오. Juan이 대답했습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JavaCC 선택 충돌 경고

분류에서Dev

(...) * 구문에서 JAVACC ERROR 선택 충돌

분류에서Dev

JavaCC에서 선택 충돌. 3 개 이상의 미리보기 사용 고려

분류에서Dev

JavaCC 문법에서 선택 충돌의 원인 찾기

분류에서Dev

javacc 문법 충돌 토큰

분류에서Dev

NDK r13, -fexceptions -Wall-> 경고 : 이전 선언과 충돌

분류에서Dev

Qt 충돌 선택 상자

분류에서Dev

이미지를 선택하지 않고 갤러리에서 돌아갈 때 앱이 충돌 함

분류에서Dev

충돌하는 특성 구현에서 선호하는 구현 선택 (음수 경계 사용)

분류에서Dev

선택한 행의 Apple Watch Table 충돌

분류에서Dev

이미지 선택시 앱 충돌

분류에서Dev

병합 충돌 중에 변경 사항과 변경 사항을 모두 선택하는 방법

분류에서Dev

목록보기에서 선택한 항목을 변경하려고하면 프로그램이 충돌합니다.

분류에서Dev

Windows PC에서 '설치하지 않고 시도'를 선택한 후 Ubuntu 12.04가 충돌 함

분류에서Dev

Windows PC에서 '설치하지 않고 시도'를 선택한 후 Ubuntu 12.04가 충돌 함

분류에서Dev

프로그램 [Digikam]이 잘못된 qt lib를 선택하고 충돌합니다.

분류에서Dev

"select * from"을 사용하여 mysql 데이터베이스에서 충돌 예약을 선택하고 식별

분류에서Dev

충돌없이 MySQL에서 몇 개의 행을 선택하고 업데이트합니다.

분류에서Dev

프로그램 [Digikam]이 잘못된 qt lib를 선택하고 충돌합니다.

분류에서Dev

경고없이 Arduino IDE 충돌

분류에서Dev

Pixeldata 곡선 열 충돌

분류에서Dev

C ++ 문제 : 충돌 선언

분류에서Dev

선언과 모델 충돌

분류에서Dev

PHP, Javascript, 선택 및 경고

분류에서Dev

EditText 배경색 충돌

분류에서Dev

EditText 배경색 충돌

분류에서Dev

충돌 조항 변경

분류에서Dev

Qt Creator의 경로 충돌

분류에서Dev

Qt Creator의 경로 충돌

Related 관련 기사

  1. 1

    JavaCC 선택 충돌 경고

  2. 2

    (...) * 구문에서 JAVACC ERROR 선택 충돌

  3. 3

    JavaCC에서 선택 충돌. 3 개 이상의 미리보기 사용 고려

  4. 4

    JavaCC 문법에서 선택 충돌의 원인 찾기

  5. 5

    javacc 문법 충돌 토큰

  6. 6

    NDK r13, -fexceptions -Wall-> 경고 : 이전 선언과 충돌

  7. 7

    Qt 충돌 선택 상자

  8. 8

    이미지를 선택하지 않고 갤러리에서 돌아갈 때 앱이 충돌 함

  9. 9

    충돌하는 특성 구현에서 선호하는 구현 선택 (음수 경계 사용)

  10. 10

    선택한 행의 Apple Watch Table 충돌

  11. 11

    이미지 선택시 앱 충돌

  12. 12

    병합 충돌 중에 변경 사항과 변경 사항을 모두 선택하는 방법

  13. 13

    목록보기에서 선택한 항목을 변경하려고하면 프로그램이 충돌합니다.

  14. 14

    Windows PC에서 '설치하지 않고 시도'를 선택한 후 Ubuntu 12.04가 충돌 함

  15. 15

    Windows PC에서 '설치하지 않고 시도'를 선택한 후 Ubuntu 12.04가 충돌 함

  16. 16

    프로그램 [Digikam]이 잘못된 qt lib를 선택하고 충돌합니다.

  17. 17

    "select * from"을 사용하여 mysql 데이터베이스에서 충돌 예약을 선택하고 식별

  18. 18

    충돌없이 MySQL에서 몇 개의 행을 선택하고 업데이트합니다.

  19. 19

    프로그램 [Digikam]이 잘못된 qt lib를 선택하고 충돌합니다.

  20. 20

    경고없이 Arduino IDE 충돌

  21. 21

    Pixeldata 곡선 열 충돌

  22. 22

    C ++ 문제 : 충돌 선언

  23. 23

    선언과 모델 충돌

  24. 24

    PHP, Javascript, 선택 및 경고

  25. 25

    EditText 배경색 충돌

  26. 26

    EditText 배경색 충돌

  27. 27

    충돌 조항 변경

  28. 28

    Qt Creator의 경로 충돌

  29. 29

    Qt Creator의 경로 충돌

뜨겁다태그

보관