PHP에 Lex와 Yacc의 구현이 있습니까?PHP의 Lex와 Yacc
그렇지 않다면 누구든지 lexical analyzer와 parser generator (즉, Lex와 Yacc와 같은 것)가 PHP 코드를 생성 할 것을 제안 할 수 있습니까? 필자는 결과 파서의 성능에 대해 너무 걱정하지 않는다. 정말 정규식으로 해석해서는 안 일을 구문 분석 할 정규식을 사용하는 병입니다
...
PHP에 Lex와 Yacc의 구현이 있습니까?PHP의 Lex와 Yacc
그렇지 않다면 누구든지 lexical analyzer와 parser generator (즉, Lex와 Yacc와 같은 것)가 PHP 코드를 생성 할 것을 제안 할 수 있습니까? 필자는 결과 파서의 성능에 대해 너무 걱정하지 않는다. 정말 정규식으로 해석해서는 안 일을 구문 분석 할 정규식을 사용하는 병입니다
...
가 JLexPHP있다 : https://github.com/wez/JLexPHP/blob/master/jlex.php
나는 그것을 사용하지했지만이있다 : http://pear.php.net/package/PHP_ParserGenerator, 이것은 Lemon 문법의 PHP Parser를 생성합니다. 프로젝트는 비활성 인 것처럼 보입니다.
이 프로젝트도 http://code.google.com/p/antlrphpruntime/인데,이 프로젝트는 Antlr입니다. 그래도 다시는 비활성.
잠시 동안 이런 종류의 것을 찾고있었습니다. 이 게시물을 찾은 후 ANTLR PHP 런타임을 사용해 보았습니다. 나는 그것이 끝나지 않았다고보고 할 수 있습니다. 생성 된 코드에는 원래 Java 런타임 클래스가 PHP (중첩 클래스 선언, 클래스 메소드 연산자에 액세스하려고 할 때 '.'대신 '.'대신에)를 사용하여 제대로 변환되지 않은 몇 가지 오류가 있습니다.
ANTLR 프레임 워크 자체는 매우 강력합니다 (생성 된 코드의 효율성을 증명할 수는 없습니다). 특히 그래픽 도구 ANTLRWorks를 사용하면 쉽게 문법을 만들고 디버깅 할 수 있습니다. PHP 버전에 대해서는 너무 나쁘다. 자신의 것을 굴릴 수도 있습니다. 가장 좋은 해결책은 생성 된 ANTLR 런타임 클래스를 분석하고, 그것이 어떻게 작동하는지 파악하고, 덜 가벼운 enterprisey 버전을 제안하는 것입니다.
저렴한 트릭 : 코드 재귀 적 하강 파서. 이것은 많은 경우를 포함합니다. Is there an alternative for flex/bison that is usable on 8-bit embedded systems?
에게 또 다른 sugestion 참조 : 렉스/Yacc에 접근을 방지, 좋은 string 파서로 PHP를 사용
간단한 작업 간단한 번역에 대한 : 사용 펄 정규 표현식 (PCRE)로 PHP preg_*
functions. 콜백은 Awk 또는 Yacc 규칙과 동등하지만 PHP 코드 (!)를 사용합니다. 복잡한 작업에 대한
이 두 옵션 은 (렉스와 Yacc에) 동일한 전력을 가지고 있고, 구축 된 PHP의 클래스와 함수만을 사용합니다.
복잡한 경우 XML, XSLT 등은 W3C 표준이며 XML 표준은 "표준 형식"이며 XML 도구는 최적화되어 있으며 진화 중이고 XML 데이터는 서로 바꿔 사용할 수 있습니다.
@nickf 그래도 당연 하네! – Christian
+1'preg_split ('# ([{})) #', ...)'지금까지만 당신을 얻을 수 있습니다. – Dan
언어가 PHP와 동일한 토큰을 사용하는 경우 buil-in PHP 토큰 화 프로그램을 사용할 수 있습니다 – niahoo