MKS YACC가 제공 한 "선택 환경 설정"을 사용한 사람이 있습니까?

StackOverflow https://stackoverflow.com/questions/478891

  •  20-08-2019
  •  | 
  •  

문제

내 질문에 전혀 답을 얻지 못했기 때문에 선택 환경 구문 또는 매우 유사한 것을 지원하는 MKS YACC에 대한 대안이 있습니까?, 나는 더 기본적인 질문을 할 것이다 :

  • MKS YACC가 제공 한 "선택 환경 설정"을 사용한 사람이 있습니까?

당신이 있다면, 당신은 그것을 무엇으로 사용 했습니까? 또한 규칙의 마지막 위치 이외의 다른 곳에서 사용하는 것이 합리적입니까?

나는 다음과 같은 규칙을 설명하는 문법을 돌봐야합니다.

    TOKEN1 LPAREN non_terminal1 [^EQUAL] TOKEN2 non_terminal2 RPAREN

내가 무언가를 오해하지 않는 한, 임베디드 선택 선호도는이 맥락에서 어떤 가치도 제공하지 않습니다.

배경

MKS YACC는 웹 사이트가 호출하는 표기법을 지원합니다. "선택 기본 설정 구문". 그림은 설명되어 있지 않지만 사각형 괄호 안에있는 토큰 또는 사각형 괄호 안에있는 토큰 목록으로 구성되며 (선택 사항 일 수 있음) 특정 토큰 이이 구조물을 따르지 않아야하지만 그 토큰이 계산되지 않음을 나타냅니다. 이 규칙의 일부로 :

non_terminal1:  TOKEN1 non_terminal2 TOKEN2 [^TOKEN3]

따라서이 규칙은 다음을 말합니다 TOKEN1 그 뒤에 non_terminal2 그리고 a TOKEN2 a non_terminal1, 다음 토큰이 a TOKEN3 이 경우 다른 규칙이 적용됩니다.

(괄호가없는 항목이 비 터미널이 될 수 있는지 여부는 확실하지 않습니다. 표기법을 사용하는 코드는 항상 토큰 또는 몇 개의 공간을 분리 한 토큰을 사용하지만 결코 터미널이 아닙니다. 간병이 필요한지 여부를 지우십시오. 다시 한 번, 내가 본 모든 예제는 캐럿을 사용합니다.)

도움이 되었습니까?

해결책

홍옥. 오전 1시 30 분에 나는 이것을 직접하려고 할 준비가되어 있지 않지만, 그 규칙이 무엇을하든, 그들은 일반적인 BNF와 같은 규칙에 대해서만 속할 수 있습니다. 이를 살펴보면 "선택 선호도"가하는 일이 하나의 문법 규칙으로 여러 작품이 무엇인지 표현할 수있는 것으로 보입니다.

나는 약간 파고 들었다 이것, 내 가정을 확인합니다. 선택 환경 설정이하는 일은 룩보드를 명시 적으로 삽입하여 차단되는 규칙을 명확하게 삽입 할 수 있습니다.

내가 제안한 것은 YACC 또는 직선 BNF에 다시 작성되면이 규칙 중 하나가 어떻게 보일지 생각하는 것입니다. 나는 그것이 같은 것을 발견 할 것이라고 생각한다

TOKEN1 LPAREN non_terminal1 MULT TOKEN2 non_terminal2 RPAREN
TOKEN1 LPAREN non_terminal1 DIVIDE TOKEN2 non_terminal2 RPAREN
TOKEN1 LPAREN non_terminal1 ADD TOKEN2 non_terminal2 RPAREN
TOKEN1 LPAREN non_terminal1 SUBTRACT TOKEN2 non_terminal2 RPAREN
TOKEN1 LPAREN non_terminal1 EXP TOKEN2 non_terminal2 RPAREN
TOKEN1 LPAREN non_terminal1 MOD TOKEN2 non_terminal2 RPAREN
...

전반적인 효과는 모든 운영자에게 하나의 규칙을 취하는 것입니다. 제외하고 동일합니다 [^ 다양한 Bell Labs 언어에서는 세트의 보완과 같은 표기법입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top