Earlier quoted context omitted.
Aaron Patterson, the author of phuby ( https://github.com/tenderlove/phuby ) once explained in a talk what's good about embedding a php interpreter in ruby. The gist, as I remember was: Technically speaking, it makes no sense. It will never become anything useful. But you can make it work, and you might learn something useful along the way. IIRC, he found a couple of very interesting (and useful) issues along the way…
Embedding an interpreter in another language can certainly be useful, but this is just a parser.
Php-parser written in golang v0.3 is released
11–20 of 28 posts
Re: Php-parser written in golang v0.3 is released
#12What is the purpose of this? Just static analysis? If that is it, you'd probably be better off just using the PHP parser ( https://github.com/nikic/PHP-Parser ). If you are writing analyzers for PHP, you must know it enough to right an analyzer in actual PHP. Why Go? I can't see a lot of people using this.
I'm not sure about the "Just" here.
The opportunities for writing code transformation tools are abundant. E.g. a PHP IDE that isn't written in PHP, a linting tool, a preprocessor for an embedded DSL. It isn't obvious to me that the tooling for a language like PHP need to be written in PHP.
> Why Go?
Go isn't a bad choice for writing parts of a compiler. The parser itself was, however, written with the parser generator goyacc rather than native Go code:
https://github.com/z7zmey/php-parser/blob/master/php7/php7.y
Taking a goyacc file like this and porting it to another YACC is a lower effort than starting from scratch. In such a way, this project delivers not just "a PHP parser with xx% coverage in Go", but a shortcut to writing PHP parsers in any language with a decent YACC.
One way this project is structured that I don't particularly like is that each node in the AST corresponds to a file. For a programming language with algebraic types (ML, Haskell), having the AST definition in a single file is quite typical.
Re: Php-parser written in golang v0.3 is released
#13Why?
Re: Php-parser written in golang v0.3 is released
#14There's a [dead] comment that asks "Why?"... Obviously not every project needs a "why?", and this is a technically cool endeavour that stands on its own.. A few ideas I can think of for "Why?": * Static analysis of a codebase looking for bad practices or errors * Feeding the structured output into code-gen for another language, to start a porting project * //STEP MISSING//, Profit? Anything else?
Re: Php-parser written in golang v0.3 is released
#15There's a [dead] comment that asks "Why?"... Obviously not every project needs a "why?", and this is a technically cool endeavour that stands on its own.. A few ideas I can think of for "Why?": * Static analysis of a codebase looking for bad practices or errors * Feeding the structured output into code-gen for another language, to start a porting project * //STEP MISSING//, Profit? Anything else?
Re: Php-parser written in golang v0.3 is released
#16There's a [dead] comment that asks "Why?"... Obviously not every project needs a "why?", and this is a technically cool endeavour that stands on its own.. A few ideas I can think of for "Why?": * Static analysis of a codebase looking for bad practices or errors * Feeding the structured output into code-gen for another language, to start a porting project * //STEP MISSING//, Profit? Anything else?
Seems like part of a larger "I built X in Y" HN pattern.
Re: Php-parser written in golang v0.3 is released
#17Why?
Re: Php-parser written in golang v0.3 is released
#18Re: Php-parser written in golang v0.3 is released
#19Earlier quoted context omitted.
Embedding an interpreter in another language can certainly be useful, but this is just a parser.
Sorry, but phuby is not useful, was never intended to be and even says so. It's a hilarious prank, if you ask me.
Re: Php-parser written in golang v0.3 is released
#20What is the purpose of this? Just static analysis? If that is it, you'd probably be better off just using the PHP parser ( https://github.com/nikic/PHP-Parser ). If you are writing analyzers for PHP, you must know it enough to right an analyzer in actual PHP. Why Go? I can't see a lot of people using this.
> What is the purpose of this? Just static analysis? I'm not sure about the "Just" here. The opportunities for writing code transformation tools are abundant. E.g. a PHP IDE that isn't written in PHP, a linting tool, a preprocessor for an embedded DSL. It isn't obvious to me that the tooling for a language like PHP need to be written in PHP. > Why Go? Go isn't a bad choice for writing parts of a compiler. The parser…
There's already a yacc file for PHP's parser, part of the PHP runtime: https://github.com/php/php-src/blob/master/Zend/zend_languag...