저는 현재 손으로 파서를 만들고 있습니다. LL (1) 파서입니다. 현재로서는 위대한 인식 자입니다. 함수 구문 분석 (목록 토큰)은 토큰이 언어의 구성원인지 여부를 결정합니다.LL (1) 파서가 스택으로 구현되었습니다. AST를 작성하는 방법은 무엇입니까?
이제 해당 입력에 해당하는 AST를 작성하려고합니다. 그러나, 나는 그것을 재귀 하강 방식으로 구현하는 방법을 이미 알고있다. 즉, 도전, 나는 고전적인 알고리즘을 사용하여 스택을 사용하여 내 스택을 구현하는 경우 : PARSING_TABLE은 LL (1) 테이블
next <- first token of the input
stack <- START_SYMBOL
do {
top <- stack.pop()
if (top is a terminal and top == next) {
next <- next token of the input
} else if (top is a non terminal and PARSING_TABLE[top, next] exists) {
stack.push(PARSING_TABLE[top, next]);
} else {
return invalid input;
}
} while (stack is not empty);
return valid input;
합니다. 그러나 이러한 구성에서 AST를 작성하는 부분을 구현하는 방법을 궁금합니다. 완전한 구현을 요구하지는 않습니다. 구현 아이디어가 더 필요합니다.
감사합니다.
는 웹에서이 곳의 몇 가지 간단한 사례 구현을 알고 계십니까? 나는 같은 OP 질문을 가지고 있지만, 당신의 요지를 얻지 못합니다. 대답에 대해 더 자세히 설명하면 나에게 도움이 될 것이다. – Wyvern666
방금 30 분 가까이 수색했는데 AST 빌딩에서 아무 것도 찾지 못했습니다. 근본적으로 아무 것도 없습니다. ( 다음 : http://ag-kastens.uni-paderborn.de/lehre/material/uebi/ parsdemo/ll1frame.html은 LL (1)을 단독으로 사용하는 데는 좋지만 AST에서는 아무 것도 찾을 수 없습니다. – armel