문제

GE Logician MEL 추적 파일을 더 쉽게 읽을 수 있도록 구문 분석하는 가장 좋은 방법을 찾으려고 노력 중입니다.

다음과 같은 세그먼트가 있습니다.

>{!gDYNAMIC_3205_1215032915_810 = (clYN)}
execute>GDYNAMIC_3205_1215032915_810 = "Yes, No"
results>"Yes, No" 
execute>end 
results>"Yes, No" 

>{!gDYNAMIC_3205_1215032893_294 = (clYN)}
execute>GDYNAMIC_3205_1215032893_294 = "Yes, No"
results>"Yes, No" 
execute>end 
results>"Yes, No" 

그리고

>{IF (STR(F3205_1220646638_285, F3205_1220646638_301) == "") THEN "" ELSE (\par\tab fnHeadingFormat("Depression") + CFMT(F3205_1220646638_285, "", "Have you often been bothered by feeling down, depressed or hopeless? ", "B", "\par ") + CFMT(F3205_1220646638_301, "", "Have you often been bothered by little interest or pleasure in doing things? ", "B", "\par ") ) ENDIF}
execute>call STR("No", "No")
results>"NoNo" 
execute>"NoNo" == ""
results>FALSE 
execute>if FALSE
results>FALSE 
execute>call FNHEADINGFORMAT("Depression")
execute>call CFMT("Depression", "B,2")
results>"\fs24\b Depression\b0\fs20 " 
execute>"\r\n" + "\fs24\b Depression\b0\fs20 "
results>"\r\n\fs24\b Depression\b0\fs20 " 
execute>"\r\n\fs24\b Depression\b0\fs20 " + "\r\n"
results>"\r\n\fs24\b Depression\b0\fs20 \r\n" 
results>return "\r\n\fs24\b Depression\b0\fs20 \r\n" 
execute>call CFMT("No", "", "Have you often been bothered by feeling down, depressed or hopeless? ", "B", "\par ")
results>"\b Have you often been bothered by feeling down, depressed or hopeless? \b0 No\par " 
execute>"\r\n\fs24\b Depression\b0\fs20 \r\n" + "\b Have you often been bothered by feeling down, depressed or hopeless? \b0 No\par "
results>"\r\n\fs24\b Depression\b0\fs20 \r\n\b Have you often been bothered by feeling down, depressed or hopeless? \b0 No\par " 
execute>call CFMT("No", "", "Have you often been bothered by little interest or pleasure in doing things? ", "B", "\par ")
results>"\b Have you often been bothered by little interest or pleasure in doing things? \b0 No\par " 
execute>"\r\n\fs24\b Depression\b0\fs20 \r\n\b Have you often been bothered by feeling down, depressed or hopeless? \b0 No\par " + "\b Have you often been bothered by little interest or pleasure in doing things? \b0 No\par "
results>"\r\n\fs24\b Depression\b0\fs20 \r\n\b Have you often been bothered by feeling down, depressed or hopeless? \b0 No\par \b Have you often been bothered by little interest or pleasure in doing things? \b0 No\par " 

절차적으로 수행하면 비굴해질 수 있지만, 내가 작업한 모든 정규식을 살펴본 후에 비슷한 방식으로 파일을 구문 분석하기 위한 규칙을 정의할 수 있는 것이 아무것도 없다는 것을 믿기 어렵습니다.내가 잘못?

도움이 되었습니까?

해결책

ANTLR을 사용하여 문법을 만드세요.C를 사용하는 경우 lex/yacc가 기본입니다.ANTLR은 Java, Python 및 .NET에서 기본 파서를 생성합니다.귀하의 출력은 repl처럼 보입니다.공급업체에 입력 언어 사양을 문의해 보세요.

다른 팁

앤틀러 트릭을 할 것입니다.

구문 분석을 위해 Perl을 사용하는 경우.YACC에 해당하는 Perl은 다음과 같습니다. 구문 분석::Yapp 기준 치수.Perl 코드와 함께 사용하기 위해 yacc 문법을 번역할 때 번역은 대부분 기계적이었습니다.느리지만 강력한 재귀 하강 파서 생성기도 있습니다. 구문 분석::RecDescent.

ANTLR이나 lex/yacc를 사용해 볼 수 있습니다.

만약 나라면 문맥 없는 문법을 파생시켜 파서 생성기(아마도 Scala의 결합자 라이브러리일 것임)에 연결할 것입니다.그러나 이 문법은 손으로 분석하기가 상당히 쉬워 보입니다. 단지 오토마타 이론을 염두에 두기만 하면 문제가 되지 않습니다.

LEX, FLEX, CUP, ANTLR 또는 YACC(또는 사용 중인 프로그래밍 언어에 해당하는 도구)를 사용할 수 있다고 생각합니다.모든 주류 프로그래밍 언어에는 이러한 사용 가능한 특성이 있습니다.) 파일이 특정 구조를 가지고 있는 경우 [보다 정확하게, 문법으로 표현될 수 있는 경우] 파일을 구문 분석합니다.하지만 더 미세한 점에서는 작동하지 않을 수도 있습니다.

시도해 볼 수 있는 훌륭한 구문 분석 라이브러리가 있는 Haskell이라는 프로그래밍 언어가 있습니다.www.haskell.org 및 http://legacy.cs.uu.nl/daan/parsec.html 상세 사항은

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top