2010-06-25 2 views
0

대체품이 재귀 적으로 남아있는 이유를 알아낼 수는 없습니다. 그것은 정말로 내 파서에 렌치를 던졌습니다.왜 ECMAScript RegExp 문법의 대체 기호가 재귀 적으로 남아 있습니까?

 
Alternative :: 
    [empty] 
    Alternative Term 

다음은 명확하지 않은 사양의 의미 부분에 대한 참고 사항입니다. 어쩌면 이걸 이해하면 추론이 드러날까요?

주 연속 약관 동시에 입력 문자열의 연속 부분 일치 하려고합니다. 대체 오른쪽 기간을 왼쪽 및 정규 표현식 모두 선택 포인트가의 속편 경우, 속편에있는 모든 선택은 적절한 기간, 의 다음 선택에 에 이동하기 전에 시도하고 모든 선택에있다 올바른 용어는 다음으로 이동하기 전에 시도한 왼쪽 선택 사항입니다.

왼쪽 재귀 문법을 올바르게 처리 할 수있는 파서는 어떤 종류입니까?

답변

2

특정 유형의 파서에서 왼쪽 재귀가 훨씬 더 좋습니다 (예 : yacc의 경우 - 설명은 6.2 here 섹션 참조).

특정 파서가 문제를 일으키는 경우 모든 방법으로 바꾸어서 어떤 식 으로든 언어 정의에 영향을주지 않습니다.

+0

필자는 파서가 재귀 적 파생 파서로 알려져 있고 파서를 교체하지 않고 어떤 유형의 파서가 사용되는지 궁금합니다. * 추신 : 당신이 눈치 채지 못했을 경우를 대비해 * – ChaosPandion

+0

내 대답 yacc에서 언급 한 파서는 LALR (1) 파서입니다 (http://en.wikipedia.org/wiki/LALR_parser 참조).). – psmears

+0

이전에 기호를 바꿔서 아무런 문제없이 실행 한 것처럼이 대답을 받아 들일 것입니다. 최종 구현에서 의도하지 않은 결과를 초래할 수 있는지 확실하지 않았습니다. – ChaosPandion

관련 문제