PyParsing의 새로운 기능입니다. xdot 파일에서 draw (및 유사한) 특성을 구문 분석하는 방법을 알아 내려고 노력 중입니다. 다음 요소의 수는 시작 부분에 정수로 주어지며 NetString과 비슷한 종류의 항목이 있습니다. netstring과 같은 구조를 다루기 위해 샘플 코드를 살펴 봤지만 저에게는 효과가없는 것 같습니다.
P 2 811 190 815 180 806 185
:
P 3 811 190 815 180 806 185
2 점 'P', [[811, 190], [815, 180], [806, 185]]
pyparsing을 사용하여 xdot 그리기 속성을 구문 분석
다각형 파싱해야합니다 (P는 다음의 점의 개수를 나타내는 후) 3 점
다각형 : 여기
일부 샘플이다'P', [[811, 190], [815, 180]]
(끝 부분에 분석되지 않은 텍스트가 있음)으로 구문 분석해야합니다.
펜 채우기 색상 후 문자 '-') 소비 :
C 4 -blue
구문 분석한다 정보 업데이트 'C', 'blue'
에 :
내가 더 맥락없이, 자신의 라인에 예제를 넣어 잘못된 생각.
S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 690 181 680 179 687 187
실제 사양에 대한 http://www.graphviz.org/doc/info/output.html#d:xdot를 참조하십시오 여기에 실제 예입니다.
위의 setlinewidth (1) 텍스트 필드에 큰 공백이있을 수 있습니다. "abcd efgh hijk"일 수 있으며 정확히 15자인 경우 'S'태그와 연결해야합니다. 'P'태그 다음에 정확히 7 개의 숫자 (초기 카운터 + 3 쌍)가 있어야하며, 같은 줄에 더 많은 태그가 올 수 있기 때문에 구문 분석 오류가 발생해야합니다. 유효한.
이렇게하면 상황이 좀 더 명확 해지기를 바랍니다.
을 추가, 나는 (아래) 대답을 내놓았다. 다른 견해를 듣고 더 좋은 방법이 있다면 여전히 좋아할 것입니다. 여전히 PyParsing에 만족합니다. 아래의 내 결과 (여전히 약간 '수동')는 손으로 쓰는 것보다 쓰기 (읽기)가 훨씬 쉽습니다. –
그래서'P 2 811 190 815 180 806 185'는 "해석되지 않은 텍스트가 끝나기"전에 말한 것처럼 구문 분석 오류를 발생시키지 않습니까? – Hooked
@Hooked : 미안 해요. 일을 간단하게하려고 노력했습니다. 그리고 나 자신을 테스트 할 때, 찾고 있던 결과를 얻는 것만으로도 구문 분석 오류에 대해 걱정하지 않아도됩니다. 그러나 'S 5 -solid P 1 690 181 680 179 C 4 -blue'는 680에서 구문 분석 오류를 실제로 발생시킵니다 (필자는 생각합니다). –