0
레몬을 사용하여이 간단한 파서를 컴파일하려고 할 때 충돌이 발생하지만 어떤 규칙이 잘못된 것인지 알 수 없습니다. binaryexpression이나 callexpression을 제거하면 충돌이 사라집니다.표현식 호출과의 시프트/줄이기
%left Add.
program ::= expression.
expression ::= binaryexpression.
expression ::= callexpression.
binaryexpression ::= expression Add expression.
callexpression ::= expression arguments.
arguments ::= LParenthesis argumentlist RParenthesis.
arguments ::= LParenthesis RParenthesis.
argumentlist ::= expression argumentlist.
argumentlist ::= expression.
[편집]는 LParenthesis에 좌측 연관성 충돌을 해결했다 첨가. 그러나 그것이 올바른지 알고 싶습니다. 몇 가지 문법 (fe C++)이 건설 연산자 '()'와 호출 연산자 '()'에 대해 우선 순위가 다른 것을 보았습니다. . 그래서 옳은 일에 대해 확신하지 못합니다.
문법이 완성 되었습니까? 왜냐하면 지금은 빈 언어를 정의하기 때문입니다. – MvG