2009-11-14 3 views
7

파이썬 용 FLEX 또는 LEX 사양 파일이있는 곳을 아는 사람이 있습니까? 예를 들어, 다음은 ANSI C 프로그래밍 언어의 lex 사양입니다. http://www.quut.com/c/ANSI-C-grammar-l-1998.html파이썬 프로그래밍 언어의 어휘 분석

참고로 코코아 애플리케이션에 코드 강조 표시를 쓰려고합니다. Regex는 문법 분석을 통해 코드를 폴드하고 블록을 인식하기를 원하기 때문에 그렇게하지 않을 것이다.

답변

6

Lex는 일반적으로 전체 구문 분석이 아닌 토큰 화에만 사용됩니다. 토큰 화에 flex/lex를 사용하는 프로젝트는 일반적으로 실제 파싱에 yacc/bison을 사용합니다.

lexx & yacc의 "현대적인"대체품 인 ANTLR을 살펴볼 수 있습니다.

ANTLR 프로젝트는 one for Python 3 이상을 포함하는 a Github repo containing many ANTLR 4 grammars입니다.

+0

이렇게하면 스캔과 구문 분석이 모두 수행됩니까? 신난다, 나는 이것에 관해 들었다. 그러나 그것이 얼마나 성숙했는지에 관해 명확히하지 않았다. C 코드를 뱉어내는 것 외에 Objective-C가 얼마나 잘 작동하는지 알고 있습니까? 철도 다이어그램이나 유한 상태 머신 다이어그램과 같은 다이어그램을 생성하는 옵션은 무엇입니까? – pokstad

+0

예, ANTLR은 스캐닝과 구문 분석을 모두 수행합니다. 내가 마지막으로 사용한 이후로 꽤 오랜 시간이 걸렸지 만 스캐닝 구문과 구문 분석 구문이 매우 유사하다는 사실을 기억합니다. C, C++, Java, C# 및 Python 이외에 Objective-C에 대한 명시 적 지원도 있습니다. 필자는 한번도 사용하지 않았지만 ANTLRWorks (http://antlr.org/works/index.html)에서 다이어그램을 시험해 볼 수 있습니다. –

+0

나는 그것에게 총을 줘, 고마워! – pokstad

3

grammar.txt은 공식적인 파이썬 문법이며 직접적으로 lex과 호환되지는 않지만 적절한 형태로 마사지 할 수 있어야합니다.

+0

필자가 보았지만 필자가 본 lex 구문과는 매우 다른 것으로 나타났습니다. 나는 flex/lex의 일부가 아니며 문법 파서와 함께 작동하는 것을 찾고 있습니다. 그 문법 파일을 사용하는 어휘 분석기에 대한 권장 사항이 있습니까? – pokstad

0

기존 코드 하이 라이터 중 하나 (예 : Pygments)를 사용해 보았습니까?

+0

첫 번째 문제는 해결되지만 다른 변형은 많이 도움이되지 않습니다. –

+0

호환 가능한 문법 파서의 출력을 생성해야하기 때문에 코드 강조만으로는 충분하지 않습니다. – pokstad

관련 문제