Programing

Flex / Lex와 Yacc / Bison의 차이점은 무엇입니까?

crosscheck 2020. 7. 22. 08:06
반응형

Flex / Lex와 Yacc / Bison의 차이점은 무엇입니까?


Flex & Lex와 Yacc & Bison의 차이점은 무엇입니까? 인터넷을 열렬히 검색했는데 확실한 답을 찾지 못했습니다.

Ubuntu에 순수 Lex 및 Yacc를 설치하거나 flex 및 bison 만 설치할 수 있습니까? 혼란 스러워요.

  • Lex 또는 Yacc가 여전히 누군가에 의해 유지 관리되고 있습니까?
  • 모두 무료입니까?
  • Lex가 무료가 아닌 경우 왜 Ubuntu 배포판에 설치해야합니까?

    lex --version
    lex 2.5.35
    

Lex와 Flex에는 약간의 차이가 있지만 Flex 문제를 해결하려면 Lex를 남용해야합니다. (저는 Lex를 악용하고 Flex에서 작동하지 않는 프로그램을 가지고 있습니다.) 이것은 주로 입력 미리보기 영역에 있습니다. Lex에서는 고유 한 입력 코드를 제공하고 문자 스트림을 수정할 수 있습니다. Flex는 그렇게 할 수 없습니다.

Yacc와 Bison은 Bison이 할 수있는 몇 가지 추가 트릭이 있지만 매우 밀접하게 호환됩니다.

Ubuntu에 설치할 Lex 및 Yacc의 원본 (AT & T 버전) 사본을 찾을 수 없습니다. 나는 그것이 불가능하다고 말할 필요는 없지만, 나는 그런 것을 알고 있지 않습니다. Flex와 Bison은 쉽게 구할 수 있으며 대부분의 목적과 동일합니다. BSD 세계에서 다양한 대안 및 거의 동등한 프로그램을 찾을 수도 있습니다.

Lex 및 Yacc는 Unix SVRx 라이센스에 의해 유지 보수됩니다. IBM (AIX), HP (HP-UX) 및 Sun (Solaris)과 같은 회사는 명령에 따라 Lex 및 Yacc 버전을 수정했습니다. MKS는 MKS Lex 및 MKS Yacc도 제공합니다. 그러나 Yacc에는 최소한 일부 비표준 확장이 있습니다.

Flex와 Bison은 무료입니다. (AT & T) Lex와 Yacc는 그렇지 않습니다.


Bison은 Yacc의 GNU 구현 / 확장이며 Flex는 Lex의 후속 버전입니다. 두 경우 모두 bison / flex를 사용하는 것이 좋습니다 (권장).


대부분의 (모든?) Linux 시스템에서 "Lex"는 실제로 유연하게 연결되는 심볼릭 링크입니다. 기본적으로 무료 버전과 이름이 다릅니다.


YACC는 Plan 9 및 Open Solaris의 오픈 소스 라이센스로 제공됩니다. 또한 원래 YACC와 호환되지만 소스 코드를 공유하지 않는 Berkeley YACC도 있습니다. Berkeley YACC는 모든 오픈 소스 BSD 운영 체제에서 찾을 수 있습니다.


GNU 프로젝트의 일부인 들소. yacc는 Berkeley Software Distribution (BSD)의 유틸리티로 사용되지만 yacc와 호환되지만 Lex와 Yacc는 과거의 일입니다. Flex와 들소는 오늘날 널리 사용됩니다.

참고 URL : https://stackoverflow.com/questions/623503/what-is-the-difference-between-flex-lex-and-yacc-bison

반응형