2011-04-10 2 views
0

파스칼 문법 검사를 위해 재귀 적 파생 구문 분석을 작성하는 것에 관한 한 가지 질문이 있습니다. 나는 예를 들어,이 코드를 가지고 :파스칼 구문 구문 분석기에서 재귀 하강 구문 분석

a := c ; 

내가 A, C가 변수입니다 것을 알 수있다. : = 및; - 터미널입니다. 내가 확인할 수있는이 표현. 그러나 만약 내가 이런 기교를 가지고 있다면 :

이 표현식에 대한 재귀 적 하강 파싱을 작성하는 방법에 문제가 있습니다.

if ((!parsing(current_token, "var")) || (!current_token, ":=")) || ( !parsing(current_token, "var") && !parsing(current_token, "const") ) || (!current_token, "term"))) show_error(); 

가 어떻게 두 번째 예를 들어 쓸 수 있습니다 : 첫 번째 예를 들어

나는 다음과 같은 C#을 썼다? 감사합니다. . 파스칼의

+0

가 숙제입니다 도움이 될 수 있습니다? 적절한 태그를 달아 적절한 응답을 얻으십시오. – sehe

답변

0

변수 할당은 다음 BNF

variable := expression 

그래서 당신이 := 토큰 다음 식을 구문 분석 할 필요가있다. 코드를 토큰화할 때 다음 토큰으로 유효한 것을 판별 할 필요가 있으므로이 경우에는 : = 연산자 뒤에 변수가 있으므로 표현 파서 함수를 다시 사용해야합니다.

좋은 표현 파서를 작성하는 것은 모든 언어를 파싱하는 데 중요합니다. 예를 들어 어디에서나 표현을 찾을 수 있습니다. 등 문, 케이스 문

내가 빠른 빙을했고, 발견하는 경우 루프를 들어, 파스칼이 BNF는

http://www2.informatik.uni-halle.de/lehre/pascal/sprache/pas_bnf.html