이것은 기본적으로 소스 코드 브라우저를 만드는 것에 관한 my first Question의 두 번째 부분입니다. 자습서를 읽은 후 PHP 파일 및 구문 AST를 구문 분석해야하고 거기에서 필요한 기호가 있어야한다는 것을 알았습니다. 그러나, 일을 찾는 것은 내가 그것을 할 수있는 방법에 아무런 도움이되지 못했습니다. PHP AST 작성에 대한 자습서 나 질문이 있습니까? 죄송합니다. 어딘가에 답변을하면 내 검색에서 아무런 도움이되지 못했습니다!플렉스/들소 PHP AST 생성
답변
PHP에서 수행하는 작업은 다음과 같습니다. https://svn.php.net/repository/php/php-src/trunk/Zend/zend_language_parser.y. PHP는 flex 대신 re2c를 사용합니다 (./zend_language_scanner.l의 문법).
207에는 안정적이고 강력한 도구 인 PHP-Parser이 있습니다.
TOKEN 구문 분석 및 PHP 소스 코드의 AST 구문 분석을 허용합니다.
여기에 AST code generation example입니다.
당신이, nikic/ast를 확인할 수있는 것 C 연장을 보면.
불행히도 PHP 밖에서 사용할 설명서가 없습니다. –
거기에 문제가되는 것이 좋습니다. 나는 @nikic이 나보다 훨씬 너를 도울 수있을 것이라고 생각한다. –
감사합니다. –
- 1. ParseTree (AST 아님) 생성
- 2. ANTLR - 생성 된 AST 트리를 사용하는 방법?
- 3. 다른 AST 트리가있는 Java에서 AST 트리 만들기
- 4. AST 통역사?
- 5. ANTLR의 AST 트리 업데이트
- 6. ANTLR AST 연산자를 무시합니다.
- 7. ANTLRWorks로 트리 문법을 테스트하기위한 AST 입력을 생성/지정하는 방법은 무엇입니까?
- 8. . NET 용 Java AST 파서
- 9. 파이썬, ... AST/기호 액세스
- 10. Bison을 사용하여 AST 작성하기
- 11. ANTLR : AST, Java
- 12. 방법 불러 오기 AST
- 13. 일반 AST 빌더
- 14. Eclipse AST 사용하기
- 15. Bison 돌아 오는 AST
- 16. AST 트리 의미 분석기
- 17. 파이썬 AST 처리
- 18. Doctrine AST 커스텀 워커
- 19. Erlang에서 AST 노드 만들기
- 20. AST 용 트리 구조
- 21. 람다 함수의 Ast 표현
- 22. 이클립스의 변수 유형 AST
- 23. OCaml에서 AST 작성하기
- 24. 하스켈 파서 AST
- 25. 스칼라 검색 2.10 AST
- 26. 아이러니 : 몇 가지 AST 일부 해달라고
- 27. C 소스 코드 AST 파서 (Java)
- 28. Groovy에서 AST 트리를 철저히 다루기
- 29. YACC 출력을 AST (토큰 트리)
- 30. 은 yacc (들소) AST 단순화
나는 이미 파일을보고 bison과 flex 매뉴얼을 모두 읽었지만 복잡하다. 당신이 알고 있거나 조금 설명 할지도 모르는 튜토리얼이 있습니까? –
@Stefano flex와 bison의 튜토리얼? 매뉴얼의 개념에 대한 몇 가지 소개가 있습니다. 당신이 다른 질문에 원하는대로 완벽한 "코드 브라우저"를 합치는 것은 내가 상상할 수있는 가장 복잡한 노력 중 하나입니다. 나는 스캐너를 작성한 후 zend_language_parser.y의 모든 액션을 던져서 유효성 검사 파서를 제공하고 "클래스", 메소드 정의 등에 대한 액션을 삽입해야합니다. 그러나 모든 경우의 95 %에서 만족스러운 고객이되는 것은 아마 훨씬 더 생산적 일 것입니다. –
안녕하세요, Tim, 나는 ctags route로 갔고 PHP를 잘 지원하지 않습니다. 멤버 또는 메소드가 속한 클래스를 알 수 없습니다. 내가 어떻게이 길로 가지 않을지 안다면. 이게 내 마지막 수단이야! –