4

좋은 모호한 Marpa 문법과 모호한 입력 문자열이 있습니다.파스 트리를 통과하는 것이 아니라 Marpa 파스 포리스트를 "따라가는"방법은 무엇입니까?

나는 Marpa로 문자열을 구문 분석하고 파스 포리 스트로 끝낼 수 있습니다. 나는 숲의 각 파스 트리를 반복 할 수 있습니다.

그러나 파스 포레스트를 "따라가는"방법은 무엇입니까?

구문 분석 숲이 대안은 "주류"로 다시 함께 참여 대안이 물적 분할 노드와 노드를 가질 수 있습니다 그래프의 종류 :

무슨 뜻인지 설명합니다.

  • A B1 C
  • A B2 C
  • A B3 B4 C

는 메인 스트림 A ... C하지만 모호한 있습니다 :

이 하나 개의 구문 분석 숲의 대체 구문 분석 나무 말하는 B 섹션.

물론 실제 세계 분석에서는 분기 할 때 많은 수준의 분기가있을 수 있으며 단일 주류에 다시 합류하지 않는 흐름이있을 수 있습니다. 그러나 일반적으로 두 가지 또는 많은 해석에 공통적 인 부분이 많이있을 것입니다.

모호하지 않고 모호한 노드 체인을 따라 반복하기 위해 어떤 접근법을 사용할 수 있습니까?

사실 전체 그래프를 출력 할 수 있습니까?

답변

1

이 작업을 수행 할 수있는 인터페이스는 Marpa :: R2에서 alpha에서 stable로 바뀌 었으므로 질문에 시간이 걸립니다. https://metacpan.org/pod/distribution/Marpa-R2/pod/ASF.podhttps://metacpan.org/pod/distribution/Marpa-R2/pod/Glade.pod을보십시오.

전체 그래프를 출력 할 수 있습니까? 그렇습니다.하지만 쉽게 제공 할 수 있습니다. 어려운 부분은 기하 급수적 인 문제없이 흥미로운 부분을 파헤 치기위한 좋은 방법으로 떠오르고있었습니다.

다른 마파 전문가 인 Btw가 여기에서 만날 수 있습니다.이 시점에 내가 가진 것보다 더 많은 경험을 가진 사람이 있습니다. 아마도 당신은 그의 대답을 조금이라도 더 기다리고 싶을 것입니다. 당신은 그의 대답을 좋아할 것입니다. :-)

+0

저는 ASF를 사용하고 있지만 예제에서는 그래프 대신에 각 대안 구문 분석을 반복 해 보았습니다. 나는 내가 찾고있는 ASF의 기능을 놓치고 있는지 또는 내 문제를 설명하지 못했는지 여부를 확신하지 못한다. – hippietrail

+0

사실 내가 필요한 것은 아마 거기에있을 것 같지만 약간의 독서와 여러 가지 개념과 용어를 아는 것이 중요합니다. – hippietrail

+1

모호성을 트래버스하려면 다양한 종류가 있다는 것을 이해해야합니다. 나는이 사실이 문학에서별로 탐구되지 않았다는 사실에 놀랐다. 많은 문장에서 파스 트리를 통과하는 것은 매우 표준적인 것이지만, 파스 (parse) 숲은 새로운 영토이다. ASF 및 Glade 문서에 포함 된 대부분이 새롭게 작성되었습니다. –

3

gist은 ASF 노드를 반복하는 두 가지 예제 (기본 및 고급)를 사용하여 직렬화 된 AST 목록을 생성합니다.

둘 다 Marpa :: R2 테스트 제품군 (cpan/t/sl_panda (1) .t)의 코드를 기반으로합니다.

희망이 있습니다.

P. 이 gist 아마 더 나은 서비스를 제공합니다 - 그것은 방문의 순서로 모든 ASF 노드를 인쇄 - 당신이 노드가 모호 여부 있는지

$spans->{ $literal }->{ $start } 

해시를 사용하고 (스팬 간격에 존재 기반에서 그래프를 구축 할 수 있습니다 $ start, $ start + $ length)를 사용하여 자식/부모 링크를 만듭니다.

+1

rns는 새로운 ASF의 고급 사용자입니다.이 시점에서 그는 내가 사용하는 것보다 실제 사용 경험이 더 많습니다. –