Use custom parser for parsing plural expressions instead of eval() - A simple operator-precedence parser that prioritizes simplicity and readability. Avoid using eval() for evaluating plural expressions. - Fixes CVE-2016-6175. - Fixes upstream bug https://bugs.launchpad.net/php-gettext/+bug/1606184 - Fixes Debian bug https://bugs.debian.org/851771
- Grammar for parsing code is same as the grammar for GNU gettext library: http://git.savannah.gnu.org/cgit/gettext.git/tree/gettext-runtime/intl/plural.y
- Extensive tests for various locales with help from Unicode's plurals rules. Tests for invalid syntax and expression parsing.