X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/deef2a0a4d97b580fe45a02da328b94ce32538b1..6ed15cde294bb7503161e136371c6f36f51c6b3b:/ChangeLog diff --git a/ChangeLog b/ChangeLog index f75739c6..d9e52b87 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,169 @@ +2008-11-10 Akim Demaille + + Make parser::yytranslate static. + Small speedup (1%) on the list grammar. And makes yytranslate_ available + in non member functions. + + * data/lalr1.cc (yytranslate_): Does not need to be a instance + function. + +2008-11-10 Akim Demaille + + Avoid trailing spaces. + * data/c.m4: b4_comment(TEXT): Don't indent empty lines. + * data/lalr1.cc: Don't indent before rule and symbol actions, as + they can be empty, and anyway this incorrectly indents the first + action. + +2008-11-10 Akim Demaille + + Comment changes. + +2008-11-10 Akim Demaille + + Use "enum" for integral constants. + This is just nicer to read, I observed no speedup. + + * data/lalr1.cc (yyeof_, yylast_, yynnts_, yyempty_, yyfinal_) + (yterror_, yyerrcode_, yyntokens_): Define as members of an enum. + (yyuser_token_number_max_, yyundef_token_): Move into... + (yytranslate_): here. + +2008-11-10 Akim Demaille + + Shortcuts in bench directives. + * etc/bench.pl.in (parse_dirs): New. + Use it. + (bench_variant_parser, bench_fusion_parser): Use %s and %d. + Create the benches in "benches/". + +2008-11-10 Akim Demaille + + Formatting changes. + * data/lalr1.cc: here. + +2008-11-10 Akim Demaille + + Adjust verbose message to using emacs. + * etc/bench.pl.in: Inform compilation-mode when we change the + directory. + (generate_grammar_list): Recognize %define "variant" in addition + to %define variant. + +2008-11-10 Akim Demaille + + Classify symbols by type-name. + * src/uniqstr.h (UNIQSTR_CMP): New. + * src/output.c (symbol_type_name_cmp, symbols_by_type_name) + (type_names_output): New. + (muscles_output): Use it. + * data/lalr1.cc (b4_symbol_action_): Remove. + (b4_symbol_case_, b4_type_action_): New. + Adjust uses of b4_symbol_action_ to use b4_type_action_. + +2008-11-10 Akim Demaille + + Change the handling of the symbols in the skeletons. + Before we were using tables which lines were the symbols and which + columns were things like number, tag, type-name etc. It is was + difficult to extend: each time a column was added, all the numbers had + to be updated (you asked for colon $2, not for "tag"). Also, it was + hard to filter these tables when only a subset of the symbols (say the + tokens, or the nterms, or the tokens that have and external number + *and* a type-name) was of interest. + + Now instead of monolithic tables, we define one macro per cell. For + instance "b4_symbol(0, tag)" is a macro name which contents is + self-decriptive. The macro "b4_symbol" provides easier access to + these cells. + + * src/output.c (type_names_output): Remove. + (symbol_numbers_output, symbol_definitions_output): New. + (muscles_output): Call them. + (prepare_symbols): Define b4_symbols_number. + +2008-11-10 Akim Demaille + + --trace=muscles + * src/getargs.h, src/getargs.c (trace_muscle): New. + (trace_types, trace_args): Support it. + * src/output.c (output_skeleton): Use it. + +2008-11-10 Akim Demaille + + muscles_output. + * src/output.c (muscles_output): New, extracted from... + (output_skeleton): here. + Adjust. + +2008-11-10 Akim Demaille + + Formatting changes. + +2008-11-10 Akim Demaille + + Update the variant example. + * examples/variant.yy: Formatting changes. + One stage build. + +2008-11-10 Akim Demaille + + Support constructor with an argument. + This improves the "list" bench by 2%. + + * data/lalr1.cc (variant::build): Add an overloaded version with + an argument. + * tests/c++.at (AT_CHECK_VARIANT): Check it. + +2008-11-10 Akim Demaille + + Test variants. + * tests/c++.at (AT_CHECK_VARIANTS): New. + Use it with and without %define assert. + +2008-11-10 Akim Demaille + + Add %precedence support. + Unfortunately it is not possible to reuse the %prec directive. This + is because to please POSIX, we do not require to end the rules with a + semicolon. As a result, + + foo: bar %prec baz + + is ambiguous: either a rule which precedence is that of baz, or a rule, + and then a declaration of the precedence of the token baz. + + * doc/bison.texinfo: Document %precedence. + (Precedence Only): New. + * src/assoc.h, src/assoc.c (precedence_assoc): New. + * src/conflicts.c (resolve_sr_conflict): Support it. + * src/scan-gram.l, src/parse-gram.y (%precedence): New token. + Parse it. + * tests/calc.at: Use %precedence for NEG. + * tests/conflicts.at (%precedence does not suffice) + (%precedence suffices): New tests. + +2008-11-09 Akim Demaille + + Make benches in a sub dirs. + * etc/bench.pl.in ($dir): New. + Use it. + Check the use of constructors with an argument. + (bench_variant_parser): Fix. + +2008-11-09 Akim Demaille + + fix eof condition + +2008-11-09 Akim Demaille + + Fix --help. + +2008-11-09 Akim Demaille + + Require the generation of parse-gram.output. + * src/Makefile.am (YACC): Pass --report=all. + 2008-11-09 Akim Demaille Formatting changes.