2009-11-24 4 views
2

Python 소스를 구문 분석하여 Python에서 Go로 기본적인 소스 코드 변환기를 만들려합니다.* .py 파일을 파이썬으로 파싱하는 법?

  • 어떤 모듈을 사용해야합니까?
  • 진행해야할까요?
  • 계속해야한다면 어떻게해야합니까?

답변

13

language services 패키지, 특히 ast을 살펴보십시오.

내 생각에 코드 생성 기술뿐만 아니라 구문 분석도 아직 제대로 이해하지 못했다면이 작업은 착수하기 어려운 프로젝트가 될 것입니다.

행운을 빈다!

3

활동 기지 솔루션

당신은 그 이동으로 컴파일 할 수하는 파이썬 같은 언어를 만들려고 노력하고 있습니까? Go 특정 기능 (Go 기능 활용)을 원할 때 가장 합리적인 것 같습니다.

pyparsing을 살펴보십시오. a complete python parser의 예가 포함되어 있지만 실제로 그렇게하고 싶지는 않을 것입니다.

변환기/변환기를 점진적으로 작성하여 점진적으로 파서를 빌드하려는 경우 그렇지 않으면 AST에서 질식 할 수 있습니다. 좋아, 당신은 모든 것을 구문 분석하고 당신이 이해하지 못하는 것들을 무시할 수 있습니다. 그러나 그것은 컴파일러로부터 큰 행동이 아닙니다.

basic arithmetic으로 파싱을 시작할 수 있습니다.

파이렉스 솔루션

이것은 우우 솔루션과 비슷하지만 훨씬 어렵습니다. Boo 솔루션을 먼저 사용하십시오. 그런 다음 래퍼 코드를 생성하는 방법을 배우므로 Go 및 Python 파트가 함께 작동 할 수 있습니다.

PyPy 솔루션

전체 파이썬 이동 컴파일러? 행운을 빕니다. 너는 그것을 필요로 할 것이다.

+0

분명히 설명해 주셔서 감사 드리며 두 번 투표 할 수 있기를 바랍니다. 파이썬에서 C++로 소스 레벨을 변환하는 쉐네 스킨 (shedskin)에 대한 아이디어가 마음에 들지만 Go는 파이썬에 가까운 내장 데이터 유형이 많다는 것을 알기 때문에 그렇게 할 수 있다고 생각합니다. – YOU

2

파서 목록을 반올림하여 Ned Batchelder으로 작성하면 도움이 될 것입니다.

3

'내가 앞으로 나아갈 것인가, 그렇지 않으면 않는가'에 대한 질문 : 왜 이것을 처음부터하고 싶습니까?

순수 학습 활동 인 경우 가치가 있는지 여부를 묻지 않아도됩니다. 배우고 싶으므로 바로 시작하십시오.

실용적인 도구가 될 것이라면 제 제안은하지 않는 것입니다. 그러한 전환을 수행하는 강력한 도구가 유용 할 수 있지만 나는 그렇게 멀리 가지 않을 것이라고 생각합니다. 이를 염두에두고 Go에서 수동으로 파이썬 코드를 다시 작성하는 것이 더 유익 할 것입니다.

여기에는 Go 컴파일에 실질적인 이점이 있다고 가정합니다. current testing suggests Stackless Python을 사용하면 성능 및 유사한 코드 구조가 향상됩니다.

+0

나는 운동을 위해 그렇게 할 생각이 없다. : D 그래, 코드를 유지하고 최대 개까지 산업 표준 도구를 고려해야 할 매우 중요한 요소입니다, 스택없는 파이썬에 대한 정보도 주셔서 감사합니다 – YOU