정보의 특정 비트를 찾는 의사 코드를 구문 분석하기 위해 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 문을 구문 분석을 구현하려 했습니까?
이 여전히 현재입니까? –
나는 마감 시간 때문에 MGrammer 접근법에서 벗어나야 만했지만, 누군가가 답을 얻은다면, 미래의 일부 연구에서 베니핏 (benifit)처럼 해결 될 수있을 것입니다. – Sam