Treetop에서 어떻게하면 좋을까요?Treetop/PEG에서 비 탐욕적 일치?
[^;]+ ';'
추악한 .. 다른 방법의 종류는 어떤 :
/.+?;/
그것은 유일한 방법처럼 보인다는하는 것입니다? .+?
이 작동하지 않는 것 같습니다.
Treetop에서 어떻게하면 좋을까요?Treetop/PEG에서 비 탐욕적 일치?
[^;]+ ';'
추악한 .. 다른 방법의 종류는 어떤 :
/.+?;/
그것은 유일한 방법처럼 보인다는하는 것입니다? .+?
이 작동하지 않는 것 같습니다.
저는 Treetop을 모르지만 /[^;]+;/
은 작동합니까? 빠른 검색에서
+
것을 (다른 정규식 맛
++
으로 표시)를 소유 정량 사실이다.
이 경우, 부정한 클래스보다 다른 정규식 기반 옵션이 있는지 확신하지 못합니다.
'/ [^;] +; /'내 질문에 나타난 것처럼'[^;] + ';''로 쓰여 있습니다. 그러나 더 좋은 방법이 있기를 바랬습니다. – cloudhead
글쎄, 나는 PEG가 탐욕 스럽다는 것을 배웠고, 그 주위에는 방법이 없다. Lookaheads 나중에 온다 그들이 할 수있는 그들이 무엇을 생각하지 않는 사람들이 많은 입력을 먹는 의미, 욕심 기본적으로 맹인 !(';' .)
PEG를 좋아하지만이 동작을 모방하는 데 사용할 수 있습니다
S <- P1* P2
(욕심
S <- P1 S/P2
(욕심, 비 맹검)
S <- P2/P1 S
(lazy, non-blind)
'parslet'에'rule (: line) {(str (";") >> any) .repeat (1) >> str (";")}'두 번째 옵션과 같습니다. –