이있는 Fsyacc의 예제 문법 확장 "F # Parsed Language Starter"의 일부로 제공되는 예제 문법을 확장하여 단항 마이너스 (2 * -5와 같은 표현식)를 지원하려고했습니다. 다음과 같이 문법의 규칙단항 마이너스
......
%nonassoc UMINUS
....
과 :
나는 나는과 같이 우선 순위를 포함하도록 .fsy 파일의 헤더를 확장, here기본적으로 Samsdram 같은 블록에 충돌
또한...
Expr:
| MINUS Expr %prec UMINUS { Negative ($2) }
...
의 AST의 정의 :
...
and Expr =
| Negative of Expr
.....
위의 식을 구문 분석 할 때 여전히 구문 분석 오류가 발생합니다.
아이디어가 누락되었습니다. 나는 F # 컴파일러의 소스 코드를 읽고는 매우 유사한 것으로 보인다 그들이이 문제를 해결하는 방법을 명확하지 않다
우선 순위를 가지고 이런 식으로 정렬
편집 :
%left ASSIGN
%left AND OR
%left EQ NOTEQ LT LTE GTE GT
%left PLUS MINUS
%left ASTER SLASH
%nonassoc UMINUS
우선 순위를 모두 정할 수 있습니까? –
편집 된 질문 우선 순위 순서 –