javacc의 일부 위치에서 선언 된 토큰 건너 뛰기

BlackPOP

나는 토큰을 선언했다 <VOTE>. 이 토큰을 사용하여 중괄호로 구분 된 블록 내부에서 일치시키고 싶습니다. 블록 밖으로 나오면 건너 뛰고 싶어요. 현재 토큰은 블록 내부에 있든 외부에 있든 상관없이 동일하게 일치하므로 블록 외부의 내용을 구문 분석하는 데 문제가 있습니다.

  TOKEN: { < VOTE: " vote" > }

  TOKEN: { < #STRING_LITERAL: ["a" - "z", "A" - "Z", "0" - "9", ".", "_", "-", "!","`", "*", "@", "#", "$", "%", ":", "[", "]", "\"", "^", ";", "\\", "<", ">", "/", ",", "?", "=", "&","(",")","+","|"] >}

  TOKEN: { < DATA: < STRING_LITERAL > ( < STRING_LITERAL > ) * >
    | < OPEN_BRACE: "{" >
    | < CLOSE_BRACE: "}" >}

   **Production:**

   void test():{}
   {
      (<OPEN_BRACE>
          <VOTE>{System.out.println("Voted");}
          <CLOSE_BRACE>)
      |
      <DATA>{System.out.println("Skipped"+token.image);}
   }

위의 생산은 블록에 대해 작동합니다.

hi i am { vote }

그러나 다음 블록에 대한 예외가 발생합니다.

hi i vote am { vote }

"투표"가 중괄호 밖에 있기 때문입니다. 중괄호 밖의 "투표"를 건너 뛰는 방법을 알려주세요.

이렇게 <VOTE>제작에서 언급 할 수 있습니다

   void test():{}
   {
      (<OPEN_BRACE>
          <VOTE>{System.out.println("VOted");}
          <CLOSE_BRACE>)
      |
      (<DATA>|<VOTE>){System.out.println("Skipped"+token.image);}
   }

하지만 토큰이 많기 때문에이 작업을하고 싶지 않기 때문에이 수정 사항을 풀 스케일 시스템에 적용하면 유지 관리가 어려울 것입니다.

Theodore Norvell

사용해야하는 것은 어휘 상태입니다. 이 내용은 FAQ 및 문서에서 다루며, 관련 부분을 읽어야합니다.

기본적으로 원하는 것은 다음과 같습니다.

<DEFAULT> TOKEN:{
        < #STRING_LITERAL: ["a" - "z", "A" - "Z", "0" - "9", ".", "_", "-", "!","`", "*", "@", "#", "$", "%", ":", "[", "]", "\"", "^", ";", "\\", "<", ">", "/", ",", "?", "=", "&","(",")","+","|"] >
    |   < DATA: < STRING_LITERAL > ( < STRING_LITERAL > ) * > }

<DEFAULT, INBRACES> TOKEN : {
        < OPEN_BRACE: "{" > : INBRACES
    |   < CLOSE_BRACE: "}" > : DEFAULT }

<INBRACES> TOKEN: {
        < VOTE: "vote" > }

<DEFAULT, INBRACES> SKIP { " " | "\r" | "\n" }

이제 중괄호 사이에서 "vote"는 VOTE가되지만 외부에서는 DATA가됩니다. 중괄호와 공백은 위치에 관계없이 동일하게 취급됩니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

부울 값에 따라 일부 토큰 건너 뛰기

분류에서Dev

중단 된 경우 스트림의 일부 건너 뛰기

분류에서Dev

jqgrid 조건부에서 다중 선택의 확인란 건너 뛰기

분류에서Dev

중첩 된 for 루프에서 동일한 값 건너 뛰기

분류에서Dev

Excel VBA의 루프 기능에서 일부 워크 시트 건너 뛰기

분류에서Dev

자바 스크립트에서 배열의 일부 건너 뛰기

분류에서Dev

C에서 코드의 일부를 건너 뛰는 전 처리기

분류에서Dev

R의 travis에서 특정 테스트 파일 건너 뛰기

분류에서Dev

Javascript 월에서 토요일 및 일요일 반복 건너 뛰기

분류에서Dev

JavaCC 일치 토큰 그룹

분류에서Dev

RXJS : 다른 Observable에 의해 트리거 된 Observable에서 값 건너 뛰기

분류에서Dev

SQL에서 생성 된 XML의 NULL 매개 변수 건너 뛰기

분류에서Dev

손상된 파일의 백업을 건너 뛰기위한 rsync 명령의 스위치 또는 옵션은 무엇입니까?

분류에서Dev

PHP에서 일부 배열 건너 뛰기

분류에서Dev

ansible에서 프롬프트로 일부 작업 건너 뛰기

분류에서Dev

lapply에서 "정의되지 않은 열 선택"오류 건너 뛰기

분류에서Dev

'건너 뛰기'를 추가하면 예외가 throw됩니다. '건너 뛰기'메서드는 LINQ to Entities의 정렬 된 입력에만 지원됩니다.

분류에서Dev

C # foreach 순서 일부 값을 건너 뛰기

분류에서Dev

bash 스크립트의 여기 문서 구분 기호 중 일부를 건너 뛰었습니다.

분류에서Dev

Array에 저장된 레코드를 기록한 다음 첫 번째 인덱스 위치를 건너 뛰면서 임의의 값을 가져옵니다.

분류에서Dev

while 루프 내부에서 스캐너 입력 건너 뛰기

분류에서Dev

미디어 위키 패치, 부 버전 건너 뛰기?

분류에서Dev

미디어 위키 패치, 부 버전 건너 뛰기?

분류에서Dev

JavaScript : 개체 외부에서 메서드를 선언하는 동안 예기치 않은 토큰

분류에서Dev

Maven 빌드의 코드 적용-누락 된 클래스 디렉토리로 인해 JaCoCo 실행 건너 뛰기

분류에서Dev

TestNG 테스트의 조건부 건너 뛰기

분류에서Dev

Pandas로 일부 행을 건너 뛰는 gspread에서 csv 파일 만들기

분류에서Dev

Python에서 잘못된 EOL 건너 뛰기

분류에서Dev

외부 메서드에서 Ruby 반복기 건너 뛰기

Related 관련 기사

  1. 1

    부울 값에 따라 일부 토큰 건너 뛰기

  2. 2

    중단 된 경우 스트림의 일부 건너 뛰기

  3. 3

    jqgrid 조건부에서 다중 선택의 확인란 건너 뛰기

  4. 4

    중첩 된 for 루프에서 동일한 값 건너 뛰기

  5. 5

    Excel VBA의 루프 기능에서 일부 워크 시트 건너 뛰기

  6. 6

    자바 스크립트에서 배열의 일부 건너 뛰기

  7. 7

    C에서 코드의 일부를 건너 뛰는 전 처리기

  8. 8

    R의 travis에서 특정 테스트 파일 건너 뛰기

  9. 9

    Javascript 월에서 토요일 및 일요일 반복 건너 뛰기

  10. 10

    JavaCC 일치 토큰 그룹

  11. 11

    RXJS : 다른 Observable에 의해 트리거 된 Observable에서 값 건너 뛰기

  12. 12

    SQL에서 생성 된 XML의 NULL 매개 변수 건너 뛰기

  13. 13

    손상된 파일의 백업을 건너 뛰기위한 rsync 명령의 스위치 또는 옵션은 무엇입니까?

  14. 14

    PHP에서 일부 배열 건너 뛰기

  15. 15

    ansible에서 프롬프트로 일부 작업 건너 뛰기

  16. 16

    lapply에서 "정의되지 않은 열 선택"오류 건너 뛰기

  17. 17

    '건너 뛰기'를 추가하면 예외가 throw됩니다. '건너 뛰기'메서드는 LINQ to Entities의 정렬 된 입력에만 지원됩니다.

  18. 18

    C # foreach 순서 일부 값을 건너 뛰기

  19. 19

    bash 스크립트의 여기 문서 구분 기호 중 일부를 건너 뛰었습니다.

  20. 20

    Array에 저장된 레코드를 기록한 다음 첫 번째 인덱스 위치를 건너 뛰면서 임의의 값을 가져옵니다.

  21. 21

    while 루프 내부에서 스캐너 입력 건너 뛰기

  22. 22

    미디어 위키 패치, 부 버전 건너 뛰기?

  23. 23

    미디어 위키 패치, 부 버전 건너 뛰기?

  24. 24

    JavaScript : 개체 외부에서 메서드를 선언하는 동안 예기치 않은 토큰

  25. 25

    Maven 빌드의 코드 적용-누락 된 클래스 디렉토리로 인해 JaCoCo 실행 건너 뛰기

  26. 26

    TestNG 테스트의 조건부 건너 뛰기

  27. 27

    Pandas로 일부 행을 건너 뛰는 gspread에서 csv 파일 만들기

  28. 28

    Python에서 잘못된 EOL 건너 뛰기

  29. 29

    외부 메서드에서 Ruby 반복기 건너 뛰기

뜨겁다태그

보관