2017-02-17 12 views
0

내가 아는 한 Flex가 지금까지 왜 사용 되었는가?플렉스 - 빠른 스캐너 생성기입니다. 왜?

지금 사용되지 않고 이전에 사용 된 경우 C 코드를 직접 작성하는 것보다 어떤 이점이 있습니까?

이것은 내가 각 표현식이 일치 할 때 촬영으로 함께 작업으로, 플렉스

그것은 입력으로 정규 표현식을 포함하는 텍스트 파일을 필요에 대해 읽어 것입니다. 입력 파일의 정규 표현식 에 해당하는 DFA의 테이블 기반 구현 인 함수 yylex을 정의하는 C 소스 코드 을 포함하는 출력 파일을 생성합니다. 그런 다음 Flex 출력 파일을 C 컴파일러로 컴파일하여 실행 파일을 얻습니다.

Flex는 무엇이 필요합니까? 직접 C 프로그램을 작성하는 것보다 낫습니까? 실행 또는 코드 작성 속도 측면에서 더 좋습니까?

내가 손으로 상태 머신을 쓰기에 비해 내 소스

+1

일반적으로 입력 스트림을 토큰 화 (느슨하게, 구문 분석)하기 위해 임시 코드를 작성하는 것보다 Flex 코드를 작성하는 것이 훨씬 쉽습니다. 물론, C로 할 수 있지만 (종종 그렇습니다), 코드가 반드시 Flex로 생성 될 수있는 것보다 더 빠르거나 견고하거나 명확하지는 않습니다. –

+2

기계 코드를 입력하기 위해 뒤집기 스위치로 돌아 가야합니다. –

답변

4

this를 참조하고, 확실히 플렉스와 어휘 스캐너를 생산하는 적은 코드를합니다. 또한 플렉스 사양을 읽고 토큰이 인식하는 토큰을 이해하는 것이 훨씬 쉽습니다.

스캐너를 손으로 최적화 할 수는 있지만 실행 시간 측면에서 구부러 질 수는 있지만 프로그래머 시간을 사용하는 경우는 거의 없습니다. 대부분의 구문 분석 문제에서 어휘 검사는 병목 현상이 아니며 작은 성능 향상은 보이지 않습니다. 또한 정규 표현식 라이브러리와 같은 도구를 사용하면 유지 관리가 훨씬 느리고 훨씬 어려울 수 있습니다.

위의 진술 중 하나에 영향을주는 지난 20 년간 C 언어가 변경되지 않았습니다.

위의 모든 내용은 도구를 사용하는 방법을 이해하고 적절한 문제가있는 프로그래머에게 달려 있습니다. 모든 도구 세트와 마찬가지입니다.