2013-07-07 2 views
1

누구든지 Ocamlyacc에서 구현할 수있는 방법을 간단히 설명 할 수 있습니까? 어휘 분석기 (ocamllex) 즉, IF, THEN, ELSE에서 토큰을 정의했습니다. if 문에서 정수에 대해 GREATERTHAN, LESSERTHAN, EQUALTO 토큰을 정의했습니다. 나는 많은 자습서를 찾았지만 아무 소용이 없다!그 밖의 경우 ocamlyacc

UPDATE :

가 나는 결과를 해석하고 경우-else 문에 의해 결정 식의 값을 반환합니다.

답변

3

당신은 규칙을 정의 할 수 있습니다

ifthenelse :  
| IF condition THEN statement ELSE statement { IfThenElse($1,$2,$3) } 


condition :  
| INT EQUALTO INT { Cond(EqualTo,$1,$3) } 
| INT LESSERTHAN INT { Cond(LesserThan,$1,$3) } 
| INT GREATERTHAN INT { Cond(GeaterThan,$1,$3) } 

이 렉스 FIL에, 인터넷 용 정규 표현식을 정의하는 것을 잊지 마세요

아마도 당신이 그것을 본 적이 있지만, OCaml의 설명서가 완벽한을 제공
+0

IfThenElse, Cond for me? 함수를 정의 할 수 있습니까? 미리 감사드립니다! – user2352241

+0

그것은 당신이 정의하는 타입 일뿐입니다 : Cond of op * int * int 등 – Ontologiae

+0

Ocaml을 사용하여 이것을 평가할 수 있습니까? – user2352241

0

표현식의 값을 계산하는 ocamllex/ocamlyacc 예제 : Desk Calculator Example.

이 예제는 원할 경우 ocamlyacc 작업에서 결과를 계산할 수 있음을 보여줍니다. 간단한 예를 들면, 따라하기가 어렵지 않습니다. 보다 현실적인 경우 나중에 처리 (예 : 평가) 할 수 있도록 추상 구문 트리를 구성해야합니다. 이 코드는 다른 문법 규칙이 아닌 AST 유형의 다른 생성자가 사례를 제공한다는 점을 제외하면 비슷한 맛이납니다.

관련 문제