따라서 간단한 언어에 대한 구문 분석기를 정의하려면 PegJS을 사용하려고합니다.pegJS에 대한 재귀 규칙을 정의하는 방법
언어는 순수 같은 쉼표로 구분 무한히 깊은 함수 호출의 구성 : 재귀하지
call =
func"("arg")"
func =
[a-zA-Z]+
arg =
[0-9a-z,A-Z]+/call
_ "whitespace"
= [ \t\n\r]*
그러나 그것의 :
f(4, g()) => [f, [4, g, []]]
g()
f(5) => [g, [], f, [5]]
이 내가 가지고있는 문법이다
입력 : b (r (6))
오류 : Line 1, column 4: Expected ")" or [0-9a-z,A-Z] but "(" found.
왼쪽 재귀와 오른쪽 재귀의 개념이 있지만 전화 규칙을 무한정 반복하는 방법을 알지 못합니다.
감사합니다. 필자는 실제로이 함수를 일반적인 인자 앞에 함수 호출을 확인함으로써 해결했습니다. –