2011-11-03 4 views
13

나는 1 년 전에 질문했지만 Lex and Yacc in PHP 질문을 안다.PHP Lexer 및 파서 생성기?

새로운 성숙한 PHP 파서 생성기가 있습니까? 내 검색을 통해 다음 항목으로 이동했습니다. 다른 항목에 대해 어떻게 생각합니까?

  • code.google.com/p/antlrphpruntime/ : ANTLR PHP 버전이지만 매우 베타 버전 인 것 같습니다. 많은 작업이 필요하다고 생각합니다. 장점은 ANTLR Works 도구에 문법을 작성할 수 있다는 점입니다.
  • pear.php.net/package/PHP_ParserGenerator/docs/0.1.7/ : 시도했지만 PHP_LexerGenerator와 함께 사용하는 것이 매우 복잡해 보입니다.
  • sourceforge.net/projects/lime-php/ : 나는
  • bitbucket.org/wez/lemon-php/downloads를 시도하지 않았다 : 나는
  • bitbucket.org/wez/jlexphp/를 시도하지 않았다 다운로드 : 나는

[답변 :] 시도하지 않았다 Is there an alternative for flex/bison that is usable on 8-bit embedded systems?

이 게시물은 내가 생성 된 ANTLR 코드의 대부분을 이해 할 수 누군가가 나에게 오래된 질문이 멋진 링크를했다. 그래서 내 선택은 동일하게 유지됩니다 : ANTLR 프로젝트는 죽은 것처럼 보입니다. 유지할 수 있도록 코드를 변경하지 않기를 바랍니다. 그렇지 않으면 내가 ANTLR 시도를 제공하기 위해 제안 것 ANTLR

+0

PHP에 대한 속성이있는 문법이있는 경우 CoCo/R (ssw.jku.at/coco/)를 사용해보십시오. 나는 지금 직장에서 프로젝트를 위해 그것을 사용하고 있으며, 오히려 잘 작동합니다. – xbonez

+0

나는 code.google.com/p/antlrphpruntime을 사용하지 않을 것입니다. (AFAIK)는 적극적으로 개발되지 않고 대부분의 다른 ANTLR 타겟이 지원하는 것만 지원합니다. 이것이 ANTLR 도구에 기본적으로 포함되지 않는 이유입니다. PHP_ParserGenerator에 대해서도 마찬가지입니다. 나는 (많은 문서가 아니라 버려진 프로젝트이기 때문에) 가지 않을 것입니다. 다른 3 가지 도구는 내게 익숙하지 않은 도구이기도합니다. –

+0

@xbonez : 100 % 확신 할 수는 없지만 당신이 내 필요를 이해했다고 생각하지는 않습니다. 특정 문법 (PHP 언어를 구문 분석하지 않음)을 구문 분석하기 위해 PHP로 작성된 파서를 생성해야합니다. CoCo/R은 좋아 보이지만 PHP 생성기를 찾을 수 없습니다. –

답변

6

계속 사용하여 조언을 받아 들일 것 다른 답변이있을 경우

내가보고 조금 기다립니다. ANTLRWorks이 도움이 될 수 있습니다.

저는 다른 PHP 기반 솔루션을 인식하지 못했기 때문에 순수 PHP로 LL (1) 파서 생성기를 직접 작성했습니다.

+0

현재 ANTLR을 시도하고 있지만 생성 된 코드에는 많은 오류가 있습니다. 예를 들어, 일부 예외가 누락되어 구문 분석기가 예기치 않은 예외를 발생시킵니다. 그 구성 요소를 사용 했습니까? http://code.google.com/p/antlrphpruntime/ –

+0

흠, 실제로는 아닙니다. 나는 최근에 ActionScript 런타임을 시도했는데 현재 깨져있다. 그러나 나는 ANTLR과 PHP 런타임을 가지고 놀았는지 확인했다. 그 당시에는 일들이 작동하는 것처럼 보였습니다. – SteAp

+0

URL이 깨졌습니다. –

2

PHP https://github.com/hafriedlander/php-peg 내가 PHP의 Jison, 자바 스크립트에서 들소 복제, 이식 한

+0

감사합니다. 지금 ANTLR이 Parser를 생성 한 것에 대해 매우 만족하고 있지만 Antlr이 매우 느려 보이기 때문에 나는 여전히 다른 사람들에게 관심이 있습니다. 당신은 그 PEG를 시도 했습니까? 좋은 공연을합니까? –

+0

그건 그렇고, 나는이 프로젝트 PEG가 거의 죽지 않았다고 생각한다 .... 2011 년 8 월에 선언 된 마지막 버그 03/2011, 10 개의 버그. –

+0

성능에 대해서는 잘 모르겠지만 나는 PEG가 좋다고 생각한다. PHP에서 유일한 PEG 구현. – jcubic

6

에 대한 PEG 있습니다. 결과는 아주 단순하고 매우 복잡한 렉싱/파싱을 처리 할 수있는 킬러 파서입니다. 이제는 Jison의 일부이지만 my fork에 몇 가지 업데이트가 있습니다.

파일은 here입니다. 그 페이지에있는 readme를보고, 같은 일이나 다른 일을 할 수있는 자바 스크립트와 PHP 파서를 동시에 만듭니다.

안정적이고 빠르며 쉽고 재미있게 사용할 수 있습니다.

+0

나는 최대한 빨리 그것을 읽는다. –

+0

이동 된 링크의 죽은 링크 : / – Dennis