2012-01-09 7 views
2

이것은 기본적으로 소스 코드 브라우저를 만드는 것에 관한 my first Question의 두 번째 부분입니다. 자습서를 읽은 후 PHP 파일 및 구문 AST를 구문 분석해야하고 거기에서 필요한 기호가 있어야한다는 것을 알았습니다. 그러나, 일을 찾는 것은 내가 그것을 할 수있는 방법에 아무런 도움이되지 못했습니다. PHP AST 작성에 대한 자습서 나 질문이 있습니까? 죄송합니다. 어딘가에 답변을하면 내 검색에서 아무런 도움이되지 못했습니다!플렉스/들소 PHP AST 생성

답변

2

PHP에서 수행하는 작업은 다음과 같습니다. https://svn.php.net/repository/php/php-src/trunk/Zend/zend_language_parser.y. PHP는 flex 대신 re2c를 사용합니다 (./zend_language_scanner.l의 문법).

+0

나는 이미 파일을보고 bison과 flex 매뉴얼을 모두 읽었지만 복잡하다. 당신이 알고 있거나 조금 설명 할지도 모르는 튜토리얼이 있습니까? –

+1

@Stefano flex와 bison의 튜토리얼? 매뉴얼의 개념에 대한 몇 가지 소개가 있습니다. 당신이 다른 질문에 원하는대로 완벽한 "코드 브라우저"를 합치는 것은 내가 상상할 수있는 가장 복잡한 노력 중 하나입니다. 나는 스캐너를 작성한 후 zend_language_parser.y의 모든 액션을 던져서 유효성 검사 파서를 제공하고 "클래스", 메소드 정의 등에 대한 액션을 삽입해야합니다. 그러나 모든 경우의 95 %에서 만족스러운 고객이되는 것은 아마 훨씬 더 생산적 일 것입니다. –

+0

안녕하세요, Tim, 나는 ctags route로 갔고 PHP를 잘 지원하지 않습니다. 멤버 또는 메소드가 속한 클래스를 알 수 없습니다. 내가 어떻게이 길로 가지 않을지 안다면. 이게 내 마지막 수단이야! –

1

207에는 안정적이고 강력한 도구 인 PHP-Parser이 있습니다.

TOKEN 구문 분석 및 PHP 소스 코드의 AST 구문 분석을 허용합니다.

여기에 AST code generation example입니다.


당신이, nikic/ast를 확인할 수있는 것 C 연장을 보면.

+0

불행히도 PHP 밖에서 사용할 설명서가 없습니다. –

+0

거기에 문제가되는 것이 좋습니다. 나는 @nikic이 나보다 훨씬 너를 도울 수있을 것이라고 생각한다. –

+0

감사합니다. –