Modern compilers and interpreters are based on different approaches to implement parsers.
Brief overview of current state
- GCC 4.8.1 - hand-written top-down recursive descent parser
- Clang 3.3 - hand-written top-down recursive descent parser
- PathScale EkoPath 4 - hand-written top-down recursive descent parser (based on GCC frontend)
- Open64 5.0 - hand-written top-down recursive descent parser (based on GCC frontend)
- Cray Chapel 1.7.0 - bottom-up LALR(1) parser (generated by Bison), left-recursive grammar
- IBM X10 2.3.1 - bottom-up LALR(1) parser (generated by LPG)
- Ruby 2.0.0 - bottom-up LALR(1) parser (generated by Bison), left-recursive grammar
- PHP 5.5.0 - bottom-up LALR(1) parser (generated by Bison)
- Open JDK 7 - default: hand-written LALR parser; subproject: ANTLR based LL(*) parser
- Python 2.7.5 & 3.3.2 - hand-written top-down recursive descent parser
- Groovy 2.1.6 - LL(*) parser (generated by ANTLR)
- Go 1.1.1 - bottom-up LALR(1) parser (generated by Bison)
- Google V8 JavaScript Engine - hand-written top-down recursive descent parser
- Apple JavaScriptCore - hand-written top-down recursive descent parser
Комментариев нет:
Отправить комментарий