Live data from Hacker News

Php-parser written in golang v0.3 is released

github.com

11–20 of 28 posts

Re: Php-parser written in golang v0.3 is released

#11
post #9
post #6

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.

A parser is a big step towards building that interpreter, however. Who knows what the long-term goals are or what remains closed source software.

Re: Php-parser written in golang v0.3 is released

#12
post #5

What 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 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.

https://github.com/z7zmey/php-parser/tree/master/node/expr

Re: Php-parser written in golang v0.3 is released

#14
post #3

There'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?

We have a giant PHP codebase but are moving components to Go. I wonder if this has any potential to aid in machine translation.

Re: Php-parser written in golang v0.3 is released

#15
post #3

There'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?

or, why not, a first step to adding php-like macro language to your go service...

Re: Php-parser written in golang v0.3 is released

#16
post #3

There'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?

I guess my question isn't so much "Why would anybody build this?" but "Why would you upvote this to the front-page?"

Seems like part of a larger "I built X in Y" HN pattern.

Re: Php-parser written in golang v0.3 is released

#19
post #9

Earlier 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.

An interpreter in a compiled language, though, has obvious run time benefits. Though this is just a parser.

Re: Php-parser written in golang v0.3 is released

#20
post #12
post #5

What 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…

> 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.

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...

Post reply on HN