2014-02-28 8 views
0

저는 전문가는 아니지만 두 도구 모두를 사용하여 이미 다른 프로젝트에서 작동하는 것을 얻었습니다. 실제로 자바에서 jflex/byaccJ를 사용하여 ftp://ftp.funet.fi/pub/mirrors/ftp.imdb.com/pub/movies.list.gz을 다운로드했습니다.lex/yacc를 사용하여 IMDB darta를 구문 분석하거나 데이터 구조로 인해 둘 다 실행 가능하지 않습니다

movie.list 파일을 보면 처음에는 구조가 잘 보입니다. "몇 개의 탭 다음에 1 년 후에 (년) 다음에 오는 제목. 항목이 제목보다 에피소드 시리즈의 제목 싶게

"Breaking Bad" (2008) {Cornered (#4.6)}   2011 

년 currly 괄호 안에 더 많은 데이터를 거기되는 경우

“What It Is” (2004)     2004 

(둘 다 년의 의미에 대해 아직 확실하지 않다) -2014, ????, 2012-2014, 2014 - ????, 2014/II ... 처리 할 수 ​​있습니다.

(V), (TV), (VG) , {{SUSPENDED}} -이 태그라고 부릅니다.

나쁜 것들 : 나중에 그들은 제목을 ""로 묶지 않습니다. 브래킷은 다른 곳에서도 사용되므로 구조를 파악하기 위해 볼 수는 없습니다.

A través de A(lan) Glass (2006)    2006 
Michi o tsugu mono (zempen) (1994) (V)   1994 
"The Gayle King Show" (1997) {(1997-11-07)}  1997 

내 주요 질문은 jflex/byaccJ는 주어진 데이터에 사용할 수 있는지 또는 데이터가 너무 구조화하고 실현 가능한 문법을하지 않은 경우.

jflex : 첫 번째 방법은 WORD와 1 년 동안 규칙/토큰을 만드는 것이 었습니다. 그러나 "() 1-9"는 WORD에도 유효하기 때문에 둘을 구별 할 수는 없습니다.

두번째 방법 :가, 태그 (예를 들어, (V), (VG)) 또는 WORD 년을 맞는 경우 괄호 안의 문자열을하고있는 경우 규칙을 발견 검사가 명시 적으로

는 3 내가 사용을 만들 수 의 상태? 나는 다른 프로젝트를 사용하여 ""로 묶인 문자열을 잡았습니다. 이것이 여기에 도움이되는지 확실하지 않습니다.

이 글을 쓰면서 나는 두 번째 접근법을 시도 할 것이라고 생각한다. 나는 렉서에 너무 많은 로직을 넣을 것을 염려하지만 이것이 어쨌든 시도해야하는 것보다 이것이 가능한 유일한 방법이라면.

Thx 4 reading 및 rubberducking 그리고 내가 lex/yacc로 할 수 없다고 생각하면 여전히 interessted입니다. ftp://ftp.funet.fi/pub/mirrors/ftp.imdb.com/pub/tools/unix/moviedb-3.24.tar.gz

봐 파일 docs/ADDS-GUIDE에서 :

+0

IMDB 형식. –

답변

1

이 도구 내부의 파일의 실제 데이터 형식에 대한 자세한 정보를 찾을 수 있습니다.

제목을 무시하고 오른쪽에서 앵커/시작점으로 작업하면 형식이 더 단순 해 보입니다.

내게있어서 하나의 정규식은 일을하는 것처럼 보입니다. 나는 실제 일을 맡길 것입니다.

이미 일을 기존 라이브러리를 찾고 고려, 간단한 검색 발견이 : 당신은에 대한 공식 문법 사냥해야