2009-09-17 7 views
0

정보의 특정 비트를 찾는 의사 코드를 구문 분석하기 위해 MGrammar 스펙을 작성 중입니다. 나는 1 개의 결정적인 요소를 제외하고 작동하는 spec의 대부분을 가지고있다.IF 문 구문 분석을위한 MGrammar

의사 코드는 if-then-else 구문을 지원하며 구문 분석에 만족할만한 방법을 찾을 수 없었습니다. 정확한 구조는 ... ELSEIF는 선택 사항 인 그렇지 및

IF expression operator expression THEN
Statement1
Statement2
Statementn
ELSEIF expression operator expression THEN
Statement1
Statement2
Statementn
ELSE
Statement1
Statement2
Statementn
ENDIF

...입니다.

내가 지금까지 가지고있는 것은 : 구문 구문 = r : ReturnClause => r |
i : IfClause => i |
ei : ElseifClause => ei |
e : ElseClause => e |
끝 : EndClause => 끝 |
v : Expression => v;

구문 IfClause = 이름 인 경우 : 식별자 연산자 : 연산자 다음 Then 문 : Statement => [name, operator, Then [statement]];
구문 ElseifClause = Elseif 이름 : 식별자 연산자 : 연산자 다음 명령문 : Statement => ElseIf [name, operator, Then [statement]];
구문 ElseClause = Else 문 : 문 => 기타 [문];
구문 EndClause = Endif; `

그러나 'Then'및 'Else'다음의 명령문은 충분히 탐욕스럽지 않으며 구문 분석 트리의 첫 번째 명령문 만 캡처합니다.

누군가 MGrammar를 사용하여 If 문을 구문 분석을 구현하려 했습니까?

+0

이 여전히 현재입니까? –

+0

나는 마감 시간 때문에 MGrammer 접근법에서 벗어나야 만했지만, 누군가가 답을 얻은다면, 미래의 일부 연구에서 베니핏 (benifit)처럼 해결 될 수있을 것입니다. – Sam

답변

0

코드 플렉스의 아키 타입 프로젝트에서 (거의) 완전한 C# 4.0 문법을 찾을 수 있습니다. 댄 밴더 붐 (Dan Vanderboom)은 "Archetype"이라는 새로운 언어 코드를 준비하기 위해 그것을 작성했습니다.

은 어쩌면 도움 : http://archetype.codeplex.com/