--- libaegis/sub/plural_gram.y.orig 2020-06-17 17:52:35.548476000 -0400 +++ libaegis/sub/plural_gram.y 2020-06-17 17:52:46.221850000 -0400 @@ -1,22 +1,24 @@ /* - * aegis - project change supervisor - * Copyright (C) 2002-2008 Peter Miller + * aegis - project change supervisor + * Copyright (C) 2002-2008 Peter Miller + * Copyright (C) 2020 Aryeh M. Friedman * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see - * . + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + * . */ +%define api.prefix {sub_plural_gram_} %{ #include @@ -114,9 +116,9 @@ trace(("}\n")); if (bad) - return 0; + return 0; if (plural >= nplurals) - return 0; + return 0; return plural; } @@ -132,35 +134,35 @@ /* * jiggery-pokery for yacc * - * Replace all calls to printf with a call to trace_printf. The - * trace_where_ is needed to set the location, and is safe, because - * yacc only invokes the printf with an if (be careful, the printf - * is not in a compound statement). + * Replace all calls to printf with a call to trace_printf. The + * trace_where_ is needed to set the location, and is safe, because + * yacc only invokes the printf with an if (be careful, the printf + * is not in a compound statement). */ #define printf trace_where_, trace_printf /* * jiggery-pokery for bison * - * Replace all calls to fprintf with a call to yydebugger. Ignore - * the first argument, it will be "stderr". The trace_where_ is - * needed to set the location, and is safe, because bison only - * invokes the printf with an if (be careful, the fprintf is not in - * a compound statement). + * Replace all calls to fprintf with a call to yydebugger. Ignore + * the first argument, it will be "stderr". The trace_where_ is + * needed to set the location, and is safe, because bison only + * invokes the printf with an if (be careful, the fprintf is not in + * a compound statement). */ #define fprintf trace_where_, yydebugger static void yydebugger(void *, const char *fmt, ...) { - va_list ap; - string_ty *s; + va_list ap; + string_ty *s; - va_start(ap, fmt); - s = str_vformat(fmt, ap); - va_end(ap); - trace_printf("%s", s->str_text); - str_free(s); + va_start(ap, fmt); + s = str_vformat(fmt, ap); + va_end(ap); + trace_printf("%s", s->str_text); + str_free(s); } #endif @@ -170,138 +172,139 @@ %% grammar: - nplurals SEMI plural - ; + nplurals SEMI plural + ; nplurals - : NPLURALS EQU INTEGER - { - nplurals = $3; - } - ; + : NPLURALS EQU INTEGER + { + nplurals = $3; + } + ; plural - : PLURAL EQU expr - { - plural = $3; - } - ; + : PLURAL EQU expr + { + plural = $3; + } + ; expr - : LP expr RP - { - $$ = $2; - trace(("$$ = %u;\n", $$)); - } - | NUMBER - { - $$ = number; - trace(("$$ = %u;\n", $$)); - } - | INTEGER - { - $$ = $1; - trace(("$$ = %u;\n", $$)); - } - | MINUS expr - %prec UNARY - { - $$ = -$2; - trace(("$$ = %u;\n", $$)); - } - | expr PLUS expr - { - $$ = $1 + $3; - trace(("$$ = %u;\n", $$)); - } - | expr MINUS expr - { - $$ = $1 - $3; - trace(("$$ = %u;\n", $$)); - } - | expr MUL expr - { - $$ = $1 * $3; - trace(("$$ = %u;\n", $$)); - } - | expr DIV expr - { - $$ = $3 ? $1 / $3 : 0; - trace(("$$ = %u;\n", $$)); - } - | expr MOD expr - { - $$ = $3 ? $1 % $3 : 0; - trace(("$$ = %u;\n", $$)); - } - | expr EQ expr - { - $$ = ($1 == $3); - trace(("$$ = %u;\n", $$)); - } - | expr NE expr - { - $$ = ($1 != $3); - trace(("$$ = %u;\n", $$)); - } - | expr LT expr - { - $$ = ($1 < $3); - trace(("$$ = %u;\n", $$)); - } - | expr LE expr - { - $$ = ($1 <= $3); - trace(("$$ = %u;\n", $$)); - } - | expr GT expr - { - $$ = ($1 > $3); - trace(("$$ = %u;\n", $$)); - } - | expr GE expr - { - $$ = ($1 >= $3); - trace(("$$ = %u;\n", $$)); - } - | NOT expr - { - $$ = (!$2); - trace(("$$ = %u;\n", $$)); - } - | BITNOT expr - { - $$ = ~$2; - trace(("$$ = %u;\n", $$)); - } - | expr ANDAND expr - { - $$ = $1 && $3; - trace(("$$ = %u;\n", $$)); - } - | expr BITAND expr - { - $$ = $1 & $3; - trace(("$$ = %u;\n", $$)); - } - | expr OROR expr - { - $$ = $1 || $3; - trace(("$$ = %u;\n", $$)); - } - | expr BITOR expr - { - $$ = $1 | $3; - trace(("$$ = %u;\n", $$)); - } - | expr BITXOR expr - { - $$ = $1 ^ $3; - trace(("$$ = %u;\n", $$)); - } - | expr QUEST expr COLON expr - { - $$ = $1 ? $3 : $5; - trace(("$$ = %u;\n", $$)); - } - ; + : LP expr RP + { + $$ = $2; + trace(("$$ = %u;\n", $$)); + } + | NUMBER + { + $$ = number; + trace(("$$ = %u;\n", $$)); + } + | INTEGER + { + $$ = $1; + trace(("$$ = %u;\n", $$)); + } + | MINUS expr + %prec UNARY + { + $$ = -$2; + trace(("$$ = %u;\n", $$)); + } + | expr PLUS expr + { + $$ = $1 + $3; + trace(("$$ = %u;\n", $$)); + } + | expr MINUS expr + { + $$ = $1 - $3; + trace(("$$ = %u;\n", $$)); + } + | expr MUL expr + { + $$ = $1 * $3; + trace(("$$ = %u;\n", $$)); + } + | expr DIV expr + { + $$ = $3 ? $1 / $3 : 0; + trace(("$$ = %u;\n", $$)); + } + | expr MOD expr + { + $$ = $3 ? $1 % $3 : 0; + trace(("$$ = %u;\n", $$)); + } + | expr EQ expr + { + $$ = ($1 == $3); + trace(("$$ = %u;\n", $$)); + } + | expr NE expr + { + $$ = ($1 != $3); + trace(("$$ = %u;\n", $$)); + } + | expr LT expr + { + $$ = ($1 < $3); + trace(("$$ = %u;\n", $$)); + } + | expr LE expr + { + $$ = ($1 <= $3); + trace(("$$ = %u;\n", $$)); + } + | expr GT expr + { + $$ = ($1 > $3); + trace(("$$ = %u;\n", $$)); + } + | expr GE expr + { + $$ = ($1 >= $3); + trace(("$$ = %u;\n", $$)); + } + | NOT expr + { + $$ = (!$2); + trace(("$$ = %u;\n", $$)); + } + | BITNOT expr + { + $$ = ~$2; + trace(("$$ = %u;\n", $$)); + } + | expr ANDAND expr + { + $$ = $1 && $3; + trace(("$$ = %u;\n", $$)); + } + | expr BITAND expr + { + $$ = $1 & $3; + trace(("$$ = %u;\n", $$)); + } + | expr OROR expr + { + $$ = $1 || $3; + trace(("$$ = %u;\n", $$)); + } + | expr BITOR expr + { + $$ = $1 | $3; + trace(("$$ = %u;\n", $$)); + } + | expr BITXOR expr + { + $$ = $1 ^ $3; + trace(("$$ = %u;\n", $$)); + } + | expr QUEST expr COLON expr + { + $$ = $1 ? $3 : $5; + trace(("$$ = %u;\n", $$)); + } + ; +// vim: set ts=8 sw=4 et :