2013-10-22 1 views
0

문자열을 토큰 화해야합니다. s는 영숫자, 닫혀 있고 여는 괄호 및 하이픈을 가질 수 있습니다. 알 수없는 문자가있는 경우 토크 나이저는 오류를 내뿜을 필요가 있습니다. 각 요소는 예를 토큰 화한다여러 regex 패턴을 사용하여 문자열 토큰 화하는 방법

문자열 aa (b - d)

토큰 1 ->aa (영문자)

2->( (괄호 열기)

3->b (영문자)

4->- (하이픈)

5>d (영숫자)

6>) (폐쇄 괄호) 또한

하는 하이픈 및 문자 및 숫자 만 가질 수있는 조건 (,) 또는 공간의 주위에 (줄 바꿈 등 탭)가 그것.

그래서 aa(d-b)은 오류를 발생시킵니다.

내 프로세스가 여기 (위 관련된) 여러 패턴을 컴파일하고 자신의 코드 (즉, 숫자, 하이픈, closedparen, openparen) 모든 문자열에 대한 다음

와 함께 보관하는 것이 었습니다, 나는 목록을 이동 패턴 (각각 ^에 추가됨)을 사용하여 일치 시키려고합니다. 일치하는 항목을 찾으면 문자열에서 토큰을 제거하고 문자열이 비어있을 때까지 다시 시작합니다.

(및)는 토큰이며 발견 된 후 문자열에서 제거되므로 이전 요소가 올바른 후속 영숫자 또는 하이픈을 확인하려면 어떻게해야합니까? 나는 이것을하기위한 몇 가지 복잡한 방법이 있다는 것을 안다. (이전의 경기 등을 저장한다.) 더 간단한 방법이 있는지 궁금해하고 있었다.

+1

당신이 이미 시도한 것을 보여주십시오. – Nikola

답변

0

당신은 이것을 좋아하지 않을 것이지만 이것을하는 가장 쉬운 방법은 JFlex 나 ANTLR과 같은 렉서를 사용하는 것입니다. jflex 파일을 설정해야하지만 필요하다면 문자열을 쉽게 토큰화할 수 있습니다.

관련 문제