[hfst] 01/02: Imported Upstream version 3.10.0~r2798

Tino Didriksen tinodidriksen-guest at moszumanska.debian.org
Sat Jun 4 19:25:04 UTC 2016


This is an automated email from the git hooks/post-receive script.

tinodidriksen-guest pushed a commit to branch master
in repository hfst.

commit 75715d6709e4a9f9fda426c1c76645d5c3fab0e0
Author: Tino Didriksen <tino at didriksen.cc>
Date:   Sat Jun 4 19:24:17 2016 +0000

    Imported Upstream version 3.10.0~r2798
---
 .gitignore                                         |   255 +
 AUTHORS                                            |     1 +
 ChangeLog                                          | 25213 ++-----------------
 ChangeLog.old                                      | 24037 ++----------------
 NEWS                                               |    58 +
 NSIS/AddHfstLibrary.nsi                            |     2 -
 NSIS/CheckLibraries.nsi                            |    33 -
 NSIS/MoveFileFolder.nsh                            |   256 -
 NSIS/README                                        |    19 -
 NSIS/README.hfst.txt                               |    33 -
 NSIS/README.lexc.txt                               |    42 -
 NSIS/README.ospell.txt                             |    21 -
 NSIS/README.proc.txt                               |    52 -
 NSIS/README.twolc.txt                              |    34 -
 NSIS/README.xfst.txt                               |    52 -
 NSIS/ReplaceInFile.nsh                             |    68 -
 NSIS/StrRep.nsh                                    |    66 -
 NSIS/copy_files.sh                                 |   136 -
 NSIS/hfst.bat                                      |     1 -
 NSIS/hfst_installer.nsi                            |   141 -
 NSIS/hfst_python_installer.nsi                     |   193 -
 NSIS/lexc_installer.nsi                            |    63 -
 NSIS/ospell_installer.nsi                          |    83 -
 NSIS/proc_installer.nsi                            |    62 -
 NSIS/twolc_installer.nsi                           |    72 -
 NSIS/xfst_installer.nsi                            |    62 -
 README                                             |    49 +-
 back-ends/openfst/Makefile.am                      |    22 +-
 back-ends/openfst/src/lib/Makefile.am              |    22 +-
 check_installation/check-morphologies.sh           |    87 -
 check_installation/check-ospell.sh                 |    93 -
 check_installation/check-python.sh                 |    43 -
 check_installation/check-tools.sh                  |    92 -
 check_installation/copy-python-tests.sh            |    33 -
 check_installation/copy-tool-tests.sh              |    71 -
 check_installation/dist-README                     |    30 -
 check_installation/make-dist.sh                    |    57 -
 .../morphology_tests/english-analyze.input         |     1 -
 .../morphology_tests/english-analyze.output        |   159 -
 .../morphology_tests/english-analyze.output.old    |   114 -
 .../morphology_tests/english-generate.output       |     0
 .../morphology_tests/finnish-analyze.input         |     1 -
 .../morphology_tests/finnish-analyze.output        |   103 -
 .../morphology_tests/finnish-analyze.output.old    |    92 -
 .../morphology_tests/finnish-generate.input        |     0
 .../morphology_tests/finnish-generate.output       |     0
 .../morphology_tests/french-analyze.input          |     1 -
 .../morphology_tests/french-analyze.output         |   123 -
 .../morphology_tests/french-generate.input         |     0
 .../morphology_tests/french-generate.output        |     0
 .../morphology_tests/german-analyze.input          |     1 -
 .../morphology_tests/german-analyze.output         |   226 -
 .../morphology_tests/german-generate.input         |     0
 .../morphology_tests/german-generate.output        |     0
 .../morphology_tests/italian-analyze.input         |     1 -
 .../morphology_tests/italian-analyze.output        |   124 -
 .../morphology_tests/italian-generate.input        |     0
 .../morphology_tests/italian-generate.output       |     0
 .../morphology_tests/omorfi-analyze.input          |     1 -
 .../morphology_tests/omorfi-analyze.output         |    95 -
 .../morphology_tests/omorfi-generate.input         |     0
 .../morphology_tests/omorfi-generate.output        |     0
 .../morphology_tests/swedish-analyze.input         |     1 -
 .../morphology_tests/swedish-analyze.output        |   108 -
 .../morphology_tests/swedish-generate.input        |     0
 .../morphology_tests/swedish-generate.output       |     0
 .../morphology_tests/turkish-analyze.input         |     1 -
 .../morphology_tests/turkish-analyze.output        |   117 -
 .../morphology_tests/turkish-generate.input        |     0
 .../morphology_tests/turkish-generate.output       |     0
 check_installation/ospell_tests/ospell_input.txt   |     1 -
 check_installation/ospell_tests/test.zhfst         |   Bin 21182410 -> 0 bytes
 check_installation/test-empty-input.sh             |    22 -
 check_installation/test-help.sh                    |    36 -
 check_installation/test-hfst-twolc.sh              |    26 -
 check_installation/test-hfst-xfst.sh               |    28 -
 check_installation/test-version.sh                 |    37 -
 configure.ac                                       |   145 +-
 Doxyfile => doc/Doxyfile                           |     8 +-
 api_documentation.dox => doc/api_documentation.dox |    37 +-
 libhfst/COPYING                                    |   165 +
 libhfst/Makefile.am                                |    22 +-
 libhfst/src/FormatSpecifiers.h                     |    19 +-
 libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc  |     9 +
 libhfst/src/HarmonizeUnknownAndIdentitySymbols.h   |     9 +
 libhfst/src/HfstApply.cc                           |    19 +-
 libhfst/src/HfstDataTypes.cc                       |     9 +
 libhfst/src/HfstDataTypes.h                        |    20 +-
 libhfst/src/HfstEpsilonHandler.cc                  |     9 +
 libhfst/src/HfstEpsilonHandler.h                   |     9 +
 libhfst/src/HfstExceptionDefs.cc                   |    11 +
 libhfst/src/HfstExceptionDefs.h                    |    11 +
 libhfst/src/HfstExceptions.cc                      |    20 -
 libhfst/src/HfstExceptions.h                       |   385 -
 libhfst/src/HfstExtractStrings.h                   |    19 +-
 libhfst/src/HfstFlagDiacritics.cc                  |     9 +
 libhfst/src/HfstFlagDiacritics.h                   |     9 +
 libhfst/src/HfstInputStream.cc                     |   184 +-
 libhfst/src/HfstInputStream.h                      |    27 +-
 libhfst/src/HfstLookupFlagDiacritics.cc            |     9 +
 libhfst/src/HfstLookupFlagDiacritics.h             |     9 +
 libhfst/src/HfstOutputStream.cc                    |    19 +-
 libhfst/src/HfstOutputStream.h                     |    20 +-
 libhfst/src/HfstPrintDot.cc                        |    34 +-
 libhfst/src/HfstPrintDot.h                         |     9 +
 libhfst/src/HfstPrintPCKimmo.cc                    |    26 +-
 libhfst/src/HfstPrintPCKimmo.h                     |     9 +
 libhfst/src/HfstRules.cc                           |    19 +-
 libhfst/src/HfstStrings2FstTokenizer.cc            |     9 +
 libhfst/src/HfstStrings2FstTokenizer.h             |    20 +-
 libhfst/src/HfstSymbolDefs.cc                      |    19 +-
 libhfst/src/HfstSymbolDefs.h                       |    19 +-
 libhfst/src/HfstTokenizer.cc                       |    31 +-
 libhfst/src/HfstTokenizer.h                        |    17 +-
 libhfst/src/HfstTransducer.cc                      |    41 +-
 libhfst/src/HfstTransducer.h                       |    26 +-
 libhfst/src/HfstXeroxRules.cc                      |    19 +-
 libhfst/src/HfstXeroxRules.h                       |    44 +-
 libhfst/src/HfstXeroxRulesTest.cc                  |     8 +
 libhfst/src/Makefile.am                            |    32 +-
 {tools => libhfst}/src/hfst-string-conversions.cc  |     0
 {tools => libhfst}/src/hfst-string-conversions.h   |     0
 libhfst/src/hfst.h                                 |    22 +-
 libhfst/src/hfst_apply_schemas.h                   |    22 +-
 libhfst/src/hfstdll.h                              |     9 +
 .../src/implementations/ConvertFomaTransducer.cc   |    19 +-
 .../implementations/ConvertLogWeightTransducer.cc  |    19 +-
 libhfst/src/implementations/ConvertOlTransducer.cc |    30 +-
 .../src/implementations/ConvertSfstTransducer.cc   |    19 +-
 .../src/implementations/ConvertTransducerFormat.cc |    19 +-
 .../src/implementations/ConvertTransducerFormat.h  |    25 +-
 .../ConvertTropicalWeightTransducer.cc             |    19 +-
 .../src/implementations/ConvertXfsmTransducer.cc   |    19 +-
 libhfst/src/implementations/FomaTransducer.cc      |    19 +-
 libhfst/src/implementations/FomaTransducer.h       |    19 +-
 .../src/implementations/HfstFastTransitionData.h   |   156 -
 libhfst/src/implementations/HfstOlTransducer.cc    |    22 +-
 libhfst/src/implementations/HfstOlTransducer.h     |    19 +-
 libhfst/src/implementations/HfstTransition.h       |    16 +-
 libhfst/src/implementations/HfstTransitionGraph.cc |     8 +
 libhfst/src/implementations/HfstTransitionGraph.h  |    43 +-
 .../HfstTropicalTransducerTransitionData.cc        |     9 +
 .../HfstTropicalTransducerTransitionData.h         |     9 +
 libhfst/src/implementations/LogWeightTransducer.cc |    23 +-
 libhfst/src/implementations/LogWeightTransducer.h  |    20 +-
 libhfst/src/implementations/Makefile.am            |    26 +-
 .../MyTransducerLibraryTransducer.cc               |    19 +-
 .../MyTransducerLibraryTransducer.h                |    19 +-
 libhfst/src/implementations/SfstTransducer.cc      |    19 +-
 libhfst/src/implementations/SfstTransducer.h       |    19 +-
 .../implementations/TropicalWeightTransducer.cc    |    23 +-
 .../src/implementations/TropicalWeightTransducer.h |    28 +-
 libhfst/src/implementations/XfsmTransducer.cc      |    19 +-
 libhfst/src/implementations/XfsmTransducer.h       |    19 +-
 .../compose_intersect/ComposeIntersectFst.cc       |     8 +
 .../compose_intersect/ComposeIntersectFst.h        |     7 +
 .../compose_intersect/ComposeIntersectLexicon.cc   |     8 +
 .../compose_intersect/ComposeIntersectLexicon.h    |     8 +
 .../compose_intersect/ComposeIntersectRule.cc      |     8 +
 .../compose_intersect/ComposeIntersectRule.h       |     9 +
 .../compose_intersect/ComposeIntersectRulePair.cc  |     8 +
 .../compose_intersect/ComposeIntersectRulePair.h   |     8 +
 .../compose_intersect/ComposeIntersectUtilities.cc |     8 +
 .../compose_intersect/ComposeIntersectUtilities.h  |     9 +
 .../implementations/optimized-lookup/convert.cc    |    19 +-
 .../src/implementations/optimized-lookup/convert.h |    19 +-
 .../optimized-lookup/find_epsilon_loops.cc         |    19 +-
 .../src/implementations/optimized-lookup/ospell.cc |   410 +-
 .../src/implementations/optimized-lookup/pmatch.cc |   301 +-
 .../src/implementations/optimized-lookup/pmatch.h  |    48 +-
 .../implementations/optimized-lookup/transducer.cc |    37 +-
 .../implementations/optimized-lookup/transducer.h  |    29 +-
 libhfst/src/parsers/LexcCompiler.cc                |    32 +-
 libhfst/src/parsers/LexcCompiler.h                 |    21 +-
 libhfst/src/parsers/Makefile.am                    |    46 +-
 libhfst/src/parsers/PmatchCompiler.cc              |    11 +-
 libhfst/src/parsers/PmatchCompiler.h               |    21 +-
 libhfst/src/parsers/XfstCompiler.cc                |   166 +-
 libhfst/src/parsers/XfstCompiler.h                 |    25 +-
 libhfst/src/parsers/XreCompiler.cc                 |    11 +-
 libhfst/src/parsers/XreCompiler.h                  |    21 +-
 libhfst/src/parsers/XreCompiler.reentrant.cc       |   265 -
 libhfst/src/parsers/XreCompiler.reentrant.h        |   113 -
 libhfst/src/parsers/lexc-lexer.ll                  |    30 +-
 libhfst/src/parsers/lexc-parser.yy                 |    21 +-
 libhfst/src/parsers/lexc-utils.cc                  |    45 +-
 libhfst/src/parsers/lexc-utils.h                   |    23 +-
 libhfst/src/parsers/pmatch_lex.ll                  |   274 +-
 libhfst/src/parsers/pmatch_parse.yy                |  2199 +-
 libhfst/src/parsers/pmatch_utils.cc                |  1058 +-
 libhfst/src/parsers/pmatch_utils.h                 |   508 +-
 libhfst/src/parsers/xfst-lexer.ll                  |    30 +-
 libhfst/src/parsers/xfst-parser.yy                 |    21 +-
 libhfst/src/parsers/xfst-utils.cc                  |    29 +-
 libhfst/src/parsers/xfst-utils.h                   |    22 +-
 libhfst/src/parsers/xfst_help_message.cc           |     9 +
 libhfst/src/parsers/xfst_help_message.h            |     9 +
 libhfst/src/parsers/xre_lex.ll                     |    23 +-
 libhfst/src/parsers/xre_lex.reentrant.ll           |   273 -
 libhfst/src/parsers/xre_parse.reentrant.yy         |   978 -
 libhfst/src/parsers/xre_parse.yy                   |     9 +
 libhfst/src/parsers/xre_utils.cc                   |    18 +-
 libhfst/src/parsers/xre_utils.h                    |     9 +
 libhfst/src/parsers/xre_utils.reentrant.cc         |   577 -
 libhfst/src/parsers/xre_utils.reentrant.h          |    91 -
 libhfst/src/string-utils.cc                        |    34 +
 libhfst/src/string-utils.h                         |    31 +
 m4/README                                          |     1 +
 man/Makefile.am                                    |    10 +-
 man/{hfst-proc2.1 => hfst-tokenize.1}              |    23 +-
 new_library/Makefile                               |    39 -
 new_library/MyFst.cc                               |    51 -
 new_library/MyFst.h                                |    38 -
 new_library/README                                 |     9 -
 new_library/test.cc                                |    16 -
 old_python/Makefile.am                             |     3 -
 old_python/README                                  |    55 -
 old_python/doc/Doxyfile                            |  1514 --
 old_python/doc/libhfst.py                          |  2424 --
 old_python/hfstBot.py                              |   176 -
 old_python/hfst_swig_extensions.h                  |   189 -
 old_python/libhfst.i                               |   566 -
 old_python/omor_query.py                           |    30 -
 old_python/setup.py                                |    37 -
 old_python/test/Makefile.am                        |     5 -
 old_python/test/test.sh                            |    45 -
 old_python/test/test_constructors.py               |    77 -
 old_python/test/test_examples.py                   |   481 -
 old_python/test/test_extensions.py                 |    13 -
 old_python/test/test_flag_diacritics.py            |    69 -
 old_python/test/test_hfst_basic_transducer.py      |   142 -
 old_python/test/test_lexc.lexc                     |    13 -
 old_python/test/test_lexc.py                       |    54 -
 old_python/test/test_lexc_fail.lexc                |    13 -
 old_python/test/test_rules.py                      |    43 -
 old_python/test/test_std_streams.py                |    40 -
 old_python/test/test_std_streams.sh                |   100 -
 old_python/test/test_streams.py                    |    74 -
 old_python/test/test_tokenizer.py                  |   158 -
 old_python/test/test_transducer_functions.py       |   384 -
 old_python/test/test_xre_compiler.py               |    48 -
 python/COPYING                                     |   165 +
 python/Makefile.am                                 |    11 +-
 python/README                                      |    14 +-
 python/doc/Doxyfile                                |     4 +-
 python/doc/libhfst.py                              |    40 +-
 python/libhfst.i                                   |   710 +-
 python/setup.py                                    |     2 +-
 python/test/README                                 |     6 +-
 python/test/examples.py                            |    18 +-
 python/test/foo_att_prolog                         |     3 +
 python/test/foo_basic                              |     4 +
 python/test/foobar2.hfst                           |   Bin 0 -> 512 bytes
 python/test/foofile                                |     1 +
 python/test/test.py                                |     6 +
 python/test/test.sh                                |    25 +
 python/test/test2.py                               |    25 +
 python/test/test3.py                               |     6 +
 python/test/test4.py                               |     7 +
 python/test/test5.py                               |     7 +
 python/test/test7.py                               |    23 +
 python/test/test8.py                               |    12 +
 python/test/test9.py                               |     6 +
 python/test/test_hfst.py                           |    19 +-
 python/test/test_streams_1.py                      |    12 +
 python/test/test_streams_2.py                      |    26 +
 python/test/test_streams_3.py                      |     5 +
 .../english-generate.input => python/test/testfile |     0
 python/test/testfile1.att                          |     3 +
 python/test/testfile1.hfst                         |   Bin 0 -> 1364 bytes
 python/test/testfile2.att                          |     8 +
 python/test/testfile3.att                          |    11 +
 scripts/copy-for-windows.sh                        |    42 +-
 scripts/libhfst_win.i                              |   222 -
 scripts/make-hfst-tools.bat                        |     1 -
 scripts/package-static-binaries.sh                 |    31 -
 scripts/{ => readmes}/README_eight_tools_mac.txt   |     0
 scripts/{ => readmes}/README_eight_tools_win.txt   |     0
 scripts/{ => readmes}/README_xfst_mac.txt          |     0
 scripts/{ => readmes}/README_xfst_win.txt          |     0
 scripts/{ => windows}/generate-python-bindings.bat |     0
 scripts/{ => windows}/inttypes.h                   |     0
 scripts/{ => windows}/make-foma.bat                |     0
 scripts/{ => windows}/make-hfst-lexc.bat           |     2 +-
 scripts/{ => windows}/make-hfst-proc.bat           |     2 +-
 scripts/{ => windows}/make-hfst-tool.bat           |     2 +-
 scripts/windows/make-hfst-tools.bat                |     1 +
 scripts/{ => windows}/make-hfst-xfst.bat           |     2 +-
 scripts/{ => windows}/make-htwolcpre1.bat          |     2 +-
 scripts/{ => windows}/make-htwolcpre2.bat          |     2 +-
 scripts/{ => windows}/make-htwolcpre3.bat          |     2 +-
 scripts/{ => windows}/make-implementations.bat     |     0
 scripts/{ => windows}/make-libhfst.bat             |     0
 scripts/{ => windows}/make-openfstwin.bat          |     0
 scripts/{ => windows}/make-parsers.bat             |     0
 scripts/{ => windows}/make-python-bindings.bat     |     2 +-
 scripts/{ => windows}/multiple_targets.sh          |     0
 scripts/{ => windows}/stdint.h                     |     0
 scripts/{ => windows}/test-hfst-tools.bat          |     0
 scripts/{ => windows}/test_libhfst_win.py          |     0
 test/tools/Makefile.am                             |     3 +
 test/tools/flookup-functionality.sh                |   122 +
 test/tools/fst2txt-functionality.sh                |     8 +-
 test/tools/pmatch-tests.sh                         |     2 +-
 tools/src/Makefile.am                              |    48 +-
 tools/src/hfst-commandline.cc                      |     4 +-
 tools/src/{hfst-lookup.cc => hfst-flookup.cc}      |    63 +-
 tools/src/hfst-fst2fst.cc                          |    21 +-
 tools/src/hfst-lookup.cc                           |     5 +-
 tools/src/hfst-optimized-lookup.cc                 |   127 +-
 tools/src/hfst-optimized-lookup.h                  |     4 +-
 tools/src/hfst-pair-test.cc                        |   106 +-
 tools/src/hfst-pmatch.cc                           |    27 +-
 tools/src/hfst-pmatch2fst.cc                       |   134 +-
 tools/src/hfst-proc/hfst-proc.cc                   |     2 +-
 tools/src/hfst-reweight.cc                         |    12 +-
 tools/src/hfst-scanner.ll                          |    11 +-
 tools/src/hfst-substitute.cc                       |     1 -
 tools/src/{hfst-proc2.cc => hfst-tokenize.cc}      |   199 +-
 tools/src/hfst-twolc/src/Makefile.am               |    18 +-
 tools/src/hfst-twolc/src/scanner1.ll               |     4 +
 tools/src/hfst-twolc/src/scanner2.ll               |     6 +-
 tools/src/hfst-twolc/src/scanner3.ll               |     7 +-
 tools/src/parsers/hfst-xfst.cc                     |     2 +-
 tools/src/parsers/test/apply_down.xfst             |     4 +-
 tools/src/parsers/test/apply_up.xfst               |    10 +-
 tools/src/parsers/test/compile_replace_1.xfst      |    16 +-
 tools/src/parsers/test/compile_replace_2.xfst      |    16 +-
 tools/src/parsers/test/compile_replace_3.xfst      |    22 +-
 tools/src/parsers/test/contains.xfst               |     4 +-
 tools/src/parsers/test/contains_once.xfst          |     4 +-
 tools/src/parsers/test/contains_once_optional.xfst |     4 +-
 tools/src/parsers/test/contains_with_weight.xfst   |     6 +-
 tools/src/parsers/test/replace_test_1.xfst         |     2 +-
 tools/src/parsers/test/replace_test_10.xfst        |     2 +-
 tools/src/parsers/test/replace_test_11.xfst        |     2 +-
 tools/src/parsers/test/replace_test_12.xfst        |     2 +-
 tools/src/parsers/test/replace_test_13.xfst        |     4 +-
 tools/src/parsers/test/replace_test_14.xfst        |     2 +-
 tools/src/parsers/test/replace_test_15.xfst        |     2 +-
 tools/src/parsers/test/replace_test_16.xfst        |     2 +-
 tools/src/parsers/test/replace_test_17.xfst        |     2 +-
 tools/src/parsers/test/replace_test_18.xfst        |     2 +-
 tools/src/parsers/test/replace_test_19.xfst        |     2 +-
 tools/src/parsers/test/replace_test_20.xfst        |     2 +-
 tools/src/parsers/test/replace_test_21.xfst        |     2 +-
 tools/src/parsers/test/replace_test_22.xfst        |     2 +-
 tools/src/parsers/test/replace_test_23.xfst        |     2 +-
 tools/src/parsers/test/replace_test_24.xfst        |    12 +-
 tools/src/parsers/test/replace_test_25.xfst        |     8 +-
 tools/src/parsers/test/replace_test_26.xfst        |     2 +-
 tools/src/parsers/test/replace_test_27.xfst        |     8 +-
 tools/src/parsers/test/replace_test_28.xfst        |     2 +-
 tools/src/parsers/test/replace_test_29.xfst        |     2 +-
 tools/src/parsers/test/replace_test_30.xfst        |     2 +-
 tools/src/parsers/test/replace_test_31.xfst        |     2 +-
 tools/src/parsers/test/replace_test_32.xfst        |     2 +-
 tools/src/parsers/test/replace_test_33.xfst        |     2 +-
 tools/src/parsers/test/replace_test_34.xfst        |     2 +-
 tools/src/parsers/test/replace_test_35.xfst        |     8 +-
 tools/src/parsers/test/replace_test_36.xfst        |     8 +-
 tools/src/parsers/test/replace_test_37.xfst        |    16 +-
 tools/src/parsers/test/replace_test_38.xfst        |     2 +-
 tools/src/parsers/test/replace_test_39.xfst        |     2 +-
 tools/src/parsers/test/replace_test_4.xfst         |     2 +-
 tools/src/parsers/test/replace_test_40.xfst        |     4 +-
 tools/src/parsers/test/replace_test_41.xfst        |     2 +-
 tools/src/parsers/test/replace_test_42.xfst        |     2 +-
 tools/src/parsers/test/replace_test_43.xfst        |     2 +-
 tools/src/parsers/test/replace_test_44.xfst        |     2 +-
 tools/src/parsers/test/replace_test_45.xfst        |     2 +-
 tools/src/parsers/test/replace_test_46.xfst        |     2 +-
 tools/src/parsers/test/replace_test_47.xfst        |     2 +-
 tools/src/parsers/test/replace_test_48.xfst        |     2 +-
 tools/src/parsers/test/replace_test_49.xfst        |     2 +-
 tools/src/parsers/test/replace_test_5.xfst         |     2 +-
 tools/src/parsers/test/replace_test_50.xfst        |     2 +-
 tools/src/parsers/test/replace_test_51.xfst        |     2 +-
 tools/src/parsers/test/replace_test_52.xfst        |     2 +-
 tools/src/parsers/test/replace_test_53.xfst        |     2 +-
 tools/src/parsers/test/replace_test_6.xfst         |     2 +-
 tools/src/parsers/test/replace_test_7.xfst         |     2 +-
 tools/src/parsers/test/replace_test_8.xfst         |     2 +-
 tools/src/parsers/test/replace_test_9.xfst         |     2 +-
 .../parsers/test/weighted_ltr_longest_match_1.xfst |     6 +-
 .../parsers/test/weighted_ltr_longest_match_2.xfst |     6 +-
 .../parsers/test/weighted_ltr_longest_match_3.xfst |     6 +-
 .../test/weighted_ltr_shortest_match_1.xfst        |     6 +-
 .../test/weighted_ltr_shortest_match_2.xfst        |     6 +-
 .../test/weighted_ltr_shortest_match_3.xfst        |     6 +-
 .../test/weighted_optional_replace_right_1.xfst    |     2 +-
 .../test/weighted_optional_replace_right_2.xfst    |     2 +-
 .../test/weighted_optional_replace_right_3.xfst    |     2 +-
 .../test/weighted_optional_replace_right_4.xfst    |     4 +-
 .../test/weighted_optional_replace_right_5.xfst    |     2 +-
 .../test/weighted_optional_replace_right_6.xfst    |     6 +-
 .../test/weighted_optional_replace_right_7.xfst    |    12 +-
 .../test/weighted_optional_replace_right_8.xfst    |     6 +-
 .../test/weighted_optional_replace_right_9.xfst    |     6 +-
 .../parsers/test/weighted_parallel_rules_1.xfst    |     2 +-
 .../parsers/test/weighted_parallel_rules_10.xfst   |     2 +-
 .../parsers/test/weighted_parallel_rules_11.xfst   |     2 +-
 .../parsers/test/weighted_parallel_rules_12.xfst   |     2 +-
 .../parsers/test/weighted_parallel_rules_13.xfst   |     2 +-
 .../parsers/test/weighted_parallel_rules_2.xfst    |     2 +-
 .../parsers/test/weighted_parallel_rules_3.xfst    |     2 +-
 .../parsers/test/weighted_parallel_rules_4.xfst    |     2 +-
 .../parsers/test/weighted_parallel_rules_5.xfst    |     2 +-
 .../parsers/test/weighted_parallel_rules_6.xfst    |     2 +-
 .../parsers/test/weighted_parallel_rules_7.xfst    |     2 +-
 .../parsers/test/weighted_parallel_rules_8.xfst    |     2 +-
 .../parsers/test/weighted_parallel_rules_9.xfst    |     2 +-
 .../src/parsers/test/weighted_replace_right_1.xfst |     2 +-
 .../src/parsers/test/weighted_replace_right_2.xfst |     2 +-
 .../src/parsers/test/weighted_replace_right_3.xfst |     2 +-
 .../src/parsers/test/weighted_replace_right_4.xfst |     4 +-
 .../src/parsers/test/weighted_replace_right_5.xfst |     2 +-
 .../src/parsers/test/weighted_replace_right_6.xfst |     6 +-
 .../src/parsers/test/weighted_replace_right_7.xfst |    12 +-
 .../src/parsers/test/weighted_replace_right_8.xfst |     6 +-
 .../src/parsers/test/weighted_replace_right_9.xfst |     6 +-
 421 files changed, 11787 insertions(+), 61426 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4033fe6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,255 @@
+# Compiled Object files
+*.slo
+*.lo
+*.o
+*.obj
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Compiled Dynamic libraries
+*.so
+*.dylib
+*.dll
+
+# Compiled Static libraries
+*.lai
+*.la
+*.a
+*.lib
+
+# trs and log files
+*.trs
+*.log
+
+# Transducer files
+*.hfst
+*.ofst
+*.sfst
+*.foma
+*.hfstol
+
+# Generated Python files and folders
+/python/__pycache__/
+/check_installation/__pycache__/
+/python/_libhfst.i
+/python/build/
+/python/doc/html/
+/python/libhfst.py
+/python/libhfst_wrap.cpp
+*.pyc
+
+# Back-up files
+*~
+
+# Generated files in installation check 
+/check_installation/check-hfst-*.tar.gz
+/check_installation/python_tests/
+/check_installation/tool_tests/
+
+# Generated documentation
+/doc/html/
+
+# Generated tarballs
+hfst-*.tar.gz
+
+# Tests
+/libhfst/src/HarmonizeUnknownAndIdentitySymbols
+/libhfst/src/HfstApply
+/libhfst/src/HfstFlagDiacritics
+/libhfst/src/HfstInputStream
+/libhfst/src/HfstOutputStream
+/libhfst/src/HfstRules
+/libhfst/src/HfstSymbolDefs
+/libhfst/src/HfstTokenizer
+/libhfst/src/HfstTransducer
+/libhfst/src/HfstXeroxRules
+/libhfst/src/implementations/ConvertFomaTransducer
+/libhfst/src/implementations/ConvertLogWeightTransducer
+/libhfst/src/implementations/ConvertOlTransducer
+/libhfst/src/implementations/ConvertSfstTransducer
+/libhfst/src/implementations/ConvertTransducerFormat
+/libhfst/src/implementations/ConvertTropicalWeightTransducer
+/libhfst/src/implementations/ConvertXfsmTransducer
+/libhfst/src/implementations/FomaTransducer
+/libhfst/src/implementations/HfstOlTransducer
+/libhfst/src/implementations/HfstTransitionGraph
+/libhfst/src/implementations/LogWeightTransducer
+/libhfst/src/implementations/SfstTransducer
+/libhfst/src/implementations/TropicalWeightTransducer
+/libhfst/src/implementations/compose_intersect/ComposeIntersectFst
+/libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon
+/libhfst/src/implementations/compose_intersect/ComposeIntersectRule
+/libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair
+/libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities
+/libhfst/src/implementations/optimized-lookup/convert
+/libhfst/src/implementations/optimized-lookup/transducer
+/libhfst/src/parsers/LexcCompiler
+/libhfst/src/parsers/XreCompiler
+/tools/src/hfst-tagger/src/AcyclicAutomaton
+/tools/src/hfst-tagger/src/DelayedSequenceModelComponent
+/tools/src/hfst-tagger/src/FstBuilder
+/tools/src/hfst-tagger/src/LexicalModelBuilder
+/tools/src/hfst-tagger/src/ModelBuilder
+/tools/src/hfst-tagger/src/NewLexicalModel
+/tools/src/hfst-tagger/src/SentenceTagger
+/tools/src/hfst-tagger/src/SentenceTransducer
+/tools/src/hfst-tagger/src/SequenceModelBuilder
+/tools/src/hfst-tagger/src/SequenceModelComponent
+/tools/src/hfst-tagger/src/SequenceModelComponentPair
+/tools/src/hfst-tagger/src/SequenceTagger
+/tools/src/hfst-tagger/src/TaggerBuilder
+/tools/src/hfst-tagger/src/WeightedStringVectorCollection
+/tools/src/hfst-tagger/src/string_handling
+/tools/src/hfst-twolc/src/Alphabet
+/tools/src/hfst-twolc/src/ConflictResolvingLeftArrowRule
+/tools/src/hfst-twolc/src/ConflictResolvingRightArrowRule
+/tools/src/hfst-twolc/src/InputReader
+/tools/src/hfst-twolc/src/LeftArrowRule
+/tools/src/hfst-twolc/src/LeftArrowRuleContainer
+/tools/src/hfst-twolc/src/LeftRestrictionArrowRule
+/tools/src/hfst-twolc/src/OtherSymbolTransducer
+/tools/src/hfst-twolc/src/RightArrowRule
+/tools/src/hfst-twolc/src/RightArrowRuleContainer
+/tools/src/hfst-twolc/src/Rule
+/tools/src/hfst-twolc/src/RuleContainer
+/tools/src/hfst-twolc/src/TwolCGrammar
+/tools/src/hfst-twolc/src/string_manipulation
+/test/libhfst/test_examples
+/test/libhfst/test_flag_diacritics
+/test/libhfst/test_hfst_basic_transducer
+/test/libhfst/test_rules
+/test/libhfst/test_streams
+/test/libhfst/test_tokenizer
+/test/libhfst/test_transducer_functions
+/test/libhfst/test_constructors
+
+# Autotools
+Makefile.in
+/autom4te.cache
+/autoscan.log
+/autoscan-*.log
+/aclocal.m4
+/compile
+/config.*
+/configure
+/configure.scan
+/depcomp
+/install-sh
+/missing
+stamp-h?
+.dirstamp
+.libs/
+.deps/
+/ltmain.sh
+/libtool
+/build-aux/
+
+# Generated by scripts/generate-cc-files.sh
+/libhfst/src/parsers/xre_lex.cc
+/libhfst/src/parsers/pmatch_lex.cc
+/libhfst/src/parsers/lexc-lexer.cc
+/libhfst/src/parsers/xre_parse.cc
+/libhfst/src/parsers/pmatch_parse.cc
+/libhfst/src/parsers/lexc-parser.cc
+/libhfst/src/parsers/xfst-lexer.cc
+/libhfst/src/parsers/xfst-parser.cc
+/libhfst/src/parsers/xre_parse.hh
+/libhfst/src/parsers/pmatch_parse.hh
+/libhfst/src/parsers/lexc-parser.hh
+/libhfst/src/parsers/xfst-parser.hh
+
+/tools/src/hfst-compiler.cc
+/tools/src/hfst-scanner.cc
+/tools/src/hfst-compiler.hh
+
+/tools/src/hfst-twolc/src/htwolcpre?.cc
+/tools/src/hfst-twolc/src/scanner?.cc
+/tools/src/hfst-twolc/src/htwolcpre?.hh
+
+# Otherwise generated code
+/libhfst/hfst.pc
+/libhfst/src/hfst.hpp
+
+# Generated man files
+/man/hfst-proc2.1
+/man/hfst-tokenise.1
+
+# Binary files
+/back-ends/foma/hfst_foma
+/scripts/hfst-foma
+/scripts/hfst-foma-wrapper.sh
+/tools/src/hfst-affix-guessify
+/tools/src/hfst-calculate
+/tools/src/hfst-compare
+/tools/src/hfst-compose
+/tools/src/hfst-compose-intersect
+/tools/src/hfst-concatenate
+/tools/src/hfst-conjunct
+/tools/src/hfst-determinize
+/tools/src/hfst-disjunct
+/tools/src/hfst-edit-metadata
+/tools/src/hfst-expand-equivalences
+/tools/src/hfst-flookup
+/tools/src/hfst-format
+/tools/src/hfst-fst2fst
+/tools/src/hfst-fst2strings
+/tools/src/hfst-fst2txt
+/tools/src/hfst-grep
+/tools/src/hfst-guess
+/tools/src/hfst-guessify
+/tools/src/hfst-head
+/tools/src/hfst-info
+/tools/src/hfst-invert
+/tools/src/hfst-lexc
+/tools/src/hfst-lexc-wrapper
+/tools/src/hfst-lookup
+/tools/src/hfst-minimize
+/tools/src/hfst-multiply
+/tools/src/hfst-name
+/tools/src/hfst-optimized-lookup
+/tools/src/hfst-pair-test
+/tools/src/hfst-pmatch
+/tools/src/hfst-pmatch2fst
+/tools/src/hfst-proc/hfst-apertium-proc
+/tools/src/hfst-project
+/tools/src/hfst-prune-alphabet
+/tools/src/hfst-push-weights
+/tools/src/hfst-regexp2fst
+/tools/src/hfst-remove-epsilons
+/tools/src/hfst-repeat
+/tools/src/hfst-reverse
+/tools/src/hfst-reweight
+/tools/src/hfst-shuffle
+/tools/src/hfst-split
+/tools/src/hfst-strings2fst
+/tools/src/hfst-substitute
+/tools/src/hfst-subtract
+/tools/src/hfst-summarize
+/tools/src/hfst-tagger/src/hfst-build-tagger
+/tools/src/hfst-tagger/src/hfst-open-input-file-for-tagger
+/tools/src/hfst-tagger/src/hfst-reweight-tagger
+/tools/src/hfst-tagger/src/hfst-tag
+/tools/src/hfst-tagger/src/hfst-train-tagger
+/tools/src/hfst-tagger/src/hfst-train-tagger-loc
+/tools/src/hfst-tagger/src/hfst-train-tagger-system
+/tools/src/hfst-tail
+/tools/src/hfst-tokenize
+/tools/src/hfst-traverse
+/tools/src/hfst-twolc/src/hfst-twolc
+/tools/src/hfst-twolc/src/hfst-twolc-loc
+/tools/src/hfst-twolc/src/hfst-twolc-system
+/tools/src/hfst-twolc/src/htwolcpre1
+/tools/src/hfst-twolc/src/htwolcpre2
+/tools/src/hfst-twolc/src/htwolcpre3
+/tools/src/hfst-txt2fst
+/tools/src/parsers/hfst-xfst
+
+# Aggressive ignores
+Makefile
+/m4/*
+
+# Add back files ignored by aggressive ignores
+!/tools/src/hfst-tagger/src/build_model_src/Makefile
+!/m4/README
diff --git a/AUTHORS b/AUTHORS
index 24b31e0..e4d6172 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -11,5 +11,6 @@ Erik Axelson
 Francis Tyers
 Miikka Silfverberg
 Sam Hardwick
+Senka Drobac
 Sjur Moshagen
 Tommi A Pirinen <tommi.pirinen at helsinki.fi>
diff --git a/ChangeLog b/ChangeLog
index 49a3e37..7044589 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,22417 +1,2796 @@
-2015-12-14 20:46  unhammer
-
-	* test/tools/cat_cat.strings,
-	  test/tools/cat_weight_ambig_W1_xerox.strings,
-	  test/tools/cat_weight_ambig_W_xerox.strings,
-	  test/tools/cat_weight_ambig_xerox.strings,
-	  test/tools/proc-functionality.sh,
-	  tools/src/hfst-proc/formatter.cc: fix for --xerox bug#328
-	  introduced by weight fix
-	  
-	  +tests
-
-2015-12-14 20:46  unhammer
-
-	* test/tools/proc-caps-out1.strings,
-	  test/tools/proc-caps-out3.strings,
-	  test/tools/proc-functionality.sh,
-	  tools/src/hfst-proc/formatter.cc,
-	  tools/src/hfst-proc/formatter.h: Revert -r4579 "Revert changes to
-	  hfst-proc made in revision 4427. This will (temporarily) fix bug
-	  #328."
-	  
-	  in preparation of real fix
-
-2015-12-14 14:47  eaxelson
-
-	* man/hfst-affix-guessify.1, man/hfst-apertium-proc.1,
-	  man/hfst-calculate.1, man/hfst-compare.1,
-	  man/hfst-compose-intersect.1, man/hfst-compose.1,
-	  man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinize.1, man/hfst-disjunct.1,
-	  man/hfst-edit-metadata.1, man/hfst-expand-equivalences.1,
-	  man/hfst-format.1, man/hfst-fst2fst.1, man/hfst-fst2strings.1,
-	  man/hfst-fst2txt.1, man/hfst-grep.1, man/hfst-guess.1,
-	  man/hfst-guessify.1, man/hfst-head.1, man/hfst-info.1,
-	  man/hfst-invert.1, man/hfst-lexc-wrapper.1, man/hfst-lexc.1,
-	  man/hfst-lookup.1, man/hfst-minimize.1, man/hfst-multiply.1,
-	  man/hfst-name.1, man/hfst-optimized-lookup.1,
-	  man/hfst-pair-test.1, man/hfst-pmatch.1, man/hfst-pmatch2fst.1,
-	  man/hfst-proc2.1, man/hfst-project.1, man/hfst-prune-alphabet.1,
-	  man/hfst-push-weights.1, man/hfst-regexp2fst.1,
-	  man/hfst-remove-epsilons.1, man/hfst-repeat.1,
-	  man/hfst-reverse.1, man/hfst-reweight-tagger.1,
-	  man/hfst-reweight.1, man/hfst-shuffle.1, man/hfst-split.1,
-	  man/hfst-strings2fst.1, man/hfst-substitute.1,
-	  man/hfst-subtract.1, man/hfst-summarize.1, man/hfst-tag.1,
-	  man/hfst-tail.1, man/hfst-train-tagger.1, man/hfst-traverse.1,
-	  man/hfst-twolc.1, man/hfst-txt2fst.1, man/hfst-xfst.1: Remember
-	  to update the man pages, too.
-
-2015-12-14 13:30  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am, python/setup.py: Ready for release
-	  3.9.0.
-
-2015-12-14 10:17  eaxelson
-
-	* test/tools/proc-caps-out1.strings,
-	  test/tools/proc-caps-out3.strings,
-	  test/tools/proc-functionality.sh,
-	  tools/src/hfst-proc/formatter.cc,
-	  tools/src/hfst-proc/formatter.h: Revert changes to hfst-proc made
-	  in revision 4427. This will (temporarily) fix bug #328.
-	  
-	  Change typedef ProcResults back to set<string> from
-	  vector<string>.
-	  This will remove the duplicates, but the results will again be
-	  listed in another order than they were inserted.
-	  vector<string> is probably be a better structure for storing the
-	  results, but it requires more changes in the code than just
-	  changing the typedef.
-
-2015-12-13 10:49  eaxelson
-
-	* python/libhfst.i: Change all pythoncode delimiters from '{' and
-	  '}' to '%{' and '%}'.
-	  
-	  The delimiters without a percent sign make swig interpret python
-	  comment lines with a leading hash sign as preprocessor
-	  directives.
-
-2015-12-12 12:15  jezral
-
-	* python/libhfst.i: Add two missing %
-
-2015-12-11 17:10  eaxelson
-
-	* test/tools/Makefile.am, test/tools/substitute-functionality.sh,
-	  test/tools/substituted_transducer.txt,
-	  test/tools/substituting_transducer.txt,
-	  tools/src/hfst-substitute.cc: Add tests for hfst-substitute.
-	  
-	  Disable the tests until option -T works correctly in
-	  hfst-substitute.
-	  Also fix a bug in transducer conversion in hfst-substitute.
-
-2015-12-11 15:25  eaxelson
-
-	* test/tools/mismatching-input-streams.sh: Add tests where one or
-	  both inputs are archives.
-
-2015-12-11 14:44  eaxelson
-
-	* tools/src/hfst-compose.cc: Set name of composition transducer
-	  after composition is called.
-
-2015-12-11 14:42  eaxelson
-
-	* test/tools/Makefile.am, test/tools/mismatching-input-streams.sh:
-	  Add tests for binary tools that use input streams whose types
-	  differ.
-
-2015-12-11 14:41  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: Make HfstTransducer::compose throw
-	  and exception if transducers have mismatching types.
-
-2015-12-11 13:11  eaxelson
-
-	* tools/src/hfst-substitute.cc: Implement conversion of mismatching
-	  transducers also in hfst-substitute.
-
-2015-12-11 12:20  eaxelson
-
-	* tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-program-options.cc,
-	  tools/src/hfst-program-options.h, tools/src/hfst-shuffle.cc,
-	  tools/src/hfst-subtract.cc, tools/src/inc/getopt-cases-binary.h,
-	  tools/src/inc/globals-binary.h: Make binary command line tools
-	  convert mismatching input streams into common format.
-	  
-	  If the input streams have a different implementation type,
-	  convert transducers from the second stream into the type of the
-	  first stream.
-	  If information can be lost, i.e. weighted format is to be
-	  converted into unweighted format, convert the streams vice versa.
-	  Option --do-not-convert, in short form -C, can be used to
-	  disallow conversion and return with a failure value.
-
-2015-12-11 11:57  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h: Make
-	  'harmonize_flag_diacritics' throw an exception if transducer
-	  types differ. Make 'is_safe_conversion' public.
-
-2015-12-10 13:11  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  test/tools/cats_and_dogs.xre,
-	  test/tools/regexp2fst-functionality.sh,
-	  tools/src/hfst-regexp2fst.cc: Fix a bug in hfst-regexp2fst
-	  related to comments and remove support for legacy way of defining
-	  weights from regexp parser.
-	  
-	  If hfst-regexp2fst cannot output any transducers because the
-	  input contains
-	  only whitespace or comments, exit with a failure. Remove support
-	  for legacy
-	  way of defining weights at the end of expression separated by a
-	  colon from
-	  the regexp parser.
-
-2015-12-09 10:22  sdrobac
-
-	* libhfst/src/parsers/xre_parse.yy, tools/src/parsers/test/test.sh:
-	  Xre parser - added check if contexts in replace rules are
-	  automata
-
-2015-12-08 15:34  eaxelson
-
-	* libhfst/src/parsers/XfstCompiler.cc,
-	  libhfst/src/parsers/XfstCompiler.h,
-	  libhfst/src/parsers/xfst-parser.yy: Implement commands 'view net'
-	  and 'write dot' as system calls for non-windows platforms.
-
-2015-12-08 12:25  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-hfst-lexc.bat,
-	  scripts/make-hfst-proc.bat, scripts/make-hfst-tool.bat,
-	  scripts/make-hfst-xfst.bat, scripts/make-htwolcpre1.bat,
-	  scripts/make-htwolcpre2.bat, scripts/make-htwolcpre3.bat,
-	  scripts/make-python-bindings.bat: Update windows scripts so that
-	  they will work with the latest changes in dot and pckimmo
-	  printing functions.
-
-2015-12-08 12:13  eaxelson
-
-	* libhfst/src/HfstPrintDot.cc, libhfst/src/HfstPrintDot.h,
-	  libhfst/src/HfstPrintPCKimmo.cc, libhfst/src/HfstPrintPCKimmo.h,
-	  libhfst/src/Makefile.am, tools/src/hfst-fst2txt.cc: Move dot and
-	  pckimmo related functions in their own files.
-
-2015-12-04 07:43  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/parsers/XfstCompiler.cc, python/libhfst.i: Throw an
-	  exception in HfstTransducer::eliminate_flag if flag feature does
-	  not occur in the transducer or the flag includes a value or
-	  operator.
-
-2015-12-03 11:07  moshagen
-
-	* python, python/test, tools/src, tools/src/hfst-tagger/src,
-	  tools/src/hfst-twolc/src: Ignore generated files.
-
-2015-12-03 08:27  eaxelson
-
-	* python/test/Makefile.am: Add missing file
-
-2015-12-02 14:08  eaxelson
-
-	* configure.ac, python/README, python/doc/libhfst.py,
-	  python/examples.py, python/foobar.hfst, python/libhfst.i,
-	  python/test, python/test.lexc, python/test/README,
-	  python/test/examples.py, python/test/foobar.hfst,
-	  python/test/test.lexc, python/test/test_fail.xfst,
-	  python/test/test_hfst.py, python/test/test_pass.xfst,
-	  python/test/testfile.att, python/test_fail.xfst,
-	  python/test_hfst.py, python/test_pass.xfst, python/testfile.att:
-	  Move python tests to their own directory.
-
-2015-12-02 08:29  eaxelson
-
-	* Makefile.am, new_python_api, old_python, old_python/README,
-	  python, python/doc/Doxyfile, python/doc/libhfst.py,
-	  python/libhfst.i, python/test_hfst.py, swig: Rename directory
-	  'swig' to 'old_python' and directory 'new_python_api' to
-	  'python'.
-
-2015-12-01 10:38  eaxelson
-
-	* tools/src/hfst-compose.cc: Add information about the possible
-	  values of option --xerox-composition to the help message.
-
-2015-11-27 11:08  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/XfstCompiler.cc, new_python_api/libhfst.i,
-	  new_python_api/test_hfst.py, tools/src/hfst-lookup.cc: Modify
-	  infinite_cutoff and time_cutoff arguments in lookup functions.
-	  
-	  Make argument 'infinite_cutoff' a pointer in function
-	  HfstTransitionGraph::lookup_fd, allowing it to de undefined.
-	  When calling lookup_fd from HfstTransducer::lookup, also pass the
-	  'time_cutoff' variable.
-	  Add 'time_cutoff' argument to lookup functions in the Python API.
-
-2015-11-26 11:48  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/lexc-utils.h,
-	  tools/src/parsers/test/replace_test_flags_2.att,
-	  tools/src/parsers/test/replace_test_flags_2.xfst,
-	  tools/src/parsers/test/test.sh: Lexc, removed option -M +
-	  cosmetic changes to the alignment
-
-2015-11-25 14:00  eaxelson
-
-	* new_python_api/libhfst.i: Handle standard and console streams
-	  when libhfst is run from IDLE.
-
-2015-11-25 09:15  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: Throw a
-	  FunctionNotImplementedException in HfstTransducer::lookup_fd
-	  instead of converting HfstTransducer automatically into
-	  HfstBasicTransducer.
-	  
-	  Lookup is often called many times, so it is better to convert the
-	  transducer once than every time lookup is called.
-
-2015-11-23 13:41  eaxelson
-
-	* new_python_api/libhfst.i: Update python interface.
-	  
-	  Add third argument to LexcCompiler constructor.
-	  Pass strings from C++ to Python as char pointers to prevent them
-	  from being interpreted as ascii strings.
-	  Add option output_to_console to compile_xfst_file.
-	  Add option align_strings to compile_lexc_file.
-
-2015-11-22 17:57  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/lexc-utils.h,
-	  tools/src/hfst-lexc-compiler.cc: Added option -A to lexc, it
-	  aligns same input and output transitions
-
-2015-11-20 16:02  eaxelson
-
-	* libhfst/src/parsers/XfstCompiler.cc,
-	  libhfst/src/parsers/xfst-parser.yy, new_python_api/libhfst.i: Fix
-	  a minor bug in python interface on windows.
-
-2015-11-18 09:10  eaxelson
-
-	* swig/libhfst.i: Fix LexcCompiler::printConnectedness const
-	  declaration.
-
-2015-11-17 10:53  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/LexcCompiler.cc,
-	  tools/src/parsers/test/replace_test_flags_1.att,
-	  tools/src/parsers/test/replace_test_flags_1.xfst,
-	  tools/src/parsers/test/test.sh: Replace rules support flag
-	  diacritics (fixed lexc with -FM flags)
-
-2015-11-17 10:33  eaxelson
-
-	* libhfst/src/parsers/XfstCompiler.cc,
-	  libhfst/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst.cc: Use separate ostringstreams for
-	  standard output and standard error on Windows.
-
-2015-11-16 17:47  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/XfstCompiler.cc,
-	  libhfst/src/parsers/XfstCompiler.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/lexc-parser.yy,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/xre_utils.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-optimized-lookup.cc, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-remove-epsilons.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h,
-	  tools/src/parsers/hfst-xfst.cc: Improvements to error and output
-	  stream handling.
-
-2015-11-13 16:34  eaxelson
-
-	* libhfst/src/parsers/XfstCompiler.cc,
-	  libhfst/src/parsers/XfstCompiler.h,
-	  libhfst/src/parsers/xfst-lexer.ll,
-	  libhfst/src/parsers/xfst-parser.yy: Support printing to console
-	  on Windows.
-
-2015-11-12 17:08  eaxelson
-
-	* back-ends/foma/constructions.c,
-	  test/tools/lexc-compiler-functionality.sh: Update foma back-end
-	  composition algorithm to fix a bug noticed in lexc tests.
-
-2015-11-12 16:11  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc: Replace system
-	  exit calls with HfstFatalExceptions.
-
-2015-11-12 15:55  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Check for
-	  epsilon cycles with negative weights.
-	  
-	  Check if transducers have epsilon cycles with negative weights in
-	  functions that perform weight pushing and issue a warning, if
-	  needed.
-	  Add functions to set and get warning stream for
-	  TropicalWeightTransducer and HfstTransducer (basically a wrapper
-	  around the previous).
-
-2015-11-12 14:31  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Optimize
-	  function 'has_negative_epsilon_cycles'.
-	  
-	  Check if there are epsilon transitions with negative weights
-	  before testing for
-	  epsilon cycles with negative weights.
-
-2015-11-12 12:42  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/flag_with_unknown.output,
-	  tools/src/parsers/test/flag_with_unknown.xfst,
-	  tools/src/parsers/test/test.sh: Add a test for checking that
-	  unknowns are not expanded into flag diacritics.
-	  
-	  There were some cases where a FOMA_TYPE transducer would have
-	  failed this test
-	  before HfstTransducer::harmonize_ was modified.
-
-2015-11-12 11:28  eaxelson
-
-	* test/tools/Makefile.am, test/tools/negative_epsilon_cycles.txt,
-	  test/tools/no_negative_epsilon_cycles.txt,
-	  test/tools/txt2fst-functionality.sh, tools/src/hfst-txt2fst.cc:
-	  Add option 'check-negative-epsilon-cycles' to hfst-txt2fst and
-	  tests for it.
-
-2015-11-12 00:55  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Add function
-	  HfstTransitionGraph::has_negative_epsilon_cycles.
-
-2015-11-11 15:12  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, new_python_api/doc/libhfst.py,
-	  new_python_api/libhfst.i, new_python_api/test_hfst.py,
-	  test/tools/lexc-compiler-functionality.sh: Improve performance of
-	  transducer harmonization.
-	  
-	  Do not add flag diacritics to transducer alphabets twice, and
-	  when they are added,
-	  collect all flags and then add them instead of adding each flag
-	  separately.
-	  This removes the need to convert HfstTransducer to
-	  HfstBasicTransducer for each flag
-	  that gets added.
-	  
-	  This improvement also makes visible a bug in foma back-ends
-	  function 'eliminate_flags',
-	  so comment out one lexc compiler functionality test until the
-	  function is fixed.
-
-2015-11-10 13:12  hardwick
-
-	* tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-optimized-lookup.h: Time cutoff for the bundled
-	  standalone optimized-lookup tool too
-
-2015-11-08 13:51  eaxelson
-
-	* new_python_api/libhfst.i: Add parameter to control output in
-	  'compile_lexc_file'.
-
-2015-11-08 13:50  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h: Add function unsigned int
-	  LexcCompiler::getVerbosity().
-
-2015-11-06 14:44  eaxelson
-
-	* new_python_api/libhfst.i, new_python_api/test_hfst.py: Allow user
-	  to control output in xre and xfst compilation.
-
-2015-11-05 13:22  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/XfstCompiler.cc,
-	  libhfst/src/parsers/lexc-parser.yy,
-	  libhfst/src/parsers/lexc-utils.cc: Improve error handling in lexc
-	  compiler.
-	  
-	  Add functions 'set_error_stream' and 'get_error_stream'.
-	  Get rid of FILE pointers and replace them with ostreams when
-	  printing output.
-	  Propagate XfstCompiler's error stream and verbosity to its lexc
-	  compiler.
-
-2015-11-04 13:42  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/parsers/XfstCompiler.cc,
-	  libhfst/src/parsers/XfstCompiler.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xfst-parser.yy,
-	  libhfst/src/parsers/xfst-utils.cc,
-	  libhfst/src/parsers/xfst-utils.h,
-	  libhfst/src/parsers/xre_utils.cc, tools/src/hfst-regexp2fst.cc:
-	  Improve error handling mechanism in xre and xfst parsers.
-	  
-	  Get rid of XreCompiler's get_error_message and add functions
-	  set_error_stream, get_error_stream, set_verbosity and
-	  get_verbosity.
-	  Use ostreams instead of FILE pointers when writing output in
-	  XfstCompiler. Also add functions set_error_stream,
-	  get_error_stream, set_output_stream and get_output_stream.
-
-2015-11-03 08:46  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Add a missing
-	  period to the end of symbol lines when printing in prolog format.
-
-2015-11-02 19:14  mpsilfve
-
-	* libhfst/src/HfstTransducer.h: Added warning about very slow
-	  lookup when using HfstTransducer::lookup_fd.
-
-2015-11-02 19:13  mpsilfve
-
-	* libhfst/src/HfstTransducer.h: Added warning about very slow
-	  lookup when using HfstTransducer::lookup_fd.
-
-2015-11-02 19:00  mpsilfve
-
-	* libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Added possibility to transform individual transition weights in
-	  HfstTransitionGraph.
-
-2015-11-02 13:29  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  tools/src/hfst-proc2.cc: Add option to suppress multichar
-	  tokenization and default to on in proc2
-
-2015-11-02 11:16  eaxelson
-
-	* libhfst/src/parsers/XfstCompiler.cc,
-	  libhfst/src/parsers/XfstCompiler.h,
-	  libhfst/src/parsers/xfst-parser.yy: Replace part of
-	  XfstCompiler's FILE pointers with equivalent calls to ostream.
-	  
-	  The intention is to get rid of FILEs to make it easier to control
-	  if output is printed to a file or string.
-
-2015-10-30 15:12  eaxelson
-
-	* libhfst/src/parsers/XfstCompiler.cc,
-	  libhfst/src/parsers/XfstCompiler.h: Tentatively move towards
-	  o(string)streams instead of FILE pointers when printing output.
-
-2015-10-30 11:43  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Remove debug printing
-
-2015-10-30 11:14  hardwick
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/hfst-lookup.cc: Implement a time-based search cutoff
-	  for hfst-lookup in optimized-lookup mode only
-
-2015-10-30 10:14  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Make 'define_function_args'
-	  return a bool instead of calling exit on error in xre parser.
-
-2015-10-30 09:36  eaxelson
-
-	* libhfst/src/parsers/XfstCompiler.cc,
-	  libhfst/src/parsers/XfstCompiler.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xfst-parser.yy,
-	  libhfst/src/parsers/xre_parse.yy: Fix error handling in xre and
-	  xfst compilers.
-	  
-	  Add YYABORT after xreerror is called in xre parser.
-	  Update error_message instead of printing it to standard error
-	  stream in xre compiler.
-	  Add a fail flag to xfst compiler and check its value in xfst
-	  parser instead of calling exit in the xfst compiler.
-
-2015-10-28 13:41  moshagen
-
-	* libhfst/src/parsers: Ignore generated files.
-
-2015-10-28 13:36  eaxelson
-
-	* new_python_api/doc/libhfst.py: Rewrite regular expression
-	  examples to be more informative.
-
-2015-10-28 11:32  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Scale
-	  weights to be non-negative in function n_best.
-
-2015-10-27 09:22  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/libhfst.i,
-	  new_python_api/test_hfst.py: Update documentation.
-
-2015-10-26 14:13  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/libhfst.i: Small
-	  fixes to read_att_string.
-
-2015-10-26 13:16  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/libhfst.i,
-	  new_python_api/test_hfst.py: Update documentation about special
-	  symbols. Add a function for reading AT&T strings.
-
-2015-10-26 08:10  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/libhfst.i: Add
-	  function start_xfst() that starts an interactive XFST compiler.
-
-2015-10-23 14:37  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/examples.py: Update
-	  documentation between HFST and backend conversions and add the
-	  examples to tests.
-
-2015-10-23 10:58  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/libhfst.i,
-	  new_python_api/test_hfst.py: Fix issues related to level of
-	  verbosity when compiling xfst and regexps. Add missing
-	  documentation.
-
-2015-10-23 10:37  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Merging of modified or added
-	  functionality from the xre parser
-
-2015-10-23 10:37  hardwick
-
-	* libhfst/src/HfstFlagDiacritics.h: Remove obsolete comment
-
-2015-10-23 08:19  eaxelson
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/HfstXeroxRulesTest.cc: Revert HfstXeroxRules files to
-	  version 4484.
-
-2015-10-22 12:44  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/libhfst.i,
-	  new_python_api/test_hfst.py: Rewrite 'compile_lexc_file'.
-
-2015-10-22 08:45  eaxelson
-
-	* libhfst/src/parsers/XfstCompiler.cc,
-	  libhfst/src/parsers/XfstCompiler.h,
-	  libhfst/src/parsers/xfst-parser.yy, new_python_api/libhfst.i,
-	  new_python_api/test_fail.xfst, new_python_api/test_hfst.py,
-	  new_python_api/test_pass.xfst, tools/src/parsers/hfst-xfst.cc:
-	  Improve handling of error and exit conditions in xfst.
-	  
-	  Do not call exit() directly from the xfst parser if 'quit' is
-	  requested or
-	  an unknown command is encountered, but leave it to the
-	  application to decide
-	  what should be done in those cases. For this purpose, add some
-	  functions to
-	  XfstCompiler:
-	  
-	  std::string get(const char * name) // Get the value of a
-	  variable.
-	  bool quit_requested() // Whether the script/user has requested
-	  'quit'
-	  int unknown_command(const char *) // For handling unknown
-	  commands
-	  
-	  Also rewrite the function compile_xfst_file(filename) in Python
-	  API and add
-	  some tests.
-
-2015-10-22 08:06  eaxelson
-
-	* libhfst/src/parsers/XfstCompiler.h: Add missing namespace:
-	  'string' -> 'std::string'.
-
-2015-10-21 09:16  jezral
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/hfst-lookup.cc: Greatly reduce memory leaks when using
-	  hfst-ol format
-
-2015-10-20 14:03  eaxelson
-
-	* new_python_api/doc/Doxyfile, new_python_api/doc/libhfst.py,
-	  new_python_api/examples.py, new_python_api/libhfst.i,
-	  new_python_api/test_hfst.py, new_python_api/testfile.att: Update
-	  new python API.
-
-2015-10-20 13:57  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-hfst-lexc.bat,
-	  scripts/make-hfst-proc.bat, scripts/make-hfst-tool.bat,
-	  scripts/make-hfst-xfst.bat, scripts/make-htwolcpre1.bat,
-	  scripts/make-htwolcpre2.bat, scripts/make-htwolcpre3.bat,
-	  scripts/make-python-bindings.bat, scripts/test-hfst-tools.bat:
-	  Update windows scripts after moving XfstCompiler.
-
-2015-10-20 13:52  eaxelson
-
-	* libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/XfstCompiler.cc,
-	  libhfst/src/parsers/XfstCompiler.h,
-	  libhfst/src/parsers/xfst-lexer.ll,
-	  libhfst/src/parsers/xfst-parser.yy,
-	  libhfst/src/parsers/xfst-utils.cc,
-	  libhfst/src/parsers/xfst-utils.h,
-	  libhfst/src/parsers/xfst_help_message.cc,
-	  libhfst/src/parsers/xfst_help_message.h,
-	  scripts/generate-cc-files.sh, tools/src/parsers/Makefile.am,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy,
-	  tools/src/parsers/xfst-utils.cc, tools/src/parsers/xfst-utils.h,
-	  tools/src/parsers/xfst_help_message.cc,
-	  tools/src/parsers/xfst_help_message.h: Move XfstCompiler from
-	  tools/src/parsers to libhfst/src/parsers.
-
-2015-10-20 13:50  eaxelson
-
-	* test/tools/Makefile.am: Add three missing files to dist.
-
-2015-10-20 12:56  jezral
-
-	* tools/src/hfst-lookup.cc: Add flushing to allow instrumentation
-	  of hfst-lookup
-
-2015-10-20 12:30  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/HfstXeroxRulesTest.cc: Replace rules now should
-	  support Flag diacritics.
-
-2015-10-19 10:59  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Fixed lenient composition
-	  (it used to be unimplemented).
-
-2015-10-19 10:56  eaxelson
-
-	* libhfst/src/HfstStrings2FstTokenizer.cc,
-	  libhfst/src/HfstStrings2FstTokenizer.h, libhfst/src/Makefile.am,
-	  tools/src/HfstStrings2FstTokenizer.cc,
-	  tools/src/HfstStrings2FstTokenizer.h, tools/src/Makefile.am,
-	  tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc:
-	  Move HfstStrings2FstTokenizer from tools to libhfst directory.
-
-2015-10-15 08:07  eaxelson
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc: Use the
-	  actual transition data object when copying transitions in
-	  conversion.
-
-2015-10-15 08:04  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Fix a warning
-	  about comparison of signed and unsigned value.
-
-2015-10-14 13:13  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Throw
-	  StateIndexOutOfBounds exception in get_final_weight, if state
-	  does not exist.
-
-2015-10-14 13:07  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/examples.py,
-	  new_python_api/libhfst.i: Add examples used in documentation to
-	  the tests.
-
-2015-10-14 08:25  eaxelson
-
-	* new_python_api/doc/Doxyfile, new_python_api/doc/libhfst.py,
-	  new_python_api/libhfst.i, new_python_api/test_hfst.py,
-	  new_python_api/testfile.att: Test examples and fix them, if
-	  needed.
-
-2015-10-12 12:56  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/libhfst.i,
-	  new_python_api/test_hfst.py: Add missing documentation and
-	  functions.
-
-2015-10-12 07:35  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/libhfst.i,
-	  new_python_api/test_hfst.py: Add a function that takes tokenized
-	  input and returns a transducer.
-
-2015-10-09 15:48  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/libhfst.i,
-	  new_python_api/test_hfst.py: Define new functions for creating
-	  transducers from string, string list and dictionary.
-
-2015-10-09 12:30  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/libhfst.i,
-	  new_python_api/test_hfst.py, new_python_api/testfile.att: Fix
-	  some issues in the new python interface.
-
-2015-10-06 13:16  eaxelson
-
-	* new_python_api/doc/Doxyfile, new_python_api/doc/libhfst.py,
-	  new_python_api/libhfst.i, new_python_api/test_hfst.py: Add more
-	  documentation and tests to the new python interface.
-
-2015-10-02 14:21  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Add aliases
-	  for different substitution functions.
-
-2015-10-02 13:50  eaxelson
-
-	* new_python_api/libhfst.i, new_python_api/test_hfst.py: Modify
-	  substitution functions to be more pythonic.
-
-2015-10-01 12:34  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/libhfst.i,
-	  new_python_api/test_hfst.py: Add more stuff to the new python
-	  interface.
-
-2015-10-01 08:46  eaxelson
-
-	* tools/src/parsers/xfst_help_message.cc: Fix output of hfst-xfst's
-	  command 'help'.
-	  
-	  Add explanation for commands where it was missing.
-	  Do not list commands that are not implemented.
-
-2015-10-01 08:43  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-lexer.ll: Fix small bugs in hfst-xfst.
-	  
-	  Add some space to the output of 'print longest-string'.
-	  Add missing aliases for command 'quit'.
-
-2015-09-30 09:46  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Modify
-	  also determinization function so that negative weights are
-	  handled correctly.
-	  
-	  This is this same procedure that was done for minimization
-	  function in revision #4439.
-
-2015-09-28 09:32  eaxelson
-
-	* new_python_api/doc/libhfst.py: Added more documentation.
-
-2015-09-28 08:31  eaxelson
-
-	* new_python_api/doc/libhfst.py: Added more documentation.
-
-2015-09-25 12:47  unhammer
-
-	* test/tools/proc-cat-NUL.strings,
-	  test/tools/proc-functionality.sh,
-	  tools/src/hfst-proc/tokenizer.cc: fix NUL flush, bug #240
-	  
-	  (NUL should also be kept in output, before flushing, as in
-	  lt-tools
-
-2015-09-24 13:56  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/libhfst.i,
-	  new_python_api/test_hfst.py: Add function __iter__() to
-	  libhfst.HfstBasicTransducer.
-
-2015-09-24 11:54  eaxelson
-
-	* new_python_api/doc/libhfst.py, new_python_api/libhfst.i: Modified
-	  libhfst files.
-
-2015-09-24 08:43  eaxelson
-
-	* new_python_api, new_python_api/Makefile.am,
-	  new_python_api/README, new_python_api/doc,
-	  new_python_api/doc/Doxyfile, new_python_api/doc/libhfst.py,
-	  new_python_api/foobar.hfst, new_python_api/libhfst.i,
-	  new_python_api/setup.py, new_python_api/test.lexc,
-	  new_python_api/test_hfst.py, new_python_api/testfile.att: Create
-	  directory for new python API.
-	  
-	  Copy all relevant parts from the old python API (from directory
-	  named 'swig')
-	  and modify them as needed. This API will at some point replace
-	  the old one,
-	  or at least be the default one.
-
-2015-09-24 08:36  eaxelson
-
-	* Doxyfile: Update Doxygen HFST version number.
-
-2015-09-24 07:31  eaxelson
-
-	* swig/README, swig/doc/Doxyfile: Update README and Doxygen
-	  documentation.
-	  
-	  Advise users to use python3 instead of python2.
-	  Tell how the swig wrapper can be modified if HFST exceptions do
-	  not inherit from BaseException.
-	  Update the Doxygen HFST version number.
-
-2015-09-22 12:35  eaxelson
-
-	* tools/src/parsers/test/contains_with_weight.output,
-	  tools/src/parsers/test/contains_with_weight.xfst,
-	  tools/src/parsers/test/merge_weighted.att,
-	  tools/src/parsers/test/merge_weighted.xfst,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_parallel_rules_12.output,
-	  tools/src/parsers/test/weighted_parallel_rules_12.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_13.output,
-	  tools/src/parsers/test/weighted_parallel_rules_13.xfst: Add some
-	  tests with negative weights for contain, merge and parallel rule
-	  operators.
-
-2015-09-22 11:42  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Modify
-	  minimization of weighted transducers so that negative weights are
-	  handled correctly.
-	  
-	  After epsilon removal, all states and transitions of the
-	  transducer are iterated over to find the lowest weight.
-	  If the lowest weight is negative, its opposite is added to all
-	  weights in the transducer.
-	  Then the transducer is determinized and minimized normally.
-	  Finally, if the original lowest weight was negative, it is added
-	  to all weights in the transducer.
-	  
-	  This procedure effectively removes negative weights from the
-	  transducer before determinization and adds them again in the end.
-	  It is needed because OpenFst's determinization algorithm cannot
-	  handle negative weights correctly.
-	  
-	  Running 'make check' in directory fsmbook-examples takes
-	  approximately 3 minutes before and after the changes, so it seems
-	  that the slowdown should not be an issue.
-
-2015-09-16 10:30  eaxelson
-
-	* scripts/Makefile.am: Always include 'generate-cc-files.sh' script
-	  in dist package.
-
-2015-09-16 10:17  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  Do not allow omitting the question mark on either or both sides
-	  of colon in regular expressions. Xerox has also removed this
-	  feature from their regexp syntax. Interpret expressions such as
-	  [foo : bar], [foo: bar] and [foo :bar] as [foo:bar]. Expressions
-	  of type [foo:], [:bar] and [:] will yield an error.
-
-2015-09-16 09:50  eaxelson
-
-	* test/tools/pmatch-functionality.sh: Test if pmatch-tests.sh.*
-	  files exist before removing them to avoid 'rm: cannot remove:'
-	  messages.
-
-2015-09-16 08:21  eaxelson
-
-	* configure.ac: Remove foma license warning. The current license of
-	  foma has no compatibility issues.
-
-2015-09-16 08:06  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/libhfst.i, swig/setup.py: Make some changes for the python
-	  interface. Move HfstFile wrapper class to the swig interface
-	  file. Make HfstStates and HfstTransitions typedefs public. Add a
-	  destructor for HfstTransition. Update version number to 3.8.3.
-
-2015-09-15 07:13  hardwick
-
-	* tools/src/hfst-pmatch.cc, tools/src/hfst-proc2.cc: Handle a
-	  frequently encountered exception
-
-2015-09-03 07:19  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Reverted
-	  changes done for class HfstFile in revision 4431.
-
-2015-09-02 10:20  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Removed
-	  HfstFile wrapper class and functions using it. A better place for
-	  them is in the swig directory.
-
-2015-09-01 06:32  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h: Added destructor for class
-	  HfstException. It needs to be defined for SWIG.
-
-2015-08-31 12:36  unhammer
-
-	* test/tools/Makefile.am, test/tools/cat_weight_ambig.txt,
-	  test/tools/cat_weight_ambig_W_out.strings,
-	  test/tools/cat_weight_ambig_out.strings,
-	  test/tools/proc-functionality.sh: tests for --weight-classes 1
-	  and ordering by weights in proc
-
-2015-08-31 12:06  unhammer
-
-	* test/tools/proc-caps-out1.strings,
-	  test/tools/proc-caps-out3.strings: make tests pass again (only
-	  analysis order changed here)
-
-2015-08-27 18:37  unhammer
-
-	* tools/src/hfst-proc/formatter.cc,
-	  tools/src/hfst-proc/formatter.h: use std::vector as ProcResult to
-	  get output sorted by weight-class
-
-2015-08-27 18:35  unhammer
-
-	* tools/src/hfst-proc/applicators.cc,
-	  tools/src/hfst-proc/formatter.cc,
-	  tools/src/hfst-proc/formatter.h,
-	  tools/src/hfst-proc/lookup-path.h: fix --weight-classes, bug #308
-	  
-	  old code did comparison without first casting (where possible) to
-	  weighted paths; added a compare fn that tries casting. Also,
-	  typedef
-	  the ProcResult
-
-2015-08-20 12:09  eaxelson
-
-	* scripts/generate-cc-files.sh: Now the script generate-cc-files.sh
-	  creates also lexer files.
-
-2015-08-20 10:04  jezral
-
-	* scripts/Makefile.am: Add $(EXEEXT) for Windows
-
-2015-08-20 09:56  jezral
-
-	* back-ends/foma/determinize.c, back-ends/foma/foma.h,
-	  back-ends/foma/mem.c, back-ends/foma/minimize.c: More Foma fixes
-	  for cross-building and clang
-
-2015-08-20 07:46  eaxelson
-
-	* back-ends/foma/determinize.c, back-ends/foma/minimize.c: Small
-	  modifications to foma code: struct and variable had the same
-	  name.
-
-2015-08-17 14:08  eaxelson
-
-	* README, back-ends/foma/CHANGELOG, back-ends/foma/COPYING,
-	  back-ends/foma/README, back-ends/foma/apply.c,
-	  back-ends/foma/coaccessible.c, back-ends/foma/constructions.c,
-	  back-ends/foma/define.c, back-ends/foma/determinize.c,
-	  back-ends/foma/dynarray.c, back-ends/foma/flags.c,
-	  back-ends/foma/foma.c, back-ends/foma/foma.h,
-	  back-ends/foma/fomalib.h, back-ends/foma/fomalibconf.h,
-	  back-ends/foma/iface.c, back-ends/foma/io.c,
-	  back-ends/foma/lex.cmatrix.c, back-ends/foma/lex.interface.c,
-	  back-ends/foma/lex.lexc.c, back-ends/foma/lex.yy.c,
-	  back-ends/foma/lexc.l, back-ends/foma/lexcread.c,
-	  back-ends/foma/mem.c, back-ends/foma/minimize.c,
-	  back-ends/foma/regex.c, back-ends/foma/regex.h,
-	  back-ends/foma/regex.l, back-ends/foma/regex.y,
-	  back-ends/foma/reverse.c, back-ends/foma/rewrite.c,
-	  back-ends/foma/sigma.c, back-ends/foma/spelling.c,
-	  back-ends/foma/stringhash.c, back-ends/foma/structures.c,
-	  back-ends/foma/topsort.c, back-ends/foma/trie.c,
-	  back-ends/foma/utf8.c: Updated to foma version 0.9.18alpha.
-
-2015-08-14 15:40  jezral
-
-	* hfst.m4, tools/src/hfst-proc/buffer.h: GNU address removal
-
-2015-08-10 13:04  eaxelson
-
-	* tools/src/hfst-compare.cc: Fixed some memory leaks in
-	  hfst-compare reported in bug #167.
-
-2015-08-07 09:37  eaxelson
-
-	* scripts/README, scripts/README_eight_tools_mac.txt,
-	  scripts/README_eight_tools_win.txt, scripts/README_xfst_mac.txt,
-	  scripts/README_xfst_win.txt: Adding the renamed files.
-
-2015-08-07 09:32  eaxelson
-
-	* scripts/README, scripts/README_eight_tools_win.txt,
-	  scripts/README_xfst_win.txt: Trying to rename README files...
-
-2015-08-07 09:24  eaxelson
-
-	* scripts/README_eight_tools.txt,
-	  scripts/README_eight_tools_win.txt, scripts/README_xfst.txt,
-	  scripts/README_xfst_win.txt, scripts/copy-for-windows.sh,
-	  scripts/package-static-binaries.sh, scripts/test-libhfst.bat,
-	  scripts/test-openfstwin.bat: Updated scripts.
-
-2015-08-04 08:13  eaxelson
-
-	* scripts/README: Now all files in this directory are listed in
-	  README
-
-2015-08-04 07:31  eaxelson
-
-	* scripts/README: Added a README file for the scripts directory.
-
-2015-06-25 09:16  hardwick
-
-	* tools/src/hfst-pmatch2fst.cc: Fix help message
-
-2015-06-25 09:14  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Fix containment, implement
-	  some additional wanted operations
-
-2015-06-11 15:40  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.8.3.
-
-2015-06-11 10:24  eaxelson
-
-	* scripts/README_eight_tools.txt, scripts/copy-for-windows.sh:
-	  Updated windows scripts.
-
-2015-06-11 10:24  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Now a warning message gets
-	  printed if stack contains transducers whose types differ (can
-	  happen if lookup-optimize is called before pushing another
-	  transducer onto stack).
-
-2015-06-10 10:49  eaxelson
-
-	* scripts/README_eight_tools.txt: Added a windows README file for
-	  the package that contains eight command line tools.
-
-2015-06-10 09:54  eaxelson
-
-	* scripts/README_xfst.txt: Added a Windows README file for
-	  hfst-xfst.
-
-2015-06-09 13:09  eaxelson
-
-	* back-ends/openfst/src/include/fst/rmfinalepsilon.h,
-	  back-ends/openfst/src/include/fst/symbol-table-ops.h,
-	  back-ends/openfst/src/include/fst/synchronize.h,
-	  scripts/copy-for-windows.sh, scripts/test-hfst-tools.bat,
-	  scripts/windows_tests, scripts/windows_tests/test.lexc,
-	  scripts/windows_tests/test.pmatch,
-	  scripts/windows_tests/test.twolc,
-	  scripts/windows_tests/test.xfst,
-	  scripts/windows_tests/test_lexc_result.txt,
-	  scripts/windows_tests/test_pmatch_result.txt,
-	  scripts/windows_tests/test_twolc_result.txt,
-	  scripts/windows_tests/test_xfst_result.txt,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h,
-	  tools/src/hfst-twolc/src/hfst-twolc.bat: Added tests for windows.
-	  Made small fixes to hfst-proc and hfst-twolc for windows.
-
-2015-06-08 12:31  eaxelson
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.cc,
-	  tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc,
-	  tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.cc,
-	  tools/src/hfst-twolc/src/variable_src/ConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/MixedConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/RuleSymbolVector.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleVariables.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleVariablesConstIterator.cc,
-	  tools/src/hfst-twolc/src/variable_src/VariableValueIterator.h:
-	  Replaced alternative tokens for logical operators with the
-	  standard ones.
-
-2015-06-08 12:22  eaxelson
-
-	* tools/src/hfst-twolc/src/commandline_src/CommandLine.h: Checking
-	  for existence of config.h and getopt.h.
-
-2015-06-08 12:19  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-hfst-tools.bat,
-	  scripts/make-htwolcpre2.bat: Updated scripts.
-
-2015-06-08 10:02  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-htwolcpre1.bat,
-	  scripts/make-htwolcpre2.bat, scripts/make-htwolcpre3.bat: Added
-	  make scripts for twolc.
-
-2015-06-08 08:26  eaxelson
-
-	* scripts/copy-for-windows.sh: Added twolc to windows compilation
-	  scripts.
-
-2015-06-05 13:46  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-hfst-proc.bat,
-	  scripts/make-hfst-xfst.bat: Updated windows scripts.
-
-2015-06-05 13:43  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-optimized-lookup.cc, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-pmatch2fst.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h: Fixing again reading and
-	  writing to/from console on windows.
-
-2015-06-04 12:58  eaxelson
-
-	* libhfst/src/parsers/pmatch_utils.h: Using hex values for unicode
-	  characters when compiling with msvc to get rid of warnings (and
-	  possible segfaults).
-
-2015-06-04 08:24  jezral
-
-	* test/tools/proc-functionality.sh,
-	  tools/src/hfst-proc/tokenizer.cc: Terminator needs reading, and
-	  yes there are partial reads
-
-2015-06-03 14:34  jezral
-
-	* tools/src/hfst-proc/tokenizer.cc: std::string all the way
-
-2015-06-03 10:29  eaxelson
-
-	* tools/src/hfst-proc/alphabet.cc,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/tokenizer.cc: Added missing HAVE_CONFIG_H
-	  ifdef. Added globals-common.h header as some compilers complain
-	  about missing extern variables. Now creating variable size array
-	  'next_u8' dynamically with operator 'new'.
-
-2015-06-03 10:04  eaxelson
-
-	* tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/help_message.cc,
-	  tools/src/parsers/xfst_help_message.cc,
-	  tools/src/parsers/xfst_help_message.h: Renamed help_message.cc
-	  into xfst_help_message.cc and added a header file
-	  xfst_help_message.h. Now XfstCompiler includes only the header
-	  file.
-
-2015-06-03 07:53  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Fixed a typo and added
-	  explicit braces to an else statement.
-
-2015-06-02 12:54  eaxelson
-
-	* tools/src/hfst-getopt.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst.cc, tools/src/parsers/test/test.sh:
-	  Now option --pipe-mode takes an optional argument { input,
-	  output, both }, 'both' being the default.
-
-2015-05-29 12:25  mpsilfve
-
-	* libhfst/src/Makefile.am: Install hfstdll.h
-
-2015-05-29 11:24  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h,
-	  tools/src/parsers/hfst-xfst.cc: Now hfst-lookup and
-	  hfst-optimized-lookup read from console and print to console by
-	  default on windows.
-
-2015-05-28 12:21  eaxelson
-
-	* tools/src/hfst-optimized-lookup.cc: Commented out one debug
-	  print...
-
-2015-05-28 12:20  eaxelson
-
-	* tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst.cc: More improvements to utf-8
-	  handling on windows.
-
-2015-05-27 13:09  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Small modifications for better
-	  utf-8 support on windows.
-
-2015-05-26 12:06  eaxelson
-
-	* scripts/copy-for-windows.sh, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-optimized-lookup.h, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-pmatch2fst.cc: Small modifications for some
-	  command line tools for windows.
-
-2015-05-25 13:08  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-hfst-lexc.bat,
-	  scripts/make-hfst-tool.bat, tools/src/hfst-compare.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-txt2fst.cc,
-	  tools/src/parsers/test/test.sh: Added tool compilation scripts
-	  for windows. Argument handling on windows is also supported for
-	  some tools needed for hfst-xfst testing.
-
-2015-05-25 12:56  eaxelson
-
-	* tools/src/hfst-getopt.cc: Fixed a bug in argument handling.
-
-2015-05-22 11:14  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-hfst-xfst.bat,
-	  tools/src/hfst-lexc-compiler.cc, tools/src/parsers/hfst-xfst.cc:
-	  Edited help messages and warnings of hfst-xfst and hfst-lexc on
-	  windows about character encodings.
-
-2015-05-21 13:06  eaxelson
-
-	* tools/src/hfst-getopt.cc, tools/src/hfst-getopt.h,
-	  tools/src/hfst-lexc-compiler.cc, tools/src/parsers/hfst-xfst.cc:
-	  Moved getopt implementation to a separate file.
-
-2015-05-20 14:01  eaxelson
-
-	* scripts/copy-for-windows.sh, tools/src/parsers/hfst-xfst.cc:
-	  Added an implementation for long options for windows.
-
-2015-05-19 11:50  eaxelson
-
-	* back-ends/foma/lex.cmatrix.c, back-ends/foma/sigma.c,
-	  back-ends/foma/spelling.c, back-ends/foma/structures.c,
-	  scripts/copy-for-windows.sh, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst.cc: Fixed some issues noticed during
-	  msvc compilation. Renamed function 'min' to 'min_' to avoid
-	  collision with a macro with the same name. Changed arguments of
-	  comparison function given to qsort to (const void *, const void
-	  *). Added support for commandline arguments of type
-	  '--option=argument' to hfst-xfst for windows. Also changed
-	  hfst-xfst's option --print-to-console (default false) into
-	  --no-console (default false) on windows.
-
-2015-05-18 13:41  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-hfst-xfst.bat,
-	  tools/src/getopt_long.cc, tools/src/getopt_long.h: Updated
-	  windows script files.
-
-2015-05-18 13:40  eaxelson
-
-	* tools/src/parsers/hfst-xfst.cc: Deleted getopt_long cc and h
-	  files. Processing command line arguments manually in hfst-xfst.cc
-	  on windows.
-
-2015-05-18 13:39  eaxelson
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/hfst-commandline.cc: Added some ifdef _MSC_VER
-	  directives.
-
-2015-05-18 10:36  eaxelson
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Applied patch for musl libc compilation.
-
-2015-05-11 12:04  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  scripts/make-hfst-xfst.bat, tools/src/hfst-commandline.cc,
-	  tools/src/parsers/XfstCompiler.cc: Fixed some bugs noticed when
-	  compiling on windows.
-
-2015-05-08 20:21  hardwick
-
-	* tools/src/hfst-proc2.cc: Blank line between outputs in --finnpos
-	  mode
-
-2015-05-08 14:05  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/libhfst_win.i,
-	  scripts/make-hfst-xfst.bat,
-	  tools/src/HfstStrings2FstTokenizer.cc, tools/src/getopt_long.cc,
-	  tools/src/getopt_long.h, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-commandline.h, tools/src/parsers/hfst-xfst.cc,
-	  tools/src/parsers/xfst-lexer.ll, tools/src/parsers/xfst-utils.h:
-	  Updated windows scripts. Added ifdefs for msvc compilation.
-
-2015-05-05 12:15  eaxelson
-
-	* scripts/libhfst_win.i, scripts/make-python-bindings.bat,
-	  scripts/test_libhfst_win.py: Updated swig scripts for windows.
-
-2015-04-29 12:32  hardwick
-
-	* tools/src/hfst-proc2.cc: Add FinnPos mode and reorganise
-
-2015-04-27 13:34  eaxelson
-
-	* back-ends/openfstwin/src/include/fst/flags.h,
-	  scripts/copy-for-windows.sh, scripts/make-foma.bat,
-	  scripts/make-libhfst.bat, scripts/make-openfstwin.bat,
-	  scripts/make-python-bindings.bat, scripts/test-libhfst.bat,
-	  scripts/test-openfstwin.bat, scripts/test_libhfst_win.py: Updated
-	  and added scripts for compiling python bindings on windows.
-
-2015-04-23 11:30  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc,
-	  tools/src/hfst-pmatch2fst.cc: Fix harmonization issue and speed
-	  up the common case of only on top-level matcher
-
-2015-04-23 06:24  moshagen
-
-	* tools/src/hfst-reweight.cc: Documented the tsv file format, added
-	  some linebreaks to make the helpt text easier to read.
-
-2015-04-21 09:22  moshagen
-
-	* tools/src/hfst-reweight.cc: Always skip comment lines. Added
-	  verbose output for TSV file reweighting.
-
-2015-04-21 07:21  moshagen
-
-	* tools/src/hfst-reweight.cc: Fixed bug #293 by initialising the
-	  line variable before using it.
-
-2015-04-20 13:52  moshagen
-
-	* tools/src/hfst-reweight.cc: Whitespace only.
-
-2015-04-17 18:54  eaxelson
-
-	* libhfst/src/hfstdll.h: Added missing file 'hfstdll.h'.
-
-2015-04-17 12:43  eaxelson
-
-	* scripts/copy-for-windows.sh,
-	  scripts/generate-python-bindings.bat, scripts/libhfst_win.i,
-	  scripts/make-libhfst.bat, scripts/make-openfstwin.bat,
-	  scripts/test-libhfst.bat, scripts/test-openfstwin.bat: Edited and
-	  added scripts for windows compilation.
-
-2015-04-17 12:10  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.h,
-	  libhfst/src/HfstExceptionDefs.h,
-	  libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTokenizer.h, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Added HFSTDLL's for some functions for windows compilation.
-
-2015-04-15 11:48  eaxelson
-
-	* tools/src/hfst-reweight.cc: Added option --arcs-only to
-	  hfst-reweight. Now weights of all arcs and end states are
-	  modified unless --arcs-only or --end-states-only is used. Also
-	  fixed '--end-state-only' as '--end-states-only'.
-
-2015-04-13 10:26  eaxelson
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Added
-	  some explicit type conversions.
-
-2015-04-09 13:28  moshagen
-
-	* tools/src/hfst-pair-test.cc: Changed the short form of the xerox
-	  mode from -x to -X (upper case), to be more consistent with the
-	  other options, and to match the test on line 195.
-
-2015-04-08 13:12  eaxelson
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/Makefile.am, tools/src/Makefile.am:
-	  Now it is checked if foma back-end and zlib are available before
-	  hfst-lexc-wrapper is generated. This also affects the way
-	  HfstTransducer::read_lexc_ptr is implemented for FOMA_TYPE:
-	  native HFST lexc compiler is used if lexc wrapper is not
-	  generated.
-
-2015-04-08 13:09  eaxelson
-
-	* swig/libhfst.i, swig/setup.py: Updated hfst version number in the
-	  python setup file. Fixed the argument type of
-	  LexcCompiler::setVerbosity from bool to unsigned int.
-
-2015-04-08 13:06  eaxelson
-
-	* libhfst/src/HfstInputStream.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc:
-	  Changed again some 'not' operators into \!.
-
-2015-04-08 13:01  eaxelson
-
-	* libhfst/src/implementations/optimized-lookup/convert.cc: Added a
-	  missing // in the beginning of a comment line noticed during
-	  windows compilation.
-
-2015-04-08 13:00  eaxelson
-
-	* scripts/copy-for-windows.sh,
-	  scripts/generate-python-bindings.bat, scripts/make-libhfst.bat:
-	  Edited windows batch scripts and added a new one for creating
-	  python bindings.
-
-2015-04-08 09:48  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc: Changed declaration 'class
-	  yy_buffer_state' into 'struct yy_buffer_state'.
-
-2015-04-07 14:23  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Fixed declared return type
-	  from 'void' into 'int' for functions hlexclex_destroy and
-	  pmatcherror.
-
-2015-04-07 13:24  mpsilfve
-
-	* tools/src/hfst-pair-test.cc: Xerox twolc test support in
-	  hfst-pair-test
-
-2015-04-02 14:37  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.h:
-	  Tentatively fixed missing paths problem in compose-intersect
-
-2015-04-01 12:21  eaxelson
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.h:
-	  Moved definition of member 'static const HfstState START' of
-	  classes ComposeIntersectFst and ComposeIntersectRulePair from
-	  header to cc file.
-
-2015-04-01 11:39  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Add [].t() syntax for
-	  delimiting tagged (and context-checked!) regions
-
-2015-03-31 14:47  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-implementations.bat,
-	  scripts/make-libhfst.bat: Added new scripts for testing native
-	  windows compilation.
-
-2015-03-31 14:46  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HfstEpsilonHandler.cc,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc: Added missing
-	  return values for some functions. Replaced ciso646 keywords for
-	  logical operators with standard ones.
-
-2015-03-26 22:14  eaxelson
-
-	* scripts/make-implementations.bat, scripts/make-parsers.bat: Added
-	  make scripts for windows.
-
-2015-03-26 22:13  eaxelson
-
-	* scripts/copy-for-windows.sh: Updated script.
-
-2015-03-26 21:36  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  tools/src/HfstStrings2FstTokenizer.cc,
-	  tools/src/HfstStrings2FstTokenizer.h, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-pair-test.cc, tools/src/hfst-strings2fst.cc:
-	  Removed unnecessary HfstUtf8.h and HfstStrings2FstTokenizer.h
-	  inclusions from libhfst/src/ files. Also moved
-	  HfstStrings2FstTokenizer into hfst namespace.
-
-2015-03-26 20:44  eaxelson
-
-	* back-ends/foma/fomalib.h, back-ends/foma/fomalibconf.h,
-	  libhfst/src/FormatSpecifiers.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.h: Now handling
-	  all stdbool definitions in foma headers.
-
-2015-03-26 15:05  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Now
-	  HAVE_CONFIG_H is checked before including config.h. Removed
-	  inclusion of zlib.h that had no effect.
-
-2015-03-26 15:02  eaxelson
-
-	* back-ends/foma/Makefile.am, back-ends/foma/iface.c,
-	  back-ends/foma/io.c, back-ends/foma/lex.lexc.c,
-	  back-ends/foma/lex.yy.c: Changed ifdef WINDOWS into _MSC_VER. Now
-	  zlib.h is included only when requested with -DZLIB.
-
-2015-03-26 12:20  eaxelson
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Using
-	  dynamic arrays instead of static ones to keep cl.exe happy. Also
-	  added definition for 'ssize_t' on windows.
-
-2015-03-26 12:18  eaxelson
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc:
-	  Replaced 'and' with '&&'.
-
-2015-03-26 12:17  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc: Replaced 'and'
-	  with '&&'. Also made a variable defining the size of an array
-	  const.
-
-2015-03-25 13:34  eaxelson
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Replaced ciso646 aliases and,or,not with &&,||,\!. Also changed
-	  sizeof(variable) into sizeof(variable_type) in ol transducer
-	  header because cl.exe complained about that for some reason.
-
-2015-03-25 12:47  eaxelson
-
-	* libhfst/src/parsers/xre_utils.cc: Fixed a bug where operator '=='
-	  was used instead of '=' when setting the value of last element in
-	  a char array.
-
-2015-03-23 14:58  eaxelson
-
-	* scripts/copy-for-windows.sh: Added missing files.
-
-2015-03-20 15:11  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/inttypes.h,
-	  scripts/make-foma.bat, scripts/make-openfstwin.bat,
-	  scripts/stdint.h: Added scripts and headers for windows
-	  compilation.
-
-2015-03-20 15:10  eaxelson
-
-	* libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstLookupFlagDiacritics.cc,
-	  libhfst/src/HfstSymbolDefs.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Changed
-	  operators {not,and,or} into {\!,&&,||} because cl.exe complains
-	  about them on windows.
-
-2015-03-20 14:20  eaxelson
-
-	* scripts/copy-for-windows.sh: Added a script for windows
-	  compilation
-
-2015-03-20 08:44  eaxelson
-
-	* back-ends/foma/apply.c, back-ends/foma/constructions.c,
-	  back-ends/foma/determinize.c, back-ends/foma/fomalib.h,
-	  back-ends/foma/fomalibconf.h, back-ends/foma/lex.cmatrix.c,
-	  back-ends/foma/lex.yy.c, back-ends/foma/mem.c,
-	  back-ends/foma/minimize.c, back-ends/foma/structures.c,
-	  back-ends/openfstwin/src/include/fst/compat.h,
-	  back-ends/openfstwin/src/include/fst/properties.h: Added support
-	  for compiling openfst and foma back-ends with cl.exe on windows.
-
-2015-03-15 17:45  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll: Include zero in signed and
-	  unsigned integers
-
-2015-03-15 16:16  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc:
-	  Correction to handling trailing nonmatching material in
-	  locate_mode
-
-2015-03-11 14:22  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc: Forgot
-	  to commit these files too...
-
-2015-03-11 14:21  eaxelson
-
-	* tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-head.cc,
-	  tools/src/hfst-info.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-split.cc, tools/src/hfst-subtract.cc,
-	  tools/src/hfst-tail.cc: Added xfsm support for some command line
-	  tools.
-
-2015-03-11 10:28  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Now HfstTransducer
-	  functions throw a FunctionNotImplementedExeption if xfsm
-	  implementation is not available.
-
-2015-03-10 15:47  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Added more xfsm
-	  implementations.
-
-2015-03-10 14:54  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Added more
-	  implementations for XFSM_TYPE for HfstTransducer functions.
-
-2015-03-09 12:41  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Add ignoring
-
-2015-03-09 11:20  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Correct parsing order of
-	  PARALLEL_RULES
-
-2015-03-04 15:18  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h,
-	  tools/src/hfst-compose.cc: Added support for composition for xfsm
-	  transducers.
-
-2015-03-03 14:48  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h,
-	  tools/src/hfst-minimize.cc: Added a variable to control if (xfsm)
-	  transducers that are already minimal are still minimized for
-	  profiling purposes.
-
-2015-03-02 15:13  eaxelson
-
-	* libhfst/src/HfstApply.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-txt2fst.cc: Fixed some bugs in escaping special
-	  symbols in prolog format. Added support for xfsm format in some
-	  command line tools.
-
-2015-03-02 11:29  eaxelson
-
-	* tools/src/hfst-fst2txt.cc: Fixed an error noticed when
-	  -Werror=format-security was enabled during compilation.
-
-2015-02-27 15:00  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-fst2fst.cc,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-txt2fst.cc: Now xfsm
-	  conversion works in hfst-fst2fst and between prolog and binary
-	  format in hfst-fst2txt and hfst-txt2fst.
-
-2015-02-27 09:55  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Added XFSM initializer class.
-
-2015-02-27 09:52  eaxelson
-
-	* libhfst/src/HfstApply.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Added function
-	  minimize to xfsm interface
-
-2015-02-26 10:56  eaxelson
-
-	* tools/src/hfst-commandline.cc,
-	  tools/src/hfst-compose-intersect.cc, tools/src/hfst-fst2fst.cc:
-	  Now hfst-compose-intersect does NOT harmonize transducers by
-	  default, as harmonizing produces unexpected results with
-	  hyperminimized transducers. Option --harmonize turns on
-	  harmonization. This is a partial fix to bug #288.
-
-2015-02-25 11:22  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am,
-	  tools/src/hfst-commandline.cc, tools/src/parsers/XfstCompiler.cc:
-	  Added a cross-build Windows patch given in bug report #289.
-
-2015-02-24 21:29  eaxelson
-
-	* libhfst/src/HfstOutputStream.cc: Added a missing #if HAVE_XFSM
-	  statement.
-
-2015-02-24 18:43  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc: Fixed some bugs in
-	  xfsm stream handling.
-
-2015-02-24 17:15  eaxelson
-
-	* libhfst/src/HfstOutputStream.cc, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Added more
-	  functions for writing and reading xfsm transducers.
-
-2015-02-23 14:33  eaxelson
-
-	* libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstOutputStream.h,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Tentatively added
-	  input and output stream functions for xfsm transducer.
-
-2015-02-20 15:12  eaxelson
-
-	* scripts/generate-static-binaries.sh, scripts/hfst-twolc-bin,
-	  scripts/package-static-binaries.sh: Modified and added scripts
-	  for creating static binaries.
-
-2015-02-18 17:13  mpsilfve
-
-	* tools/src/hfst-compose-intersect.cc: Fast compose intersect
-	  available using option -f
-
-2015-02-18 14:52  eaxelson
-
-	* libhfst/src/implementations/ConvertXfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Reorganized xfsm
-	  interface.
-
-2015-02-18 14:14  mpsilfve
-
-	* tools/src/hfst-compose-intersect.cc: Hopefully speed up
-	  compose_intersect by doing l .o. (l.2 .o. r) instead of l .o. r
-	  directly.
-
-2015-02-16 12:47  eaxelson
-
-	* scripts/generate-static-binaries.sh: Updated script.
-
-2015-02-16 12:45  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Disable hfst-xfst's
-	  auto-complet with rl_insert instead of rl_abort, which is not
-	  found on Mac.
-
-2015-02-16 11:54  eaxelson
-
-	* scripts/generate-static-binaries.sh: Added a script to generate
-	  static binaries.
-
-2015-02-16 08:06  eaxelson
-
-	* libhfst/src/implementations/ConvertXfsmTransducer.cc: Now xfsm
-	  conversion swaps the state numbers to make a more readable state
-	  numbering.
-
-2015-02-13 14:08  eaxelson
-
-	* libhfst/src/implementations/ConvertXfsmTransducer.cc: Now special
-	  symbols should also work in xfsm conversion.
-
-2015-02-13 13:01  eaxelson
-
-	* libhfst/src/implementations/ConvertXfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Xfsm conversion
-	  functions almost work, escaped symbols still need some attention.
-
-2015-02-12 12:05  eaxelson
-
-	* libhfst/src/implementations/ConvertXfsmTransducer.cc: Conversion
-	  functions between xfsm and HfstBasicTransducer formats
-	  implemented, alphabets and special symbols still need some work.
-
-2015-02-11 08:36  hardwick
-
-	* tools/src/hfst-optimized-lookup.h: Autoindent entire file after
-	  removing tab characters to appease commit script
-
-2015-02-11 08:26  hardwick
-
-	* tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-optimized-lookup.h: Handle single-char ascii
-	  symbols shadowing multichar ones
-
-2015-02-10 14:14  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/ConvertXfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Modified hfst to
-	  support xfsm format.
-
-2015-02-10 09:15  hardwick
-
-	* tools/src/hfst-proc2.cc: Fix cg quote interpolation
-
-2015-02-10 08:57  hardwick
-
-	* tools/src/hfst-proc2.cc: Clarify help string
-
-2015-02-10 08:55  hardwick
-
-	* tools/src/hfst-proc2.cc: Add segmenting and cg mode; improve
-	  handling of special cases and weights
-
-2015-02-09 13:43  eaxelson
-
-	* libhfst/src/HfstDataTypes.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertXfsmTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/XfsmTransducer.h: Tentatively
-	  modified hfst to handle xfsm implementation type.
-
-2015-02-09 13:02  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  tools/src/hfst-pmatch.cc, tools/src/hfst-proc2.cc: Preserve
-	  nonmatching sequances in locate_mode and parse the appropriately
-	  downstream
-
-2015-02-06 16:51  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/ConvertXfsmTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Tentatively added a
-	  skeleton implementation for xfsm library that can be included
-	  with configure option --with-xfsm (default is no). No linking to
-	  the library is performed, this is just a test version.
-
-2015-02-06 16:34  eaxelson
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.h,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc: Added a
-	  preprocessing directive that defines hfst-twols's Alphabet as
-	  TwolCAlphabet if HAVE_XFSM is on. This will prevent variable
-	  collisions.
-
-2015-02-06 13:15  eaxelson
-
-	* tools/src/hfst-txt2fst.cc: Changed hfst-txt2fst's read_prolog
-	  into read_prolog_format to avoid conflict with xfsm library
-	  function.
-
-2015-02-05 16:07  eaxelson
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  Named tokens 'UPPER' and 'LOWER' in pmatch and xre parsers into
-	  'XRE_UPPER', 'XRE_LOWER', 'PMATCH_UPPER' and 'PMATCH_LOWER'
-	  because the xfsm library (that might be added to hfst at some
-	  point) has an enumerator with the same name in C namespace.
-
-2015-02-05 15:58  eaxelson
-
-	* back-ends/foma/fomalib.h, back-ends/foma/iface.c,
-	  back-ends/foma/io.c: Named foma's write_prolog into
-	  foma_write_prolog because the xfsm library (that might be added
-	  to hfst at some point) has a function with the same name in C
-	  namespace.
-
-2015-02-05 15:50  eaxelson
-
-	* tools/src/parsers/xfst-parser.yy: Took away unused token 'LOWER'
-	  from xfst parser.
-
-2015-02-03 17:37  eaxelson
-
-	* tools/src/hfst-compose-intersect.cc: Added an option
-	  --do-not-harmonize to hfst-compose-intersect.
-
-2015-02-03 16:51  eaxelson
-
-	* tools/src/hfst-compose-intersect.cc: Now hfst-compose-intersect
-	  harmonizes the rule transducers with the lexicon.
-
-2015-02-03 15:42  eaxelson
-
-	* tools/src/hfst-fst2strings.cc: Added option --beam to
-	  hfst-strings2fst.
-
-2015-02-03 09:39  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  tools/src/hfst-pmatch.cc: More accurately name set_locate_mode as
-	  set_extract_tags mode
-	  (locate vs. match is determined by function call)
-
-2015-02-02 14:29  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Fix bug in compiling
-	  UNKNOWNs on the left side of pair separators
-
-2015-02-02 13:58  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Fix bug
-	  affecting locate-mode where ?-matches were being seen as
-	  IDENTITIES in input.
-
-2015-02-02 10:34  eaxelson
-
-	* tools/src/hfst-lookup.cc: Added option --beam also to
-	  hfst-lookup. It is mostly untested for this tool.
-
-2015-01-30 13:35  eaxelson
-
-	* tools/src/hfst-optimized-lookup.cc: Tentatively added option
-	  --beam to hfst-optimized-lookup.
-
-2015-01-30 11:30  eaxelson
-
-	* tools/src/hfst-compose-intersect.cc: Fixed a typo in warning
-	  message about missing symbols in input tapes of rule transducers
-	  ('output' changed to 'input').
-
-2015-01-28 10:19  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: In locate
-	  mode, zero-length hits could cause infinite loops. Commit fixes
-	  it.
-
-2015-01-23 15:31  eaxelson
-
-	* tools/src/hfst-lookup.cc: Now hfst-lookup checks it it is
-	  possible for an input to go through a transducer before calling
-	  is_infinitely_ambiguous. Should fix bug #278.
-
-2015-01-22 11:40  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: Now reserved symbols are detected
-	  in composition if xerox-composition is ON. This will prevent
-	  symbol collisions by throwing an error message, giving at least a
-	  temporary solution to issues with reserved symbols.
-
-2015-01-22 09:52  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: Fixed substitution operator in
-	  regexp, now flag diacritics are allowed both as substituting and
-	  subtituted symbols. Should fix bug #284.
-
-2015-01-21 21:31  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-parser.yy: Added better support for
-	  special symbols in hfst-xfst's substitute command.
-
-2015-01-21 15:25  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/substitute_symbol_7.att,
-	  tools/src/parsers/test/substitute_symbol_7.xfst,
-	  tools/src/parsers/test/substitute_symbol_8.att,
-	  tools/src/parsers/test/substitute_symbol_8.xfst,
-	  tools/src/parsers/test/test.sh: Added two tests for hfst-xfst's
-	  substitute command. They are skipped until substitute can also
-	  handle them.
-
-2015-01-21 12:48  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/parsers/LexcCompiler.cc: Fixed a bug in composition
-	  when xerox-composition is ON. Flag diacritics @SOMEFLAG@ were
-	  earlier transformed into $ and back into @SOMEFLAG@, but symbols
-	  of form $...$ are already reserved for lexc. Now diacritics are
-	  escaped as %SOMEFLAG% during composition. This creates a new set
-	  of reserved symbols which maybe needs more consideration
-	  though... Also added debug prints for LexcCompiler.
-
-2015-01-16 14:13  eaxelson
-
-	* configure.ac: Removed xml checks from configure, since they cause
-	  unlinked xml references in hfst-edit-metadata on some platforms.
-
-2015-01-16 13:13  eaxelson
-
-	* libhfst/src/HfstFlagDiacritics.cc,
-	  tools/src/parsers/XfstCompiler.cc: Fixed flag diacritic
-	  recognition, now also flags of form e.g. '@D.FOO@' are accepted
-	  and an empty string is returned as their value. Also added full
-	  support for flag handling in hfst-xfst.
-
-2015-01-15 15:55  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Added some conversion functions
-	  between StringPairVectors and StringVectors. Added checks for
-	  flag diacritics in hfst-xfst non-optimized lookup.
-
-2015-01-08 14:33  eaxelson
-
-	* tools/src/hfst-summarize.cc: A small fix to hfst-summarize option
-	  handling.
-
-2014-12-19 15:34  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.8.2.
-
-2014-12-19 14:41  eaxelson
-
-	* tools/src/hfst-summarize.cc: Added option
-	  --print-symbol-pair-statistics(=N) to hfst-summarize.
-
-2014-12-17 13:28  eaxelson
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_lex.ll,
-	  tools/src/parsers/XfstCompiler.cc: Small fixes to
-	  compile-replace. Also restarting the char counter every time a
-	  new xre parsing is started. Removed the xml2 dependecy in
-	  configure.
-
-2014-12-12 10:49  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Omit
-	  unnecessary step in stringification
-
-2014-12-12 10:22  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Another
-	  slight speed improvement
-
-2014-12-12 09:56  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Some
-	  double free insurance related to previous commit
-
-2014-12-12 09:53  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Some more
-	  pmatch runtime speedup (around 5-10% in most cases)
-
-2014-12-11 21:54  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc: Remove
-	  commented-out lines (same ones I was intending in the previous
-	  commit)
-
-2014-12-11 21:08  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc: Remove
-	  extraenous index table fitting test
-
-2014-12-11 20:33  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Further
-	  improvements to conversion to optimized lookup format
-	  
-	  This speeds up conversion a bit more, and also improves packing
-	  in one case by around 25% (implying that this commit *does*
-	  change the
-	  output of the conversion, but in a functionally equivalent way).
-	  
-	  The space gain was mainly accomplished by changing what happens
-	  when we fail
-	  to find a suitable index table location several times a row
-	  starting in the
-	  same place. We used to jump up to the previous successful
-	  location and its
-	  indices, now we keep trying to fill in the gaps between those
-	  first.
-	  
-	  This commit also removes the state-relabeling facility, because
-	  it didn't seem
-	  to be doing anything (perhaps something in HfstBasicTransducer
-	  has changed;
-	  it seems state numbers can no longer be non-contiguous). So we
-	  now assume
-	  states are contiguous and iterated in order. If this assumption
-	  is broken,
-	  this needs to be changes. But as I said earlier, looks like
-	  relabeling wasn't
-	  doing anything now anyway.
-
-2014-12-11 13:25  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Large
-	  speedup in conversion to optimized-lookup format
-	  
-	  In some cases this speeds up conversion by up to 80%. This
-	  involved
-	  a) making the code a bit more convoluted by using multiple data
-	  structures
-	  where there used to be just one
-	  b) omitting some space-oriented optimizations that appear to be
-	  usually
-	  very minor and occasionally even harmful
-	  
-	  While I've tested this with the major transducers I've found,
-	  it's not
-	  unthinkable that refactoring such hairy code as this has
-	  introduced bugs.
-	  No new functionality is introduced so it's ok to roll this back
-	  if it causes
-	  problems.
-
-2014-12-05 16:03  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/compile_replace_1.output,
-	  tools/src/parsers/test/compile_replace_1.xfst,
-	  tools/src/parsers/test/compile_replace_2.output,
-	  tools/src/parsers/test/compile_replace_2.xfst,
-	  tools/src/parsers/test/compile_replace_3.output,
-	  tools/src/parsers/test/compile_replace_3.xfst,
-	  tools/src/parsers/test/test.sh: Added test cases for
-	  compile-replace.
-
-2014-12-05 14:49  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/merge.att,
-	  tools/src/parsers/test/merge.xfst,
-	  tools/src/parsers/test/merge_weighted.att,
-	  tools/src/parsers/test/merge_weighted.xfst,
-	  tools/src/parsers/test/test.sh: Added test cases for merge
-	  operation.
-
-2014-12-05 12:22  eaxelson
-
-	* tools/src/hfst-fst2strings.cc: Fixed an error in hfst-fst2strings
-	  --print-separator where two consecutive lines of -- were printed
-	  between non-empty transducers in some cases.
-
-2014-12-04 13:04  eaxelson
-
-	* libhfst/src/parsers/xre_utils.cc,
-	  tools/src/parsers/XfstCompiler.cc: Now minimizing the merging
-	  automaton before merge operation so that epsilons do not cut a
-	  succesfull merge path. Also allowing epsilon-to-regexp-marker
-	  transitions in the merge filter.
-
-2014-12-03 15:35  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Improvements to
-	  compile-replace function, now it should work for input and output
-	  sides of a transducer.
-
-2014-12-03 09:36  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Revert bungled change to
-	  precedence order
-
-2014-12-02 20:34  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_lex.ll, tools/src/parsers/hfst-xfst.cc:
-	  Now xre compiler of function merge does not increment the char
-	  counter, making it possible to have many merge operators inside
-	  one regex.
-
-2014-12-02 16:07  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_utils.cc: Added a constructor
-	  XreCompiler(XreConstructorArguments & args) to facilitate passing
-	  xre variables to merge function which needs them in its internal
-	  xre compiler.
-
-2014-12-02 14:06  eaxelson
-
-	* libhfst/src/parsers/xre_utils.cc: Now using internal starptr
-	  variables in functions hfst::xre::compile and
-	  hfst::xre::compile_first instead of global hfst::xre::startptr.
-	  This should fix the strange memory errors which occurred when
-	  calling merge operation inside a regular expression.
-
-2014-12-02 12:33  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Now merge
-	  operation filters out non-optimal paths.
-
-2014-11-27 14:49  eaxelson
-
-	* libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTokenizer.h:
-	  Tentatively added a function 'tokenize_and_align_flag_diacritics'
-	  to HfstTokenizer.
-
-2014-11-26 16:50  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Runtime
-	  speed improvements
-	  Prereserve table vectors, eliminate special_symbols map
-
-2014-11-26 13:00  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-proc2.cc: Profiling support with Counter() and
-	  --profile & a bunch of smaller changes
-	  
-	  Counter(arg) in a ruleset inserts a profiling point, hfst-pmatch
-	  --profile
-	  prints profiling info.
-	  
-	  When --verbose, warn about undefined symbols being interpreted as
-	  labels.
-	  When --flatten, flatten Lst() definitions too.
-
-2014-11-25 14:14  eaxelson
-
-	* tools/src/hfst-compose.cc: Allowing 1-to-n composition of
-	  automata in archives. Fixes bug (or feature request) #277.
-
-2014-11-25 10:54  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-parser.yy,
-	  tools/src/hfst-lexc-compiler.cc: Now passing verbosity to
-	  LexcCompiler as an unsigned integer via setVerbosity(uint). Also
-	  made small fixes to warning prints in lexc compiler.
-
-2014-11-24 13:51  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/warn.one-sided-flags.lexc,
-	  test/tools/warn.one-sided-flags.lexc.flag.result,
-	  test/tools/warn.one-sided-flags.lexc.result: Added tests for
-	  one-sided flag diacritics for hfst-lexc.
-
-2014-11-24 13:50  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-parser.yy: Now lexc compiler warns about
-	  one-sided flag diacritics in verbose mode.
-
-2014-11-24 13:49  eaxelson
-
-	* libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTokenizer.h: Added
-	  a tokenizing function that warns about symbol pairs, if needed.
-
-2014-11-24 11:07  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/xfail.sublexicon-defined-more-than-once.lexc: Added
-	  test case for previous lexc commit (sublexicon defined more than
-	  once treated as an error).
-
-2014-11-24 10:33  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/lexc-parser.yy: Now multiple definitions of
-	  the same lexicon in lexc are treated as an error unless
-	  LexcCompiler::setAllowMultipleLexiconDefinitions(true) is called
-	  first.
-
-2014-11-24 09:04  eaxelson
-
-	* libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-parser.yy: Now lexc parser updates the
-	  error status hlexcnerrs when hlexcerror is called. In case of
-	  warnings, the error status is nor updated.
-
-2014-11-20 12:15  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Speed
-	  up list arc processing by replacing some maps and sets with
-	  vectors
-
-2014-11-19 09:17  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Changed list to set in merge
-	  operation. Removed commented code.
-
-2014-11-18 17:00  eaxelson
-
-	* tools/src/hfst-lexc-compiler.cc: Added option --encode-weights to
-	  hfst-lexc.
-
-2014-11-17 13:55  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Reinstate undefined symbols
-	  as valid tokens as per documentation
-
-2014-11-17 13:53  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: Add defined lists
-
-2014-11-17 13:14  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Add Sigma()
-
-2014-11-17 11:48  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Added Lst() and support for
-	  list arcs in runtime
-
-2014-11-17 11:21  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Sync precedence rules
-
-2014-11-17 11:17  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Switch order of precedence
-	  of concatenation and other binary operations
-
-2014-11-17 07:47  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Added Lit()
-
-2014-11-13 07:21  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Modified the
-	  function merge, it now takes as an argument a map of list
-	  symbols.
-
-2014-11-13 07:16  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/one_transition_regex.att,
-	  tools/src/parsers/test/one_transition_regex.xfst,
-	  tools/src/parsers/test/test.sh: Fixed a bug in xre parser, now
-	  definitions and unknowns can be used together in expressions such
-	  as 'regex [def:?] ;'.
-
-2014-11-11 14:06  eaxelson
-
-	* libhfst/src/HfstTokenizer.cc,
-	  tools/src/HfstStrings2FstTokenizer.cc: Now the epsilon symbol is
-	  not added as a multichar symbol to hfst-lookup tokenizer if it is
-	  the empty string. Should fix bug #275.
-
-2014-11-10 21:26  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_utils.cc: Allow \U00NNNNNN syntax for
-	  code points in utf-8 but above U+FFFF
-
-2014-11-10 20:55  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_utils.cc: Allow \UNNNN as well as
-	  \uNNNN
-
-2014-11-10 20:41  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_utils.cc: Allow \uNNNN in range
-	  notation and make some fixes to utf-8 handling
-
-2014-11-10 18:58  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Added utf-8 character range
-	  expressions
-
-2014-11-10 14:57  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  An untested implementation of the merge operation added to
-	  hfst-xfst.
-
-2014-11-10 13:23  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Syntax-level completion of
-	  functions (arg placement still not completely free)
-
-2014-11-04 16:35  eaxelson
-
-	* check_installation/copy-tool-tests.sh: Fixed a small bug in hfst
-	  tool tester.
-
-2014-11-04 10:23  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am, swig/setup.py: Ready for release 3.8.1.
-
-2014-10-31 16:44  eaxelson
-
-	* tools/src/hfst-guess.cc: Fixed std::cout into &std::cout in
-	  stream pointer comparison.
-
-2014-10-31 14:36  eaxelson
-
-	* back-ends/openfst/src/include/fst/accumulator.h,
-	  back-ends/openfst/src/include/fst/arc-map.h,
-	  back-ends/openfst/src/include/fst/determinize.h,
-	  back-ends/openfst/src/include/fst/encode.h,
-	  back-ends/openfst/src/include/fst/epsnormalize.h,
-	  back-ends/openfst/src/include/fst/equivalent.h,
-	  back-ends/openfst/src/include/fst/factor-weight.h,
-	  back-ends/openfst/src/include/fst/label-reachable.h,
-	  back-ends/openfst/src/include/fst/relabel.h,
-	  back-ends/openfst/src/include/fst/replace-util.h,
-	  back-ends/openfst/src/include/fst/replace.h,
-	  back-ends/openfst/src/include/fst/rmepsilon.h,
-	  back-ends/openfst/src/include/fst/rmfinalepsilon.h,
-	  back-ends/openfst/src/include/fst/sparse-tuple-weight.h,
-	  back-ends/openfst/src/include/fst/state-map.h,
-	  back-ends/openfst/src/include/fst/symbol-table-ops.h,
-	  back-ends/openfst/src/include/fst/synchronize.h,
-	  back-ends/openfst/src/include/fst/test-properties.h,
-	  back-ends/openfst/src/include/fst/util.h, configure.ac,
-	  tools/src/hfst-tagger/src/use_model_src/DataTypes.h,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.h: Now
-	  using definitions USE_TR1_UNORDERED_(MAP|SET) when defining what
-	  unordered maps and sets to use.
-
-2014-10-30 15:29  eaxelson
-
-	* configure.ac: Fixed a typo tr2 -> tr1.
-
-2014-10-29 13:50  eaxelson
-
-	* configure.ac, tools/src/HfstAlphabet.h,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.h:
-	  Unordered maps and sets are used from std namespace if
-	  -std=gnu++11 is requested.
-
-2014-10-28 11:40  eaxelson
-
-	* swig/setup.py: Forgot to update version number in swig bindings.
-
-2014-10-27 16:40  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Various improvements and
-	  additions to function syntax,
-	  particularly empty args and string-args
-
-2014-10-27 14:48  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Added functions for merge
-	  operation in HfstTransitionGraph.
-
-2014-10-24 11:03  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Modified weight handling in HfstTransitionGraph::intersect.
-
-2014-10-24 08:38  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: When
-	  the alphabet is constructed from a symbol table, set identity to
-	  NO_SYM
-	  this was supposed to always happen anyway but didn't matter until
-	  recently
-
-2014-10-22 13:16  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Modified intersection algorithms in HfstTransitionGraph.
-
-2014-10-22 10:21  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Added
-	  functions to be used in xerox's merge operation.
-
-2014-10-22 10:20  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-parser.yy: Small fixes to list definitions
-	  in hfst-xfst.
-
-2014-10-17 15:59  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Added an implementation for
-	  compile-replace in hfst-xfst, it still needs lot of testing.
-
-2014-10-16 14:36  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Yet some more functions added
-	  to compile-replace.
-
-2014-10-16 11:48  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Added more functions for
-	  compile-replace.
-
-2014-10-15 14:23  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Tentatively
-	  added functions in HfstTransitionGraph to be used in
-	  compile-replace.
-
-2014-10-15 13:26  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Added function
-	  is_well_formed_for_compile_replace to be used in compile-replace
-	  command.
-
-2014-10-15 11:30  eaxelson
-
-	* test/libhfst/test_transducer_functions.cc: Forgot to comment out
-	  debugging prints in tests.
-
-2014-10-15 11:28  eaxelson
-
-	* back-ends/openfst/src/include/fst/interval-set.h,
-	  test/libhfst/test_transducer_functions.cc: Added brackets around
-	  member calls 'Interval.end' and 'Interval.begin' to avoid them
-	  getting confused with std::end() and std::begin() templates in
-	  C++11.
-
-2014-10-15 10:21  eaxelson
-
-	* back-ends/openfst/src/include/fst/interval-set.h: Rolled back
-	  earlier revision in interval-set.h
-
-2014-10-15 09:56  eaxelson
-
-	* back-ends/openfst/src/include/fst/interval-set.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h: Made small
-	  modifications for better c++11/c++0x support.
-
-2014-10-15 09:32  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Fix
-	  bug where identity wasn't being set to NO_SYMBOL when absent from
-	  alphabet
-
-2014-10-15 08:46  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Refuse
-	  to enter flag loops more than once
-	  fixes bug #250 bug - arguably this could be applied to epsilon
-	  loops too,
-	  pending discussion
-
-2014-10-15 08:09  eaxelson
-
-	* man/Makefile.am: Fixed a typo in Makefile.
-
-2014-10-14 15:01  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Now hfst-xfst gives a warning
-	  (or exits) if a binary command tries to access a stack with less
-	  than 2 transducers.
-
-2014-10-14 14:51  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Now hfst-xfst exits if a
-	  command tries to access an empty stack if quit-on-fail is ON and
-	  hfst-xfst is not in interactive mode.
-
-2014-10-14 13:44  mpsilfve
-
-	* scripts/hfst-fst2tesseract.xfst: Comment explaining usage of
-	  hfst-fst2tesseract.xfst.
-
-2014-10-14 13:40  mpsilfve
-
-	* scripts/hfst-fst2tesseract.xfst: Added script for converting
-	  morphological analyzers to Tesseract word models.
-
-2014-10-14 12:27  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Improvements to loop finding
-
-2014-10-14 12:08  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Further corrections to loop detection
-	  slowdown back to ~10x but may be improved from here
-
-2014-10-14 11:51  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Fix
-	  some cases of overdetecting infinite ambiguity, there's still
-	  some left
-
-2014-10-14 10:51  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc:
-	  Forgot to keep adding the repeated states in the loop detection
-	  phase
-
-2014-10-13 18:15  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Only
-	  try to catch infinite ambiguity at epsilon arcs
-	  This is the big speed win and presumably correct.
-
-2014-10-13 17:22  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc:
-	  This order of comparison is a bit faster since sizes never differ
-
-2014-10-13 16:34  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Speed
-	  up is_lookup_infinitely_ambiguous() somewhat
-
-2014-10-11 04:10  mie
-
-	* tools/src/hfst-optimized-lookup.cc: Try to avoid using negative
-	  indexes for arrays
-
-2014-10-11 03:59  mie
-
-	* test/tools/Makefile.am,
-	  test/tools/optimized-lookup-functionality.sh: Optimised lookup
-	  tests
-
-2014-10-09 17:22  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Runtime handling of identity and unknown
-
-2014-10-09 12:30  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.h: Forgot to remove one thing in
-	  the last commit
-
-2014-10-09 12:22  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: Take out our own
-	  harmonization hacks now that they're unneeded
-
-2014-10-08 12:45  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Don't use delimiters when
-	  they're not necessary,
-	  also don't insert everything to RTNs anymore and provide the
-	  is_special()
-	  function the previous commit required
-
-2014-10-08 12:29  hardwick
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc: Treat special
-	  pmatch symbols like flag diacritics for harmonization,
-	  also after harmonization add all symbols, including flags, to the
-	  alphabets
-
-2014-10-08 11:51  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Fix bug where delimiters
-	  were shadowing the named transducers' names
-	  also remove extraenous parsing path
-
-2014-10-06 21:33  janiemi
-
-	* test/tools/pmatch-tester.sh, test/tools/pmatch-tests.sh: Updated
-	  pmatch functionality tests.
-	  
-	  Current pmatch syntax: string literals in {...}, symbols in
-	  double quotes.
-	  Added tests: Ins maximizing globally; Difference and character
-	  sets in
-	  named expressions; Named expressions in OptCap, ToUpper; Named
-	  expressions
-	  in replace; Long input lines; Ins should not throw
-	  std::out_of_range;
-	  Disjunction of two Ins expressions.
-	  Added options: --include-tests, --exclude-tests,
-	  --no-number-tests,
-	  --truncate-lines, --truncate-log-lines. Minor new features in
-	  test runner.
-
-2014-10-06 17:27  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll: Add string literal syntax for
-	  standalone %-escaped chars
-	  (they used to be considered symbols which now have to be
-	  defined or cause an error)
-
-2014-10-06 16:44  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Use minimization guards to
-	  keep multiple negative contexts separate in disjunctions
-
-2014-10-06 15:36  eaxelson
-
-	* libhfst/src/HfstInputStream.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/XreCompiler.h, swig/doc/libhfst.py,
-	  swig/hfstBot.py, swig/test/test_examples.py: Fixed some more
-	  spelling errors noticed by lintian.
-
-2014-10-06 14:45  eaxelson
-
-	* tools/src/hfst-lexc-wrapper.cc,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.cc: Fixed
-	  spelling errors found by lintian.
-
-2014-10-06 14:33  eaxelson
-
-	* man/hfst-train-tagger.1: Added again hfst-train-tagger man page
-	  which is no more a symlink.
-
-2014-10-06 14:31  eaxelson
-
-	* man/Makefile.am, man/hfst-build-tagger.1,
-	  man/hfst-foma-wrapper.1, man/hfst-open-input-file-for-tagger.1,
-	  man/hfst-reweight-tagger.1, man/hfst-train-tagger.1,
-	  man/hfst-twolc-loc.1, man/hfst-twolc-system.1, man/hfst-twolc.1,
-	  man/hfst_tagger_compute_data_statistics.py.1, man/htwolcpre1.1,
-	  man/htwolcpre2.1, man/htwolcpre3.1: Added missing man pages.
-
-2014-10-06 14:00  eaxelson
-
-	* tools/src/hfst-tagger/src/hfst-reweight-tagger.cc: Now
-	  hfst-reweight-tagger --help returns EXIT_SUCCESS before trying to
-	  access uninitialized values.
-
-2014-10-06 13:24  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Warn about shadowing
-	  definitions
-
-2014-10-06 13:05  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Alternate syntaxes regex for
-	  Define TOP and .#. for #
-
-2014-10-06 12:47  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Revamp LABEL parsing and
-	  introduce curly literal pairs
-
-2014-10-06 11:08  eaxelson
-
-	* man/Makefile.am, man/hfst-affix-guessify.1,
-	  man/hfst-apertium-proc.1, man/hfst-calculate.1,
-	  man/hfst-compare.1, man/hfst-compose-intersect.1,
-	  man/hfst-compose.1, man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinise.1, man/hfst-determinize.1,
-	  man/hfst-disjunct.1, man/hfst-edit-metadata.1,
-	  man/hfst-expand-equivalences.1, man/hfst-expand.1,
-	  man/hfst-format.1, man/hfst-fst2fst.1, man/hfst-fst2strings.1,
-	  man/hfst-fst2txt.1, man/hfst-grep.1, man/hfst-guess.1,
-	  man/hfst-guessify.1, man/hfst-head.1, man/hfst-info.1,
-	  man/hfst-intersect.1, man/hfst-invert.1, man/hfst-lexc-wrapper.1,
-	  man/hfst-lexc.1, man/hfst-lookup.1, man/hfst-minimise.1,
-	  man/hfst-minimize.1, man/hfst-minus.1, man/hfst-multiply.1,
-	  man/hfst-name.1, man/hfst-open-input-file-for-tagger.1,
-	  man/hfst-optimised-lookup.1, man/hfst-optimized-lookup.1,
-	  man/hfst-pair-test.1, man/hfst-pmatch.1, man/hfst-pmatch2fst.1,
-	  man/hfst-proc2.1, man/hfst-project.1, man/hfst-prune-alphabet.1,
-	  man/hfst-push-weights.1, man/hfst-regexp2fst.1,
-	  man/hfst-remove-epsilons.1, man/hfst-repeat.1,
-	  man/hfst-reverse.1, man/hfst-reweight.1, man/hfst-sfstpl2fst.1,
-	  man/hfst-shuffle.1, man/hfst-split.1, man/hfst-strings2fst.1,
-	  man/hfst-substitute.1, man/hfst-subtract.1, man/hfst-summarise.1,
-	  man/hfst-summarize.1, man/hfst-tag.1, man/hfst-tail.1,
-	  man/hfst-train-tagger-loc.1, man/hfst-train-tagger-system.1,
-	  man/hfst-train-tagger.1, man/hfst-traverse.1, man/hfst-txt2fst.1,
-	  man/hfst-union.1, man/hfst-xfst.1: Updated and added man pages.
-
-2014-10-06 11:06  eaxelson
-
-	* tools/src/hfst-expand-equivalences.cc: Moved option checking
-	  after possible returning from program so that option --help will
-	  not generate error messages.
-
-2014-10-05 11:06  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Require backslash character
-	  to be escaped as \\ in curly literals
-
-2014-10-05 10:53  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Fix bug in unescaping
-	  function
-
-2014-10-03 12:28  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.8.0.
-
-2014-10-03 11:55  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Added variable
-	  'lexc-rename-flags' to hfst-xfst.
-
-2014-10-03 11:48  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Desperately fiddle with the
-	  way the minus operation expands things
-
-2014-10-01 16:29  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Add lambda-like anonymous
-	  definitions for controlling subexpression boundaries
-
-2014-10-01 12:46  eaxelson
-
-	* tools/src/hfst-lexc-compiler.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/parsers/XfstCompiler.cc: Changed the flag handling
-	  behavior of hfst-xfst and hfst-lexc. Now both tools by default
-	  use Xerox's way when composing, i.e. flag diacritics match
-	  unknown and identity symbols. This can be controlled with
-	  variable 'xerox-composition' (the default is ON) in hfst-xfst and
-	  with option '--xerox-composition={ON,OFF}' (the default is also
-	  ON) in hfst-lexc. hfst-regexp2fst also has the option
-	  '--xerox-composition' which by default is OFF, as it was earlier.
-
-2014-10-01 11:28  eaxelson
-
-	* tools/src/hfst-regexp2fst.cc: Fixed a typo in hfst-regexp2fst
-	  option handling.
-
-2014-09-30 15:38  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: Now one-sided flag diacritics are
-	  allowed in composition when flag-is-epsilon is used.
-
-2014-09-30 13:54  eaxelson
-
-	* tools/src/hfst-strings2fst.cc: Added option --log10 for 10-based
-	  logarithmic weights in hfst-strings2fst.
-
-2014-09-30 13:18  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/XfstCompiler.cc: Now an error is thrown if
-	  flags are not twosided in composition when xerox composition is
-	  used.
-
-2014-09-30 13:05  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h: Added exception class
-	  FlagDiacriticsAreNotIdentitesException.
-
-2014-09-29 11:22  hardwick
-
-	* test/tools/Makefile.am, test/tools/pmatch-functionality.sh,
-	  test/tools/pmatch-tester.sh, test/tools/pmatch-tests.sh: Add
-	  pmatch functionality test suite
-
-2014-09-29 10:49  eaxelson
-
-	* tools/src/hfst-regexp2fst.cc: Added option -X flag-is-epsilon to
-	  hfst-regexp2fst.
-
-2014-09-25 10:38  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Fix another symbol-leaking
-	  issue
-
-2014-09-25 10:17  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Allow nested logical
-	  operations on contexts
-
-2014-09-23 07:15  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: We need to avoid symbol
-	  pollution for more than just special symbols
-	  (this doesn't completely resolve pollution issues, just some
-	  urgent ones)
-
-2014-09-23 06:47  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Don't
-	  forget to pop the rtn stack when there's nothing matched
-
-2014-09-23 06:36  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Minimize after adding
-	  delimiters, not before
-
-2014-09-23 05:14  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Revert bracket-bounding
-	  behaviour
-
-2014-09-22 15:47  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Use brackets for extra
-	  delimiters to control tag and context boundaries more
-
-2014-09-22 15:28  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: add_delimiters was happening
-	  in the wrong place since recent syntax changes
-
-2014-09-22 12:57  eaxelson
-
-	* libhfst/src/implementations/HfstOlTransducer.cc: Fixed a too
-	  strict assertion.
-
-2014-09-17 08:05  eaxelson
-
-	* libhfst/src/parsers/pmatch_utils.cc: Added a return value for a
-	  case that should never happen to make scan-build happy.
-
-2014-09-16 15:03  eaxelson
-
-	* libhfst/src/HfstXeroxRules.cc: Reverted back to the buggy
-	  behaviour of function 'getMarkerNumber', since some
-	  HfstXeroxRules tests will fail if it works correctly...
-
-2014-09-16 13:50  eaxelson
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h:
-	  Fixed an error in function 'getMarkerNumber' where istringstream
-	  was not properly initialized and returned random values. Also
-	  added a print method for class Rule.
-
-2014-09-16 13:43  eaxelson
-
-	* test/tools/Makefile.am: Fixed a typo in filename in EXTRA_DIST.
-
-2014-09-15 09:13  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/xerox_composition.output,
-	  tools/src/parsers/test/xerox_composition.xfst: Now alphabets are
-	  copied when encoding and decoding flags in composition. Fixes bug
-	  #267.
-
-2014-09-11 12:31  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Oops,
-	  forgot about restoring scope state afer entry arcs
-
-2014-09-11 12:24  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Add a
-	  scope facility for local context boundaries
-
-2014-09-11 09:18  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/parsers/lexc-utils.cc, tools/src/hfst-compare.cc,
-	  tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-expand-equivalences.cc, tools/src/hfst-guess.cc,
-	  tools/src/hfst-lexc-wrapper.cc, tools/src/hfst-shuffle.cc,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-subtract.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SentenceTagger.cc,
-	  tools/src/parsers/xfst-utils.cc: Fixed most scan-build issues
-	  other than dead store, memory leak and errors from foma back-end.
-
-2014-09-10 13:52  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  tools/src/parsers/XfstCompiler.cc: Added implementation for
-	  twosided flag-diacritics in hfst-xfst.
-
-2014-09-10 12:04  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-parser.yy: Now harmonize-flags and
-	  flag-is-epsilon are by default OFF in hfst-xfst. Also added a
-	  new, mostly untested variable xerox-composition that matches
-	  flags with unknowns and identities in composition (default is
-	  OFF). All flag-is-epsilon functionalitites are moved under
-	  HfstTransducer.
-
-2014-09-09 15:45  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Purge commented-out lines
-
-2014-09-09 15:38  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Major syntactic changes and
-	  additions (AND & OR) to bring in line with
-	  Karttunen's documentation - amazingly doesn't break backwards
-	  compatibility (brobably / mostly)! Function syntax still lags and
-	  is incomplete.
-
-2014-09-09 07:57  eaxelson
-
-	* back-ends/openfst/src/include/fst/encode.h: Added missing return
-	  value to a function in openfst back-end.
-
-2014-09-09 07:32  eaxelson
-
-	* back-ends/openfst/src/include/fst/encode.h,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  tools/src/parsers/XfstCompiler.cc: Reverted back to version 3992.
-
-2014-09-08 11:50  eaxelson
-
-	* libhfst/src/parsers/pmatch_utils.cc: Instead of NULL, return a
-	  new HfstTransducer in a condition that should never occur. This
-	  is for some compilers.
-
-2014-09-08 11:41  eaxelson
-
-	* back-ends/openfst/src/include/fst/encode.h,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  tools/src/parsers/XfstCompiler.cc: Fixed errors reported in bug
-	  #265. Also tentatively added a switch --xfst-harmonization to
-	  hfst-xfst that treats flags as ordinary symbols in composition.
-
-2014-09-08 11:29  hardwick
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Resolved
-	  another rpmlint issue, hopefully the right way
-	  (A HfstTransitionGraph method returning nothing when it seemed to
-	  be meant
-	  to be returning *this)
-
-2014-09-08 11:24  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Resolved some issues and
-	  nonissues revealeled by rpmlint
-
-2014-09-08 09:49  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll: Now xre parser compiles
-	  expressions of type foo:bar^{0,N} correctly.
-
-2014-08-29 12:20  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: A better
-	  way see if we have a better location than before
-
-2014-08-29 11:36  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: It seems to be generally
-	  faster to defer minimization at [] boundaries
-
-2014-08-28 12:05  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Made 'harmonize-flags == ON'
-	  the default for hfst-xfst. Also hfst-xfst's xre parser now
-	  harmonizes flags according to variable 'harmonize-flags'.
-
-2014-08-28 10:06  eaxelson
-
-	* libhfst/src/parsers/xre_utils.cc, tools/src/HfstAlphabet.cc,
-	  tools/src/hfst-guessify.cc, tools/src/parsers/XfstCompiler.cc:
-	  Fixed some issues noticed on c+11 and reported in bug #258: a
-	  space between literal and identifier, missing cstdlib header and
-	  ostringstream conversions.
-
-2014-08-28 09:12  eaxelson
-
-	* tools/src/hfst-fst2strings.cc: hfst-fst2strings now gives an
-	  error message if option --nbest or --random is used with
-	  transducers in optimized lookup format.
-
-2014-08-28 07:11  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h: Apparently
-	  older gcc's libstdc++ require operator< to be const
-
-2014-08-27 16:31  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  tools/src/hfst-pmatch.cc, tools/src/hfst-proc2.cc: Added locate
-	  mode on the library side; support for multimatch, weight
-	  access and various internal changes
-
-2014-08-27 12:05  eaxelson
-
-	* tools/src/hfst-affix-guessify.cc, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-commandline.h, tools/src/hfst-compare.cc,
-	  tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-determinize.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-edit-metadata.cc,
-	  tools/src/hfst-expand-equivalences.cc, tools/src/hfst-invert.cc,
-	  tools/src/hfst-minimize.cc, tools/src/hfst-project.cc,
-	  tools/src/hfst-prune-alphabet.cc,
-	  tools/src/hfst-remove-epsilons.cc, tools/src/hfst-repeat.cc,
-	  tools/src/hfst-reverse.cc, tools/src/hfst-reweight.cc,
-	  tools/src/hfst-shuffle.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-subtract.cc: Now all command line tools should
-	  give an error message and exit with >0 if they cannot process
-	  input in hfst optimized lookup format.
-
-2014-08-27 10:11  eaxelson
-
-	* tools/src/hfst-invert.cc: Now hfst-invert prints an error message
-	  if given a transducer in optimized lookup format. This should be
-	  fixed in all command line tools.
-
-2014-08-27 08:24  eaxelson
-
-	* NSIS/AddHfstLibrary.nsi, NSIS/README, NSIS/copy_files.sh,
-	  NSIS/hfst_python_installer.nsi: Updated NSIS files.
-
-2014-08-27 08:22  eaxelson
-
-	* swig/libhfst.i: Function set_expand_definitions added to the
-	  python interface.
-
-2014-08-27 08:21  eaxelson
-
-	* swig/doc/Doxyfile: Updated HFST version number.
-
-2014-08-27 08:17  eaxelson
-
-	* Doxyfile: Updated HFST version number.
-
-2014-08-26 09:14  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  tools/src/hfst-lexc-compiler.cc: Added option --renameFlags to
-	  hfst-lexc for testing purposes.
-
-2014-08-25 13:00  eaxelson
-
-	* tools/src/hfst-determinize.cc: Added option --encode-weights to
-	  hfst-determinize.
-
-2014-08-20 09:52  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  tools/src/hfst-lexc-compiler.cc,
-	  tools/src/parsers/XfstCompiler.cc: Now hfst-lexc has options
-	  --withFlags and --minimizeFlags and hfst-xfst variables
-	  lexc-with-flags and lexc-minimize-flags to control if
-	  hyperminimization is used when parsing lexc files. Flag
-	  minimization can be the default behaviour when it has been
-	  properly tested.
-
-2014-08-20 06:39  moshagen
-
-	* tools/src/hfst-proc2.cc: The Xerox output should have an empty
-	  line between each cohort.
-
-2014-08-19 14:45  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc: Now flag minimization in
-	  should work in LexcCompiler. Commented the changes out until all
-	  expected results from lexc tests are changed accordingly.
-
-2014-08-19 08:39  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Apparently failing to read a
-	  stream now throws HfstException so catch that instead
-
-2014-08-19 06:51  moshagen
-
-	* tools/src: Ignore generated binaries.
-
-2014-08-18 13:53  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc: Tentatively added a piece of
-	  code that filters out multiple flags in lexc result. Currently
-	  commented out.
-
-2014-08-18 12:39  hardwick
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-proc2.cc: A
-	  hopefully temporary tool called proc2 for simple tokenization,
-	  to become part of something else or be renamed in the future
-
-2014-08-18 12:35  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  swig/hfst_swig_extensions.h, swig/libhfst.i: Some fixes to python
-	  wrapping of pmatch and showing original input in pmatch
-
-2014-08-18 11:15  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  tools/src/hfst-pmatch.cc: Make locate() return a simple data
-	  structure rather than a string
-
-2014-08-18 08:19  hardwick
-
-	* swig/hfst_swig_extensions.h, swig/libhfst.i: Convenience loader
-	  function for pmatch
-
-2014-08-18 08:09  hardwick
-
-	* swig/libhfst.i: Fix outdated prototype of printConnectedness()
-	  and add pmatch prototypes
-
-2014-08-14 12:51  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h, test/tools/Makefile.am,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/warn.sublexicon-mentioned-but-not-defined.lexc,
-	  test/tools/warn.sublexicon-mentioned-but-not-defined.lexc.flag.result,
-	  test/tools/warn.sublexicon-mentioned-but-not-defined.lexc.result,
-	  tools/src/hfst-lexc-compiler.cc: Added option --Werror to
-	  hfst-lexc that treats warnings as errors.
-
-2014-08-14 10:06  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/no-newline-before-sublexicon.lexc,
-	  test/tools/no-newline-before-sublexicon.lexc.flag.result,
-	  test/tools/no-newline-before-sublexicon.lexc.result: Added tests
-	  for the fixed bug #243 that will pass now.
-
-2014-08-14 10:05  eaxelson
-
-	* libhfst/src/parsers/lexc-lexer.ll: Now keyword LEXICON is allowed
-	  without a preceding newline in lexc parser. Should fix bug #243.
-
-2014-08-13 14:07  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Added a variable encode_epsilons to function priority_union whose
-	  default value (true) should fix bug #254. Function lenient
-	  composition still calls priority_union with a false value of
-	  encode_epsilons.
-
-2014-08-06 13:43  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: Added support for
-	  cross-products such as {foo}:[bar] and foo:[bar] in regexp
-	  parser. Tests still needed.
-
-2014-07-30 20:33  mie
-
-	* back-ends/foma/Makefile.am: .NOTPARALLEL for now
-
-2014-07-30 10:48  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Fix
-	  serious bug with epsilons in contexts - they were incorrectly
-	  moving the
-	  input tape.
-
-2014-07-19 13:15  mie
-
-	* tools/src/hfst-lookup.cc: with pipes
-
-2014-07-19 12:59  mie
-
-	* tools/src/hfst-lookup.cc: A super cool progress bar functionality
-	  \o/
-
-2014-07-15 15:42  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Fix
-	  context-related bug
-
-2014-07-05 08:22  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h:
-	  Readability refactoring
-
-2014-07-04 21:18  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Comment
-	  fixes and some more deadwood elimination
-
-2014-07-04 21:12  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h: Remove
-	  more unneeded stuff
-
-2014-07-04 21:07  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h: Remove
-	  some obsolete & commented out bits
-
-2014-07-04 21:04  hardwick
-
-	* tools/src/hfst-pmatch.cc: Locatefy option
-
-2014-07-04 21:04  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Don't
-	  make noise about almost always harmless result truncation
-
-2014-07-04 21:03  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Large
-	  refactor of almost everything
-	  (mainly to better serve tokenization apps w/tape synchronisation)
-
-2014-06-25 07:14  hardwick
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc: Undo
-	  previous commit, was confused by polluted automake cache
-
-2014-06-25 06:59  hardwick
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc: It
-	  seems that newer toolchains don't like c++ classes being defined
-	  over
-	  multiple .cc files, or something..
-
-2014-06-18 09:10  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Don't
-	  count flag diacritics when locatefying
-
-2014-06-17 21:11  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll: Remove obsolete bogus -> rule
-	  from when @-> had problems
-
-2014-06-17 21:10  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Handle missing @bin files
-	  more nicely
-
-2014-06-17 20:03  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Autoconvert @bin arguments
-	  if necessary
-
-2014-06-16 18:00  hardwick
-
-	* README.deps: Remove obsolete dependency readme that hogs the svn
-	  trunk page
-
-2014-06-13 20:47  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Add
-	  constructor option to make diacritic strings blank or not;
-	  make pmatch consider them blank
-
-2014-06-13 12:38  eaxelson
-
-	* tools/src/hfst-twolc/test/Makefile.am: Added file 'test' to
-	  EXTRA_DIST..
-
-2014-06-13 12:15  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am: Fixed hfst-twolc test
-	  Makefile.am
-
-2014-06-13 10:49  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc: Disabled
-	  outdated unit tests.
-
-2014-06-12 12:15  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Tentatively implemented
-	  variable 'flag-is-epsilon' in hfst-xfst.
-
-2014-06-10 14:34  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.cc:
-	  Fixed issue with left arrow conflicts for contexts with
-	  impossible word boundaries.
-
-2014-06-10 13:51  eaxelson
-
-	* test/tools/Makefile.am, test/tools/basic.regexps.lexc,
-	  test/tools/basic.regexps.lexc.flag.result,
-	  test/tools/basic.regexps.lexc.result,
-	  test/tools/lexc-compiler-functionality.sh: Also added tests for
-	  regexps with different continuation lexicons in hfst-lexc.
-
-2014-06-10 13:50  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc: Now regexps with different
-	  continuation lexicons are allowed in hfst-lexc. Should fix bug
-	  #247
-
-2014-06-10 13:45  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleSymbolVector.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleSymbolVector.h: Fixed
-	  list center rules and conflict resolutions.
-
-2014-06-10 13:41  mpsilfve
-
-	* tools/src/hfst-twolc/test/test62~: Tests for list centers.
-
-2014-06-10 13:40  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test46.txt_fst,
-	  tools/src/hfst-twolc/test/test61.txt_fst,
-	  tools/src/hfst-twolc/test/test62,
-	  tools/src/hfst-twolc/test/test62.txt_fst,
-	  tools/src/hfst-twolc/test/test62~: Tests for list centers.
-
-2014-06-08 12:32  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Exit on parse error
-	  Once we've printed a parsing error, exit rather that print
-	  intimidating hfst
-	  exception messages
-
-2014-06-05 13:13  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h:
-	  Pattern-locating mode
-
-2014-06-03 15:37  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Some
-	  changes to approach to avoiding stack overflow
-	  should fix problems with very long input lines
-
-2014-06-03 15:27  mie
-
-	* tools/src/hfst-affix-guessify.cc: Add harmonization
-
-2014-06-03 10:20  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  tools/src/hfst-pmatch.cc: Add extract tags -option
-	  (this commit also includes a secret commented-out facility for
-	  profiling
-	  activity on the input tape by drawing a funky ascii histogram)
-
-2014-06-02 11:40  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Fix
-	  incorrect check for whether tokenization needs to respect a long
-	  symbol
-
-2014-06-02 09:32  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Allow epsilon-symbol pairs
-
-2014-06-02 09:31  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Don't print huge data dumps
-	  when parsing fails
-
-2014-05-27 12:15  eaxelson
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducerMinimize.cc,
-	  libhfst/src/implementations/TropicalWeightTransducerPushWeights.cc:
-	  Revert back to the original TropicalWeightTransducer.cc and
-	  forget splitting it..
-
-2014-05-23 14:42  eaxelson
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducerMinimize.cc,
-	  libhfst/src/implementations/TropicalWeightTransducerPushWeights.cc:
-	  Moved minimize and push functionalities from
-	  TropicalWeightTransducer.cc to separate files. This will make
-	  compiling TropicalWeightTransducer faster and prevent 'File too
-	  big' errors on Windows.
-
-2014-05-21 11:27  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: While
-	  scanning for possible first symbols, don't accidentally go beyond
-	  the
-	  end of the input tape
-
-2014-05-20 10:26  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am, swig/setup.py: Ready for release 3.7.1.
-
-2014-05-20 09:43  eaxelson
-
-	* tools/src/parsers/test/test.sh: Now removing CR characters from
-	  output of hfst-xfst so that tests will pass on windows too.
-
-2014-05-16 11:14  eaxelson
-
-	* back-ends/sfst/alphabet.cc: Now an error message is thrown in
-	  HFST when reading a native SFST transducer that uses the empty
-	  symbol.
-
-2014-05-15 13:11  eaxelson
-
-	* tools/src/hfst-minimize.cc: Added option --encode-weights (-E) to
-	  hfst-minimize.
-
-2014-05-14 12:51  eaxelson
-
-	* libhfst/src/HfstXeroxRules.cc: Added documentation to parallel
-	  replace and removed unnecessary marker insertions.
-
-2014-05-14 11:07  eaxelson
-
-	* NSIS/hfst_installer.nsi, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_parallel_rules_11.output,
-	  tools/src/parsers/test/weighted_parallel_rules_11.xfst: Modified
-	  conpilation of weighted parallel rules by inserting markers to
-	  keep same mappings with different weights separate. Also added a
-	  StringPair variant of insert_symbols_to_alphabet to
-	  HfstTransducer and HfstTransitionGraph. Added a test case for
-	  hfst-xfst. Updated NSIS installer.
-
-2014-05-09 10:30  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Tentatively
-	  added a function for substituting weights with markers.
-
-2014-05-07 12:36  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Remove spurious obsolete
-	  comment
-
-2014-04-28 10:40  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Bounds check accesses to ascii_symbols when reading input too
-	  (ascii_symbols used to have a NO_SYMBOL entry for any char, but
-	  now without
-	  a check some accesses were resulting in bogus keys)
-
-2014-04-26 11:32  hardwick
-
-	* back-ends/foma/Makefile.am: Add -D_XOPEN_SOURCE=500
-	  in order to prevent -std=c99 from preventing strdup() prototype
-	  being visible
-
-2014-04-26 10:31  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Correct bounds check for ascii_symbols alterations
-
-2014-04-23 09:12  eaxelson
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Now
-	  checking that ascii_symbols vector index is not out of bounds
-	  when removing shadowing symbols. Should fix bug #235.
-
-2014-04-15 12:03  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc: Replace rules bug fix
-
-2014-04-15 07:11  eaxelson
-
-	* NSIS/AddHfstLibrary.nsi, NSIS/CheckLibraries.nsi,
-	  NSIS/copy_files.sh: Updated NSIS files for current release.
-
-2014-04-10 14:41  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc: Parallel rules bug solved
-
-2014-04-10 12:58  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.7.0.
-
-2014-04-10 10:17  eaxelson
-
-	* tools/src/parsers/test/Makefile.am: Added missing files to
-	  Makefile.
-
-2014-04-10 09:48  eaxelson
-
-	* tools/src/hfst-regexp2fst.cc: Added option --encode-weights also
-	  to hfst-regexp2fst.
-
-2014-04-10 09:30  eaxelson
-
-	* tools/src/hfst-compose-intersect.cc: Added option
-	  --encode-weights (default false) to hfst-compose-intersect.
-
-2014-04-09 11:12  eaxelson
-
-	* NSIS/README.ospell.txt, NSIS/copy_files.sh,
-	  NSIS/ospell_installer.nsi: Tentatively added NSIS installer for
-	  hfst-ospell.
-
-2014-03-31 12:59  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc: replace rules - weights are
-	  removed from calculating contexts (they were unnecessary there)
-
-2014-03-31 10:31  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Removed
-	  commented code.
-
-2014-03-28 07:18  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Modified
-	  TropicalWeightTransducer::are_equivalent so that determinization
-	  is carried out in a way similar to 'intersect' and 'subtract'.
-
-2014-03-25 10:01  eaxelson
-
-	* configure.ac: Updated configure.ac
-
-2014-03-25 10:00  eaxelson
-
-	* tools/src/hfst-ospell: Deleted hfst-ospell file.
-
-2014-03-25 09:58  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-ospell/Makefile.am,
-	  tools/src/hfst-ospell/get-ospell.sh, tools/src/hfst-ospell/src,
-	  tools/src/hfst-ospell/src_Makefile.am: Reverted hfst-ospell
-	  changes.
-
-2014-03-25 09:43  eaxelson
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-ospell,
-	  tools/src/hfst-ospell/Makefile.am,
-	  tools/src/hfst-ospell/get-ospell.sh, tools/src/hfst-ospell/src,
-	  tools/src/hfst-ospell/src/Makefile.am,
-	  tools/src/hfst-ospell/src_Makefile.am: Tentatively added
-	  hfst-ospell under tools/src, it is only enabled if
-	  --enable-ospell is requested.
-
-2014-03-24 13:41  eaxelson
-
-	* tools/src/parsers/test/contains.output,
-	  tools/src/parsers/test/contains.xfst,
-	  tools/src/parsers/test/contains_once.output,
-	  tools/src/parsers/test/contains_once.xfst,
-	  tools/src/parsers/test/contains_once_optional.output,
-	  tools/src/parsers/test/contains_once_optional.xfst,
-	  tools/src/parsers/test/contains_with_weight.output,
-	  tools/src/parsers/test/contains_with_weight.xfst,
-	  tools/src/parsers/test/replace_test_.xfst,
-	  tools/src/parsers/test/replace_test_1.output,
-	  tools/src/parsers/test/replace_test_1.xfst,
-	  tools/src/parsers/test/replace_test_10.output,
-	  tools/src/parsers/test/replace_test_10.xfst,
-	  tools/src/parsers/test/replace_test_11.output,
-	  tools/src/parsers/test/replace_test_11.xfst,
-	  tools/src/parsers/test/replace_test_12.output,
-	  tools/src/parsers/test/replace_test_12.xfst,
-	  tools/src/parsers/test/replace_test_13.output,
-	  tools/src/parsers/test/replace_test_13.xfst,
-	  tools/src/parsers/test/replace_test_14.output,
-	  tools/src/parsers/test/replace_test_14.xfst,
-	  tools/src/parsers/test/replace_test_15.output,
-	  tools/src/parsers/test/replace_test_15.xfst,
-	  tools/src/parsers/test/replace_test_16.output,
-	  tools/src/parsers/test/replace_test_16.xfst,
-	  tools/src/parsers/test/replace_test_17.output,
-	  tools/src/parsers/test/replace_test_17.xfst,
-	  tools/src/parsers/test/replace_test_18.output,
-	  tools/src/parsers/test/replace_test_18.xfst,
-	  tools/src/parsers/test/replace_test_19.output,
-	  tools/src/parsers/test/replace_test_19.xfst,
-	  tools/src/parsers/test/replace_test_2.xfst,
-	  tools/src/parsers/test/replace_test_20.output,
-	  tools/src/parsers/test/replace_test_20.xfst,
-	  tools/src/parsers/test/replace_test_21.output,
-	  tools/src/parsers/test/replace_test_21.xfst,
-	  tools/src/parsers/test/replace_test_22.output,
-	  tools/src/parsers/test/replace_test_22.xfst,
-	  tools/src/parsers/test/replace_test_23.output,
-	  tools/src/parsers/test/replace_test_23.xfst,
-	  tools/src/parsers/test/replace_test_24.output,
-	  tools/src/parsers/test/replace_test_24.xfst,
-	  tools/src/parsers/test/replace_test_25.output,
-	  tools/src/parsers/test/replace_test_25.xfst,
-	  tools/src/parsers/test/replace_test_26.output,
-	  tools/src/parsers/test/replace_test_26.xfst,
-	  tools/src/parsers/test/replace_test_27.output,
-	  tools/src/parsers/test/replace_test_27.xfst,
-	  tools/src/parsers/test/replace_test_28.output,
-	  tools/src/parsers/test/replace_test_28.xfst,
-	  tools/src/parsers/test/replace_test_29.output,
-	  tools/src/parsers/test/replace_test_29.xfst,
-	  tools/src/parsers/test/replace_test_3.xfst,
-	  tools/src/parsers/test/replace_test_30.output,
-	  tools/src/parsers/test/replace_test_30.xfst,
-	  tools/src/parsers/test/replace_test_31.output,
-	  tools/src/parsers/test/replace_test_31.xfst,
-	  tools/src/parsers/test/replace_test_32.output,
-	  tools/src/parsers/test/replace_test_32.xfst,
-	  tools/src/parsers/test/replace_test_33.output,
-	  tools/src/parsers/test/replace_test_33.xfst,
-	  tools/src/parsers/test/replace_test_34.output,
-	  tools/src/parsers/test/replace_test_34.xfst,
-	  tools/src/parsers/test/replace_test_35.output,
-	  tools/src/parsers/test/replace_test_35.xfst,
-	  tools/src/parsers/test/replace_test_36.output,
-	  tools/src/parsers/test/replace_test_36.xfst,
-	  tools/src/parsers/test/replace_test_37.output,
-	  tools/src/parsers/test/replace_test_37.xfst,
-	  tools/src/parsers/test/replace_test_38.output,
-	  tools/src/parsers/test/replace_test_38.xfst,
-	  tools/src/parsers/test/replace_test_39.output,
-	  tools/src/parsers/test/replace_test_39.xfst,
-	  tools/src/parsers/test/replace_test_4.output,
-	  tools/src/parsers/test/replace_test_4.xfst,
-	  tools/src/parsers/test/replace_test_40.output,
-	  tools/src/parsers/test/replace_test_40.xfst,
-	  tools/src/parsers/test/replace_test_41.output,
-	  tools/src/parsers/test/replace_test_41.xfst,
-	  tools/src/parsers/test/replace_test_42.output,
-	  tools/src/parsers/test/replace_test_42.xfst,
-	  tools/src/parsers/test/replace_test_43.output,
-	  tools/src/parsers/test/replace_test_43.xfst,
-	  tools/src/parsers/test/replace_test_44.output,
-	  tools/src/parsers/test/replace_test_44.xfst,
-	  tools/src/parsers/test/replace_test_45.output,
-	  tools/src/parsers/test/replace_test_45.xfst,
-	  tools/src/parsers/test/replace_test_46.output,
-	  tools/src/parsers/test/replace_test_46.xfst,
-	  tools/src/parsers/test/replace_test_47.output,
-	  tools/src/parsers/test/replace_test_47.xfst,
-	  tools/src/parsers/test/replace_test_48.output,
-	  tools/src/parsers/test/replace_test_48.xfst,
-	  tools/src/parsers/test/replace_test_49.output,
-	  tools/src/parsers/test/replace_test_49.xfst,
-	  tools/src/parsers/test/replace_test_5.output,
-	  tools/src/parsers/test/replace_test_5.xfst,
-	  tools/src/parsers/test/replace_test_50.output,
-	  tools/src/parsers/test/replace_test_50.xfst,
-	  tools/src/parsers/test/replace_test_51.output,
-	  tools/src/parsers/test/replace_test_51.xfst,
-	  tools/src/parsers/test/replace_test_52.output,
-	  tools/src/parsers/test/replace_test_52.xfst,
-	  tools/src/parsers/test/replace_test_53.output,
-	  tools/src/parsers/test/replace_test_53.xfst,
-	  tools/src/parsers/test/replace_test_6.output,
-	  tools/src/parsers/test/replace_test_6.xfst,
-	  tools/src/parsers/test/replace_test_7.output,
-	  tools/src/parsers/test/replace_test_7.xfst,
-	  tools/src/parsers/test/replace_test_8.output,
-	  tools/src/parsers/test/replace_test_8.xfst,
-	  tools/src/parsers/test/replace_test_9.output,
-	  tools/src/parsers/test/replace_test_9.xfst: Use precision 1 in
-	  weighted tests.
-
-2014-03-20 07:16  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Reinstate special ascii tokenization while avoiding shadowing
-	  longer symbols
-
-2014-03-19 16:42  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Disable ascii-lookup when tokenizing
-
-2014-03-19 12:38  eaxelson
-
-	* tools/src/hfst-tagger/src/use_model_src/SequenceModelComponentPair.cc,
-	  tools/src/parsers/test/weighted_optional_replace_right_3.xfst,
-	  tools/src/parsers/test/weighted_replace_right_3.xfst: Set
-	  encode_weights off in tests to make sure that they work also if
-	  it is on.
-
-2014-03-19 10:18  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Fixed a bug in parsing regexps
-	  such as '?:{foo}'.
-
-2014-03-18 18:01  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Make pair notations a bit
-	  more consistent; enable RIGHT_ARROW
-
-2014-03-18 12:20  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy, tools/src/parsers/test/test.sh:
-	  Now incompatible replace types in parallel rules yield an error.
-
-2014-03-18 11:51  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_parallel_rules_10.output,
-	  tools/src/parsers/test/weighted_parallel_rules_10.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_6.output,
-	  tools/src/parsers/test/weighted_parallel_rules_6.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_7.output,
-	  tools/src/parsers/test/weighted_parallel_rules_7.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_8.output,
-	  tools/src/parsers/test/weighted_parallel_rules_8.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_9.output,
-	  tools/src/parsers/test/weighted_parallel_rules_9.xfst: Added
-	  variable 'att-epsilon' to hfst-xfst. Also added more weighted
-	  parallel replace tests.
-
-2014-03-18 06:01  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Now epsilons, identities and
-	  unknowns are printed correctly.
-
-2014-03-17 14:38  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/replace_test_12.output: Fixed a bug in
-	  handling unknowns in hfst-xfst's 'look up'.
-
-2014-03-17 12:29  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_parallel_rules_1.output,
-	  tools/src/parsers/test/weighted_parallel_rules_1.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_2.output,
-	  tools/src/parsers/test/weighted_parallel_rules_2.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_3.output,
-	  tools/src/parsers/test/weighted_parallel_rules_3.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_4.output,
-	  tools/src/parsers/test/weighted_parallel_rules_4.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_5.output,
-	  tools/src/parsers/test/weighted_parallel_rules_5.xfst: Added more
-	  weighted parallel replace tests.
-
-2014-03-17 12:20  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Allow runtime contexts
-	  anywhere to facilitate some efficiency strategies
-
-2014-03-17 08:07  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/replace_test_46.output,
-	  tools/src/parsers/test/replace_test_46.xfst,
-	  tools/src/parsers/test/replace_test_47.output,
-	  tools/src/parsers/test/replace_test_47.xfst,
-	  tools/src/parsers/test/replace_test_48.output,
-	  tools/src/parsers/test/replace_test_48.xfst,
-	  tools/src/parsers/test/replace_test_49.output,
-	  tools/src/parsers/test/replace_test_49.xfst,
-	  tools/src/parsers/test/replace_test_50.output,
-	  tools/src/parsers/test/replace_test_50.xfst,
-	  tools/src/parsers/test/replace_test_51.output,
-	  tools/src/parsers/test/replace_test_51.xfst,
-	  tools/src/parsers/test/replace_test_52.output,
-	  tools/src/parsers/test/replace_test_52.xfst,
-	  tools/src/parsers/test/replace_test_53.output,
-	  tools/src/parsers/test/replace_test_53.xfst,
-	  tools/src/parsers/test/test.sh: Added rest of the replace tests.
-
-2014-03-14 15:35  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/replace_test_41.output,
-	  tools/src/parsers/test/replace_test_41.xfst,
-	  tools/src/parsers/test/replace_test_42.output,
-	  tools/src/parsers/test/replace_test_42.xfst,
-	  tools/src/parsers/test/replace_test_43.output,
-	  tools/src/parsers/test/replace_test_43.xfst,
-	  tools/src/parsers/test/replace_test_44.output,
-	  tools/src/parsers/test/replace_test_44.xfst,
-	  tools/src/parsers/test/replace_test_45.output,
-	  tools/src/parsers/test/replace_test_45.xfst,
-	  tools/src/parsers/test/replace_test_46.xfst,
-	  tools/src/parsers/test/test.sh: More tests...
-
-2014-03-14 15:19  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/replace_test_27.output,
-	  tools/src/parsers/test/replace_test_27.xfst,
-	  tools/src/parsers/test/replace_test_28.output,
-	  tools/src/parsers/test/replace_test_28.xfst,
-	  tools/src/parsers/test/replace_test_29.output,
-	  tools/src/parsers/test/replace_test_29.xfst,
-	  tools/src/parsers/test/replace_test_30.output,
-	  tools/src/parsers/test/replace_test_30.xfst,
-	  tools/src/parsers/test/replace_test_31.output,
-	  tools/src/parsers/test/replace_test_31.xfst,
-	  tools/src/parsers/test/replace_test_32.output,
-	  tools/src/parsers/test/replace_test_32.xfst,
-	  tools/src/parsers/test/replace_test_33.output,
-	  tools/src/parsers/test/replace_test_33.xfst,
-	  tools/src/parsers/test/replace_test_34.output,
-	  tools/src/parsers/test/replace_test_34.xfst,
-	  tools/src/parsers/test/replace_test_35.output,
-	  tools/src/parsers/test/replace_test_35.xfst,
-	  tools/src/parsers/test/replace_test_36.output,
-	  tools/src/parsers/test/replace_test_36.xfst,
-	  tools/src/parsers/test/replace_test_37.output,
-	  tools/src/parsers/test/replace_test_37.xfst,
-	  tools/src/parsers/test/replace_test_38.output,
-	  tools/src/parsers/test/replace_test_38.xfst,
-	  tools/src/parsers/test/replace_test_39.output,
-	  tools/src/parsers/test/replace_test_39.xfst,
-	  tools/src/parsers/test/replace_test_40.output,
-	  tools/src/parsers/test/replace_test_40.xfst,
-	  tools/src/parsers/test/test.sh: Added more hfst-xfst replace rule
-	  tests.
-
-2014-03-14 13:41  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc: Fixed weights in markup rules
-
-2014-03-14 12:04  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/replace_test_20.output,
-	  tools/src/parsers/test/replace_test_20.xfst,
-	  tools/src/parsers/test/replace_test_21.output,
-	  tools/src/parsers/test/replace_test_21.xfst,
-	  tools/src/parsers/test/replace_test_22.output,
-	  tools/src/parsers/test/replace_test_22.xfst,
-	  tools/src/parsers/test/replace_test_23.output,
-	  tools/src/parsers/test/replace_test_23.xfst,
-	  tools/src/parsers/test/replace_test_24.output,
-	  tools/src/parsers/test/replace_test_24.xfst,
-	  tools/src/parsers/test/replace_test_25.output,
-	  tools/src/parsers/test/replace_test_25.xfst,
-	  tools/src/parsers/test/replace_test_26.output,
-	  tools/src/parsers/test/replace_test_26.xfst,
-	  tools/src/parsers/test/test.sh: Added more tests.
-
-2014-03-14 09:44  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/replace_test_10.output,
-	  tools/src/parsers/test/replace_test_10.xfst,
-	  tools/src/parsers/test/replace_test_11.output,
-	  tools/src/parsers/test/replace_test_11.xfst,
-	  tools/src/parsers/test/replace_test_12.output,
-	  tools/src/parsers/test/replace_test_12.xfst,
-	  tools/src/parsers/test/replace_test_13.output,
-	  tools/src/parsers/test/replace_test_13.xfst,
-	  tools/src/parsers/test/replace_test_14.output,
-	  tools/src/parsers/test/replace_test_14.xfst,
-	  tools/src/parsers/test/replace_test_15.output,
-	  tools/src/parsers/test/replace_test_15.xfst,
-	  tools/src/parsers/test/replace_test_16.output,
-	  tools/src/parsers/test/replace_test_16.xfst,
-	  tools/src/parsers/test/replace_test_17.output,
-	  tools/src/parsers/test/replace_test_17.xfst,
-	  tools/src/parsers/test/replace_test_18.output,
-	  tools/src/parsers/test/replace_test_18.xfst,
-	  tools/src/parsers/test/replace_test_19.output,
-	  tools/src/parsers/test/replace_test_19.xfst,
-	  tools/src/parsers/test/test.sh: Added more replace tests.
-
-2014-03-14 09:18  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/replace_test_.xfst,
-	  tools/src/parsers/test/replace_test_1.output,
-	  tools/src/parsers/test/replace_test_1.xfst,
-	  tools/src/parsers/test/replace_test_10.xfst,
-	  tools/src/parsers/test/replace_test_11.xfst,
-	  tools/src/parsers/test/replace_test_12.xfst,
-	  tools/src/parsers/test/replace_test_13.xfst,
-	  tools/src/parsers/test/replace_test_14.xfst,
-	  tools/src/parsers/test/replace_test_15.xfst,
-	  tools/src/parsers/test/replace_test_16.xfst,
-	  tools/src/parsers/test/replace_test_17.xfst,
-	  tools/src/parsers/test/replace_test_18.xfst,
-	  tools/src/parsers/test/replace_test_19.xfst,
-	  tools/src/parsers/test/replace_test_2.output,
-	  tools/src/parsers/test/replace_test_2.xfst,
-	  tools/src/parsers/test/replace_test_20.xfst,
-	  tools/src/parsers/test/replace_test_21.xfst,
-	  tools/src/parsers/test/replace_test_22.xfst,
-	  tools/src/parsers/test/replace_test_23.xfst,
-	  tools/src/parsers/test/replace_test_24.xfst,
-	  tools/src/parsers/test/replace_test_25.xfst,
-	  tools/src/parsers/test/replace_test_26.xfst,
-	  tools/src/parsers/test/replace_test_27.xfst,
-	  tools/src/parsers/test/replace_test_28.xfst,
-	  tools/src/parsers/test/replace_test_29.xfst,
-	  tools/src/parsers/test/replace_test_3.output,
-	  tools/src/parsers/test/replace_test_3.xfst,
-	  tools/src/parsers/test/replace_test_30.xfst,
-	  tools/src/parsers/test/replace_test_31.xfst,
-	  tools/src/parsers/test/replace_test_32.xfst,
-	  tools/src/parsers/test/replace_test_33.xfst,
-	  tools/src/parsers/test/replace_test_34.xfst,
-	  tools/src/parsers/test/replace_test_35.xfst,
-	  tools/src/parsers/test/replace_test_36.xfst,
-	  tools/src/parsers/test/replace_test_37.xfst,
-	  tools/src/parsers/test/replace_test_38.xfst,
-	  tools/src/parsers/test/replace_test_39.xfst,
-	  tools/src/parsers/test/replace_test_4.output,
-	  tools/src/parsers/test/replace_test_4.xfst,
-	  tools/src/parsers/test/replace_test_40.xfst,
-	  tools/src/parsers/test/replace_test_41.xfst,
-	  tools/src/parsers/test/replace_test_42.xfst,
-	  tools/src/parsers/test/replace_test_43.xfst,
-	  tools/src/parsers/test/replace_test_44.xfst,
-	  tools/src/parsers/test/replace_test_45.xfst,
-	  tools/src/parsers/test/replace_test_46.xfst,
-	  tools/src/parsers/test/replace_test_47.xfst,
-	  tools/src/parsers/test/replace_test_48.xfst,
-	  tools/src/parsers/test/replace_test_49.xfst,
-	  tools/src/parsers/test/replace_test_5.output,
-	  tools/src/parsers/test/replace_test_5.xfst,
-	  tools/src/parsers/test/replace_test_50.xfst,
-	  tools/src/parsers/test/replace_test_51.xfst,
-	  tools/src/parsers/test/replace_test_52.xfst,
-	  tools/src/parsers/test/replace_test_53.xfst,
-	  tools/src/parsers/test/replace_test_6.output,
-	  tools/src/parsers/test/replace_test_6.xfst,
-	  tools/src/parsers/test/replace_test_7.output,
-	  tools/src/parsers/test/replace_test_7.xfst,
-	  tools/src/parsers/test/replace_test_8.output,
-	  tools/src/parsers/test/replace_test_8.xfst,
-	  tools/src/parsers/test/replace_test_9.output,
-	  tools/src/parsers/test/replace_test_9.xfst,
-	  tools/src/parsers/test/replace_tests,
-	  tools/src/parsers/test/test.sh: Added replace tests, not all of
-	  them are yet performed.
-
-2014-03-14 07:50  eaxelson
-
-	* tools/src/parsers/test/replace_tests: Add tentatively new replace
-	  tests.
-
-2014-03-14 07:26  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/contains.output,
-	  tools/src/parsers/test/contains.xfst,
-	  tools/src/parsers/test/contains_once.output,
-	  tools/src/parsers/test/contains_once.xfst,
-	  tools/src/parsers/test/contains_once_optional.output,
-	  tools/src/parsers/test/contains_once_optional.xfst,
-	  tools/src/parsers/test/contains_with_weight.output,
-	  tools/src/parsers/test/contains_with_weight.xfst,
-	  tools/src/parsers/test/test.sh: Added tests for containment
-	  operators.
-
-2014-03-13 14:51  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: A couple of small fixes to
-	  containment operator.
-
-2014-03-13 08:42  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Sorting
-	  arcs before subtraction in TropicalWeightTransducer::subtract.
-
-2014-03-13 08:08  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/parsers/xre_utils.cc: Removed unnecessary
-	  determinization from TropicalWeightTransducer's intersection
-	  function. Added function
-	  HfstTransitionGraph::get_transition_pairs. Made some small
-	  modifications to xre parsers's containment operator.
-
-2014-03-12 15:01  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll: Fix definition of curly
-	  literals
-
-2014-03-12 11:35  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: More PAIR_SEPARATOR fluff
-	  (which should be completely refactored)
-
-2014-03-12 11:24  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  tools/src/hfst-pmatch.cc: Build input scanner without using a
-	  stack guard;
-	  also refactor where runtime behaviour is stored
-
-2014-03-12 10:39  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Added tentatively new functions
-	  for implementing containment in xre parser. Removed
-	  determinization from intersection.
-
-2014-03-07 13:14  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Changed containment operators so
-	  that they also work with transducers that are not automata, i.e.
-	  '$.[a:b]'.
-
-2014-03-07 09:38  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Added
-	  documentation to TropicalWeightTransducer::intersect.
-
-2014-03-06 14:18  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: A simple
-	  stack guard for first-input -collection (only, for now)
-
-2014-03-06 13:08  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Now all containment operators
-	  work, at least with unweighted containment transducers.
-
-2014-03-06 12:26  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Fixed a bug in '$.' operator in
-	  xre parser.
-
-2014-03-06 11:19  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Use a
-	  vector in the prescanner to make it slightly faster
-
-2014-03-06 10:05  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h: Add
-	  class-identifier to friend declarations; required by some
-	  compilers
-
-2014-03-05 14:35  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Remove
-	  extraneous debugging message
-
-2014-03-05 14:23  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: A very
-	  conservative and (for now) computed-at-runtime input prescanner
-
-2014-03-05 13:30  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/empty_context.output,
-	  tools/src/parsers/test/empty_context.xfst,
-	  tools/src/parsers/test/test.sh: Added a test for empty context in
-	  replace rule.
-
-2014-03-05 13:11  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/parsers/xre_parse.yy, tools/src/parsers/hfst-xfst.cc:
-	  Resorting to global variable 'encode_weights' instead of passing
-	  it around as a variable. Allowing empty contexts in replace
-	  rules, i.e. 'a -> b || _ '. Fixed a minor printing issue in
-	  hfst-xfst.
-
-2014-03-04 18:15  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: It's
-	  perhaps a little clearer if is_like_epsilon(epsilon) is false
-
-2014-03-04 16:15  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Fix
-	  bug where conversion from ol to basic transducers was missing
-	  @I.foo@ arcs in some situations
-
-2014-03-04 16:13  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Fix bug
-	  where weights on the insertion arc were being ignored
-
-2014-03-04 16:13  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Log insertions when verbose
-
-2014-03-03 19:50  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/parsers/XfstCompiler.cc: Added variables 'max-weight'
-	  and 'encode-labels' to hfst-xfst.
-
-2014-03-03 18:18  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-	  Tentatively added functions to control label and weight encoding
-	  in weighted minimization. Also added max_weight parameter to
-	  lookup_fd of HfstBasicTransducer.
-
-2014-02-28 09:13  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: Fixed weighting in containment
-	  operators.
-
-2014-02-27 13:42  eaxelson
-
-	* tools/src/parsers/test/weighted_ltr_longest_match_1.xfst,
-	  tools/src/parsers/test/weighted_ltr_longest_match_2.xfst,
-	  tools/src/parsers/test/weighted_ltr_longest_match_3.xfst,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_1.xfst,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_2.xfst,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_3.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_1.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_2.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_3.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_4.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_5.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_6.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_7.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_8.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_9.xfst,
-	  tools/src/parsers/test/weighted_replace_right_1.xfst,
-	  tools/src/parsers/test/weighted_replace_right_2.xfst,
-	  tools/src/parsers/test/weighted_replace_right_3.xfst,
-	  tools/src/parsers/test/weighted_replace_right_4.xfst,
-	  tools/src/parsers/test/weighted_replace_right_5.xfst,
-	  tools/src/parsers/test/weighted_replace_right_6.xfst,
-	  tools/src/parsers/test/weighted_replace_right_7.xfst,
-	  tools/src/parsers/test/weighted_replace_right_8.xfst,
-	  tools/src/parsers/test/weighted_replace_right_9.xfst: Edited xfst
-	  tests.
-
-2014-02-27 13:19  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: Fixed a bug in parsing multiple
-	  parallel replace rules.
-
-2014-02-27 09:34  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/XfstCompiler.cc: Fixed a bug in the contains
-	  one '$.' operator. Improvements to the xfst parser.
-
-2014-02-25 15:10  eaxelson
-
-	* tools/src/hfst-regexp2fst.cc: Updated regexp2fst help message.
-
-2014-02-25 13:49  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Use "" for special parsing
-	  and symbols, {} for tokenizable strings;
-	  also allow "define" alongside "Define"
-	  Future note: consider adding another syntax for "totally bare"
-	  symbols
-	  with no special parsing
-
-2014-02-25 11:49  eaxelson
-
-	* tools/src/parsers/hfst-xfst.cc: Only print prompt in pipe mode if
-	  --verbose is used.
-
-2014-02-21 11:08  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_ltr_longest_match_1.result,
-	  tools/src/parsers/test/weighted_ltr_longest_match_1.xfst,
-	  tools/src/parsers/test/weighted_ltr_longest_match_2.result,
-	  tools/src/parsers/test/weighted_ltr_longest_match_2.xfst,
-	  tools/src/parsers/test/weighted_ltr_longest_match_3.result,
-	  tools/src/parsers/test/weighted_ltr_longest_match_3.xfst,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_1.result,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_1.xfst,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_2.result,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_2.xfst,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_3.result,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_3.xfst: Added
-	  yet more tests for weighted rules.
-
-2014-02-21 10:52  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: Made xre parser ignore weights
-	  in rule contexts. A warning is given in non-silent mode.
-
-2014-02-21 09:45  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_optional_replace_right_8.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_8.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_9.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_9.xfst,
-	  tools/src/parsers/test/weighted_replace_right_8.result,
-	  tools/src/parsers/test/weighted_replace_right_8.xfst,
-	  tools/src/parsers/test/weighted_replace_right_9.result,
-	  tools/src/parsers/test/weighted_replace_right_9.xfst: Added more
-	  tests for weighted replace rules.
-
-2014-02-21 08:38  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_optional_replace_right_1.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_1.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_2.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_2.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_3.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_3.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_4.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_4.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_5.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_5.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_6.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_6.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_7.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_7.xfst:
-	  Added optional variants of replace right tests.
-
-2014-02-21 08:15  eaxelson
-
-	* tools/src/parsers/test/test.sh: Forgot to apply weighted_rules ->
-	  weighted_replace_right renaming scheme to test.sh.
-
-2014-02-21 08:14  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/weighted_replace_right_1.result,
-	  tools/src/parsers/test/weighted_replace_right_1.xfst,
-	  tools/src/parsers/test/weighted_replace_right_2.result,
-	  tools/src/parsers/test/weighted_replace_right_2.xfst,
-	  tools/src/parsers/test/weighted_replace_right_3.result,
-	  tools/src/parsers/test/weighted_replace_right_3.xfst,
-	  tools/src/parsers/test/weighted_replace_right_4.result,
-	  tools/src/parsers/test/weighted_replace_right_4.xfst,
-	  tools/src/parsers/test/weighted_replace_right_5.result,
-	  tools/src/parsers/test/weighted_replace_right_5.xfst,
-	  tools/src/parsers/test/weighted_replace_right_6.result,
-	  tools/src/parsers/test/weighted_replace_right_6.xfst,
-	  tools/src/parsers/test/weighted_replace_right_7.result,
-	  tools/src/parsers/test/weighted_replace_right_7.xfst,
-	  tools/src/parsers/test/weighted_rules_1.result,
-	  tools/src/parsers/test/weighted_rules_1.xfst,
-	  tools/src/parsers/test/weighted_rules_2.result,
-	  tools/src/parsers/test/weighted_rules_2.xfst,
-	  tools/src/parsers/test/weighted_rules_3.result,
-	  tools/src/parsers/test/weighted_rules_3.xfst,
-	  tools/src/parsers/test/weighted_rules_4.result,
-	  tools/src/parsers/test/weighted_rules_4.xfst,
-	  tools/src/parsers/test/weighted_rules_5.result,
-	  tools/src/parsers/test/weighted_rules_5.xfst,
-	  tools/src/parsers/test/weighted_rules_6.result,
-	  tools/src/parsers/test/weighted_rules_6.xfst,
-	  tools/src/parsers/test/weighted_rules_7.result,
-	  tools/src/parsers/test/weighted_rules_7.xfst: Renamed
-	  weighted_rules_* to weighted_replace_right_*.
-
-2014-02-21 08:09  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_rules_6.result,
-	  tools/src/parsers/test/weighted_rules_6.xfst,
-	  tools/src/parsers/test/weighted_rules_7.result,
-	  tools/src/parsers/test/weighted_rules_7.xfst: Addded more
-	  weighted rules tests.
-
-2014-02-20 16:47  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/help_message.cc,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Added function
-	  HfstTransducer::is_infinitely_ambiguous() and command 'test
-	  infinitely-ambiguous' in hfst-xfst.
-
-2014-02-20 15:50  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  test/libhfst/test_transducer_functions.cc: Copy the before-seen
-	  states so different paths to the same state don't conflict
-	  Reinstates a skipped test
-
-2014-02-20 15:23  eaxelson
-
-	* tools/src/hfst-summarize.cc: Made hfst-summarize print whether
-	  transducer is infinitely ambiguous in verbose mode.
-
-2014-02-20 14:55  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Fixed a couple
-	  of typos causing errors when calling is_infinitely_ambiguous..
-
-2014-02-20 14:36  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_rules_1.result,
-	  tools/src/parsers/test/weighted_rules_1.xfst,
-	  tools/src/parsers/test/weighted_rules_2.result,
-	  tools/src/parsers/test/weighted_rules_2.xfst,
-	  tools/src/parsers/test/weighted_rules_3.result,
-	  tools/src/parsers/test/weighted_rules_3.xfst,
-	  tools/src/parsers/test/weighted_rules_4.result,
-	  tools/src/parsers/test/weighted_rules_4.xfst,
-	  tools/src/parsers/test/weighted_rules_5.result,
-	  tools/src/parsers/test/weighted_rules_5.xfst,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Tentatively added function
-	  is_infinitely_ambiguous() to HfstTransitionGraph. Added variables
-	  'lookup-cutoff', 'print-words-cutoff' and 'precision' to
-	  hfst-xfst. Added test cases for weighted rules.
-	  test_transducer_functions now returns a skip value until hfst
-	  optimized lookup transducer's function is_infinitely_ambiguous is
-	  fixed.
-
-2014-02-20 13:42  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc:
-	  A slight followup to the previous commit
-
-2014-02-20 13:06  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc:
-	  Fix stupid bug in tricky control flow part of loop checking
-
-2014-02-20 12:49  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc:
-	  Bugfix: distinguish between transitions and transition indexes
-	  when determining
-	  state equivalence when looking for epsilon loops for a given
-	  input.
-
-2014-02-20 12:30  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Remove extraneous debugging message
-
-2014-02-20 12:22  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Fix
-	  bug where infinite ambiguity checking was polluting the flag
-	  diacritic state
-
-2014-02-20 11:28  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Reorder things so that we should usually run into max_results
-	  before
-	  running into the stack depth
-
-2014-02-20 11:02  hardwick
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Respect result limits and implement a recursion depth guard
-	  so instead of blowing out the stack we discard overlong results
-	  and give a warning message
-
-2014-02-20 10:10  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc:
-	  Rip out empty main test function so there's only one in the ol
-	  compilation unit
-
-2014-02-20 09:42  hardwick
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h: Add
-	  string version of is_lookup_infinitely_ambiguous() to
-	  HfstTransducer api too
-
-2014-02-20 09:34  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/hfst-xfst.cc,
-	  tools/src/parsers/xfst-parser.yy: Added variant
-	  is_lookup_infinitely_ambiguous(const std::string &) in
-	  HfstTransitionGraph which is used in hfst-xfst to check
-	  infinitely ambiguous cases in lookup. Also added a variable
-	  precision in hfst-xfst to control the number of decimals shown.
-
-2014-02-20 09:34  hardwick
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Add a
-	  facility for determining whether a given input produces an
-	  infinitely ambiguous lookup
-
-2014-02-19 10:09  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/xre_parse.yy: Replace rules - weight now
-	  works on both sides, with context.
-
-2014-02-19 07:22  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: Insert special symbols into
-	  ?-containing transducers' alphabets right away,
-	  fixing some incorrect harmonization behaviour
-
-2014-02-18 11:53  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc: Updated weight management in
-	  replace rules
-
-2014-02-17 16:42  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS: Finally ready for release 3.6.1.
-
-2014-02-17 12:52  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  tools/src/hfst-pmatch.cc: Better conflict warnings
-
-2014-02-17 12:47  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Now it is possible to save and
-	  load a stack of transducers in hfst optimized lookup format.
-
-2014-02-17 11:09  eaxelson
-
-	* tools/src/hfst-proc/hfst-proc.cc: Give a more informative error
-	  message if tranducer is not in hfst optimized lookup format in
-	  hfst-proc.
-
-2014-02-14 16:43  eaxelson
-
-	* man/Makefile.am, man/hfst-foma.1: Added hand-written man page for
-	  hfst-foma.
-
-2014-02-14 16:12  eaxelson
-
-	* man/Makefile.am, man/hfst-apertium-proc.1, man/hfst-calculate.1,
-	  man/hfst-compare.1, man/hfst-compose-intersect.1,
-	  man/hfst-compose.1, man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinize.1, man/hfst-disjunct.1,
-	  man/hfst-foma-wrapper.1, man/hfst-format.1, man/hfst-fst2fst.1,
-	  man/hfst-fst2strings.1, man/hfst-fst2txt.1, man/hfst-head.1,
-	  man/hfst-invert.1, man/hfst-lexc-wrapper.1, man/hfst-lexc.1,
-	  man/hfst-lookup.1, man/hfst-minimize.1, man/hfst-name.1,
-	  man/hfst-proc.1, man/hfst-project.1, man/hfst-push-weights.1,
-	  man/hfst-regexp2fst.1, man/hfst-remove-epsilons.1,
-	  man/hfst-repeat.1, man/hfst-reverse.1, man/hfst-split.1,
-	  man/hfst-strings2fst.1, man/hfst-substitute.1,
-	  man/hfst-subtract.1, man/hfst-summarize.1, man/hfst-tail.1,
-	  man/hfst-txt2fst.1, man/hfst-xfst-compiler.1, man/hfst-xfst.1:
-	  Updated man pages.
-
-2014-02-14 13:39  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-proc/Makefile.am: Now
-	  removing symbolic links to command line tools when performing
-	  'make uninstall'.
-
-2014-02-14 11:41  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS: A new candidate for release
-	  3.6.1.
-
-2014-02-14 11:31  eaxelson
-
-	* check_installation/copy-tool-tests.sh: Updated installation
-	  check.
-
-2014-02-14 11:30  eaxelson
-
-	* NSIS/README, NSIS/README.proc.txt, NSIS/copy_files.sh,
-	  NSIS/proc_installer.nsi: Added an installer file for hfst-proc.
-
-2014-02-14 11:26  eaxelson
-
-	* tools/src/hfst-lexc-compiler.cc, tools/src/hfst-lexc-wrapper.cc,
-	  tools/src/hfst-lookup.cc: Edited help messages of lexc and lookup
-	  tools.
-
-2014-02-13 14:47  eaxelson
-
-	* test/tools/basic.zeros-epsilons.lexc.flag.result,
-	  test/tools/check-flag-results.sh,
-	  test/tools/create-flag-results.sh: Made creating and checking
-	  flag results less verbose.
-
-2014-02-13 13:50  eaxelson
-
-	* test/tools/lexc-compiler-functionality.sh: Changed 'return' to
-	  'exit' in shell script.
-
-2014-02-13 13:07  moshagen
-
-	* libhfst/src/parsers, test/libhfst, test/tools,
-	  tools/src/hfst-tagger/src, tools/src/hfst-twolc/test,
-	  tools/src/parsers/test: Ignore generated files.
-
-2014-02-13 13:04  eaxelson
-
-	* NSIS/AddHfstLibrary.nsi, NSIS/copy_files.sh, configure.ac,
-	  swig/setup.py: Updated version numbers in NSIS and swig files.
-	  Also made lexc wrapper disabled by default.
-
-2014-02-13 12:40  eaxelson
-
-	* test/tools/Makefile.am: Fixed a typo.
-
-2014-02-13 12:37  moshagen
-
-	* tools/src/hfst-lookup.cc: Corrected syntax error, typos.
-
-2014-02-13 12:20  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.6.1.
-
-2014-02-13 10:59  eaxelson
-
-	* tools/src/hfst-lookup.cc: Edited help message of hfst-lookup.
-
-2014-02-13 10:32  eaxelson
-
-	* tools/src/hfst-lookup.cc: hfst-lookup now also handles a
-	  transducer archive.
-
-2014-02-13 10:08  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-parser.yy: Added more options to print
-	  (random-)(upper-|lower-)words commands in hfst-xfst.
-
-2014-02-12 09:29  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Fixed a bug in
-	  HfstTransitionGraph::remove_transition and added a test for it.
-
-2014-02-11 15:58  eaxelson
-
-	* libhfst/src/parsers/lexc-lexer.ll, test/tools/Makefile.am,
-	  test/tools/basic.almost-reserved-words.lexc,
-	  test/tools/basic.almost-reserved-words.lexc.flag.result,
-	  test/tools/basic.almost-reserved-words.lexc.result,
-	  test/tools/basic.reserved-words-lowercase.lexc,
-	  test/tools/basic.reserved-words-lowercase.lexc.result,
-	  test/tools/lexc-compiler-functionality.sh,
-	  tools/src/parsers/XfstCompiler.cc: Fixed some reserved words in
-	  lexc parser. Added weights for command 'look up' in hfst-xfst.
-
-2014-02-11 14:16  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h:
-	  Scaled down weights in replace rules.
-
-2014-02-10 11:58  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Lex the left paren in
-	  function calls along with the function name
-	  to make a distinction between a symbol followed by an
-	  optionalized
-	  transducer and a function call
-
-2014-02-10 10:42  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/basic.reserved-words-lowercase.lexc,
-	  test/tools/basic.reserved-words-lowercase.lexc.result,
-	  test/tools/lexc-compiler-functionality.sh: Added a lexc test that
-	  contains reserved words in lowercase. The test does not compile
-	  in the same way as in foma.
-
-2014-02-10 10:28  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  test/tools/hfst.weights.lexc.flag.result,
-	  test/tools/hfst.weights.lexc.result: Lexc weights fixed
-
-2014-02-07 20:53  moshagen
-
-	* tools/src: Ignore generated tool.
-
-2014-02-06 19:05  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/lexc-utils.h, test/tools/Makefile.am,
-	  test/tools/basic.multichar-escaped-zero.lexc.flag.result,
-	  test/tools/basic.multichar-escaped-zero.lexc.result,
-	  test/tools/lexc-compiler-flags-functionality.sh,
-	  test/tools/lexc-compiler-functionality.sh: small lexc bugfix,
-	  tests enabled
-
-2014-02-06 15:28  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Allow underscore in symbols
-	  (couldn't discover a malignant side effect)
-
-2014-02-06 15:03  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: A lot more expressiveness
-	  involving DefFun()
-
-2014-02-06 11:58  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/lexc-parser.yy,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/lexc-utils.h,
-	  test/tools/basic.multichar-escaped-zero.lexc,
-	  test/tools/lexc-compiler-functionality.sh: Fixed #227 hfst-lexc
-	  and multichars with zeros
-
-2014-02-05 14:21  eaxelson
-
-	* configure.ac, test/tools/lexc-compiler-functionality.sh,
-	  tools/src/hfst-lexc-compiler.cc,
-	  tools/src/parsers/XfstCompiler.cc: Made hfst-xfst use foma's
-	  lexc. hfst-lexc-wrapper is enabled by default.
-
-2014-02-05 10:42  eaxelson
-
-	* NSIS/hfst_installer.nsi: Forgot a couple of includes in hfst
-	  installer.
-
-2014-02-05 02:12  mie
-
-	* tools/src/hfst-reweight.cc: Allow tsv input for reweights
-
-2014-02-04 15:11  eaxelson
-
-	* NSIS/AddHfstLibrary.nsi, NSIS/copy_files.sh: Updated NSIS scripts
-	  to revision 3.6.0.
-
-2014-02-04 10:08  eaxelson
-
-	* libhfst/src/Makefile.am: Forgot to update -version-info in
-	  Makefile.am.
-
-2014-01-31 09:32  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.6.0.
-
-2014-01-30 13:22  eaxelson
-
-	* check_installation/morphology_tests/finnish-analyze.output,
-	  check_installation/morphology_tests/finnish-analyze.output.old:
-	  Edited morphology tests so that they agree with changes in
-	  finnish-analyze.sh.
-
-2014-01-30 12:36  eaxelson
-
-	* back-ends/openfst/src/include/fst/accumulator.h,
-	  back-ends/openfst/src/include/fst/arc-map.h,
-	  back-ends/openfst/src/include/fst/compat.h,
-	  back-ends/openfst/src/include/fst/config.h,
-	  back-ends/openfst/src/include/fst/determinize.h,
-	  back-ends/openfst/src/include/fst/encode.h,
-	  back-ends/openfst/src/include/fst/epsnormalize.h,
-	  back-ends/openfst/src/include/fst/equivalent.h,
-	  back-ends/openfst/src/include/fst/factor-weight.h,
-	  back-ends/openfst/src/include/fst/label-reachable.h,
-	  back-ends/openfst/src/include/fst/relabel.h,
-	  back-ends/openfst/src/include/fst/replace-util.h,
-	  back-ends/openfst/src/include/fst/replace.h,
-	  back-ends/openfst/src/include/fst/rmepsilon.h,
-	  back-ends/openfst/src/include/fst/rmfinalepsilon.h,
-	  back-ends/openfst/src/include/fst/slist.h,
-	  back-ends/openfst/src/include/fst/sparse-tuple-weight.h,
-	  back-ends/openfst/src/include/fst/state-map.h,
-	  back-ends/openfst/src/include/fst/symbol-table-ops.h,
-	  back-ends/openfst/src/include/fst/synchronize.h,
-	  back-ends/openfst/src/include/fst/test-properties.h,
-	  back-ends/openfst/src/include/fst/util.h,
-	  back-ends/openfst/src/lib/compat.cc,
-	  back-ends/openfst/src/lib/flags.cc,
-	  back-ends/openfst/src/lib/fst.cc,
-	  back-ends/openfst/src/lib/properties.cc,
-	  back-ends/openfst/src/lib/symbol-table-ops.cc,
-	  back-ends/openfst/src/lib/symbol-table.cc,
-	  back-ends/openfst/src/lib/util.cc, configure.ac,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Now
-	  checking in configure if tr1::unordered:map/set or
-	  std::unordered_map/set is available.
-
-2014-01-29 12:19  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/HfstXeroxRulesTest.cc: Replace rule longest match bug
-	  fix
-
-2014-01-29 11:23  eaxelson
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/help_message.cc, tools/src/parsers/name2cmd.h,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Now hfst-xfst gives better
-	  error messages if a file cannot be opened. Removed h-files from
-	  SOURCES in tagger Makefile because they confuse some compilers on
-	  Mac.
-
-2014-01-28 17:30  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: A preliminary version of
-	  DefFun(args... and Map(fun, @txt...)
-
-2014-01-28 17:06  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/apply_up.output,
-	  tools/src/parsers/xfst-parser.yy: Now apply up/down are done
-	  using HfstBasicTransducer if the transducer is not in optimized
-	  lookup format, which is relatively fast.
-
-2014-01-28 17:04  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: Removed unnecessary comments.
-
-2014-01-28 15:42  eaxelson
-
-	* tools/src/hfst-lookup.cc, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/abbrcmd.h,
-	  tools/src/parsers/help_message.cc, tools/src/parsers/name2cmd.h,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Added prompt '>' to
-	  hfst-lookup, it can be disabled with option --pipe-mode. Added
-	  command 'convert net' to hfst-xfst to convert between optimized
-	  lookup and standard formats. Now also supporting 'apply up' for
-	  optimized lookup transducers.
-
-2014-01-28 10:10  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc: Removed redundant
-	  declaration of SfstTransducer::harmonize that caused an error on
-	  Mac OS.
-
-2014-01-27 13:39  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/define.xfst,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Added command 'load FILENAME'.
-	  Fixes bug #225. Also allowing a ';' after 'define VARNAME'.
-
-2014-01-27 11:01  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/hfst-xfst.cc,
-	  tools/src/parsers/test/define.att,
-	  tools/src/parsers/test/define.xfst,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Now command 'define foo' is
-	  recognized. Fixes bug #224.
-
-2014-01-24 14:49  eaxelson
-
-	* NSIS/AddHfstLibrary.nsi, NSIS/README, NSIS/README.lexc.txt,
-	  NSIS/README.twolc.txt, NSIS/README.xfst.txt, NSIS/copy_files.sh,
-	  NSIS/hfst.bat, NSIS/hfst_installer.nsi,
-	  NSIS/hfst_python_installer.nsi, NSIS/lexc_installer.nsi,
-	  NSIS/twolc_installer.nsi, NSIS/xfst_installer.nsi: Updated NSIS
-	  files.
-
-2014-01-24 08:54  eaxelson
-
-	* check_installation/test-empty-input.sh,
-	  libhfst/src/HfstFlagDiacritics.h,
-	  test/tools/check-flag-results.sh,
-	  test/tools/create-flag-results.sh, test/tools/empty-input.sh,
-	  tools/src/parsers/test/test.sh: Set permissions of flag check
-	  scripts. Fixed some typos in other tests and in flag diacritic
-	  handling (== instead of = in if condition).
-
-2014-01-23 08:19  eaxelson
-
-	* test/tools/hfst-check-environment.sh,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Added hfst-xfst to the environment, help and version checks.
-
-2014-01-22 14:46  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  tools/src/parsers/test/test.sh: Made minor fixes to tests so that
-	  they work correctly on windows and mac too.
-
-2014-01-17 12:57  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/parsers/xre_parse.yy:
-	  Now HfstInputStream constructor throws an exception if file
-	  cannot be opened. This exception is also handled in the regexp
-	  parser.
-
-2014-01-17 10:06  eaxelson
-
-	* NSIS/lexc_installer.nsi, NSIS/xfst_installer.nsi: Fixed program
-	  naming in NSIS installer.
-
-2014-01-16 16:06  eaxelson
-
-	* configure.ac, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/Makefile.am: Added experimental
-	  options --enable-no-tools and --with-openfst-log to configure.
-
-2014-01-16 12:42  eaxelson
-
-	* tools/src/hfst-lexc-compiler.cc: Removed unnecessary warnings
-	  from hfst-lexc.
-
-2014-01-16 10:33  eaxelson
-
-	* configure.ac: Fixed a typo in configure file, extension should be
-	  1, not 0.
-
-2014-01-15 13:55  eaxelson
-
-	* NSIS/MoveFileFolder.nsh, NSIS/hfst_installer.nsi,
-	  NSIS/lexc_installer.nsi, NSIS/twolc_installer.nsi,
-	  NSIS/xfst_installer.nsi: Fixed a couple of bugs in NSIS
-	  installers.
-
-2014-01-15 11:14  eaxelson
-
-	* back-ends/sfst/compact.cc: Now creating a variable length array
-	  dynamically to avoid compilation errors.
-
-2014-01-14 14:34  eaxelson
-
-	* NSIS/AddHfstLibrary.nsi, NSIS/CheckLibraries.nsi,
-	  NSIS/README.hfst.txt, NSIS/README.lexc.txt,
-	  NSIS/README.twolc.txt, NSIS/README.txt, NSIS/README.xfst.txt,
-	  NSIS/hfst.bat, NSIS/hfst_installer.nsi,
-	  NSIS/hfst_python_installer.nsi, NSIS/lexc_installer.nsi,
-	  NSIS/twolc_installer.nsi, NSIS/xfst_installer.nsi: Added more
-	  NSIS files for xfst, lexc and twolc distributions.
-
-2014-01-14 11:53  eaxelson
-
-	* configure.ac, test/tools/Makefile.am,
-	  test/tools/create-flag-results.sh, test/tools/empty-input.sh,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh,
-	  test/tools/lexc-wrapper-functionality.sh, tools/src/Makefile.am,
-	  tools/src/hfst-lexc-wrapper.cc, tools/src/hfst-lexc.cc,
-	  tools/src/parsers/XfstCompiler.cc: Renamed hfst-lexc2fst to
-	  hfst-lexc and hfst-lexc to hfst-lexc-wrapper.
-
-2014-01-13 14:30  eaxelson
-
-	* NSIS/README.txt, NSIS/ReplaceInFile.nsh, NSIS/hfst_installer.nsi:
-	  Updated a couple of NSIS files.
-
-2014-01-10 15:27  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst.cc: Now att format is printed
-	  directly to the console in windows environment.
-
-2014-01-09 14:11  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-file-to-mem.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h,
-	  tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/hfst-xfst.cc,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Updated reading and printing
-	  functionalities based on tests in MinGW environment.
-
-2014-01-08 14:17  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: A more reasonable parse
-	  order for weights and special functions;
-	  fixes various bugs concerning weight placement that should be
-	  legal
-
-2013-12-20 14:16  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Added missing
-	  <stack> include to HfstTransitionGrap.h.
-
-2013-12-18 13:45  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/lexc-utils.h, test/tools/Makefile.am,
-	  test/tools/basic.UTF-8.lexc.flag.result,
-	  test/tools/basic.UTF-8.lexc.result,
-	  test/tools/basic.cat-dog-bird.lexc.flag.result,
-	  test/tools/basic.cat-dog-bird.lexc.result,
-	  test/tools/basic.colons.lexc.flag.result,
-	  test/tools/basic.colons.lexc.result,
-	  test/tools/basic.comments.lexc.flag.result,
-	  test/tools/basic.comments.lexc.result,
-	  test/tools/basic.empty-sides.lexc.flag.result,
-	  test/tools/basic.empty-sides.lexc.result,
-	  test/tools/basic.escapes.lexc.flag.result,
-	  test/tools/basic.escapes.lexc.result,
-	  test/tools/basic.infostrings.lexc.flag.result,
-	  test/tools/basic.infostrings.lexc.result,
-	  test/tools/basic.initial-lexicon-empty.lexc.flag.result,
-	  test/tools/basic.initial-lexicon-empty.lexc.result,
-	  test/tools/basic.lowercase-lexicon-end.lexc.flag.result,
-	  test/tools/basic.lowercase-lexicon-end.lexc.result,
-	  test/tools/basic.multi-entry-lines.lexc.flag.result,
-	  test/tools/basic.multi-entry-lines.lexc.result,
-	  test/tools/basic.multichar-symbols.lexc.flag.result,
-	  test/tools/basic.multichar-symbols.lexc.result,
-	  test/tools/basic.no-Root.lexc.flag.result,
-	  test/tools/basic.no-Root.lexc.result,
-	  test/tools/basic.no-newline-at-end.lexc.flag.result,
-	  test/tools/basic.no-newline-at-end.lexc.result,
-	  test/tools/basic.punctuation.lexc.flag.result,
-	  test/tools/basic.punctuation.lexc.result,
-	  test/tools/basic.root-loop.lexc.flag.result,
-	  test/tools/basic.root-loop.lexc.result,
-	  test/tools/basic.spurious-lexicon.lexc.flag.result,
-	  test/tools/basic.spurious-lexicon.lexc.result,
-	  test/tools/basic.string-pairs.lexc.flag.result,
-	  test/tools/basic.string-pairs.lexc.result,
-	  test/tools/basic.two-lexicons.lexc.flag.result,
-	  test/tools/basic.two-lexicons.lexc.result,
-	  test/tools/basic.zeros-epsilons.lexc.flag.result,
-	  test/tools/basic.zeros-epsilons.lexc.result,
-	  test/tools/check-flag-results.sh,
-	  test/tools/create-flag-results.sh,
-	  test/tools/hfst.weights.lexc.flag.result,
-	  test/tools/hfst.weights.lexc.result,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/pmatch-functionality.sh,
-	  test/tools/xre.any-variations.lexc.flag.result,
-	  test/tools/xre.any-variations.lexc.result,
-	  test/tools/xre.automatic-multichar-symbols.lexc.flag.result,
-	  test/tools/xre.automatic-multichar-symbols.lexc.result,
-	  test/tools/xre.basic.lexc.flag.result,
-	  test/tools/xre.basic.lexc.result,
-	  test/tools/xre.definitions.lexc.flag.result,
-	  test/tools/xre.definitions.lexc.result,
-	  test/tools/xre.months.lexc.flag.result,
-	  test/tools/xre.months.lexc.result,
-	  test/tools/xre.nested-definitions.lexc.flag.result,
-	  test/tools/xre.nested-definitions.lexc.result,
-	  test/tools/xre.numeric-star.lexc.flag.result,
-	  test/tools/xre.numeric-star.lexc.result,
-	  test/tools/xre.quotations.lexc.flag.result,
-	  test/tools/xre.quotations.lexc.result,
-	  test/tools/xre.sharp.lexc.flag.result,
-	  test/tools/xre.sharp.lexc.result,
-	  test/tools/xre.star-plus-optional.lexc.flag.result,
-	  test/tools/xre.star-plus-optional.lexc.result: new lexc2fst, with
-	  tests
-
-2013-12-17 14:52  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc: Fixed a bug in
-	  harmonization, now flag diacritics are not harmonized.
-
-2013-12-16 14:19  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_lex.ll, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-pmatch2fst.cc: Transition to weighted,
-	  prioritizing pmatch; recompilation of rulesets
-	  required at least for now
-
-2013-12-16 13:16  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Removed a line
-	  from HfstTransitionGraph::substitute that printed debugging info
-	  to stderr..
-
-2013-12-13 17:19  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Added function
-	  HfstTransitionGraph & HfstTransitionGraph::(std::map<HfstSymbol,
-	  HfstTransitionGraph> &, bool harmonize)
-
-2013-12-09 11:56  eaxelson
-
-	* test/tools/empty-input.sh, tools/src/hfst-affix-guessify.cc,
-	  tools/src/hfst-compare.cc, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-determinize.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-edit-metadata.cc,
-	  tools/src/hfst-expand-equivalences.cc, tools/src/hfst-format.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-grep.cc,
-	  tools/src/hfst-guess.cc, tools/src/hfst-guessify.cc,
-	  tools/src/hfst-head.cc, tools/src/hfst-info.cc,
-	  tools/src/hfst-invert.cc, tools/src/hfst-lexc-compiler.cc,
-	  tools/src/hfst-lexc.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-minimize.cc, tools/src/hfst-multiply.cc,
-	  tools/src/hfst-name.cc, tools/src/hfst-pair-test.cc,
-	  tools/src/hfst-pmatch2fst.cc, tools/src/hfst-project.cc,
-	  tools/src/hfst-prune-alphabet.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-remove-epsilons.cc,
-	  tools/src/hfst-repeat.cc, tools/src/hfst-reverse.cc,
-	  tools/src/hfst-reweight.cc, tools/src/hfst-shuffle.cc,
-	  tools/src/hfst-split.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-subtract.cc,
-	  tools/src/hfst-summarize.cc,
-	  tools/src/hfst-tagger/src/hfst-build-tagger.cc,
-	  tools/src/hfst-tail.cc, tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-txt2fst.cc: Now standard streams are defined as
-	  binary in command line tools when compiling on windows.
-
-2013-12-04 13:13  eaxelson
-
-	* NSIS/README, NSIS/README.txt, NSIS/copy_files.sh,
-	  NSIS/hfst_installer.nsi, swig/README, swig/setup.py,
-	  tools/src/hfst-tagger/src/hfst-train-tagger.bat,
-	  tools/src/hfst-twolc/src/hfst-twolc.bat: Updated batch, NSIS and
-	  swig scripts for windows.
-
-2013-12-02 09:59  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Support \uXXXX with a
-	  codepoint -> utf-8 generator - this should
-	  probably be shared somewhere
-
-2013-12-02 09:58  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.h: Know about uppercase ẞ
-
-2013-11-27 09:01  eaxelson
-
-	* tools/src/hfst-lexc.cc: Do not warn user about using foma type in
-	  hfst-lexc if they have explicitely requested it with --format
-	  foma.
-
-2013-11-27 08:45  eaxelson
-
-	* NSIS/ReplaceInFile.nsh, NSIS/StrRep.nsh, NSIS/hfst_installer.nsi,
-	  test/tools/lexc-functionality.sh, tools/src/hfst-lexc.cc: Now
-	  hfst-lexc obeys argument --format. Fixes bug #213. Also updated
-	  NSIS scripts.
-
-2013-11-21 14:36  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/hfst-train-tagger.bat,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/hfst-twolc/src/hfst-twolc.bat: Updated NSIS script.
-	  Added hfst-twolc and hfst-train-tagger bat files for windows
-	  compilation.
-
-2013-11-20 12:53  eaxelson
-
-	* libhfst/src/parsers/Makefile.am, test/tools/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Distribution package includes
-	  flex/bison-generated cc and hh files. Make check runs tests only
-	  for those command line tools that are enabled.
-
-2013-11-18 13:52  eaxelson
-
-	* configure.ac: Allowing tagger tools in mingw.
-
-2013-11-18 12:29  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Fixed a bug in xfst_getline,
-	  also added freeing the result from it.
-
-2013-11-14 12:08  eaxelson
-
-	* libhfst/src/parsers/xre_utils.cc: Fixed a memory error in
-	  hfst::xre::parse_quoted noticed during make check on MinGW.
-
-2013-11-13 16:30  moshagen
-
-	* NSIS/copy_files.sh: Corrected something that looks like an
-	  accidental omission.
-
-2013-11-13 13:15  eaxelson
-
-	* NSIS/copy_files.sh, back-ends/foma/Makefile.am,
-	  back-ends/foma/lex.lexc.c, back-ends/foma/lex.yy.c,
-	  libhfst/src/parsers/LexcCompiler.cc: Fixed some bugs noticed
-	  during MinGW compilation: added typedef 'off_t' and compiler
-	  definition '__NO_MINGW_LFS' when mings compilation is enabled,
-	  and escaped percent sign in fprintf as double percent. Also added
-	  tagger tools and hfst-xfst to NSIS installer script.
-
-2013-11-11 13:50  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Allow plain input-output
-	  -replacement with tokenized quoted literals,
-	  like "this":"that"
-
-2013-11-11 13:38  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Some refactoring & warn about
-	  unused definitions
-
-2013-11-11 13:00  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am, swig/libhfst.i: Ready for release 3.5.1.
-
-2013-11-11 09:26  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/lexc-lexer.ll, test/libhfst/test_lexc.lexc:
-	  Applied lexc patch (bug #208).
-
-2013-11-11 08:58  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  tools/src/hfst-lexc-compiler.cc: New lexc, but still incomplete
-
-2013-11-08 14:49  eaxelson
-
-	* test/tools/fsmbook-examples: Removed directory fsmbook-examples
-	  as fsmbook-tests replaces it.
-
-2013-11-08 13:50  eaxelson
-
-	* back-ends/foma/fomalib.h, back-ends/foma/lex.interface.c,
-	  back-ends/foma/lex.lexc.c, back-ends/foma/lexc.l,
-	  back-ends/foma/lexcread.c, configure.ac,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/parsers/pmatch_parse.yy, tools/src/hfst-lexc.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-parser.yy: Now using foma's lexc parser in
-	  hfst-xfst by default. Also using verbosity of hfst-xfst and
-	  tagger tools in lexc parsing. Also added an option
-	  --enable-all-tools in configure.
-
-2013-11-04 18:09  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_utils.cc: Use flex's newline count as
-	  good-enough parsing error indicator
-
-2013-11-04 12:21  hardwick
-
-	* tools/src/hfst-pmatch2fst.cc: Actually fixing that bug this time
-
-2013-11-04 12:03  hardwick
-
-	* tools/src/hfst-pmatch2fst.cc: Fix typo-bug in previous commit
-
-2013-11-04 11:57  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc,
-	  tools/src/hfst-pmatch2fst.cc: Much more verbose printing of time
-	  spent on harmonization and conversion &
-	  a speedup the the process of collecting a unified alphabet
-
-2013-11-01 14:26  eaxelson
-
-	* check_installation/check-morphologies.sh,
-	  check_installation/check-tools.sh,
-	  check_installation/copy-tool-tests.sh: Small fixes to
-	  installation check.
-
-2013-10-31 10:33  eaxelson
-
-	* test/tools/pmatch-functionality.sh,
-	  test/tools/proc-functionality.sh: Removed redundant command 'rm
-	  TMP' from pmatch test. Also removed verbose 'skipping some test
-	  cases' print from proc test, returning a skip value 77 is enough.
-
-2013-10-31 08:38  eaxelson
-
-	* check_installation/test-hfst-xfst.sh: Fixed a typo in test
-	  script.
-
-2013-10-30 11:44  eaxelson
-
-	* check_installation/test-hfst-xfst.sh: Changed temporary
-	  transducer name in test-hfst-xfst so that it does not conflict
-	  with any other transducers used in the tests.
-
-2013-10-30 11:18  eaxelson
-
-	* check_installation/check-tools.sh,
-	  check_installation/make-dist.sh: Skipping pmatch_blanks.txt when
-	  creating binary transducers from att files. Also made
-	  check-tools.sh more verbose. Fixed a typo in make-dist.sh.
-
-2013-10-30 11:16  eaxelson
-
-	* back-ends/sfst/fst.cc: Modified the call to 'nodeindexing' in
-	  SFST::Transducer::store as it seems to leave its argument
-	  unchanged sometimes. Noticed this effect when testing hfst-xfst
-	  and getting a segfault when trying to use a stored transducer.
-
-2013-10-30 11:09  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Added
-	  disjunct_as_tries as a public function of
-	  TropicalWeightTransducer.
-
-2013-10-29 11:26  hardwick
-
-	* Makefile.am: Remove ineffectual AM_LDFLAGS line
-
-2013-10-29 10:09  hardwick
-
-	* Makefile.am: Try setting a toplevel LDFLAGS to standardise to the
-	  standards-compliant
-	  libstdc++
-
-2013-10-29 09:46  hardwick
-
-	* test/tools/Makefile.am, test/tools/pmatch-functionality.sh,
-	  test/tools/pmatch_endtag.txt: A pmatch functionality test
-
-2013-10-29 07:16  hardwick
-
-	* libhfst/src/parsers/PmatchCompiler.cc,
-	  libhfst/src/parsers/PmatchCompiler.h,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h, tools/src/hfst-pmatch2fst.cc:
-	  --flatten and make option passing a bit neater
-
-2013-10-29 06:58  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Add DefIns and make LTR
-	  longest the default RIGHTARROW
-
-2013-10-25 10:40  eaxelson
-
-	* swig/setup.py: Added argument 'extra_link_args' to Extension
-	  constructor. By default it is empty, but when making the debian
-	  package it can be replaced by linker flags that make it use
-	  /usr/lib/ instead of /usr/local/lib/.
-
-2013-10-23 20:48  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Print transducer and function
-	  definitions as string pairs in the way they are defined by the
-	  user.
-
-2013-10-23 20:10  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Made print paths observe
-	  whether obey-flags is set ON or OFF.
-
-2013-10-23 14:04  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-parser.yy: Now transducer names are saved.
-
-2013-10-22 20:42  hardwick
-
-	* tools/src/hfst-pmatch.cc: getline() doesn't return a
-	  newline-terminated string if one can't be found;
-	  in this case we mustn't erase the final character.
-
-2013-10-22 09:54  eaxelson
-
-	* ChangeLog: Updated ChangeLog, maybe after a couple of bug fixes
-	  ready to make the actual release..
-
-2013-10-22 09:25  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Added variable
-	  'print-foma-sigma' to the xfst parser.
-
-2013-10-22 06:11  hardwick
-
-	* test/tools/Makefile.am, test/tools/pmatch2fst-functionality.sh,
-	  test/tools/pmatch_blanks.txt: Add a pmatch2fst functionality test
-	  with a regression test
-
-2013-10-22 05:39  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Fix bug wrt unused networks
-	  were getting erased from their container during
-	  iteration, causing other networks to be skipped
-
-2013-10-21 15:46  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.h: A preliminary "true" negative
-	  context facility
-
-2013-10-21 12:54  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/parsers/XfstCompiler.cc: Transducer definitions are
-	  expanded without calling substitute in xre parser, the new way is
-	  faster and less prone to symbol/alphabet errors. Implemented
-	  'print net NET_NAME' in xfst parser. Allowing variable names that
-	  can be parsed as numbers in xfst parser.
-
-2013-10-18 15:12  moshagen
-
-	* tools/src/parsers: Ignore generated files.
-
-2013-10-18 13:28  moshagen
-
-	* scripts: Ignore generated files.
-
-2013-10-18 10:39  eaxelson
-
-	* ChangeLog, NEWS, configure.ac, libhfst/src/Makefile.am: Ready for
-	  release 3.5.0.
-
-2013-10-17 13:56  eaxelson
-
-	* test/tools/fsmbook-tests/Makefile.am,
-	  tools/src/hfst-commandline.cc, tools/src/lexc-readline-ui.cc:
-	  Added missing files in fsmbook-tests to distribution package.
-	  Edited READLINE conditional in hfst-commandline and
-	  lexc-readline-ui.
-
-2013-10-16 14:50  eaxelson
-
-	* scripts/Makefile.am, test/tools/Makefile.am,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-txt2fst.cc,
-	  tools/src/parsers/Makefile.am, tools/src/parsers/hfst-xfst.cc,
-	  tools/src/parsers/test/Makefile.am: Edited help messages of
-	  hfst-fst2txt, hfst-txt2fst and hfst-xfst. Added missing files to
-	  distribution package.
-
-2013-10-16 08:27  eaxelson
-
-	* back-ends/Makefile.am, configure.ac, scripts/Makefile.am,
-	  scripts/hfst-foma.in, scripts/hfst-xfst.in,
-	  test/tools/fsmbook-tests/test.sh, tools/src/parsers/Makefile.am,
-	  tools/src/parsers/hfst-xfst.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh: Renamed hfst-xfst2fst to
-	  hfst-xfst and hfst-xfst to hfst-foma.
-
-2013-10-15 13:36  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Added variable harmonize-flags
-	  to xfst parser. A warning message is printed when composing
-	  transducers with flag diacritics if verbose in ON and
-	  harmonize-flags is OFF.
-
-2013-10-15 12:40  eaxelson
-
-	* configure.ac, libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/tools/Makefile.am, test/tools/cat.prolog,
-	  test/tools/fst2txt-functionality.sh,
-	  test/tools/txt2fst-functionality.sh, tools/src/hfst-fst2txt.cc,
-	  tools/src/parsers/XfstCompiler.cc: Added missing variable
-	  'print-weights' to the XfstCompiler constructor with impl
-	  argument. Added support for prolog format to hfst-fst2txt and a
-	  simple prolog test. Fixed a typo in configure.ac. Removed
-	  unnecessary commented text from HfstTransitionGraph.h.
-
-2013-10-14 15:12  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Added support
-	  for weights when reading of writing in prolog format.
-
-2013-10-14 10:47  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Edited xre warning messages.
-
-2013-10-14 10:16  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Added a boolean argument
-	  'increment' to function 'set_final_weights' which defines whether
-	  existing weights are summed with the new weight or overwritten,
-	  the default being overwritten for backwards compatibility. Also
-	  added warning messages about hfst-special symbols of form
-	  '@_.*_@' to the xre parser that are printed in verbose mode. Also
-	  added support for negative weights in xre parser.
-
-2013-10-10 12:56  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Fix compilation time output
-	  at hundredth-of-a-second precision
-
-2013-10-10 12:49  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Make --verbose output
-	  somewhat neater
-
-2013-10-10 12:33  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Time individual compilations
-
-2013-10-10 10:34  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: More fine-grained
-	  information in --verbose
-
-2013-10-10 10:03  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h, tools/src/hfst-regexp2fst.cc:
-	  Added option --harmonize-flags to hfst-regex2fst. Also added a
-	  function 'set_harmonize_flags' to the xre parser.
-
-2013-10-10 10:01  eaxelson
-
-	* test/tools/fsmbook-tests/expected-results/DateParser.prolog,
-	  test/tools/fsmbook-tests/test.sh: Using result from foma in
-	  DateParser test.
-
-2013-10-10 10:00  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/angle_brackets.att,
-	  tools/src/parsers/test/angle_brackets.xfst,
-	  tools/src/parsers/test/test.sh: Added angle bracket test for
-	  hfst-xfst2fst. Omitting it until we decide how symbols enclosed
-	  in alngle brackets should be handled.
-
-2013-10-10 08:58  moshagen
-
-	* test/tools/fsmbook-tests: Ignore generated files.
-
-2013-10-09 18:50  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Fix some problems wrt
-	  ?-expansion and symbol tables in RTN:d networks
-	  that have to be aware of each other. Also use dark, forbidden
-	  symbol
-	  magicks to prevent special markers in RTNs from being clobbered
-	  in this process.
-
-2013-10-09 18:48  hardwick
-
-	* libhfst/src/HfstTransducer.h: Make harmonize() a public member
-	  function (this changes the interface)!
-	  
-	  It has transpired that application programming in some situations
-	  requires
-	  awareness of symbols at this level, so it seems necessary to make
-	  harmonize() public. If this is considered to be a bad thing,
-	  it could perhaps be wrapped in some other way.
-
-2013-10-08 13:54  eaxelson
-
-	* libhfst/src/parsers/lexc-parser.yy,
-	  test/tools/fsmbook-tests/test.sh: Now lexc parser can handle
-	  epsilon '0' correctly.
-
-2013-10-08 13:12  eaxelson
-
-	* test/tools/fsmbook-tests/expected-results/EsperantoAdjectives.prolog,
-	  test/tools/fsmbook-tests/expected-results/EsperantoNouns.prolog,
-	  test/tools/fsmbook-tests/expected-results/EsperantoNounsAdjectivesAndVerbs.prolog,
-	  test/tools/fsmbook-tests/expected-results/EsperantoNounsAndAdjectives.prolog,
-	  test/tools/fsmbook-tests/expected-results/EsperantoNounsAndAdjectivesWithTags.prolog,
-	  test/tools/fsmbook-tests/test.sh,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-parser.yy: Fixed a bug in xfst parser, now
-	  semicolon is allowed after 'read lexc <filename>' command and
-	  verbosity of the xfst parser is also used when parsing a lexc
-	  file. Also added expected results for fsmbook Esperanto tests.
-
-2013-10-08 10:16  eaxelson
-
-	* configure.ac, test/tools/fsmbook-tests/expected-results,
-	  test/tools/fsmbook-tests/expected-results/BetterColaMachine.prolog,
-	  test/tools/fsmbook-tests/expected-results/BrazilianPortuguese1.prolog,
-	  test/tools/fsmbook-tests/expected-results/BrazilianPortuguese2.prolog,
-	  test/tools/fsmbook-tests/expected-results/DateParser.prolog,
-	  test/tools/fsmbook-tests/expected-results/EinsteinsPuzzle.prolog,
-	  test/tools/fsmbook-tests/expected-results/EnglishNumerals.prolog,
-	  test/tools/fsmbook-tests/expected-results/FinnishOTProsody.prolog,
-	  test/tools/fsmbook-tests/expected-results/Lingala.prolog,
-	  test/tools/fsmbook-tests/expected-results/MonishAnalysis.prolog,
-	  test/tools/fsmbook-tests/expected-results/MonishGuesserAnalyzer.prolog,
-	  test/tools/fsmbook-tests/expected-results/NumbersToNumerals.prolog,
-	  test/tools/fsmbook-tests/expected-results/PlusOrMinus.prolog,
-	  test/tools/fsmbook-tests/expected-results/YaleShooting.prolog,
-	  test/tools/fsmbook-tests/hfst-scripts/DateParser.hfst.script,
-	  test/tools/fsmbook-tests/test.sh: Updated fsmbook tests so that
-	  they use ready-compiled xfst/foma results given in prolog format.
-	  Also fixed a typo in DateParser hfst script. Also checking that
-	  fsmbook-tests and xfst2fst are both enabled in configuration.
-
-2013-10-08 08:50  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  test/tools/fsmbook-tests/test.sh,
-	  tools/src/parsers/test/quoted_literals.att: Fixed a bug in quoted
-	  literals, now ["foo""bar"] is parsed as in xfst: ["foo" "bar"].
-	  Also using foma instead of xfst in fsmbook-tests when compiling
-	  Lingala because different interpretations of symbols enclosed in
-	  square brackets.
-
-2013-10-07 08:43  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  Now xre parser handles "[.#." and ".#.]", interpreting them as "[
-	  .#." and ".#. ]".
-
-2013-10-01 13:16  eaxelson
-
-	* back-ends/foma/Makefile.am, back-ends/foma/fomalib.h,
-	  back-ends/foma/iface.c, back-ends/foma/io.c, configure.ac,
-	  scripts/Makefile.am: Removed unnecessary zlib dependencies.
-
-2013-10-01 11:28  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/HfstXeroxRulesTest.cc: Updated cross product and
-	  apply boundary mark in replace rules.
-
-2013-10-01 10:58  eaxelson
-
-	* tools/src/hfst-scanner.ll: Changed include of hfst-scanner.h to
-	  hfst-scanner.hh.
-
-2013-10-01 10:35  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-lexer.ll, tools/src/parsers/xfst-utils.cc:
-	  Changed include of xfst-parser.h to xfst-parser.hh
-
-2013-09-27 17:58  eaxelson
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Changed
-	  PmatchUtilityTransducers variable utils into a pointer and added
-	  a function get_utils() to avoid variable initialization issues.
-
-2013-09-27 08:03  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstSymbolDefs.cc,
-	  libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: Reverted INTERNAL_EPSILON
-	  etc to internal_epsilon..
-
-2013-09-26 18:27  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Pop the
-	  local state stack too when exiting rtn calls
-
-2013-09-26 14:42  eaxelson
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: Changed internal_epsilon etc
-	  to INTERNAL_EPSILON also in pamtch utilities.
-
-2013-09-26 14:18  eaxelson
-
-	* test/tools/fsmbook-tests/test.sh: Use xfst instead of my local
-	  copy of it..
-
-2013-09-26 14:02  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstSymbolDefs.cc,
-	  libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Now
-	  using macro INTERNAL_EPSILON etc instead of string
-	  internal_epsilon to avoid variable initialization issues (noticed
-	  on cygwin).
-
-2013-09-25 13:53  eaxelson
-
-	* configure.ac, test/tools/Makefile.am,
-	  test/tools/fsmbook-tests/Makefile.am,
-	  test/tools/fsmbook-tests/test.sh, tools/src/Makefile.am,
-	  tools/src/parsers/test/Makefile.am: Now fsmbook and hfst-xfst2fst
-	  tests should work correctly whether they are enabled or not.
-
-2013-09-25 13:20  eaxelson
-
-	* tools/src/Makefile.am: Added condition WANT_XFST2FST to
-	  tools/src/Makefile.am. If it's true, directory parsers is
-	  included.
-
-2013-09-24 16:15  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Make parser even more messy
-	  by having bodyless tagging contexts at the
-	  toplevel - for now
-
-2013-09-24 14:23  eaxelson
-
-	* test/tools/fsmbook-tests/Makefile.am: Added missing file.
-
-2013-09-24 14:06  eaxelson
-
-	* README, configure.ac, scripts/generate-cc-files.sh,
-	  scripts/h2hh.sh, test/tools/Makefile.am,
-	  test/tools/fsmbook-tests/test.sh: Now using directory
-	  fsmbook-tests instead of the old fsmbook-examples. Renamed
-	  h2hh.sh script to generate-cc-files.sh.
-
-2013-09-24 14:02  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Roll back broken
-	  empty-bodied contexts for now
-
-2013-09-24 13:16  eaxelson
-
-	* README, configure.ac, libhfst/src/parsers/Makefile.am,
-	  scripts/h2hh.sh, scripts/multiple_targets.sh,
-	  tools/src/Makefile.am, tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Removed the HH_EXTENSION_USED
-	  conditional from configure and makefiles since it didn't work.
-	  Now assuming that the flex/bison-generated header files have the
-	  extension hh. If this is not the case, the script scripts/h2hh.sh
-	  should be run between configure and make.
-
-2013-09-23 14:25  eaxelson
-
-	* scripts/multiple_targets.sh: Added a script for cygwin
-	  compilation.
-
-2013-09-23 12:45  eaxelson
-
-	* back-ends/foma/iface.c, back-ends/foma/io.c, scripts/h2hh.sh:
-	  Edited ifdef conditionals based on warnings when compiling on
-	  cygwin. Also added a script for handling errors in flex/bison
-	  header file naming.
-
-2013-09-20 07:46  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: HfstTransducer::cross_product
-	  should expand ?:? transitions to ?:?|?, added this but inside
-	  comments until a bug in xerox rule compilation is fixed.
-
-2013-09-20 07:41  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/Lingala.hfst.script,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-scripts/BrazilianPortuguese2.xfst.script:
-	  Fixed a couple of typos.
-
-2013-09-20 07:29  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/quoted_literals.att,
-	  tools/src/parsers/test/quoted_literals.xfst,
-	  tools/src/parsers/test/replace_identity.att,
-	  tools/src/parsers/test/replace_identity.xfst,
-	  tools/src/parsers/test/test.sh: Added more tests to the xfst
-	  parser.
-
-2013-09-19 15:43  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc: Finally full support for quoted
-	  literals in xre parser.
-
-2013-09-19 11:42  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  Tentatively adding quoted literals in xre parsing, this time step
-	  by step..
-
-2013-09-19 10:55  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll: Trying again to make quoted
-	  literals work better in xre parser..
-
-2013-09-19 09:23  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Reverted recent changes to xre
-	  parser, noticed bugs in hfst-regexp2fst..
-
-2013-09-19 08:33  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Symbols that contain quoted
-	  literals supported in xre parser.
-
-2013-09-18 15:19  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Better support for quoted
-	  literals in xre parser.
-
-2013-09-18 12:24  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll: Now allowing '0' in symbol names.
-
-2013-09-18 09:07  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Give verbose information
-	  about networks while parsing
-
-2013-09-17 18:27  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h, tools/src/hfst-pmatch.cc:
-	  Merge from devbranch
-
-2013-09-17 11:53  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.h: Added cstdio header, it isn't
-	  included in cygwin.
-
-2013-09-13 10:47  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h:
-	  Dynamically allocate input tapes in case of overlong input -
-	  in case of insufficient memory, truncate overlong lines.
-
-2013-09-13 10:12  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Don't
-	  attempt to find regular arcs with symbols newly discovered from
-	  input.
-
-2013-09-12 09:11  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh,
-	  test/tools/proc-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh,
-	  tools/src/hfst-compare.cc: Added option --eliminate-flags to
-	  hfst-compare. Commented debug info printing from LexcCompiler
-	  that polluted its output. Edited command line tool tests
-	  accordingly.
-
-2013-09-11 14:42  eaxelson
-
-	* libhfst/src/HfstOutputStream.cc: Fixed a bug in calling
-	  FomaOutputStream.
-
-2013-09-11 12:15  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Added variable print-weight
-	  (default NO).
-
-2013-09-11 10:09  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/parsers/xre_lex.ll, tools/src/hfst-regexp2fst.cc,
-	  tools/src/parsers/test/test.sh: Added examples to hfst-regexp2fst
-	  help message. Now xre parser accepts also semicolon and one or
-	  more spaces as weight separator. Moved flag handling from
-	  FomaTransducer to HfstTransducer as it does not depend on foma
-	  backend.
-
-2013-09-11 07:48  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Restore
-	  tape state after processing rtns; this should fix leftmost
-	  greediness bugs wrt rtns.
-	  Also: do some checking and print errors in case of broken tags
-	  instead of
-	  hard crashing.
-
-2013-09-10 12:29  eaxelson
-
-	* test/tools/compare-functionality.sh,
-	  test/tools/compose-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/fst2txt-functionality.sh,
-	  test/tools/head-functionality.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/lookup-functionality.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/prune-alphabet-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/strings2fst-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/summarize-functionality.sh,
-	  test/tools/tail-functionality.sh,
-	  test/tools/txt2fst-functionality.sh: Now make check passes also
-	  when some of the back-ends is disabled.
-
-2013-09-10 10:21  eaxelson
-
-	* libhfst/src/HfstOutputStream.cc: Output symbol tables were
-	  missing when writing transducers in native OpenFst binary format.
-	  This is now fixed.
-
-2013-09-09 12:41  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc: Cosmetic changes to Xerox rules
-
-2013-09-09 09:58  eaxelson
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-summarize.cc: Removed HH_EXTENSION_USED
-	  conditional from configure as it still fails on some platforms.
-	  Added function HfstTransducer::get_first_input_symbols and using
-	  it in hfst-summarize.
-
-2013-09-06 08:18  eaxelson
-
-	* ChangeLog, NEWS, configure.ac, libhfst/src/Makefile.am,
-	  tools/src/Makefile.am: Ready for release 3.4.6.
-
-2013-09-05 13:57  eaxelson
-
-	* tools/src/parsers/xfst-lexer.ll: Now empty comments starting with
-	  one or more exclamation marks are also parsed right.
-
-2013-09-05 11:58  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-scripts/BrazilianPortuguese2.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/NumbersToNumerals.xfst.script,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-lexer.ll: Fixed errors noticed during
-	  hfst-xfst2fst tests.
-
-2013-09-04 19:13  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: One more special symbol
-	  spelling to rectify...
-
-2013-09-04 12:53  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-scripts/DateParser.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/PlusOrMinus.xfst.script:
-	  Fixed a bug in fsmbook tests.
-
-2013-09-04 12:03  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.h: Forgot to make context
-	  markers non-special too!
-
-2013-09-04 10:40  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.h: Add a couple of useful
-	  combining accents
-
-2013-09-04 10:39  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Use (faster) string
-	  disjunction instead of full disjunction for word lists
-
-2013-09-04 10:07  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: Make only TOP, networks with
-	  EndTag() and networks with Ins() get the special
-	  @PMATCH_ENTRY@ etc. delimiters. This should make various
-	  operations on
-	  networks that don't use these features work.
-
-2013-08-30 13:26  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/Palindromes.hfst.script,
-	  test/tools/fsmbook-tests/lexicon,
-	  test/tools/fsmbook-tests/lexicon/english_lexicon.txt: Added
-	  missing file.
-
-2013-08-30 13:05  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Now allowing
-	  several prolog networks in one file, separated by empty lines.
-
-2013-08-30 10:38  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/DateParser.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-scripts/DateParser.xfst.script:
-	  Added tests to fsmbook test set.
-
-2013-08-29 13:37  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/EinsteinsPuzzle.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/Palindromes.hfst.script,
-	  test/tools/fsmbook-tests/test.sh: Now Palindroms test works.
-
-2013-08-29 11:55  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/EsperantoAdjectives.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNouns.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAdjectivesAndVerbs.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAndAdjectivesWithTags.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-scripts/EsperantoAdjectives.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EsperantoNouns.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EsperantoNounsAdjectivesAndVerbs.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EsperantoNounsAndAdjectives.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EsperantoNounsAndAdjectivesWithTags.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/PlusOrMinus.xfst.script:
-	  Fsmbook test Esperanto is now divided in several script files.
-
-2013-08-28 14:01  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/tools/fsmbook-tests/hfst-scripts/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/Palindromes.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/YaleShooting.hfst.script,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-prolog-to-hfst-att.sh,
-	  test/tools/fsmbook-tests/xfst-scripts/BetterColaMachine.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/BrazilianPortuguese1.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/BrazilianPortuguese2.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/DateParser.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EinsteinsPuzzle.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EnglishNumerals.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/FinnishOTProsody.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/Lingala.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/MonishAnalysis.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/MonishGuesserAnalyzer.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/NumbersToNumerals.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/YaleShooting.xfst.script,
-	  tools/src/hfst-txt2fst.cc: Now using prolog format to convert
-	  between transducer formats in fsmbook tests. Also added the
-	  option --prolog to hfst-txt2fst and fixed a small bug in prolog
-	  parsing in HfstTransitionGraph::read_in_prolog_format.
-
-2013-08-28 08:15  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/BrazilianPortuguese1.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/BrazilianPortuguese2.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EinsteinsPuzzle.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoAdjectives.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNouns.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAdjectivesAndVerbs.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAndAdjectivesWithTags.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/Lingala.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/MonishAnalysis.hfst.script:
-	  Remove generated files in hfst scripts.
-
-2013-08-28 07:22  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Correct internal endtag
-	  format in utils too
-
-2013-08-28 06:50  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Endtags
-	  look like @PMATCH_ENDTAG_foo@, not @PMATCH_ENDTAGfoo@
-
-2013-08-27 13:49  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/BrazilianPortuguese1.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/BrazilianPortuguese2.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/DateParser.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/Lingala.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/YaleShooting.hfst.script,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-att-to-hfst-att.sh,
-	  test/tools/fsmbook-tests/xfst-prolog-to-hfst-att.sh,
-	  test/tools/fsmbook-tests/xfst-scripts/DateParser.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/FinnishOTProsody.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/Lingala.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/YaleShooting.xfst.script:
-	  Fixed a couple of bugs.
-
-2013-08-27 11:25  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Correct typo that was
-	  suppressing the functioning of CATENATE_N
-
-2013-08-27 10:59  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: Rename internal symbols not
-	  to match is_special_symbol() to let them
-	  pass through eg. composition operations
-
-2013-08-27 10:52  eaxelson
-
-	* test/tools/fsmbook-examples/test-foma.sh,
-	  test/tools/fsmbook-tests, test/tools/fsmbook-tests/hfst-scripts,
-	  test/tools/fsmbook-tests/hfst-scripts/BetterColaMachine.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/BrazilianPortuguese1.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/BrazilianPortuguese2.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/DateParser.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EinsteinsPuzzle.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoAdjectives.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNouns.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAdjectivesAndVerbs.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAndAdjectivesWithTags.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/Lingala.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/Palindromes.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/YaleShooting.hfst.script,
-	  test/tools/fsmbook-tests/lexc-files,
-	  test/tools/fsmbook-tests/lexc-files/EsperantoAdjectives.lexc,
-	  test/tools/fsmbook-tests/lexc-files/EsperantoNouns.lexc,
-	  test/tools/fsmbook-tests/lexc-files/EsperantoNounsAdjectivesAndVerbs.lexc,
-	  test/tools/fsmbook-tests/lexc-files/EsperantoNounsAndAdjectives.lexc,
-	  test/tools/fsmbook-tests/lexc-files/EsperantoNounsAndAdjectivesWithTags.lexc,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-scripts,
-	  test/tools/fsmbook-tests/xfst-scripts/BetterColaMachine.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/BrazilianPortuguese1.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/BrazilianPortuguese2.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/DateParser.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EinsteinsPuzzle.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EnglishNumerals.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/FinnishOTProsody.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/Lingala.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/MonishAnalysis.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/MonishGuesserAnalyzer.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/NumbersToNumerals.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/PlusOrMinus.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/YaleShooting.xfst.script:
-	  Added tentatively directory fsmbook-tests which will replace the
-	  directory fsmbook-examples.
-
-2013-08-27 10:45  eaxelson
-
-	* tools/src/parsers/xfst-parser.yy: Added the variant 'write att
-	  outfile isymfile osymfile' of 'write att' to the xfst parser.
-
-2013-08-26 19:13  hardwick
-
-	* configure.ac: A hopefully working test for HH_EXTENSION_USED -
-	  unfortunately it appears
-	  that automake lines not in a make target are included regardless
-
-2013-08-26 18:54  hardwick
-
-	* libhfst/src/parsers/Makefile.am: Eliminate else branch
-
-2013-08-26 18:41  hardwick
-
-	* configure.ac: A better value for the HH_EXTENSION_USED variable?
-
-2013-08-26 14:19  hardwick
-
-	* libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Eliminate references to .h targets
-	  when HH_EXTENSION_USED is unset,
-	  which was perhaps bothering automakes >=1.12
-
-2013-08-26 11:23  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: A (more)
-	  correct understanding of IDENTITY.
-
-2013-08-26 09:57  moshagen
-
-	* libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Switched the *.h - *.hh dependency
-	  around, from *.hh: *.h, to *.h: *.hh. This seems to have fixed
-	  the *.hh build issues on MacOSX. I have no idea whether this will
-	  work or break (on) other systems. Please test!
-
-2013-08-24 11:43  hardwick
-
-	* libhfst/src/parsers/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am: Some systems need to be
-	  told that .ll files depend on .hh files so things get
-	  generated in the right order
-
-2013-08-22 11:01  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/at_pl.att,
-	  tools/src/parsers/test/at_pl.xfst,
-	  tools/src/parsers/test/network.prolog,
-	  tools/src/parsers/test/test.sh: Added '@pl' operator to the xre
-	  parser. Testing it with hfst-xfst.
-
-2013-08-22 07:04  eaxelson
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Fixed the h/hh issue once again,
-	  now trying to copy instead of linking. Also added assertions when
-	  converting from sfst to basic transducer format.
-
-2013-08-21 21:48  moshagen
-
-	* libhfst/src/parsers/Makefile.am: Removed redundant filenames,
-	  added whitespace.
-
-2013-08-21 21:13  moshagen
-
-	* tools/src/hfst-twolc/src/Makefile.am: Changing the BUILT_SOURCES
-	  to list the cc files instead of the hh files seems to fix the
-	  header file issues for twolc.
-
-2013-08-21 09:53  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Some
-	  support for identity transitions
-
-2013-08-21 09:46  eaxelson
-
-	* libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTokenizer.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/HfstStrings2FstTokenizer.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/at_stxt.att,
-	  tools/src/parsers/test/at_stxt.xfst,
-	  tools/src/parsers/test/at_txt.att,
-	  tools/src/parsers/test/at_txt.xfst,
-	  tools/src/parsers/test/at_txt_and_stxt.att,
-	  tools/src/parsers/test/at_txt_and_stxt.xfst,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/words.stxt,
-	  tools/src/parsers/test/words.txt: Implemented '@txt' and '@stxt'
-	  operators in xre parser. Also testing them through the xfst
-	  parser.
-
-2013-08-21 08:50  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Make
-	  the alphabet know about IDENTITY
-
-2013-08-21 08:30  hardwick
-
-	* libhfst/src/parsers/Makefile.am: Uncomprehendingly fill in the
-	  blanks for the LEXC_BUILT target
-
-2013-08-21 05:24  hardwick
-
-	* libhfst/src/HfstTransducer.cc: When composing incompatible types,
-	  instead of throwing an exception,
-	  convert the latter type to the former for composition (as per
-	  hfst-compose's message).
-
-2013-08-21 05:22  hardwick
-
-	* tools/src/Makefile.am: --force symlink to .h/.hh target
-
-2013-08-20 13:16  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Add combining accents to the
-	  end of the capitalizing and lowercase-ifying
-	  utility transducers.
-	  Also more aggressive minimize utility transducers.
-
-2013-08-20 09:47  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Character constants like
-	  \xNN are two hexadecimal numbers, not decimal
-
-2013-08-20 09:39  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll: Allow escaped quotes on quoted
-	  literals
-
-2013-08-20 08:55  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/a2b.re,
-	  tools/src/parsers/test/at_re_1.att,
-	  tools/src/parsers/test/at_re_1.xfst,
-	  tools/src/parsers/test/at_re_2.att,
-	  tools/src/parsers/test/at_re_2.xfst,
-	  tools/src/parsers/test/at_re_3.att,
-	  tools/src/parsers/test/at_re_3.xfst,
-	  tools/src/parsers/test/at_re_a2b.re,
-	  tools/src/parsers/test/test.sh: Implemented '@re' operation in
-	  xre parser. Added test cases for it in the regexp parser tests.
-
-2013-08-19 18:10  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Fix bug
-	  with input tape initialization in certain circumstances.
-	  
-	  When boundary is NO_SYMBOL and input has length 0, we can't use
-	  a loop for finding the true beginning of the tape. This was
-	  causing
-	  segfaults and nasty garbled state for the input tape.
-
-2013-08-16 13:13  eaxelson
-
-	* libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Changed rm -f to ln -s in the
-	  Makefiles when handling the h/hh rules.
-
-2013-08-16 10:19  hardwick
-
-	* tools/src/parsers/Makefile.am: ln instead of mv in .h/.hh rule
-
-2013-08-16 10:09  hardwick
-
-	* tools/src/parsers/Makefile.am: Check for .h/.hh yacc convention
-	  and mv accordingly
-
-2013-08-14 14:08  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Made some modifications to the
-	  xfst print format, removed comments from xfst compiler.
-
-2013-08-14 09:53  eaxelson
-
-	* tools/src/parsers/test/substitute_label_1.att,
-	  tools/src/parsers/test/substitute_label_1.xfst,
-	  tools/src/parsers/test/substitute_label_2.att,
-	  tools/src/parsers/test/substitute_label_2.xfst,
-	  tools/src/parsers/test/substitute_label_3.att,
-	  tools/src/parsers/test/substitute_label_3.xfst,
-	  tools/src/parsers/test/substitute_label_4.att,
-	  tools/src/parsers/test/substitute_label_4.xfst,
-	  tools/src/parsers/test/substitute_label_5.att,
-	  tools/src/parsers/test/substitute_label_5.xfst,
-	  tools/src/parsers/test/substitute_label_6.att,
-	  tools/src/parsers/test/substitute_label_6.xfst,
-	  tools/src/parsers/test/substitute_label_7.att,
-	  tools/src/parsers/test/substitute_label_7.xfst: Added missing
-	  files.
-
-2013-08-13 13:33  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/substitute_defined_1.att,
-	  tools/src/parsers/test/substitute_defined_1.xfst,
-	  tools/src/parsers/test/substitute_defined_2.att,
-	  tools/src/parsers/test/substitute_defined_2.xfst,
-	  tools/src/parsers/test/substitute_defined_3.att,
-	  tools/src/parsers/test/substitute_defined_3.xfst,
-	  tools/src/parsers/test/substitute_defined_4.att,
-	  tools/src/parsers/test/substitute_defined_4.xfst,
-	  tools/src/parsers/test/substitute_defined_5.att,
-	  tools/src/parsers/test/substitute_defined_5.xfst,
-	  tools/src/parsers/test/substitute_defined_6.att,
-	  tools/src/parsers/test/substitute_defined_6.xfst,
-	  tools/src/parsers/test/test.sh: Added substitute defined tests to
-	  xfst parser.
-
-2013-08-13 12:22  sdrobac
-
-	* libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am: Added -f to mv header files
-
-2013-08-13 09:36  eaxelson
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/test.sh: Fixed a bug in converting an
-	  empty foma transducer into an HfstBasicTransducer.
-
-2013-08-12 15:10  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/substitute_label.att,
-	  tools/src/parsers/test/substitute_label.xfst,
-	  tools/src/parsers/test/substitute_label_8.att,
-	  tools/src/parsers/test/substitute_label_8.xfst,
-	  tools/src/parsers/test/test.sh: Added more substitute tests for
-	  xfst parser and fixed some issues with alphabet in substitution
-	  functions.
-
-2013-08-12 13:19  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Fixes bug
-	  with Ins()erted transducers named "name"
-
-2013-08-12 13:12  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Add toplevel delimiters (in
-	  addition to ones associated with EndTags).
-	  Fixes a bug when endtags aren't used but insertions are.
-
-2013-08-12 12:27  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: ToLower, ToUpper and OptCap
-	  made (more) compatible with Karttunen's pmatch
-
-2013-08-12 11:41  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc: Fixed bug in
-	  LexcCompiler.cc, one that was causing wrong compilation of
-	  noflags in cases when there were only identities in lexicon
-
-2013-08-12 10:16  eaxelson
-
-	* tools/src/parsers/test/substitute_symbol.att: Forgot to remove
-	  old test file.
-
-2013-08-12 10:15  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/substitute_symbol.xfst,
-	  tools/src/parsers/test/substitute_symbol_1.att,
-	  tools/src/parsers/test/substitute_symbol_1.xfst,
-	  tools/src/parsers/test/substitute_symbol_2.att,
-	  tools/src/parsers/test/substitute_symbol_2.xfst,
-	  tools/src/parsers/test/substitute_symbol_3.att,
-	  tools/src/parsers/test/substitute_symbol_3.xfst,
-	  tools/src/parsers/test/substitute_symbol_4.att,
-	  tools/src/parsers/test/substitute_symbol_4.xfst,
-	  tools/src/parsers/test/substitute_symbol_5.att,
-	  tools/src/parsers/test/substitute_symbol_5.xfst,
-	  tools/src/parsers/test/substitute_symbol_6.att,
-	  tools/src/parsers/test/substitute_symbol_6.xfst,
-	  tools/src/parsers/test/test.sh: Divided xfst substitute tests to
-	  several files. Fixed a bug in printing unknowns in xfst format.
-
-2013-08-12 08:45  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/substitute_symbol.xfst,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy,
-	  tools/src/parsers/xfst-utils.cc, tools/src/parsers/xfst-utils.h:
-	  Now allowing more variable names.
-
-2013-08-08 14:32  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/substitute_defined.xfst,
-	  tools/src/parsers/test/substitute_label.att,
-	  tools/src/parsers/test/substitute_label.xfst,
-	  tools/src/parsers/test/substitute_symbol.xfst,
-	  tools/src/parsers/test/test.sh: Now substituting symbol with
-	  symbols(s) removes the original symbol from the alphabet.
-
-2013-08-08 09:25  eaxelson
-
-	* libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/substitute_symbol.att,
-	  tools/src/parsers/test/substitute_symbol.xfst: Fixed a bug in xre
-	  substitution: disabled harmonization that caused unknown symbols
-	  to be expanded to temporary variables.
-
-2013-08-07 09:11  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/LexcCompiler.cc: Minor changes to lexc2fst
-	  and xfst rules
-
-2013-08-06 13:35  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Not substituting a symbol pair
-	  with an empty set of symbols removes the transitions equivalent
-	  to the symbol pair.
-
-2013-08-06 11:36  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/substitute_label.att,
-	  tools/src/parsers/test/substitute_label.xfst,
-	  tools/src/parsers/test/substitute_symbol.att,
-	  tools/src/parsers/test/substitute_symbol.xfst,
-	  tools/src/parsers/test/test.sh: Added tests for substitute
-	  functionalities.
-
-2013-08-06 09:29  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/substitute_defined.att,
-	  tools/src/parsers/test/substitute_defined.xfst,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-parser.yy:
-	  Added 'substitute defined' to the xfst parser.
-
-2013-08-05 12:55  eaxelson
-
-	* configure.ac, libhfst/src/parsers/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-twolc/src/Makefile.am: Now
-	  configure checks the version of automake and renames the header
-	  files generated by flex, if needed.
-
-2013-08-05 10:19  eaxelson
-
-	* libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am: Now 'make clean' removes
-	  also files generated by flex/bison.
-
-2013-07-22 17:18  spectre360
-
-	* tools/src/hfst-proc/hfst-proc.cc: capitalisation modes: last on
-	  wins
-
-2013-07-22 13:44  spectre360
-
-	* tools/src/hfst-proc/hfst-proc.cc: update
-
-2013-06-20 11:41  eaxelson
-
-	* tools/src/parsers/test/test.sh: Oops, forgot to exclude xfst
-	  testing from make check..
-
-2013-06-20 11:40  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Added documentation.
-
-2013-06-20 10:23  eaxelson
-
-	* tools/src/parsers/xfst-lexer.ll: Now most of the keywords are
-	  interpreted as such unless they are at the beginning of the line.
-
-2013-06-19 11:29  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/test/test.sh,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Added substitute
-	  functionalities to xfst parser.
-
-2013-06-18 13:47  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Added function
-	  'remove_from_alphabet' to HfstTransitionGraph.
-
-2013-06-17 14:18  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/cmd.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/assert.xfst,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Added command 'assert' to xfst
-	  parser.
-
-2013-06-17 13:15  eaxelson
-
-	* tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/abbrcmd.h, tools/src/parsers/cmd.h,
-	  tools/src/parsers/hfst-xfst2fst.cc: Now all commands are given by
-	  tab if readline is used.
-
-2013-06-17 10:55  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/prolog.att,
-	  tools/src/parsers/test/prolog.xfst,
-	  tools/src/parsers/test/test.sh: Added tests for writing and
-	  reading prolog files in hfst-xfst2fst. Also fixed a small typo in
-	  writing in prolog format.
-
-2013-06-14 13:56  eaxelson
-
-	* back-ends/foma/Makefile.am, back-ends/foma/foma.c,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/hfst-xfst2fst.cc: Removed implicit readline
-	  requirements from hfst-xfst.cc and foma.c. Also edited prolog
-	  functions in HfstTransitionGraph.h.
-
-2013-06-13 13:58  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-parser.yy,
-	  tools/src/parsers/xfst-utils.cc, tools/src/parsers/xfst-utils.h:
-	  Now reading and writing in prolog format works. Also addded some
-	  exceptions for prolog handling.
-
-2013-06-12 13:30  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/help_message.cc,
-	  tools/src/parsers/xfst-parser.yy: Added prolog printing functions
-	  to HfstTransitionGraph.
-
-2013-06-12 13:04  spectre360
-
-	* tools/src/Makefile.am, tools/src/parsers/Makefile.am: more header
-	  renaming (see commit for r3377)
-
-2013-06-12 12:55  spectre360
-
-	* tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/src/scanner2.ll,
-	  tools/src/hfst-twolc/src/scanner3.ll: change header file names --
-	  this will break compatibility with automake < 1.12 see
-	  http://lists.gnu.org/archive/html/automake/2012-09/msg00017.html
-
-2013-06-12 12:34  spectre360
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/xre_lex.ll: changes to names of generated
-	  header files --- pending testing
-
-2013-06-11 13:27  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/help_message.cc: Now apropos and help messages
-	  work in xfst parser.
-
-2013-06-10 13:13  spectre360
-
-	* autogen.sh: bump required versions of automake and libtool
-
-2013-06-10 10:57  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/help_message.cc,
-	  tools/src/parsers/test/test.sh: Ready for release 3.4.5.
-
-2013-06-07 10:49  sdrobac
-
-	* configure.ac, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-utils.h,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/finnish-ot-prosody-test.sh: Solved
-	  bug in replace rules with term complement in context, fsmbook
-	  tests are now completed.
-
-2013-06-07 10:00  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/init_help.cc, tools/src/parsers/name2cmd.h,
-	  tools/src/parsers/xfst_commands.h: Edited help messages.
-
-2013-06-05 11:44  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/init_help.cc: Small fixes to the xfst parser.
-
-2013-06-05 10:45  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/init_help.cc, tools/src/parsers/name2cmd.h,
-	  tools/src/parsers/xfst_commands.h: Additions to apropos and help
-	  commands.
-
-2013-06-04 12:26  eaxelson
-
-	* tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/init_help.cc, tools/src/parsers/name2cmd.h,
-	  tools/src/parsers/xfst_commands.h: Tentatively added enums and
-	  maps for xfst commands.
-
-2013-06-03 12:11  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc: Now using variables
-	  outstream_ etc instead of stdout etc.
-
-2013-06-03 10:46  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Tentatively added commands
-	  'apropos' and 'help' to the xfst parser.
-
-2013-05-31 15:53  mie
-
-	* libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Backport pretty dot files from
-	  that better branch
-
-2013-05-31 12:25  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/inspect_net.alternative_output,
-	  tools/src/parsers/test/inspect_net.output,
-	  tools/src/parsers/test/inspect_net.xfst,
-	  tools/src/parsers/test/test.sh: Added more tests to xfst parser.
-
-2013-05-31 10:19  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/compose_net.xfst,
-	  tools/src/parsers/test/concatenate_net.xfst,
-	  tools/src/parsers/test/define.xfst,
-	  tools/src/parsers/test/define_fail.xfst,
-	  tools/src/parsers/test/define_function.xfst,
-	  tools/src/parsers/test/determinize_net.xfst,
-	  tools/src/parsers/test/epsilon_remove_net.xfst,
-	  tools/src/parsers/test/ignore_net.xfst,
-	  tools/src/parsers/test/intersect_net.xfst,
-	  tools/src/parsers/test/invert_net.xfst,
-	  tools/src/parsers/test/lower_side_net.xfst,
-	  tools/src/parsers/test/minimize_net.xfst,
-	  tools/src/parsers/test/minus_net.xfst,
-	  tools/src/parsers/test/negate_net.xfst,
-	  tools/src/parsers/test/one_plus_net.xfst,
-	  tools/src/parsers/test/print_net.alternative_output,
-	  tools/src/parsers/test/print_net.output,
-	  tools/src/parsers/test/print_net.xfst,
-	  tools/src/parsers/test/reverse_net.xfst,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/union_net.xfst,
-	  tools/src/parsers/test/upper_side_net.xfst,
-	  tools/src/parsers/test/zero_plus_net.xfst: Added new functions
-	  write_in_xfst_format(ostream/FILE*) to class HfstTransitionGraph.
-	  Using it now in the xfst parser when calling 'print net' instead
-	  of write_in_att_format.
-
-2013-05-30 13:11  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/test/test.sh,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Added more documentation to the
-	  xfst parser.
-
-2013-05-30 10:44  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/test/test.sh:
-	  Added documentation to xfst parser functions. Also fixed a bug in
-	  prompt handling when calling apply up/down.
-
-2013-05-30 09:46  hardwick
-
-	* libhfst/src/parsers/PmatchCompiler.cc,
-	  libhfst/src/parsers/PmatchCompiler.h,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h, tools/src/hfst-pmatch2fst.cc:
-	  Basic size indications in verbose mode
-
-2013-05-29 13:46  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Xfst parser: now apply up and
-	  down work also in pipemode.
-
-2013-05-29 10:14  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/quit-on-fail.xfst,
-	  tools/src/parsers/test/test.sh: Fixed some bugs in the xfst
-	  parser. Now readline/getline is used consistently in the command
-	  line tool and in the actual parser. Also the option quit-on-fail
-	  now works as it should.
-
-2013-05-29 08:57  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: ToLower() and ToUpper() were
-	  missing from the rule parser
-
-2013-05-28 12:58  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, test/tools/Makefile.am,
-	  test/tools/another_epsilon.txt,
-	  test/tools/substitute-functionality.sh: Substituting symbol A
-	  with B on both levels now correctly removes A from the alphabet.
-
-2013-05-27 21:24  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Occasionally minimize while
-	  collecting large @txt lists (this is a significant
-	  efficiency improvement for those cases)
-
-2013-05-23 13:40  eaxelson
-
-	* configure.ac, tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-lexer.ll:
-	  Fixed a couple of bugs in including back-end libraries noticed
-	  during cygwin compilation.
-
-2013-05-22 12:40  eaxelson
-
-	* test/tools/empty-input.sh, test/tools/hfst-check-help.sh,
-	  test/tools/hfst-check-version.sh: Tests for version and help
-	  checking as well as empty input now check only a set of listed
-	  tools instead of hfst-*.
-
-2013-05-22 11:08  eaxelson
-
-	* tools/src/hfst-file-to-mem.cc, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Commented foma headers from
-	  hfst-file-to-mem.cc. Also fixed a bug in regex parsing in
-	  hfst-xfst2fst.
-
-2013-05-22 09:24  hardwick
-
-	* tools/src/hfst-file-to-mem.cc: Let's use malloc until we figure
-	  out where xxmalloc lives
-	  (and why we want to use it in the first place)?
-
-2013-05-21 08:59  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/xre_utils.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/xfst-parser.yy: Error messages from xre parser
-	  are now handled through the function get_error_message instead of
-	  printing them directly to standard error stream. Also changed
-	  'Transducer' to 'SFST::Transducer' in SfstTransducer tests to
-	  avoid ambiguousness.
-
-2013-05-21 08:00  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Some
-	  header files stil used installed back-end libraries instead of
-	  those in directory 'back-ends'. That is now fixed.
-
-2013-05-20 11:32  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc: Now prefix xre is used when
-	  generating xre parsers. This should fix bug #185.
-
-2013-05-20 10:55  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  test/tools/regexp2fst-functionality.sh,
-	  tools/src/hfst-regexp2fst.cc: Now regex comments can contain
-	  semicolons. Partially fixes bug #177. There is still some
-	  ambiguousness in weighted mode, consider e.g. the input 'cat ;
-	  3'.
-
-2013-05-20 09:25  eaxelson
-
-	* test/tools/regexp2fst-functionality.sh,
-	  tools/src/hfst-file-to-mem.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc: Fixed a bug in function
-	  hfst_file_to_mem, when using stdin.
-
-2013-05-16 13:05  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-utils.h: lex joiner's format changed to
-	  special symbols which do get harmonized
-
-2013-05-16 12:26  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-file-to-mem.cc,
-	  tools/src/hfst-file-to-mem.h, tools/src/hfst-regexp2fst.cc,
-	  tools/src/parsers/Makefile.am,
-	  tools/src/parsers/hfst-xfst2fst.cc: Moved function
-	  hfst_file_to_mem from hfst-xfst2fst.cc as a separate file.
-
-2013-05-16 10:51  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Fixed comment parsing in xre
-	  parser, hfst-regexp2fst still needs some fixing so that
-	  semicolons can be used in comments.
-
-2013-05-15 14:15  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Added facility for inserting
-	  undefined transducers
-	  as long as they are defined later
-
-2013-05-15 13:57  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h:
-	  stringify() can and should take a const parameter
-
-2013-05-15 13:57  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: If no
-	  boundary markers were used, we need to advance the input tape
-	  accordingly to where the real input starts
-
-2013-05-15 13:33  hardwick
-
-	* tools/src/hfst-pmatch.cc: Print newlines after printing match
-	  result
-
-2013-05-15 13:08  hardwick
-
-	* tools/src/hfst-pmatch.cc: Check for nonzero length before trying
-	  to omit final newlines
-
-2013-05-15 13:03  hardwick
-
-	* tools/src/hfst-pmatch.cc: Omit final newlines from input
-
-2013-05-15 11:53  hardwick
-
-	* tools/src/hfst-pmatch.cc: When in newline mode, no need to print
-	  final line because
-	  it's already been printed
-
-2013-05-15 11:48  hardwick
-
-	* tools/src/Makefile.am, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-pmatch.h: Reworking of pmatch tool, added default
-	  of blank line as separator
-
-2013-05-15 11:29  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Tentatively added a function
-	  compile_first to the xre parser that allows compiling onely the
-	  first regex in a string.
-
-2013-05-15 07:45  eaxelson
-
-	* test/tools/symbol-harmonization-functionality.sh,
-	  tools/src/hfst-fst2strings.cc, tools/src/parsers/test/test.sh:
-	  Now hfst-fst2strings obeys the -S flag. Also removing generated
-	  files after make check in xfst parser.
-
-2013-05-14 13:24  eaxelson
-
-	* configure.ac, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Added 'print defined' to xfst
-	  parser. Also temporarily commented the bison > 2.6 request in
-	  configure.ac until bison on hfst gets updated...
-
-2013-05-14 10:03  moshagen
-
-	* configure.ac: Added a test for bison version 3.6+ - now it will
-	  stop if older versions are found. This seems to fix at least one
-	  of the build issues reported.
-
-2013-05-14 09:59  moshagen
-
-	* libhfst/src/parsers: Ignore generated files.
-
-2013-05-14 09:54  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/define_function.att,
-	  tools/src/parsers/test/define_function.xfst,
-	  tools/src/parsers/test/test.sh: Added tests for defining
-	  functions in xfst parser. Also fixed a bug in function
-	  definition.
-
-2013-05-14 06:57  hardwick
-
-	* tools/src/hfst-pmatch2fst.cc: Add diagnostic for rulesets that
-	  don't recognise anything
-
-2013-05-14 06:56  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Avoid compiling transducers
-	  that "recognise" the empty string
-
-2013-05-13 17:30  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: New
-	  insertion arc handling
-
-2013-05-13 17:29  hardwick
-
-	* libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Move
-	  insertion arc checking out of flag diacritic handling after all
-
-2013-05-13 16:13  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  tools/src/hfst-pmatch2fst.cc: Collect and harmonize alphabets
-
-2013-05-13 16:12  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Detect inserted transducers
-	  and only pass them and TOP on from parsing
-
-2013-05-13 16:11  hardwick
-
-	* libhfst/src/HfstFlagDiacritics.cc: Recognise insertion arcs as
-	  flag diacritics
-
-2013-05-13 12:45  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/left-arrow-with-semicolon-many-comments.xre,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/proc-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh: Skipping regexp tests
-	  that do not work. Also added new tests.
-
-2013-05-13 11:14  eaxelson
-
-	* back-ends/foma/Makefile.am, back-ends/foma/lex.yy.c,
-	  back-ends/foma/regex.c, back-ends/foma/regex.h,
-	  back-ends/foma/regex.l, back-ends/foma/regex.tab.c,
-	  back-ends/foma/regex.tab.h: Changed regex.tab.c and regex.tab.h
-	  filenames to regex.c and regex.h because make distclean of some
-	  version of autotools removes tab.c files. Should fix bug #184.
-
-2013-05-13 11:11  sdrobac
-
-	* libhfst/src/parsers/xre_parse.yy: Catenate functions were giving
-	  wrong results, now fixed
-
-2013-05-13 09:38  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc: No flags part now seems to
-	  be working
-
-2013-05-13 08:10  mpsilfve
-
-	* configure.ac: Don't treat automake warnings as errors.
-
-2013-05-13 07:47  eaxelson
-
-	* tools/src/hfst-regexp2fst.cc: Regexps that contained comments
-	  were skipped, now that is fixed. Fixes bug #182.
-
-2013-05-08 14:41  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/xre_lex.ll, tools/src/Makefile.am,
-	  tools/src/hfst-scanner.ll, tools/src/parsers/Makefile.am,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-lexer.ll, tools/src/parsers/xfst-utils.cc:
-	  Reverted back to earlier version.
-
-2013-05-08 14:11  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/xre_lex.ll, tools/src/Makefile.am,
-	  tools/src/hfst-scanner.ll, tools/src/parsers/Makefile.am,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-lexer.ll, tools/src/parsers/xfst-utils.cc:
-	  Changed bison-generated h-files to hh-files. Recent versions of
-	  bison and automake are needed for compilation.
-
-2013-05-08 12:31  eaxelson
-
-	* libhfst/src/HfstApply.cc: Now binary transducer operations don't
-	  modify their second argument. Fixes bug #180.
-
-2013-05-07 14:12  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h: Refactor
-	  ol conversion to allow giving a harmonization hint
-
-2013-05-07 14:09  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/XfstCompiler.cc: Fixed error messages.
-
-2013-05-07 09:46  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_utils.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Fixed error reporting in xre
-	  and xfst parsers.
-
-2013-05-06 13:50  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  libhfst/src/parsers/xre_utils_reentrant.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/test.sh: Now reentrant parsers are used in
-	  all xre parsing.
-
-2013-05-06 13:24  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRulesTest.cc,
-	  test/tools/fsmbook-examples/Makefile.am: Fixed replace rules with
-	  empty languages
-
-2013-05-06 12:45  eaxelson
-
-	* test/tools/id_star_a_b_c.txt: Added missing file.
-
-2013-05-06 11:20  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.reentrant.cc,
-	  libhfst/src/parsers/XreCompiler.reentrant.h,
-	  libhfst/src/parsers/xre_lex.reentrant.ll,
-	  libhfst/src/parsers/xre_lex_reentrant.ll,
-	  libhfst/src/parsers/xre_parse.reentrant.yy,
-	  libhfst/src/parsers/xre_parse_reentrant.yy,
-	  libhfst/src/parsers/xre_utils.reentrant.cc,
-	  libhfst/src/parsers/xre_utils.reentrant.h: Added reentrant
-	  versions of all xre functionalitites.
-
-2013-05-06 09:16  eaxelson
-
-	* libhfst/src/parsers/xre_lex_reentrant.ll,
-	  libhfst/src/parsers/xre_parse_reentrant.yy,
-	  libhfst/src/parsers/xre_utils_reentrant.cc: Tentatively added
-	  reentrant versions of the xre functionalitites.
-
-2013-05-03 14:16  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h: Avoid extraneous copying and
-	  sorting
-
-2013-05-02 18:40  eaxelson
-
-	* test/tools/proc-functionality.sh, tools/src/hfst-regexp2fst.cc:
-	  Now comment lines are correctly parsed by hfst-regexp2fst. Also
-	  added error diagnosticprints to proc test.
-
-2013-05-02 14:27  mpsilfve
-
-	* libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Maybe fixed bison anf lfex header
-	  problem. Revert, if it doesn's work.
-
-2013-05-02 10:54  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_lex.ll,
-	  tools/src/parsers/XfstCompiler.cc: Added more function handling
-	  to xre parser.
-
-2013-04-29 22:39  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc: Fix invert logic and remove
-	  debug print
-
-2013-04-29 15:39  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/test.sh: Added more function handling
-	  mechanisms to xfst and xre parsers.
-
-2013-04-29 11:10  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-parser.yy: Now xfst parser recognizes
-	  function definitions.
-
-2013-04-29 08:08  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Make the
-	  starting position of the input tape be before BOUNDARY_MARKER.
-	  This is to enable referring to the boundary in expressions,
-	  not just contexts. It should gracefully always fail to match and
-	  be ignored in the absence of boundaries in expressions.
-
-2013-04-29 07:19  hardwick
-
-	* libhfst/src/parsers/PmatchCompiler.cc,
-	  libhfst/src/parsers/PmatchCompiler.h,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h, tools/src/hfst-pmatch2fst.cc:
-	  Refactor parsing; rip out tool-specific parts
-	  (and, for the time being, some probably unnecessary control
-	  options)
-
-2013-04-26 12:14  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-parser.yy: Debug printings and rearrange
-	  noflags part to first
-
-2013-04-25 14:45  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/xfst-lexer.ll: xre parser now recognizes
-	  function calls. xfst parser supports command 'source'.
-
-2013-04-25 13:31  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-parser.yy: Add some noflags to parsers
-
-2013-04-25 12:24  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h: Add support for selecting
-	  flagged and composed morphotaxis.
-
-2013-04-25 11:45  eaxelson
-
-	* tools/src/parsers/xfst-lexer.ll: Command 'source' implemented in
-	  xfst parser.
-
-2013-04-25 09:14  moshagen
-
-	* libhfst/src, libhfst/src/implementations,
-	  libhfst/src/implementations/compose_intersect,
-	  libhfst/src/implementations/optimized-lookup,
-	  libhfst/src/parsers, tools/src/hfst-twolc/src: Ignore generated
-	  test logs and reports.
-
-2013-04-25 08:17  moshagen
-
-	* test/tools/left-arrow-with-semicolon-comment.xre,
-	  test/tools/regexp2fst-functionality.sh: Added test case for bug
-	  https://sourceforge.net/p/hfst/bugs/177/ .
-
-2013-04-24 13:33  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-parser.yy: Added symbol substitution to
-	  xfst parser.
-
-2013-04-24 07:29  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Remove use of strndup to fix
-	  bug #175
-
-2013-04-23 14:24  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Added more functions to the
-	  xfst parser.
-
-2013-04-23 09:25  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Fix a bug
-	  caused by shifts in the input tape caused by entering left-hand
-	  contexts that weren't being undone.
-	  
-	  The shifting is fundamentally inelegant and should be handled in
-	  a nicer way..
-
-2013-04-22 15:28  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Added more functions to the
-	  xfst parser.
-
-2013-04-22 13:28  eaxelson
-
-	* libhfst/src/HfstExtractStrings.h, libhfst/src/HfstTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-parser.yy: Removed WeightedString classes
-	  as they are replaced by HfstOneLevelPath etc datatypes. Also
-	  added new functions to the xfst parser.
-
-2013-04-19 11:22  eaxelson
-
-	* libhfst/src/HfstEpsilonHandler.cc,
-	  libhfst/src/HfstEpsilonHandler.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/HfstEpsilonHandler.cc, tools/src/HfstEpsilonHandler.h,
-	  tools/src/Makefile.am, tools/src/hfst-lookup.cc: Moved lookup_fd
-	  functionalities in hfst-lookup.cc to HfstTransitionGraph as
-	  member functions. Also moved HfstEpsilonHandler.cc and .h from
-	  tools/src/ to libhfst/src/. Removed is_flag_diacritic from
-	  hfst-lookup.cc and using FdOperation::is_diacritic instead.
-
-2013-04-18 12:54  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Removed
-	  extra code.
-
-2013-04-18 12:46  eaxelson
-
-	* tools/src/HfstEpsilonHandler.cc, tools/src/HfstEpsilonHandler.h,
-	  tools/src/Makefile.am, tools/src/hfst-lookup.cc: Moved
-	  EpsilonHandler from hfst-lookup.cc to HfstEpsilonHandler.h and
-	  .cc.
-
-2013-04-18 10:44  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-lookup.cc: Moved
-	  is_lookup_infinitely_ambiguous(HfstBasicTransducer ...) in
-	  hfst-lookup to member function of HfstTransitionGraph:
-	  is_lookup_infinitely_ambiguous(...).
-
-2013-04-17 12:35  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/Makefile.am, test/tools/fst2strings-functionality.sh,
-	  test/tools/unification_flags_fail.txt: Added flag tests for
-	  hfst-fst2strings.
-
-2013-04-17 12:27  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc: Use ANOTHER_EPSILON for
-	  tokenising
-
-2013-04-17 12:15  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/Makefile.am, test/tools/fst2strings-functionality.sh:
-	  Now option combination --obey-flags --random works in
-	  hfst-fst2strings.
-
-2013-04-17 11:16  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc: Insert epsilons to all
-	  lexicons
-
-2013-04-16 14:18  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc: Maybe align end flags
-
-2013-04-16 12:47  eaxelson
-
-	* libhfst/src/HfstDataTypes.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/parsers/Makefile.am,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/test.sh: Now hfst-xfst warns about
-	  transducer type conversions. The state and arc information should
-	  also be correct.
-
-2013-04-16 09:38  eaxelson
-
-	* tools/src/parsers/test/eliminate_flag.output: Added missing test
-	  file.
-
-2013-04-16 07:01  hardwick
-
-	* libhfst/src/parsers/PmatchCompiler.cc,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Many changes to how utilities
-	  are handled, prepare to move all parsing away
-	  from the hfst-pmatch2fst tool
-
-2013-04-15 12:36  eaxelson
-
-	* back-ends/foma/flags.c, libhfst/src/HfstTransducer.cc,
-	  tools/src/parsers/test/eliminate_flag.xfst: Another bug in flag
-	  elimination fixed. Now flags that are not eliminated are included
-	  in the filter so that they are not blocked.
-
-2013-04-15 11:03  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: 'load stack' didn't print
-	  state and arc info for all transducers, this is now fixed. Should
-	  fix bug #171.
-
-2013-04-15 10:52  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  tools/src/parsers/test/eliminate_flag.xfst: Calling
-	  eliminate_flags for a transducer that has no flags to be filtered
-	  caused a segfault, this is now fixed.
-
-2013-04-15 10:25  eaxelson
-
-	* tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/eliminate_flag.att,
-	  tools/src/parsers/test/eliminate_flag.xfst,
-	  tools/src/parsers/test/eliminate_flags.att,
-	  tools/src/parsers/test/eliminate_flags.xfst,
-	  tools/src/parsers/test/test.sh: Updated eliminate flag tests.
-
-2013-04-11 17:09  mpsilfve
-
-	* tools/src/generate_model_forms.cc, tools/src/guessify_fst.cc:
-	  Fixed a problem with default symbols and harmonization in
-	  compiling guessers.
-
-2013-04-10 12:13  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.4.4.
-
-2013-04-10 09:40  eaxelson
-
-	* test/tools/proc-functionality.sh: Now proc functionality test
-	  proceeds until compounds2.strings would be tested and instead
-	  returns a skip value 77.
-
-2013-04-09 09:17  eaxelson
-
-	* test/tools/Makefile.am: Now tests for tools that are disabled by
-	  default are only carried out if the tools are enabled...
-
-2013-04-09 06:09  eaxelson
-
-	* check_installation/check-tools.sh,
-	  check_installation/copy-tool-tests.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc2fst-stress.sh, test/tools/proc-functionality.sh:
-	  Fixed a couple of bugs noticed when installing HFST on Hippu.
-
-2013-04-09 03:57  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/proc-functionality.sh,
-	  tools/src/parsers/test/Makefile.am: hfst-xfst2fst tests are now
-	  skipped if --enable-xfst2fst is not specified.
-	  lexc-compiler-functionality-sh and proc-functionality.sh also
-	  return a skip value.
-
-2013-04-08 12:41  eaxelson
-
-	* configure.ac, test/tools/proc-functionality.sh,
-	  tools/src/hfst-lexc.cc: Now foma and sfst backends are enabled by
-	  default in configure.
-
-2013-04-08 11:57  eaxelson
-
-	* test/tools/Makefile.am, test/tools/fst2strings-functionality.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh,
-	  test/tools/proc-functionality.sh,
-	  tools/src/hfst-lexc-compiler.cc, tools/src/hfst-lexc.cc: Now
-	  hfst-lexc uses only foma. hfst-lexc2fst tests skipped as
-	  experimental. Flag tests in hfst-fst2strings are also skipped
-	  until flags are thoroughly tested.
-
-2013-04-07 19:02  mpsilfve
-
-	* tools/src/hfst-compose-intersect.cc: Fixed missing parameter in
-	  fprintf in warning message in hfst-compose-intersect. It was
-	  causing a segfault on some systems.
-
-2013-04-05 13:33  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/Makefile.am, test/tools/fst2strings-functionality.sh,
-	  test/tools/unification_flags.txt: At least unification flags are
-	  now handled correctly in hfst-fst2strings.
-
-2013-04-05 11:08  eaxelson
-
-	* libhfst/src/HfstLookupFlagDiacritics.cc,
-	  libhfst/src/HfstLookupFlagDiacritics.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  tools/src/HfstLookupFlagDiacritics.cc,
-	  tools/src/HfstLookupFlagDiacritics.h, tools/src/Makefile.am:
-	  Moved HfstLookupFlagDiacritics functionality from tools/src/ to
-	  libhfst/src/.
-
-2013-04-05 10:28  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-	  Tentatively added HfstTransducer::extract_random_paths_fd. Flags
-	  still need to be processed right.
-
-2013-04-04 08:26  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/infinitely_ambiguous_with_flags.txt,
-	  test/tools/lookup-functionality.sh, tools/src/hfst-lookup.cc: Now
-	  hfst-lookup warns about infinitely ambiguous transducers. Fixes
-	  bug #168.
-
-2013-04-03 14:44  eaxelson
-
-	* test/tools/Makefile.am, tools/src/parsers/test/Makefile.am: Added
-	  missing files to Makefiles noticed during distcheck.
-
-2013-04-03 13:07  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Added warnings to xfst
-	  compiler when using longest-string(-size) with flags.
-
-2013-04-02 16:43  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Tentatively added commands
-	  longest-string and longest-string-size to xfst parser.
-
-2013-04-02 15:32  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Added function
-	  HfstTransitionGraph::longest_string_size.
-
-2013-03-28 13:05  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Tentatively added function
-	  HfstTransitionGraph::top_sort().
-
-2013-03-28 08:56  eaxelson
-
-	* tools/src/hfst-pmatch.cc: Added option --version to hfst-pmatch.
-
-2013-03-27 13:20  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Make sure minimization
-	  always gets done
-
-2013-03-27 12:10  eaxelson
-
-	* libhfst/src/HfstTransducer.h, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/apply_down.output,
-	  tools/src/parsers/test/apply_up.output,
-	  tools/src/parsers/test/apply_up.xfst: Added more test to xfst
-	  parser. Now comments are handled correctly in xfst. Edited
-	  documentation in HfstTransducer.h.
-
-2013-03-27 10:05  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-pmatch2fst.cc: Merge from pmatch dev branch, with
-	  a change related to read_lexc -> read_lexc_ptr.
-
-2013-03-26 14:14  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/apply_down.output,
-	  tools/src/parsers/test/apply_down.xfst,
-	  tools/src/parsers/test/apply_up.output,
-	  tools/src/parsers/test/apply_up.xfst,
-	  tools/src/parsers/test/set_variable.output,
-	  tools/src/parsers/test/set_variable.xfst,
-	  tools/src/parsers/test/test.sh: Now xre parser can parse
-	  expression '{foo}:{bar}' correctly. Also added variable tests to
-	  xfst parser.
-
-2013-03-26 09:33  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/shortest_string.output,
-	  tools/src/parsers/test/shortest_string.xfst,
-	  tools/src/parsers/test/test.sh: Added a test for xfst's
-	  shortest-string. Also fixed a bug in including the epsilon string
-	  in HfstTransducer::extract_paths.
-
-2013-03-25 15:22  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/define.att,
-	  tools/src/parsers/test/define.xfst,
-	  tools/src/parsers/test/define_fail.xfst,
-	  tools/src/parsers/test/test.sh: Added new xfst tests, also added
-	  function HfstTransducer::is_automaton.
-
-2013-03-25 13:33  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-utils.h: Invert lexc flags
-
-2013-03-25 11:49  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/compose_net.xfst,
-	  tools/src/parsers/test/concatenate_net.xfst,
-	  tools/src/parsers/test/determinize_net.xfst,
-	  tools/src/parsers/test/eliminate_flag.xfst,
-	  tools/src/parsers/test/eliminate_flags.xfst,
-	  tools/src/parsers/test/epsilon_remove_net.xfst,
-	  tools/src/parsers/test/ignore_net.xfst,
-	  tools/src/parsers/test/intersect_net.xfst,
-	  tools/src/parsers/test/invert_net.xfst,
-	  tools/src/parsers/test/lower_side_net.xfst,
-	  tools/src/parsers/test/minimize_net.xfst,
-	  tools/src/parsers/test/minus_net.xfst,
-	  tools/src/parsers/test/negate_net.xfst,
-	  tools/src/parsers/test/one_plus_net.xfst,
-	  tools/src/parsers/test/reverse_net.xfst,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/union_net.xfst,
-	  tools/src/parsers/test/upper_side_net.xfst,
-	  tools/src/parsers/test/zero_plus_net.xfst: Renamed again some
-	  testfiles in xfst..
-
-2013-03-25 10:28  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/apply_down.grep,
-	  tools/src/parsers/test/apply_down.output,
-	  tools/src/parsers/test/apply_up.grep,
-	  tools/src/parsers/test/apply_up.output,
-	  tools/src/parsers/test/print_label_tally.grep,
-	  tools/src/parsers/test/print_label_tally.output,
-	  tools/src/parsers/test/print_labels.grep,
-	  tools/src/parsers/test/print_labels.output,
-	  tools/src/parsers/test/print_stack.grep,
-	  tools/src/parsers/test/print_stack.output,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/test_false.grep,
-	  tools/src/parsers/test/test_false.output,
-	  tools/src/parsers/test/test_true.grep,
-	  tools/src/parsers/test/test_true.output: Edited xfst tests.
-
-2013-03-22 15:22  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/parsers/XfstCompiler.cc: Documented flag elimination
-	  function. Fixed some bugs in using transducer definitions.
-
-2013-03-22 10:16  eaxelson
-
-	* tools/src/hfst-lexc-compiler.cc,
-	  tools/src/parsers/test/eliminate_flag.xfst,
-	  tools/src/parsers/test/eliminate_flags.att,
-	  tools/src/parsers/test/eliminate_flags.xfst,
-	  tools/src/parsers/test/test.sh: Added a new test for flag
-	  elimination.
-
-2013-03-21 14:28  eaxelson
-
-	* libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstTransducer.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/eliminate_flag.att,
-	  tools/src/parsers/test/eliminate_flag.xfst,
-	  tools/src/parsers/test/eliminate_flags.att,
-	  tools/src/parsers/test/eliminate_flags.xfst,
-	  tools/src/parsers/test/test.sh: Added tests for xfst parser's
-	  function eliminate flags.
-
-2013-03-21 13:51  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  tools/src/parsers/XfstCompiler.cc: Wrote more flag elimination
-	  functionalitites.
-
-2013-03-21 09:48  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test61,
-	  tools/src/hfst-twolc/test/test61.txt_fst: Added x: center rules
-	  and tests for them.
-
-2013-03-21 09:21  mpsilfve
-
-	* tools/src/hfst-twolc/src/commandline_src/CommandLine.cc,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.h,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRuleContainer.h,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.h: Restored long
-	  option name --resolve.
-
-2013-03-21 08:36  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy: Fixed problem where
-	  definitions in pair expression were caught too late which
-	  resulted in weird syntax warnings.
-
-2013-03-20 15:25  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/lexc-utils.h: Maybe use flags instead of
-	  joiners in legacy lexc compilation.
-
-2013-03-20 15:03  eaxelson
-
-	* back-ends/foma/flags.c, back-ends/foma/fomalib.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Started implementing flag
-	  elimination function.
-
-2013-03-18 14:47  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/print_label_tally.grep,
-	  tools/src/parsers/test/print_label_tally.xfst,
-	  tools/src/parsers/test/test.sh: Added new functions to xfst
-	  parser.
-
-2013-03-18 10:37  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/print_labels.grep,
-	  tools/src/parsers/test/print_labels.xfst,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/test_false.grep,
-	  tools/src/parsers/test/test_overlap_false.xfst,
-	  tools/src/parsers/test/test_overlap_true.xfst,
-	  tools/src/parsers/test/test_sublanguage_false.xfst,
-	  tools/src/parsers/test/test_sublanguage_true.xfst,
-	  tools/src/parsers/test/test_true.grep,
-	  tools/src/parsers/xfst-lexer.ll: Added new test for xfst parser.
-
-2013-03-15 12:01  eaxelson
-
-	* tools/src/parsers/test/test.sh: Set property executable ON:
-	  test.sh.
-
-2013-03-15 09:02  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Again doing flag diacritic filtering in flag diacritic
-	  harmonization, since it turned out not to be a problem after all.
-
-2013-03-14 21:36  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: insert_freely_missing_flags(...)
-	  no longer uses insert_freely(...) becauses successive invocations
-	  of insert_freely without intervening minimizations cause
-	  exponential state growth.
-
-2013-03-14 19:57  mpsilfve
-
-	* tools/src/hfst-compose.cc: compose-call in hfst-compose now does
-	  flag filtering only if flag harmonization was done
-
-2013-03-14 15:04  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  tools/src/hfst-compose.cc: Changes that permit new filtering of
-	  illegal flag paths hopefully wothout affecting performance.
-
-2013-03-14 15:03  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/apply_down.grep,
-	  tools/src/parsers/test/apply_down.xfst,
-	  tools/src/parsers/test/apply_up.grep,
-	  tools/src/parsers/test/apply_up.xfst,
-	  tools/src/parsers/test/print_stack.grep,
-	  tools/src/parsers/test/print_stack.xfst,
-	  tools/src/parsers/test/test.sh: Added more tests for xfst.
-
-2013-03-14 14:14  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/determinize_net.att,
-	  tools/src/parsers/test/determinize_net.xfst,
-	  tools/src/parsers/test/epsilon_remove_net.att,
-	  tools/src/parsers/test/epsilon_remove_net.xfst,
-	  tools/src/parsers/test/lower_side_net.att,
-	  tools/src/parsers/test/lower_side_net.xfst,
-	  tools/src/parsers/test/minimize_net.att,
-	  tools/src/parsers/test/minimize_net.xfst,
-	  tools/src/parsers/test/negate_net.att,
-	  tools/src/parsers/test/negate_net.xfst,
-	  tools/src/parsers/test/one_plus_net.att,
-	  tools/src/parsers/test/one_plus_net.xfst,
-	  tools/src/parsers/test/reverse_net.att,
-	  tools/src/parsers/test/reverse_net.xfst,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/upper_side_net.att,
-	  tools/src/parsers/test/upper_side_net.xfst,
-	  tools/src/parsers/test/zero_plus_net.att,
-	  tools/src/parsers/test/zero_plus_net.xfst,
-	  tools/src/parsers/xfst-parser.yy: Added more tests for xfst
-	  parser.
-
-2013-03-14 11:29  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc: Now readline is disabled by
-	  default in xfst parser unless configure is run with
-	  --with-readline.
-
-2013-03-14 09:53  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, tools/src/parsers/XfstCompiler.cc:
-	  Changed 'HFST_THROW' into 'HFST_THROW_MESSAGE' in
-	  HfstTransducer::eliminate_flag(s). Should fix bug #163.
-
-2013-03-13 13:36  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Renamed some of the functions
-	  in xfst parser.
-
-2013-03-13 11:22  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Now readline history of
-	  'inspect net' is ignored when returning from 'inspect net'.
-
-2013-03-12 15:45  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Commented code.
-
-2013-03-12 14:55  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Now 'inspect net' should work
-	  for all cases.
-
-2013-03-12 13:09  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Tentatively added 'inspect net'
-	  to xfst parser.
-
-2013-03-11 14:10  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Edited XfstCompiler
-
-2013-03-11 11:58  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/intersect_net.att,
-	  tools/src/parsers/test/intersect_net.xfst,
-	  tools/src/parsers/test/minus_net.att,
-	  tools/src/parsers/test/minus_net.xfst,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-parser.yy:
-	  Added new tests to xfst parser and implemented interactive lookup
-	  mode.
-
-2013-03-11 09:28  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/compose_net.att,
-	  tools/src/parsers/test/compose_net.xfst,
-	  tools/src/parsers/test/concatenate_net.att,
-	  tools/src/parsers/test/concatenate_net.xfst,
-	  tools/src/parsers/test/ignore_net.att,
-	  tools/src/parsers/test/ignore_net.xfst,
-	  tools/src/parsers/test/invert_net.att,
-	  tools/src/parsers/test/invert_net.xfst,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/union_net.att,
-	  tools/src/parsers/test/union_net.xfst,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy,
-	  tools/src/parsers/xfst_commands: Added more tests to xfst parser.
-
-2013-03-07 12:44  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/compose_net.att,
-	  tools/src/parsers/test/compose_net.xfst,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst_commands:
-	  Tentatively added functions HfstTransducer::eliminate_flag(s).
-	  Added function 'compose_net' to xfst parser.
-
-2013-03-06 20:17  eaxelson
-
-	* back-ends/foma/apply.c, back-ends/foma/constructions.c,
-	  back-ends/foma/foma.c, back-ends/foma/foma.h,
-	  back-ends/foma/fomalib.h, back-ends/foma/fomalibconf.h,
-	  back-ends/foma/iface.c, back-ends/foma/lex.cmatrix.c,
-	  back-ends/foma/lex.interface.c, back-ends/foma/lex.lexc.c,
-	  back-ends/foma/lex.yy.c, back-ends/foma/lexc.l,
-	  back-ends/foma/regex.l, back-ends/foma/regex.tab.c,
-	  back-ends/foma/regex.y, back-ends/foma/rewrite.c,
-	  back-ends/foma/sigma.c, back-ends/foma/spelling.c,
-	  test/tools/symbol-harmonization-functionality.sh: Updated to foma
-	  version 0.9.17.
-
-2013-03-06 12:51  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: Added test for
-	  HfstTransducer::remove_from_alphabet.
-
-2013-03-05 15:49  mpsilfve
-
-	* libhfst/src/HfstTransducer.h: Changed bool static
-	  is_safe_conversion(...) to static bool is_safe_conversion(...)
-	  because syntax error.
-
-2013-03-05 10:55  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: Now regex parser substitution
-	  does not add substituting symbols to the alphabet of the
-	  transducer to be substituted. It is not needed anymore since
-	  there is a parameter 'harmonize' in
-	  HfstTransducer::substitute(StringPair&, HfstTransducer&).
-
-2013-03-04 11:25  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-fst2strings.cc: Now HfstTransducer::n_best throws
-	  an HfstFatalException if OpenFst fails to allocate enough memory.
-	  Kind of fixes bug #159.
-
-2013-03-04 10:22  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  test/tools/symbol-harmonization-functionality.sh,
-	  tools/src/hfst-regexp2fst.cc, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/test.sh: Now hfst-regexp2fst and
-	  hfst-xfst2fst both give a warning message if the user writes a
-	  replace rule that contains special symbols.
-
-2013-03-03 21:45  eaxelson
-
-	* test/tools/symbol-harmonization-functionality.sh: Added more
-	  symbol harmonization tests.
-
-2013-03-03 13:46  eaxelson
-
-	* libhfst/src/parsers/xre_utils.cc,
-	  test/tools/symbol-harmonization-functionality.sh: Commented code.
-
-2013-03-03 13:19  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  test/tools/symbol-harmonization-functionality.sh: Now the regex
-	  parser parses [x:?] so that it includes the transition [x:x].
-	  This also happens in xfst and foma.
-
-2013-03-03 11:41  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/symbol-harmonization-functionality.sh: Now regex
-	  parser interprets ?:? in the same way as xfst or foma, i.e. as
-	  unknown-to-unknown OR identity-to-identity.
-
-2013-03-02 13:02  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  test/tools/compare-functionality.sh,
-	  test/tools/symbol-harmonization-functionality.sh,
-	  tools/src/parsers/commands.help, tools/src/parsers/foma_commands,
-	  tools/src/parsers/foma_commands.help,
-	  tools/src/parsers/xfst_commands,
-	  tools/src/parsers/xfst_commands.help: Implemented substitution
-	  with an empty set in regex parser.
-
-2013-03-01 14:54  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy: Fixed hfst-twolc.bug
-	  which inserted all diacritics into the first set that was
-	  declared.
-
-2013-03-01 10:17  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  test/tools/symbol-harmonization-functionality.sh: Now xre parser
-	  never performs harmonization in substitution or ignoring.
-
-2013-03-01 10:02  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  test/tools/symbol-harmonization-functionality.sh: Fixed a bug in
-	  xre substitution.
-
-2013-02-28 22:59  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  test/tools/symbol-harmonization-functionality.sh,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h: Added
-	  a bool parameter to control harmonization in
-	  HfstTransducer::substitute(SymbolPair, HfstTransducer). Fixed xre
-	  parser so that it doesn't harmonize when performing substitution.
-	  Also changed call to substitute function in twolc but preserved
-	  the harmonization.
-
-2013-02-28 21:18  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/HfstXeroxRulesTest.cc,
-	  test/tools/symbol-harmonization-functionality.sh: Now binary
-	  operations never harmonize special symbols of form @_.*_ at . To
-	  make xerox rules work, the marker symbols @_SOME_MARKER_@ had to
-	  be changed to @SOME_MARKER@ so that they get harmonized as they
-	  did earlier.
-
-2013-02-28 12:30  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/parsers/xre_parse.yy:
-	  Now insert_freely also takes a parameter that tells whether
-	  harmonization is carried out.
-
-2013-02-28 11:55  eaxelson
-
-	* test/tools/symbol-harmonization-functionality.sh,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-subtract.cc: Now there
-	  is an option --do-not-harmonize for all binary command line
-	  tools.
-
-2013-02-28 11:32  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  test/tools/symbol-harmonization-functionality.sh,
-	  tools/src/hfst-concatenate.cc: Fixed some bugs in harmonization.
-
-2013-02-27 17:02  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h: Fixed
-	  missing bool parameter problem.
-
-2013-02-27 16:14  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc, test/tools/Makefile.am,
-	  test/tools/a_or_id.txt, test/tools/compare-functionality.sh,
-	  test/tools/symbol-harmonization-functionality.sh,
-	  tools/src/hfst-compare.cc, tools/src/hfst-regexp2fst.cc: Added a
-	  flag -H to hfst-compare and hfst-regexp2fst that turns off
-	  unknown harmonization.
-
-2013-02-27 13:37  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  test/tools/Makefile.am, test/tools/a2a_or_a2b_or_a2unk.txt,
-	  test/tools/a2b_or_b2b_or_unk2b.txt,
-	  test/tools/symbol-harmonization-functionality.sh,
-	  test/tools/unk2unk_or_id.txt, tools/src/hfst-compose.cc: Added a
-	  bool argument to binary transducer functions that controls
-	  whether harmonization is carried out. Also added harmonization
-	  tests.
-
-2013-02-26 14:06  eaxelson
-
-	* back-ends/foma/lex.lexc.c, back-ends/foma/lexc.l,
-	  back-ends/foma/lexcread.c,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh, tools/src/hfst-lexc.cc: Now
-	  hfst-lexc writes all messages to stderr. Fixes bug #68.
-
-2013-02-26 10:25  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc: Now
-	  FomaTransducer::define_transducer(symbol1, symbol2) works also if
-	  symbol1 == symbol2 == identity. Fixes bug #110.
-
-2013-02-26 09:42  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h: SfstTransducer.h no
-	  longer uses generic word 'Transducer'. Fixes bug #130.
-
-2013-02-26 09:19  eaxelson
-
-	* tools/src/HfstCompiler.cc, tools/src/HfstCompiler.h,
-	  tools/src/hfst-compiler.yy: Now hfst-sfstpl2fst finds included
-	  files in the same directory where its input file is located.
-	  Fixes bug #145.
-
-2013-02-26 08:25  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, tools/src/hfst-fst2txt.cc: Now
-	  hfst-fst2txt prints an error message instead of segfaulting when
-	  given an input stream whose transducers do not have the same
-	  type. Fixes bug #115.
-
-2013-02-25 15:58  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc: Implemented functions
-	  number_of_states and number_of_arcs.
-
-2013-02-25 13:52  moshagen
-
-	* test/tools/fsmbook-examples/Lingala, tools/src/parsers: Ignore
-	  generated files.
-
-2013-02-25 13:24  eaxelson
-
-	* tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/test.sh: Now all xfst files are read in a
-	  buffer and parsed with XfstCompiler.parse_line.
-
-2013-02-22 16:51  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/test.sh: Now xfst parser can parse regexps
-	  that are on several lines.
-
-2013-02-22 16:17  eaxelson
-
-	* tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Edited xfst parser.
-
-2013-02-22 10:48  eaxelson
-
-	* configure.ac, tools/src/parsers, tools/src/parsers/Makefile.am,
-	  tools/src/parsers/test, tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-parser.yy:
-	  Added tests for hfst-xfst2fst.
-
-2013-02-19 16:39  eaxelson
-
-	* tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc: Added main program from
-	  XfstCompiler.cc to hfst-xfst2fst.cc.
-
-2013-02-19 13:45  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: More command line options
-	  added to hfst-xfst2fst.
-
-2013-02-19 12:32  eaxelson
-
-	* tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Parameter handling added to
-	  hfst-xfst2fst.
-
-2013-02-18 20:58  eaxelson
-
-	* tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/commands.help,
-	  tools/src/parsers/xfst-parser.yy: Now hfst-xfst2fst works with
-	  readline functionalities if a temporary file is used for
-	  buffering commands.
-
-2013-02-18 11:37  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script:
-	  Replace rules compilation - boundary marker added to begining/end
-	  of all contexts which don't containt it
-
-2013-02-15 16:51  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-parser.yy: Added more functions to the
-	  xfst interface.
-
-2013-02-15 15:01  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Added more functions to the
-	  xfst interface.
-
-2013-02-14 19:43  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h: Added variable undefinition to
-	  xfst parser.
-
-2013-02-14 19:30  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/parsers/XfstCompiler.cc: Now definition expansion can
-	  be controlled in XreCompiler through a function
-	  set_expand_definitions. If they are always expanded, lexc syntax
-	  is not parsed correctly.
-
-2013-02-14 10:27  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Added definition expansion to
-	  the xre parser.
-
-2013-02-13 14:10  eaxelson
-
-	* libhfst/src/Makefile.am, tools/src/parsers/Makefile.am,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Made a couple of fixes to xfst
-	  parser.
-
-2013-02-13 11:26  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am, tools/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Tentatively added
-	  tools/src/parsers as a part of the automake build.
-
-2013-02-08 09:56  eaxelson
-
-	* check_installation/check-morphologies.sh,
-	  check_installation/morphology_tests/finnish-analyze.output,
-	  check_installation/morphology_tests/omorfi-analyze.input,
-	  check_installation/morphology_tests/omorfi-analyze.output,
-	  check_installation/morphology_tests/omorfi-generate.input,
-	  check_installation/morphology_tests/omorfi-generate.output:
-	  Updated morphology installation tests, now omorfi is included.
-
-2013-02-07 08:06  eaxelson
-
-	* swig/setup.py: Updated version number in swig setup file.
-
-2013-02-05 09:03  eaxelson
-
-	* check_installation/check-tools.sh, swig/test/test_std_streams.sh:
-	  Now installation tests skip sfst or foma if they are not found.
-
-2013-02-04 13:30  eaxelson
-
-	* NSIS/README: Edited NSIS README.
-
-2013-02-04 11:56  eaxelson
-
-	* NSIS/README, NSIS/copy_files.sh, NSIS/hfst_installer.nsi: Updated
-	  NSIS files.
-
-2013-02-02 12:09  mie
-
-	* test/tools/Makefile.am, test/tools/compounds2.txt,
-	  test/tools/proc-compounds2-out.strings,
-	  test/tools/proc-compounds2.strings,
-	  test/tools/proc-functionality.sh: New apertium proc space
-	  handling test from bug [#153].
-
-2013-02-01 11:03  eaxelson
-
-	* check_installation/check-tools.sh,
-	  check_installation/dist-README, swig/test/test_std_streams.sh:
-	  Small fixes to swig and installation checks.
-
-2013-02-01 10:18  eaxelson
-
-	* check_installation/check-swig.sh, check_installation/dist-README,
-	  swig/README, swig/test/test_std_streams.sh: Added documentation.
-
-2013-02-01 09:11  eaxelson
-
-	* swig/test/test.sh, swig/test/test_std_streams.sh: Made small
-	  fixes to swig tests.
-
-2013-02-01 08:08  eaxelson
-
-	* check_installation/check-tools.sh,
-	  test/tools/permutate-file-params.sh: Made permutate-file-params
-	  test silent. Edited check-tools.sh so that it handles --prefix
-	  parameter right.
-
-2013-02-01 07:45  eaxelson
-
-	* check_installation/check-tools.sh,
-	  check_installation/copy-tool-tests.sh,
-	  check_installation/test-empty-input.sh,
-	  check_installation/test-help.sh,
-	  check_installation/test-hfst-twolc.sh,
-	  check_installation/test-hfst-xfst.sh,
-	  check_installation/test-version.sh: Updated hfst tool checks-
-
-2013-01-31 13:22  sdrobac
-
-	* configure.ac, libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.xfst.script,
-	  test/tools/fsmbook-examples/Makefile.am: Fixed Lingala and
-	  MonishGuesserAnalyzer fsmbook tests, minor changes in regexp
-
-2013-01-31 10:05  eaxelson
-
-	* check_installation/copy-tool-tests.sh,
-	  check_installation/test-empty-input.sh: Updated installation
-	  checks.
-
-2013-01-30 17:20  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.xfst.script: In
-	  substitute (symbol_pair, transducer) added harmonization with the
-	  symbol_par. Also, updated substitute in regexp
-
-2013-01-30 12:42  eaxelson
-
-	* ChangeLog, NEWS, configure.ac, libhfst/src/Makefile.am: Ready for
-	  release 3.4.3.
-
-2013-01-30 12:26  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/Makefile.am,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script: Prune
-	  alphabet added to regexp, also ? -> x rules fixed
-
-2013-01-30 11:34  eaxelson
-
-	* swig/test/test_examples.py,
-	  swig/test/test_hfst_basic_transducer.py,
-	  swig/test/test_streams.py: Added a couple of fixes to swig tests.
-
-2013-01-30 08:29  eaxelson
-
-	* swig/test/test_examples.py,
-	  swig/test/test_hfst_basic_transducer.py,
-	  swig/test/test_streams.py: Now tests pass on MinGW, file handling
-	  still has some problems.
-
-2013-01-28 15:23  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi: Updated NSIS
-	  installer files.
-
-2013-01-28 14:27  eaxelson
-
-	* configure.ac, test/tools/hfst-check-help.sh,
-	  test/tools/hfst-check-version.sh: Disabled tagger tools if HFST
-	  is compiled on MinGW. They are also skipped in tool tests.
-
-2013-01-28 11:06  eaxelson
-
-	* check_installation/copy-tool-tests.sh,
-	  check_installation/test-hfst-twolc.sh,
-	  check_installation/test-hfst-xfst.sh: Added tests for hfst-xfst
-	  and hfst-twolc in installation tests.
-
-2013-01-28 10:07  eaxelson
-
-	* back-ends/foma/Makefile.am: Added 'AUTOMAKE_OPTIONS=std-options'
-	  to foma Makefile so that foma wrapper gets installed right on
-	  Cygwin.
-
-2013-01-26 10:47  moshagen
-
-	* scripts: Ignore generated files.
-
-2013-01-25 12:56  eaxelson
-
-	* README, back-ends/Makefile.am, back-ends/foma/Makefile.am,
-	  configure.ac, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am, test/libhfst/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am: Renamed option
-	  --enable-windows as --enable-mingw.
-
-2013-01-25 09:05  eaxelson
-
-	* back-ends/foma/Makefile.am, configure.ac: Edited configure.ac so
-	  that setting executable mode on script files should finally work.
-	  Added missing windows conditional to foma Makefile.
-
-2013-01-24 12:49  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/FinnishOTProsody/Makefile.am,
-	  tools/src/hfst-prune-alphabet.cc: Prune alphabet changed for
-	  easier use in parser
-
-2013-01-24 11:35  eaxelson
-
-	* scripts/Makefile.am, scripts/hfst-foma-wrapper-loc.sh,
-	  scripts/hfst-xfst-loc, test/tools/Makefile.am,
-	  test/tools/xfst-functionality.sh: Removed local versions of
-	  hfst-xfst as well as hfst-xfst tests.
-
-2013-01-24 11:09  eaxelson
-
-	* configure.ac, scripts/Makefile.am: Setting executable mode on
-	  scripts.
-
-2013-01-24 10:07  eaxelson
-
-	* test/tools/Makefile.am: Fixed a typo in Makefile.am.
-
-2013-01-23 16:02  eaxelson
-
-	* check_installation/copy-tool-tests.sh,
-	  scripts/hfst-foma-wrapper-loc.sh, test/tools/Makefile.am: Fixed a
-	  bug in foma wrapper. Also added missing test file to EXTRA_DIST.
-
-2013-01-23 14:15  eaxelson
-
-	* configure.ac: Set executable mode on scripts.
-
-2013-01-23 13:35  eaxelson
-
-	* configure.ac, scripts/Makefile.am,
-	  scripts/hfst-foma-wrapper-loc.sh, scripts/hfst-xfst,
-	  scripts/hfst-xfst-loc, scripts/hfst-xfst.in,
-	  test/tools/xfst-functionality.sh: Made a local version of
-	  hfst-xfst that is used in tests.
-
-2013-01-23 12:31  eaxelson
-
-	* tools/src: Ignored *.exe files.
-
-2013-01-23 11:41  eaxelson
-
-	* test/tools/fsmbook-examples/BetterColaMachine,
-	  test/tools/fsmbook-examples/FinnishOTProsody,
-	  test/tools/fsmbook-examples/FinnishProsody,
-	  test/tools/fsmbook-examples/Palindromes,
-	  test/tools/fsmbook-examples/Palindromes/Makefile.am,
-	  test/tools/fsmbook-examples/PlusOrMinus: Ignore generated files.
-
-2013-01-23 11:04  eaxelson
-
-	* test/tools/Makefile.am, test/tools/permutate-file-params.sh,
-	  test/tools/script.xfst, test/tools/xfst-functionality.sh,
-	  tools/src/hfst-compose-intersect.cc: Added a test for hfst-xfst.
-	  Modified permutate-file-params.sh so that it doesn't use curly
-	  braces which are not expanded correctly on all environments. Also
-	  modified hfst-compose-intersect.cc so that it doesn't use dollar
-	  signs when specifying how strings are printed as they don't work
-	  on Cygwin.
-
-2013-01-23 09:12  eaxelson
-
-	* swig/test/test_constructors.py, swig/test/test_examples.py,
-	  swig/test/test_hfst_basic_transducer.py,
-	  swig/test/test_std_streams.py, swig/test/test_streams.py,
-	  swig/test/test_tokenizer.py,
-	  swig/test/test_transducer_functions.py: Now swig tests use
-	  libhfst.hfst_get_exception() instead of catching HFST exception
-	  classes. This should make the tests compatible with python 3
-	  where catching exceptions that do not inherit from BaseException
-	  is not allowed.
-
-2013-01-23 08:38  eaxelson
-
-	* configure.ac, test/tools/Makefile.am: Disabled fsmbook tests from
-	  'make check' by default (enable with --enable-fsmbook-tests)
-	  because they currently depend on foma command line tool.
-
-2013-01-22 15:57  moshagen
-
-	* tools/src: Ignore generated binary.
-
-2013-01-22 10:56  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  tools/src/hfst-prune-alphabet.cc: Added function
-	  HfstTransducer::prune_alphabet which is also used in the tool
-	  hfst-prune-alphabet.
-
-2013-01-21 10:39  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Added filtering to
-	  harmonize_flag_diacritics. It will filter out superfluous flag
-	  diacritic paths, which are created during harmonization.
-
-2013-01-18 14:33  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Prevented foma from harmonizing
-	  id- and unk-symbols with flag diacritics in insert_freely.
-
-2013-01-18 11:45  eaxelson
-
-	* test/tools/fsmbook-examples/FinnishProsody/Makefile.am: Removed
-	  'words.txt' from EXTRA_DIST as it is not found in svn repository
-	  and make check passes without it.
-
-2013-01-18 11:40  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, swig/libhfst.i: Added a function
-	  'std::string hfst_get_exception()' that can be used to get the
-	  name of the latest exception thrown by HFST library. This is
-	  useful if the version of Python used does not support catching
-	  exceptions that do not inherit from BaseException.
-
-2013-01-18 10:14  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Making sure that flag diacritics
-	  are added to the alphabets of both arguments in harmonize and
-	  harmonize_
-
-2013-01-18 09:15  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Changed id- and unk-symbols
-	  harmonization so that flag diacritics are no longer harmonized.
-
-2013-01-17 23:29  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed a bug in flag diacritic
-	  harmonization yet again. This time actually using the parameter
-	  bool harmonize in freely_insert.
-
-2013-01-17 14:55  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc: Fixed problem which
-	  resulted from changing the insert_freely-function in the library.
-
-2013-01-17 14:26  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Re-fixed flag diacritic harmonization problem, where identity and
-	  unknown symbols were expanded by flag diacritics. To prevent
-	  expansion in this case, I added a bool parameter harmonize to the
-	  insert_freely library function.
-
-2013-01-16 18:21  eaxelson
-
-	* configure.ac: Now configure gives warning on missing hfst-xfst
-	  correctly.
-
-2013-01-16 14:38  eaxelson
-
-	* configure.ac, libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/tools/Makefile.am, test/tools/non_prunable_alphabet_1.txt,
-	  test/tools/non_prunable_alphabet_2.txt,
-	  test/tools/prunable_alphabet.txt,
-	  test/tools/prune-alphabet-functionality.sh,
-	  tools/src/Makefile.am, tools/src/hfst-prune-alphabet.cc: Added a
-	  new tool, hfst-prune-alphabet. Also added a new bool parameter to
-	  HfstTransitionGraph::prune_alphabet.
-
-2013-01-16 10:16  eaxelson
-
-	* tools/src/hfst-tagger/src/use_model_src/AcyclicAutomaton.cc:
-	  Changed variable name 'infinity' to 'infinity_' to avoid
-	  compilation error on Cygwin.
-
-2013-01-14 15:32  mpsilfve
-
-	* tools/src/hfst-twolc/src/commandline_src/CommandLine.cc,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.h,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy: Added -D switch to enable
-	  reading from file in htwolcpre2 and htwolcpre3 (for debug
-	  purposes).
-
-2013-01-11 15:57  eaxelson
-
-	* configure.ac, test/tools/hfst-check-help.sh,
-	  test/tools/hfst-check-version.sh,
-	  tools/src/hfst-tagger/src/hfst-build-tagger.cc,
-	  tools/src/hfst-tagger/src/hfst-open-input-file-for-tagger.cc,
-	  tools/src/hfst-tagger/src/hfst-tag.cc,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.cc: Now
-	  tagger and twolc tools also pass version and help checks.
-
-2013-01-11 10:42  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.h: Added a missing <cstdio>
-	  header that caused an error on cygwin (FILE was not defined).
-
-2013-01-11 07:27  moshagen
-
-	* test/tools/fsmbook-examples/FinnishProsody: Ignore generated
-	  files.
-
-2013-01-11 07:26  moshagen
-
-	* test/tools/fsmbook-examples/Lingala,
-	  test/tools/fsmbook-examples/Palindromes,
-	  test/tools/fsmbook-examples/PlusOrMinus: Ignore generated files.
-
-2013-01-10 16:02  eaxelson
-
-	* README, back-ends/Makefile.am, back-ends/dlfcn/Makefile.am,
-	  back-ends/openfstwin/src/lib/Makefile.am: Now all back-end files
-	  are included in the distribution package.
-
-2013-01-10 16:00  sdrobac
-
-	* configure.ac,
-	  test/tools/fsmbook-examples/FinnishProsody/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/Makefile.am,
-	  test/tools/fsmbook-examples/FinnishProsody/expected_result.strings,
-	  test/tools/fsmbook-examples/FinnishProsody/test.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/finnish-prosody-test.sh: Fsm-book
-	  test FinnishProsody
-
-2013-01-10 14:23  sdrobac
-
-	* configure.ac, test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/Palindromes/Makefile.am,
-	  test/tools/fsmbook-examples/Palindromes/test.script,
-	  test/tools/fsmbook-examples/palindromes.sh: Fsm-book test
-	  Palindromes updated
-
-2013-01-10 14:05  eaxelson
-
-	* back-ends/Makefile.am, back-ends/dlfcn/Makefile.am,
-	  back-ends/openfstwin/src/Makefile.am: All back-end directories
-	  are now included in the distribution package.
-
-2013-01-10 13:20  sdrobac
-
-	* configure.ac, libhfst/src/parsers/xre_lex.ll,
-	  libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.xfst.script,
-	  test/tools/fsmbook-examples/Lingala/Makefile.am,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/PlusOrMinus/Makefile.am,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.xfst.att,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.xfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/README,
-	  test/tools/fsmbook-examples/PlusOrMinus/test.script,
-	  test/tools/fsmbook-examples/plus-or-minus.sh: Added PlusOrMinus
-	  fsm-book test
-
-2013-01-09 16:01  eaxelson
-
-	* README, test/tools/hfst-check-help.sh,
-	  test/tools/hfst-check-version.sh, tools/src/hfst-info.cc: Updated
-	  README. Fixed hfst-info so that it passes version and help
-	  checks.
-
-2013-01-08 15:22  eaxelson
-
-	* swig/README, swig/libhfst.i: Changed the order of paragraphs in
-	  README. Added a todo comment about XreCompiler.compiler
-	  conflicting with a built-in name 'compile' in python.
-
-2013-01-08 10:39  eaxelson
-
-	* README: Updated README.
-
-2013-01-07 11:36  eaxelson
-
-	* ChangeLog, NEWS, configure.ac, libhfst/src/Makefile.am: Ready for
-	  release 3.4.2.
-
-2013-01-04 11:12  eaxelson
-
-	* back-ends/foma/Makefile.am, configure.ac: Now -lncurses is used
-	  in foma instead if -ltermcap is not found.
-
-2013-01-03 16:28  eaxelson
-
-	* back-ends/Makefile.am, back-ends/foma/fomalib.h, configure.ac,
-	  test/tools/fsmbook-examples/Makefile.am: Fixed a bug in foma
-	  wrapping-
-
-2013-01-03 14:30  sdrobac
-
-	* libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  Added regexp substitution
-
-2012-12-21 14:30  sdrobac
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/Makefile.am,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.xfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/test.script,
-	  test/tools/fsmbook-examples/test-foma.sh: regex parser - added
-	  left replace epenthesis rule
-
-2012-12-21 07:45  moshagen
-
-	* configure.ac: Added note to remind people to also increment the
-	  HFST_LONGVERSION. This is important to ensure consistent
-	  behaviour between different types of version checks. The
-	  different types of version info returned by hfst-info --version
-	  should be consistent, the long version should just be a
-	  representational variant of the other values.
-
-2012-12-20 17:56  moshagen
-
-	* configure.ac: Longversion.
-
-2012-12-20 16:43  eaxelson
-
-	* ChangeLog, NEWS, configure.ac, libhfst/src/Makefile.am: Ready for
-	  release 3.4.1.
-
-2012-12-20 15:20  sdrobac
-
-	* test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/Palindromes/Makefile.am: fsmbook
-	  examples change
-
-2012-12-20 14:03  sdrobac
-
-	* configure.ac, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/HfstXeroxRulesTest.cc,
-	  test/tools/fsmbook-examples/FinnishProsody/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/test.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/Palindromes/Makefile,
-	  test/tools/fsmbook-examples/Palindromes/Makefile.am,
-	  test/tools/fsmbook-examples/Palindromes/Palindromes.hfst.script,
-	  test/tools/fsmbook-examples/Palindromes/test.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/test.script: Epenthesis
-	  rules fixed
-
-2012-12-19 15:07  eaxelson
-
-	* check_installation/morphology_tests/english-analyze.output,
-	  check_installation/morphology_tests/finnish-analyze.output,
-	  check_installation/morphology_tests/french-analyze.output,
-	  check_installation/morphology_tests/german-analyze.output,
-	  check_installation/morphology_tests/italian-analyze.output,
-	  check_installation/morphology_tests/swedish-analyze.output,
-	  check_installation/morphology_tests/turkish-analyze.output:
-	  Updated results of morphology tests.
-
-2012-12-19 14:37  eaxelson
-
-	* scripts/hfst-foma-wrapper.sh.in: Now hfst_foma is called directly
-	  from where it is installed.
-
-2012-12-19 14:37  moshagen
-
-	* configure.ac: Bring the long version string in sync with the
-	  other version numbers.
-
-2012-12-19 13:57  eaxelson
-
-	* scripts/hfst-foma-wrapper.sh.in: hfst-xfst now uses hfst_foma
-	  instead of installed foma.
-
-2012-12-19 11:24  eaxelson
-
-	* check_installation/morphology_tests/english-analyze.input,
-	  check_installation/morphology_tests/finnish-analyze.input,
-	  check_installation/morphology_tests/french-analyze.input,
-	  check_installation/morphology_tests/german-analyze.input,
-	  check_installation/morphology_tests/italian-analyze.input,
-	  check_installation/morphology_tests/swedish-analyze.input,
-	  check_installation/morphology_tests/turkish-analyze.input: Added
-	  test sentences for all morphologies.
-
-2012-12-19 10:53  eaxelson
-
-	* back-ends/foma/Makefile.am, back-ends/foma/minimize.c: Renamed a
-	  duplicate symbol.
-
-2012-12-18 15:37  eaxelson
-
-	* back-ends/sfst/fst.cc: A variable was shadowed by a another
-	  variable with the same name, renamed the previous.
-
-2012-12-18 10:53  moshagen
-
-	* test/tools/fsmbook-examples/FinnishOTProsody: Ignore generated
-	  file.
-
-2012-12-17 15:33  eaxelson
-
-	* check_installation/check-morphologies.sh,
-	  check_installation/check-swig-tests.sh,
-	  check_installation/check-swig.sh,
-	  check_installation/check-tool-tests.sh,
-	  check_installation/check-tools.sh,
-	  check_installation/dist-README, check_installation/make-dist.sh:
-	  Made the names of the tests scripts shorter.
-
-2012-12-17 14:57  eaxelson
-
-	* check_installation/check-morphologies.sh,
-	  check_installation/check-swig-tests.sh,
-	  check_installation/dist-README, check_installation/make-dist.sh,
-	  check_installation/morphology_tests,
-	  check_installation/morphology_tests/english-analyze.input,
-	  check_installation/morphology_tests/english-analyze.output,
-	  check_installation/morphology_tests/english-generate.input,
-	  check_installation/morphology_tests/english-generate.output,
-	  check_installation/morphology_tests/finnish-analyze.input,
-	  check_installation/morphology_tests/finnish-analyze.output,
-	  check_installation/morphology_tests/finnish-generate.input,
-	  check_installation/morphology_tests/finnish-generate.output,
-	  check_installation/morphology_tests/french-analyze.input,
-	  check_installation/morphology_tests/french-analyze.output,
-	  check_installation/morphology_tests/french-generate.input,
-	  check_installation/morphology_tests/french-generate.output,
-	  check_installation/morphology_tests/german-analyze.input,
-	  check_installation/morphology_tests/german-analyze.output,
-	  check_installation/morphology_tests/german-generate.input,
-	  check_installation/morphology_tests/german-generate.output,
-	  check_installation/morphology_tests/italian-analyze.input,
-	  check_installation/morphology_tests/italian-analyze.output,
-	  check_installation/morphology_tests/italian-generate.input,
-	  check_installation/morphology_tests/italian-generate.output,
-	  check_installation/morphology_tests/swedish-analyze.input,
-	  check_installation/morphology_tests/swedish-analyze.output,
-	  check_installation/morphology_tests/swedish-generate.input,
-	  check_installation/morphology_tests/swedish-generate.output,
-	  check_installation/morphology_tests/turkish-analyze.input,
-	  check_installation/morphology_tests/turkish-analyze.output,
-	  check_installation/morphology_tests/turkish-generate.input,
-	  check_installation/morphology_tests/turkish-generate.output:
-	  Tentatively added tests for installed HFST morphologies.
-
-2012-12-17 13:01  sdrobac
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/Makefile.am: Added lower priority
-	  union to regex parser
-
-2012-12-17 11:18  eaxelson
-
-	* back-ends/foma, back-ends/foma/Makefile.am,
-	  back-ends/foma/foma.c, back-ends/foma/iface.c,
-	  back-ends/foma/io.c, back-ends/foma/lex.cmatrix.c,
-	  back-ends/foma/lex.interface.c, back-ends/foma/stack.c,
-	  configure.ac, scripts/Makefile.am: Added foma script under
-	  back-ends/foma. It is now used by hfst-xfst. Fixes bug #147.
-
-2012-12-17 11:16  eaxelson
-
-	* swig/test/test.sh: Fixed a couple of typos in swig test file.
-
-2012-12-17 11:15  eaxelson
-
-	* check_installation/make-dist.sh: Updated the installation check
-	  script.
-
-2012-12-12 15:29  eaxelson
-
-	* check_installation/check-swig-tests.sh,
-	  check_installation/check-tool-tests.sh,
-	  check_installation/copy-swig-tests.sh,
-	  check_installation/copy-tool-tests.sh,
-	  check_installation/dist-README, check_installation/make-dist.sh:
-	  Tentatively added tests for installed swig bindings.
-
-2012-12-12 14:30  eaxelson
-
-	* check_installation/make-dist.sh,
-	  check_installation/test-empty-input.sh,
-	  check_installation/test-help.sh,
-	  check_installation/test-version.sh: Now installation tests pass
-	  on Hippu.
-
-2012-12-12 12:27  eaxelson
-
-	* check_installation/check-tool-tests.sh,
-	  check_installation/copy-files.sh,
-	  check_installation/copy-tool-tests.sh: Updated tests.
-
-2012-12-11 16:50  eaxelson
-
-	* check_installation/copy-files.sh,
-	  check_installation/test-help.sh,
-	  check_installation/test-version.sh,
-	  test/tools/hfst-check-environment.sh,
-	  test/tools/lexc-functionality.sh,
-	  test/tools/push-weights-functionality.sh: Now installation tests
-	  should pass. Also fixed a cople of minor bugs in test/tools.
-
-2012-12-11 16:09  eaxelson
-
-	* check_installation/copy-files.sh,
-	  check_installation/test-empty-input.sh,
-	  check_installation/test-help.sh,
-	  check_installation/test-version.sh: Added new tests.
-
-2012-12-11 14:31  eaxelson
-
-	* check_installation, check_installation/copy-files.sh: Tentatively
-	  added a test for all installed HFST functionalities.
-
-2012-12-10 23:28  moshagen
-
-	* libhfst/src/Makefile.am, tools/src/hfst-tagger/src/Makefile.am:
-	  Another warning-silencer flag that had to be removed to get hfst
-	  to build on MacOSX.
-
-2012-12-10 23:08  moshagen
-
-	* back-ends/foma/Makefile.am, back-ends/sfst/Makefile.am: Made hfst
-	  build on MacOSX again, by removing the -Wno-unused-result GCC
-	  flag. Sorry about the additional warnings, but I really need it
-	  to build.
-
-2012-12-10 16:49  eaxelson
-
-	* back-ends/foma/Makefile.am, back-ends/sfst/Makefile.am,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am: Suppressed warnings caused
-	  by back-end libraries.
-
-2012-12-10 15:57  eaxelson
-
-	* swig/doc, test/tools/fsmbook-examples/BetterColaMachine,
-	  test/tools/fsmbook-examples/DateParser,
-	  test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/Makefile.am,
-	  test/tools/fsmbook-examples/YaleShooting,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.hfst.script,
-	  tools/src: Ignored generated files.
-
-2012-12-10 15:23  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h, swig/README,
-	  swig/libhfst.i, swig/test/test.sh, swig/test/test_examples.py,
-	  swig/test/test_extensions.py, swig/test/test_flag_diacritics.py,
-	  swig/test/test_hfst_basic_transducer.py,
-	  swig/test/test_std_streams.py, swig/test/test_std_streams.sh,
-	  swig/test/test_streams.py, swig/test/test_xre_compiler.py: SWIG
-	  bindings should now work with both Python version 2 and 3. As
-	  FILE* conversions are no longer supported in Python 3, added more
-	  wrapper functions that use an HfstFile argument instead.
-
-2012-12-10 13:44  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  Priority union bug fix
-
-2012-12-10 11:29  sdrobac
-
-	* configure.ac, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.hfst.script,
-	  test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.xfst.script,
-	  test/tools/fsmbook-examples/BetterColaMachine/Makefile.am,
-	  test/tools/fsmbook-examples/BetterColaMachine/test.script,
-	  test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/DateParser.xfst.att,
-	  test/tools/fsmbook-examples/DateParser/DateParser.xfst.script,
-	  test/tools/fsmbook-examples/DateParser/Makefile.am,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.xfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/Makefile.am,
-	  test/tools/fsmbook-examples/FinnishOTProsody/test.script,
-	  test/tools/fsmbook-examples/FinnishProsody/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/test.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.xfst.script,
-	  test/tools/fsmbook-examples/Lingala/Makefile.am,
-	  test/tools/fsmbook-examples/Lingala/test.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/Makefile.am,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.xfst.script,
-	  test/tools/fsmbook-examples/YaleShooting/Makefile.am,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.hfst.script,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.xfst.att,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.xfst.script,
-	  test/tools/fsmbook-examples/better-cola-machine-test.sh,
-	  test/tools/fsmbook-examples/finnish-ot-prosody-test.sh,
-	  test/tools/fsmbook-examples/lingala.sh,
-	  test/tools/fsmbook-examples/test-foma.sh,
-	  test/tools/fsmbook-examples/xfst-prolog-to-hfst-att.sh,
-	  test/tools/fsmbook-examples/yale-shooting-test.sh: Fsmbook tests
-	  updated
-
-2012-12-10 11:22  eaxelson
-
-	* test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Removed old command line tool hfst-strip-header from tests.
-
-2012-12-10 11:20  eaxelson
-
-	* test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Removed old command line tool hfst-preprocess-for
-	  optimized-lookup-format from tests.
-
-2012-12-10 11:18  eaxelson
-
-	* test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Removed old command line tool hfst-duplicate from tests.
-
-2012-12-05 20:10  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Revert
-	  previous unintended change to unrelated files
-
-2012-12-05 19:44  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: The
-	  header from r2888 that accidentally didn't get re-committed
-	  with the most recent bugfix in this directory..
-
-2012-12-05 13:45  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Fix
-	  typo-bug wrt tape movement
-
-2012-12-05 13:29  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Roll
-	  back previous changes pending bug fixes
-
-2012-12-05 13:11  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Avoid
-	  reallocations in the input tape
-
-2012-12-05 13:03  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: New
-	  scheme for input and output tapes to allow them to be arbitrarily
-	  large
-
-2012-12-04 16:47  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Handle the case where we want to take a default transition when
-	  it's the only transition
-
-2012-12-04 16:19  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Changed
-	  all includes of type <backend-header.h> to "backend-header.h".
-	  Made small modifications to NSIS installer.
-
-2012-12-04 10:30  moshagen
-
-	* swig, swig/test: Ignore generated files.
-
-2012-11-30 15:22  eaxelson
-
-	* swig/README: Added more information to swig/README.
-
-2012-11-30 13:46  eaxelson
-
-	* ChangeLog, NEWS, configure.ac, libhfst/src/Makefile.am: Ready for
-	  release 3.4.0.
-
-2012-11-30 13:10  eaxelson
-
-	* libhfst/src/Makefile.am, tools/src/hfst-pmatch.cc: Fixed some
-	  bugs noticed when making distcheck-
-
-2012-11-29 12:48  eaxelson
-
-	* Makefile.am, back-ends/foma/Makefile.am,
-	  back-ends/openfst/src/Makefile.am,
-	  back-ends/openfst/src/include/Makefile.am,
-	  back-ends/openfst/src/lib/Makefile.am,
-	  back-ends/sfst/Makefile.am, configure.ac, swig/Makefile.am,
-	  swig/test/Makefile.am, test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script:
-	  Fixed a couple of bugs that occurred during installing a dist
-	  package..
-
-2012-11-28 14:23  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am: Fixed a small bug in
-	  HfstTransducer::read_lexc, suppressed some warnings from openfst
-	  headers.
-
-2012-11-28 14:13  eaxelson
-
-	* swig/doc/libhfst.py, swig/libhfst.i, swig/test/test.sh,
-	  swig/test/test_examples.py, swig/test/test_lexc.py: Updated
-	  python tests.
-
-2012-11-28 10:34  eaxelson
-
-	* swig/test/test_examples.py: Added all python examples given in
-	  the doxygen documentation to tests.
-
-2012-11-27 17:51  eaxelson
-
-	* back-ends/foma/fomalib.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, swig/libhfst.i, swig/test/test.sh,
-	  swig/test/test_examples.py,
-	  swig/test/test_hfst_basic_transducer.py, tools/src/hfst-lexc.cc:
-	  Added more tests to the Python interface and added throw
-	  statements to functions.
-
-2012-11-27 10:27  eaxelson
-
-	* configure.ac, test/tools/hfst-check-environment.sh,
-	  tools/src/Makefile.am, tools/src/hfst-duplicate.cc,
-	  tools/src/hfst-multiply.cc: Renamed hfst-duplicate as
-	  hfst-multiply.
-
-2012-11-23 15:23  eaxelson
-
-	* swig/test/test_std_streams.sh, swig/test/test_streams.py: Now
-	  tests remove extra files that they generate.
-
-2012-11-23 15:10  eaxelson
-
-	* swig/doc/libhfst.py, swig/test, swig/test.sh, swig/test/test.sh,
-	  swig/test/test_constructors.py, swig/test/test_examples.py,
-	  swig/test/test_extensions.py, swig/test/test_flag_diacritics.py,
-	  swig/test/test_hfst_basic_transducer.py,
-	  swig/test/test_lexc.lexc, swig/test/test_lexc.py,
-	  swig/test/test_lexc_fail.lexc, swig/test/test_rules.py,
-	  swig/test/test_std_streams.py, swig/test/test_std_streams.sh,
-	  swig/test/test_streams.py, swig/test/test_tokenizer.py,
-	  swig/test/test_transducer_functions.py,
-	  swig/test/test_xre_compiler.py, swig/test_constructors.py,
-	  swig/test_examples.py, swig/test_extensions.py,
-	  swig/test_flag_diacritics.py, swig/test_hfst_basic_transducer.py,
-	  swig/test_lexc.py, swig/test_rules.py, swig/test_std_streams.py,
-	  swig/test_std_streams.sh, swig/test_streams.py,
-	  swig/test_tokenizer.py, swig/test_transducer_functions.py,
-	  swig/test_xre_compiler.py: Moved Python tests to a separate
-	  directory.
-
-2012-11-23 14:42  eaxelson
-
-	* swig/Doxyfile, swig/doc, swig/doc/Doxyfile, swig/doc/libhfst.py,
-	  swig/hfst_documentation.py, swig/internal_documentation: Python
-	  documentation is now in a separate directory.
-
-2012-11-23 11:53  eaxelson
-
-	* swig/hfst_documentation.py, swig/internal_documentation/rules.py:
-	  Now all functions in Python interface are documented.
-
-2012-11-21 16:51  eaxelson
-
-	* swig/hfst_documentation.py,
-	  swig/internal_documentation/HfstExceptionDefs.py,
-	  swig/internal_documentation/rules.py: Added documentation on rule
-	  functions of the Python interface.
-
-2012-11-21 11:45  eaxelson
-
-	* swig/internal_documentation/HfstExceptionDefs.py,
-	  swig/internal_documentation/HfstTransducer.py: Added new internal
-	  documentation to the Python interface.
-
-2012-11-21 11:12  eaxelson
-
-	* swig/hfst_documentation.py, swig/hfst_swig_extensions.h,
-	  swig/internal_documentation/HfstTransducer.py, swig/libhfst.i:
-	  More documentation on the Python interface.
-
-2012-11-20 18:32  eaxelson
-
-	* swig/hfst_documentation.py,
-	  swig/internal_documentation/HfstTransducer.py: More swig
-	  documentation...
-
-2012-11-20 17:31  eaxelson
-
-	* swig/hfst_documentation.py,
-	  swig/internal_documentation/HfstTransducer.py: Added more
-	  documentation for class libhfst.HfstTransducer.
-
-2012-11-20 15:13  eaxelson
-
-	* swig/hfst_documentation.py,
-	  swig/internal_documentation/HfstTransducer.py,
-	  swig/internal_documentation/HfstTransitionGraph.h,
-	  swig/test_hfst_basic_transducer.py: Updated swig documentation.
-
-2012-11-20 13:01  moshagen
-
-	* back-ends/openfst, back-ends/openfst/src,
-	  back-ends/openfst/src/lib: Ignore generated files.
-
-2012-11-20 13:00  moshagen
-
-	* configure.ac: Added - as a comment - parts of my attempts at
-	  building all version info from only one definition. No success so
-	  far.
-	  
-	  Whitespace changes.
-
-2012-11-20 12:04  eaxelson
-
-	* back-ends/openfst, back-ends/openfst/AUTHORS,
-	  back-ends/openfst/COPYING, back-ends/openfst/INSTALL,
-	  back-ends/openfst/Makefile.am, back-ends/openfst/NEWS,
-	  back-ends/openfst/README, back-ends/openfst/foo,
-	  back-ends/openfst/src, back-ends/openfst/src/Makefile.am,
-	  back-ends/openfst/src/include,
-	  back-ends/openfst/src/include/Makefile.am,
-	  back-ends/openfst/src/include/fst,
-	  back-ends/openfst/src/include/fst/accumulator.h,
-	  back-ends/openfst/src/include/fst/add-on.h,
-	  back-ends/openfst/src/include/fst/arc-map.h,
-	  back-ends/openfst/src/include/fst/arc.h,
-	  back-ends/openfst/src/include/fst/arcfilter.h,
-	  back-ends/openfst/src/include/fst/arcsort.h,
-	  back-ends/openfst/src/include/fst/bi-table.h,
-	  back-ends/openfst/src/include/fst/cache.h,
-	  back-ends/openfst/src/include/fst/closure.h,
-	  back-ends/openfst/src/include/fst/compact-fst.h,
-	  back-ends/openfst/src/include/fst/compat.h,
-	  back-ends/openfst/src/include/fst/complement.h,
-	  back-ends/openfst/src/include/fst/compose-filter.h,
-	  back-ends/openfst/src/include/fst/compose.h,
-	  back-ends/openfst/src/include/fst/concat.h,
-	  back-ends/openfst/src/include/fst/config.h,
-	  back-ends/openfst/src/include/fst/config.h.in,
-	  back-ends/openfst/src/include/fst/connect.h,
-	  back-ends/openfst/src/include/fst/const-fst.h,
-	  back-ends/openfst/src/include/fst/determinize.h,
-	  back-ends/openfst/src/include/fst/dfs-visit.h,
-	  back-ends/openfst/src/include/fst/difference.h,
-	  back-ends/openfst/src/include/fst/edit-fst.h,
-	  back-ends/openfst/src/include/fst/encode.h,
-	  back-ends/openfst/src/include/fst/epsnormalize.h,
-	  back-ends/openfst/src/include/fst/equal.h,
-	  back-ends/openfst/src/include/fst/equivalent.h,
-	  back-ends/openfst/src/include/fst/expanded-fst.h,
-	  back-ends/openfst/src/include/fst/expectation-weight.h,
-	  back-ends/openfst/src/include/fst/factor-weight.h,
-	  back-ends/openfst/src/include/fst/flags.h,
-	  back-ends/openfst/src/include/fst/float-weight.h,
-	  back-ends/openfst/src/include/fst/fst-decl.h,
-	  back-ends/openfst/src/include/fst/fst.h,
-	  back-ends/openfst/src/include/fst/fstlib.h,
-	  back-ends/openfst/src/include/fst/generic-register.h,
-	  back-ends/openfst/src/include/fst/heap.h,
-	  back-ends/openfst/src/include/fst/icu.h,
-	  back-ends/openfst/src/include/fst/intersect.h,
-	  back-ends/openfst/src/include/fst/interval-set.h,
-	  back-ends/openfst/src/include/fst/invert.h,
-	  back-ends/openfst/src/include/fst/label-reachable.h,
-	  back-ends/openfst/src/include/fst/lexicographic-weight.h,
-	  back-ends/openfst/src/include/fst/lock.h,
-	  back-ends/openfst/src/include/fst/log.h,
-	  back-ends/openfst/src/include/fst/lookahead-filter.h,
-	  back-ends/openfst/src/include/fst/lookahead-matcher.h,
-	  back-ends/openfst/src/include/fst/map.h,
-	  back-ends/openfst/src/include/fst/matcher-fst.h,
-	  back-ends/openfst/src/include/fst/matcher.h,
-	  back-ends/openfst/src/include/fst/minimize.h,
-	  back-ends/openfst/src/include/fst/mutable-fst.h,
-	  back-ends/openfst/src/include/fst/pair-weight.h,
-	  back-ends/openfst/src/include/fst/partition.h,
-	  back-ends/openfst/src/include/fst/power-weight.h,
-	  back-ends/openfst/src/include/fst/product-weight.h,
-	  back-ends/openfst/src/include/fst/project.h,
-	  back-ends/openfst/src/include/fst/properties.h,
-	  back-ends/openfst/src/include/fst/prune.h,
-	  back-ends/openfst/src/include/fst/push.h,
-	  back-ends/openfst/src/include/fst/queue.h,
-	  back-ends/openfst/src/include/fst/randequivalent.h,
-	  back-ends/openfst/src/include/fst/randgen.h,
-	  back-ends/openfst/src/include/fst/random-weight.h,
-	  back-ends/openfst/src/include/fst/rational.h,
-	  back-ends/openfst/src/include/fst/register.h,
-	  back-ends/openfst/src/include/fst/relabel.h,
-	  back-ends/openfst/src/include/fst/replace-util.h,
-	  back-ends/openfst/src/include/fst/replace.h,
-	  back-ends/openfst/src/include/fst/reverse.h,
-	  back-ends/openfst/src/include/fst/reweight.h,
-	  back-ends/openfst/src/include/fst/rmepsilon.h,
-	  back-ends/openfst/src/include/fst/rmfinalepsilon.h,
-	  back-ends/openfst/src/include/fst/shortest-distance.h,
-	  back-ends/openfst/src/include/fst/shortest-path.h,
-	  back-ends/openfst/src/include/fst/signed-log-weight.h,
-	  back-ends/openfst/src/include/fst/slist.h,
-	  back-ends/openfst/src/include/fst/sparse-power-weight.h,
-	  back-ends/openfst/src/include/fst/sparse-tuple-weight.h,
-	  back-ends/openfst/src/include/fst/state-map.h,
-	  back-ends/openfst/src/include/fst/state-reachable.h,
-	  back-ends/openfst/src/include/fst/state-table.h,
-	  back-ends/openfst/src/include/fst/statesort.h,
-	  back-ends/openfst/src/include/fst/string-weight.h,
-	  back-ends/openfst/src/include/fst/string.h,
-	  back-ends/openfst/src/include/fst/symbol-table-ops.h,
-	  back-ends/openfst/src/include/fst/symbol-table.h,
-	  back-ends/openfst/src/include/fst/synchronize.h,
-	  back-ends/openfst/src/include/fst/test-properties.h,
-	  back-ends/openfst/src/include/fst/topsort.h,
-	  back-ends/openfst/src/include/fst/tuple-weight.h,
-	  back-ends/openfst/src/include/fst/types.h,
-	  back-ends/openfst/src/include/fst/union-find.h,
-	  back-ends/openfst/src/include/fst/union.h,
-	  back-ends/openfst/src/include/fst/util.h,
-	  back-ends/openfst/src/include/fst/vector-fst.h,
-	  back-ends/openfst/src/include/fst/verify.h,
-	  back-ends/openfst/src/include/fst/visit.h,
-	  back-ends/openfst/src/include/fst/weight.h,
-	  back-ends/openfst/src/lib, back-ends/openfst/src/lib/Makefile.am,
-	  back-ends/openfst/src/lib/compat.cc,
-	  back-ends/openfst/src/lib/flags.cc,
-	  back-ends/openfst/src/lib/fst.cc,
-	  back-ends/openfst/src/lib/properties.cc,
-	  back-ends/openfst/src/lib/symbol-table-ops.cc,
-	  back-ends/openfst/src/lib/symbol-table.cc,
-	  back-ends/openfst/src/lib/util.cc: Added missing directory
-	  'openfst'.
-
-2012-11-20 08:52  moshagen
-
-	* back-ends/openfstwin/src, back-ends/openfstwin/src/lib: More
-	  generated files to ignore.
-
-2012-11-20 08:51  moshagen
-
-	* back-ends, back-ends/dlfcn, back-ends/foma, back-ends/openfstwin,
-	  back-ends/sfst: Ignore generated files.
-
-2012-11-19 16:10  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/hfst_documentation.py,
-	  swig/internal_documentation/HfstTransitionGraph.h,
-	  swig/libhfst.i, swig/test_hfst_basic_transducer.py: Added a new
-	  constructor to HfstTransitionGraph, also added it to swig
-	  interface.
-
-2012-11-19 14:11  eaxelson
-
-	* swig/hfst_documentation.py,
-	  swig/internal_documentation/HfstTransitionGraph.h: Updated swig
-	  documentation.
-
-2012-11-17 11:20  eaxelson
-
-	* swig/hfst_documentation.py, swig/internal_documentation,
-	  swig/internal_documentation/HfstTransitionGraph.h: Updated python
-	  documentation.
-
-2012-11-16 14:34  eaxelson
-
-	* swig/Doxyfile, swig/hfst_documentation.py: Added more
-	  documentation of the python interface.
-
-2012-11-15 20:34  eaxelson
-
-	* swig/Doxyfile, swig/hfst_documentation.py: Tentatively added
-	  doxygen documentation for Python interface.
-
-2012-11-15 15:57  eaxelson
-
-	* Makefile.am, back-ends/Makefile.am, back-ends/foma/fomalib.h,
-	  configure.ac, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am, test/libhfst/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am: Now all back-ends (SFST,
-	  OpenFst and foma) are moved under HFST and statically linked to
-	  the HFST library.
-
-2012-11-15 12:07  eaxelson
-
-	* back-ends/Makefile.am: Forgot to change the directory name to
-	  opefstwin in Makefile.am.
-
-2012-11-15 12:03  eaxelson
-
-	* Makefile.am, back-ends, back-ends/Makefile.am, back-ends/dlfcn,
-	  back-ends/dlfcn/Makefile.am, back-ends/dlfcn/dlfcn.c,
-	  back-ends/dlfcn/dlfcn.h, back-ends/dlfcn/get-dlfcn.sh,
-	  back-ends/foma, back-ends/foma/CHANGELOG, back-ends/foma/COPYING,
-	  back-ends/foma/Makefile.am, back-ends/foma/README,
-	  back-ends/foma/README.cmatrix, back-ends/foma/README.symbols,
-	  back-ends/foma/apply.c, back-ends/foma/coaccessible.c,
-	  back-ends/foma/constructions.c, back-ends/foma/define.c,
-	  back-ends/foma/determinize.c, back-ends/foma/dynarray.c,
-	  back-ends/foma/extract.c, back-ends/foma/flags.c,
-	  back-ends/foma/foma.h, back-ends/foma/fomalib.h,
-	  back-ends/foma/fomalibconf.h, back-ends/foma/int_stack.c,
-	  back-ends/foma/io.c, back-ends/foma/lex.lexc.c,
-	  back-ends/foma/lex.yy.c, back-ends/foma/lexc.h,
-	  back-ends/foma/lexc.l, back-ends/foma/lexcread.c,
-	  back-ends/foma/mem.c, back-ends/foma/minimize.c,
-	  back-ends/foma/regex.l, back-ends/foma/regex.tab.c,
-	  back-ends/foma/regex.tab.h, back-ends/foma/regex.y,
-	  back-ends/foma/reverse.c, back-ends/foma/rewrite.c,
-	  back-ends/foma/sigma.c, back-ends/foma/spelling.c,
-	  back-ends/foma/stringhash.c, back-ends/foma/structures.c,
-	  back-ends/foma/topsort.c, back-ends/foma/trie.c,
-	  back-ends/foma/utf8.c, back-ends/openfstwin,
-	  back-ends/openfstwin/Makefile.am, back-ends/openfstwin/README,
-	  back-ends/openfstwin/get-openfst.sh, back-ends/openfstwin/src,
-	  back-ends/openfstwin/src/Makefile.am,
-	  back-ends/openfstwin/src/include,
-	  back-ends/openfstwin/src/include/fst,
-	  back-ends/openfstwin/src/include/fst/accumulator.h,
-	  back-ends/openfstwin/src/include/fst/add-on.h,
-	  back-ends/openfstwin/src/include/fst/arc-map.h,
-	  back-ends/openfstwin/src/include/fst/arc.h,
-	  back-ends/openfstwin/src/include/fst/arcfilter.h,
-	  back-ends/openfstwin/src/include/fst/arcsort.h,
-	  back-ends/openfstwin/src/include/fst/bi-table.h,
-	  back-ends/openfstwin/src/include/fst/cache.h,
-	  back-ends/openfstwin/src/include/fst/closure.h,
-	  back-ends/openfstwin/src/include/fst/compact-fst.h,
-	  back-ends/openfstwin/src/include/fst/compat.h,
-	  back-ends/openfstwin/src/include/fst/complement.h,
-	  back-ends/openfstwin/src/include/fst/compose-filter.h,
-	  back-ends/openfstwin/src/include/fst/compose.h,
-	  back-ends/openfstwin/src/include/fst/concat.h,
-	  back-ends/openfstwin/src/include/fst/config.h,
-	  back-ends/openfstwin/src/include/fst/connect.h,
-	  back-ends/openfstwin/src/include/fst/const-fst.h,
-	  back-ends/openfstwin/src/include/fst/determinize.h,
-	  back-ends/openfstwin/src/include/fst/dfs-visit.h,
-	  back-ends/openfstwin/src/include/fst/difference.h,
-	  back-ends/openfstwin/src/include/fst/edit-fst.h,
-	  back-ends/openfstwin/src/include/fst/encode.h,
-	  back-ends/openfstwin/src/include/fst/epsnormalize.h,
-	  back-ends/openfstwin/src/include/fst/equal.h,
-	  back-ends/openfstwin/src/include/fst/equivalent.h,
-	  back-ends/openfstwin/src/include/fst/expanded-fst.h,
-	  back-ends/openfstwin/src/include/fst/expectation-weight.h,
-	  back-ends/openfstwin/src/include/fst/factor-weight.h,
-	  back-ends/openfstwin/src/include/fst/flags.h,
-	  back-ends/openfstwin/src/include/fst/float-weight.h,
-	  back-ends/openfstwin/src/include/fst/fst-decl.h,
-	  back-ends/openfstwin/src/include/fst/fst.h,
-	  back-ends/openfstwin/src/include/fst/fstlib.h,
-	  back-ends/openfstwin/src/include/fst/generic-register.h,
-	  back-ends/openfstwin/src/include/fst/heap.h,
-	  back-ends/openfstwin/src/include/fst/icu.h,
-	  back-ends/openfstwin/src/include/fst/intersect.h,
-	  back-ends/openfstwin/src/include/fst/interval-set.h,
-	  back-ends/openfstwin/src/include/fst/invert.h,
-	  back-ends/openfstwin/src/include/fst/label-reachable.h,
-	  back-ends/openfstwin/src/include/fst/lexicographic-weight.h,
-	  back-ends/openfstwin/src/include/fst/lock.h,
-	  back-ends/openfstwin/src/include/fst/log.h,
-	  back-ends/openfstwin/src/include/fst/lookahead-filter.h,
-	  back-ends/openfstwin/src/include/fst/lookahead-matcher.h,
-	  back-ends/openfstwin/src/include/fst/map.h,
-	  back-ends/openfstwin/src/include/fst/matcher-fst.h,
-	  back-ends/openfstwin/src/include/fst/matcher.h,
-	  back-ends/openfstwin/src/include/fst/minimize.h,
-	  back-ends/openfstwin/src/include/fst/mutable-fst.h,
-	  back-ends/openfstwin/src/include/fst/pair-weight.h,
-	  back-ends/openfstwin/src/include/fst/partition.h,
-	  back-ends/openfstwin/src/include/fst/power-weight.h,
-	  back-ends/openfstwin/src/include/fst/product-weight.h,
-	  back-ends/openfstwin/src/include/fst/project.h,
-	  back-ends/openfstwin/src/include/fst/properties.h,
-	  back-ends/openfstwin/src/include/fst/prune.h,
-	  back-ends/openfstwin/src/include/fst/push.h,
-	  back-ends/openfstwin/src/include/fst/queue.h,
-	  back-ends/openfstwin/src/include/fst/randequivalent.h,
-	  back-ends/openfstwin/src/include/fst/randgen.h,
-	  back-ends/openfstwin/src/include/fst/random-weight.h,
-	  back-ends/openfstwin/src/include/fst/rational.h,
-	  back-ends/openfstwin/src/include/fst/register.h,
-	  back-ends/openfstwin/src/include/fst/relabel.h,
-	  back-ends/openfstwin/src/include/fst/replace-util.h,
-	  back-ends/openfstwin/src/include/fst/replace.h,
-	  back-ends/openfstwin/src/include/fst/reverse.h,
-	  back-ends/openfstwin/src/include/fst/reweight.h,
-	  back-ends/openfstwin/src/include/fst/rmepsilon.h,
-	  back-ends/openfstwin/src/include/fst/rmfinalepsilon.h,
-	  back-ends/openfstwin/src/include/fst/shortest-distance.h,
-	  back-ends/openfstwin/src/include/fst/shortest-path.h,
-	  back-ends/openfstwin/src/include/fst/signed-log-weight.h,
-	  back-ends/openfstwin/src/include/fst/slist.h,
-	  back-ends/openfstwin/src/include/fst/sparse-power-weight.h,
-	  back-ends/openfstwin/src/include/fst/sparse-tuple-weight.h,
-	  back-ends/openfstwin/src/include/fst/state-map.h,
-	  back-ends/openfstwin/src/include/fst/state-reachable.h,
-	  back-ends/openfstwin/src/include/fst/state-table.h,
-	  back-ends/openfstwin/src/include/fst/statesort.h,
-	  back-ends/openfstwin/src/include/fst/string-weight.h,
-	  back-ends/openfstwin/src/include/fst/string.h,
-	  back-ends/openfstwin/src/include/fst/symbol-table-ops.h,
-	  back-ends/openfstwin/src/include/fst/symbol-table.h,
-	  back-ends/openfstwin/src/include/fst/synchronize.h,
-	  back-ends/openfstwin/src/include/fst/test-properties.h,
-	  back-ends/openfstwin/src/include/fst/topsort.h,
-	  back-ends/openfstwin/src/include/fst/tuple-weight.h,
-	  back-ends/openfstwin/src/include/fst/types.h,
-	  back-ends/openfstwin/src/include/fst/union-find.h,
-	  back-ends/openfstwin/src/include/fst/union.h,
-	  back-ends/openfstwin/src/include/fst/unordered_map.h,
-	  back-ends/openfstwin/src/include/fst/unordered_set.h,
-	  back-ends/openfstwin/src/include/fst/util.h,
-	  back-ends/openfstwin/src/include/fst/vector-fst.h,
-	  back-ends/openfstwin/src/include/fst/verify.h,
-	  back-ends/openfstwin/src/include/fst/visit.h,
-	  back-ends/openfstwin/src/include/fst/weight.h,
-	  back-ends/openfstwin/src/lib,
-	  back-ends/openfstwin/src/lib/Makefile.am,
-	  back-ends/openfstwin/src/lib/compat.cc,
-	  back-ends/openfstwin/src/lib/flags.cc,
-	  back-ends/openfstwin/src/lib/fst.cc,
-	  back-ends/openfstwin/src/lib/properties.cc,
-	  back-ends/openfstwin/src/lib/symbol-table-ops.cc,
-	  back-ends/openfstwin/src/lib/symbol-table.cc,
-	  back-ends/openfstwin/src/lib/util.cc, back-ends/sfst,
-	  back-ends/sfst/Makefile.am, back-ends/sfst/README,
-	  back-ends/sfst/alphabet.cc, back-ends/sfst/alphabet.h,
-	  back-ends/sfst/basic.cc, back-ends/sfst/basic.h,
-	  back-ends/sfst/compact.cc, back-ends/sfst/compact.h,
-	  back-ends/sfst/determinise.cc, back-ends/sfst/fst.cc,
-	  back-ends/sfst/fst.h, back-ends/sfst/generate.cc,
-	  back-ends/sfst/hopcroft.cc, back-ends/sfst/interface.h,
-	  back-ends/sfst/mem.h, back-ends/sfst/operators.cc,
-	  back-ends/sfst/sgi.h, back-ends/sfst/utf8.cc,
-	  back-ends/sfst/utf8.h, configure.ac, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am, test/libhfst/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am, windows: Renamed directory
-	  'windows' as 'back-ends'.
-
-2012-11-14 20:08  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/libhfst.i, swig/test_hfst_basic_transducer.py: Added a
-	  variant of HfstBasicTransducer::add_symbols_to_alphabet that
-	  takes a StringSet as an argument.
-
-2012-11-14 18:54  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/libhfst.i, swig/test_rules.py,
-	  swig/test_transducer_functions.py, swig/test_xre_compiler.py:
-	  Added all substitute functions to swig.
-
-2012-11-13 16:07  eaxelson
-
-	* swig/libhfst.i, swig/test.sh, swig/test_xre_compiler.py: Added
-	  XreCompiler functionalities to Swig.
-
-2012-11-12 10:31  eaxelson
-
-	* swig/hfst_swig_extensions.h, swig/libhfst.i, swig/test.sh,
-	  swig/test_constructors.py, swig/test_examples.py,
-	  swig/test_extensions.py, swig/test_flag_diacritics.py,
-	  swig/test_hfst_basic_transducer.py, swig/test_lexc.py,
-	  swig/test_rules.py, swig/test_std_streams.py,
-	  swig/test_streams.py, swig/test_transducer_functions.py: Now
-	  enumerators can be used normally in python, e.g.
-	  libhfst.SFST_TYPE.
-
-2012-11-09 17:14  eaxelson
-
-	* swig/hfst_swig_extensions.h, swig/libhfst.i, swig/test.sh,
-	  swig/test_lexc.py: Added Lexc functions to Swig.
-
-2012-11-09 13:55  eaxelson
-
-	* swig/libhfst.i, swig/test.sh, swig/test_examples.py,
-	  swig/test_rules.py: Added more tests.
-
-2012-11-09 10:05  eaxelson
-
-	* configure.ac: Fixed a typo in configure file.
-
-2012-11-08 17:35  moshagen
-
-	* configure.ac: Bring the HFST_LONGVERSION in sync with the other
-	  version strings (again - is there a way to calculate some version
-	  strings from others? I.e. change once, update everywhere?).
-
-2012-11-08 16:39  moshagen
-
-	* test/tools/fsmbook-examples/MonishAnalysis: Ignore generated
-	  files.
-
-2012-11-08 15:05  eaxelson
-
-	* swig/libhfst.i, swig/test_transducer_functions.py: More updates
-	  to tests.
-
-2012-11-08 13:57  eaxelson
-
-	* swig/README, swig/hfst_swig_extensions.h, swig/libhfst.i,
-	  swig/test.sh, swig/test_extensions.py,
-	  swig/test_flag_diacritics.py, swig/test_transducer_functions.py:
-	  Updated swig tests.
-
-2012-11-08 13:14  sdrobac
-
-	* configure.ac, libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/MonishAnalysis/Makefile.am,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.xfst.att,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.xfst.script,
-	  test/tools/fsmbook-examples/MonishAnalysis/test.script,
-	  test/tools/fsmbook-examples/monish-analysis-test.sh: Fixed
-	  MonishAnalysis fsmbook-examples test
-
-2012-11-08 10:59  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/HfstXeroxRulesTest.cc: Added before and after to
-	  HfstXeroxRules
-
-2012-11-07 13:13  eaxelson
-
-	* swig/test_std_streams.py, swig/test_tokenizer.py: Added new test
-	  for tokenizer.
-
-2012-11-06 13:50  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRulesTest.cc:
-	  Fixed restriction in HfstXeroxRules
-
-2012-11-02 16:29  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/HfstXeroxRulesTest.cc: Updated restriction in
-	  HfstXeroxRules
-
-2012-11-02 13:38  eaxelson
-
-	* swig/hfst_swig_extensions.h, swig/test_std_streams.sh: Small
-	  updates and added documentation to tests and swig bindings.
-
-2012-11-01 15:05  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/hfst_swig_extensions.h, swig/libhfst.i,
-	  swig/test_hfst_basic_transducer.py,
-	  swig/test_transducer_functions.py: Added new test cases and
-	  functions to the Swig interface. Also moved HfstFile to
-	  HfstTransitionGraph.h.
-
-2012-11-01 09:27  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/HfstXeroxRulesTest.cc: Added restriction to
-	  HfstXeroxrules
-
-2012-10-31 13:51  eaxelson
-
-	* swig/test_transducer_functions.py: Added one more test.
-
-2012-10-31 13:20  eaxelson
-
-	* swig/libhfst.i, swig/test_hfst_basic_transducer.py: Updated
-	  tests, added some throw statements to the interface file.
-
-2012-10-31 09:55  eaxelson
-
-	* swig/test_hfst_basic_transducer.py: Tentatively added a new test
-	  for swig bindings.
-
-2012-10-30 16:25  eaxelson
-
-	* swig/hfst_swig_extensions.h, swig/libhfst.i,
-	  swig/test_constructors.py: Added HfstTokenizer to the python
-	  interface.
-
-2012-10-30 15:35  hardwick
-
-	* libhfst/src/parsers/Makefile.am: Added some files to _BUILT that
-	  probably should have been there all along
-	  (is this the cause of those build problems on some platforms?)
-
-2012-10-30 15:20  eaxelson
-
-	* swig/test_constructors.py: Tentatively added python version of
-	  libhfst test.
-
-2012-10-30 10:33  eaxelson
-
-	* test/tools/Makefile.am: Added yet one missing lexc file.
-
-2012-10-30 10:25  eaxelson
-
-	* test/tools/Makefile.am: Added a missing file in lexc tests.
-
-2012-10-30 10:02  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.3.15.
-
-2012-10-29 13:12  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, swig,
-	  test/libhfst/test_transducer_functions.cc: Fixed a re-introduced
-	  bug in insert_freely(SymbolPair&), now unknown and identity
-	  symbols are expanded during the operation. Also made svn ignore
-	  some generated files in swig directory.
-
-2012-10-26 01:43  mie
-
-	* tools/src/hfst-twolc/src/Makefile.am: Fix unnecessary shell call
-	  that breaks portability
-
-2012-10-19 11:48  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed bug in flag diacritic
-	  handling. Transducers were harmonized before insertion of missing
-	  flags, which lead to undesired behavior when identity/unknown
-	  symbols mixed with flag diacritics.
-
-2012-10-18 12:29  eaxelson
-
-	* ., Doxyfile, api_documentation.dox, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h, swig,
-	  tools/src/hfst-tagger/src, tools/src/hfst-twolc/src: Updated
-	  doxygen documentation. Made svn ignore some generated files.
-
-2012-10-18 12:26  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi: Included Python
-	  scripts needed by tagger tools to Windows installer.
-
-2012-10-18 08:34  eaxelson
-
-	* scripts/hfst-xfst: Removed bashisms from scripts.
-
-2012-10-18 08:13  eaxelson
-
-	* tools/src/hfst-tagger/src/hfst-train-tagger.sh,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/hfst-twolc/src/hfst-twolc.sh,
-	  tools/src/hfst-twolc/test/test: Fixed some GNUisms ans bashisms
-	  in twolc and tagger scripts to make them work also on non-Linux
-	  platforms.
-
-2012-10-18 07:58  eaxelson
-
-	* test/tools/empty-input.sh, test/tools/hfst-check-environment.sh,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Fixed some GNUisms ans bashisms in tests to make them work also
-	  on non-Linux platforms.
-
-2012-10-17 11:49  eaxelson
-
-	* Doxyfile, api_documentation.dox, configure.ac,
-	  test/tools/hfst-check-help.sh,
-	  tools/src/hfst-tagger/src/Makefile.am: Enabled hfst-tagger when
-	  compiling on Windows. Excluded the Windows versions of tagger and
-	  twolc tools from hfst-check-help.sh. Also updated Doxygen
-	  documentation.
-
-2012-10-17 11:46  eaxelson
-
-	* NSIS/README, NSIS/copy_files.sh, NSIS/hfst_installer.nsi: Added
-	  hfst-train-tagger and hfst-twolc to Windows installer. Updated
-	  README file.
-
-2012-10-17 10:40  eaxelson
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/hfst-train-tagger-system.cc,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/hfst-twolc/src/hfst-twolc-system.cc: Added versions of
-	  hfst-twolc and hfst-train-tagger that use system calls instead of
-	  shell commands.
-
-2012-10-16 13:53  eaxelson
-
-	* tools/src/hfst-optimized-lookup.cc: Made small modifications to
-	  hfst-optimized-lookup so that it works on Windows. Now the
-	  transducer file is opened in binary mode and carriage returns are
-	  removed from the input strings.
-
-2012-10-13 03:51  mie
-
-	* libhfst/src/parsers/lexc-utils.cc: Just a test commit, nothing to
-	  see here
-
-2012-10-13 03:13  mie
-
-	* libhfst/src/parsers/lexc-utils.cc,
-	  test/tools/basic.lowercase-lexicon-end.lexc,
-	  test/tools/basic.multichar-flag-with-zero.lexc,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh: Parse 0 within @ flags as if it
-	  was known multichar symbol
-
-2012-10-13 03:12  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc: Fix escaped 0 at the end
-
-2012-10-13 02:27  mie
-
-	* libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-parser.yy,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh: Warn users about wrong case in
-	  keywords
-
-2012-10-11 09:25  eaxelson
-
-	* NSIS/README, NSIS/hfst_installer.nsi: Added a README file.
-
-2012-10-10 14:12  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi, configure.ac,
-	  tools/src/Makefile.am: Removed hfst-strip-header from tools, use
-	  hfst-fst2fst instead.
-
-2012-10-10 13:51  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi, configure.ac,
-	  tools/src/Makefile.am: Removed
-	  hfst-preprocess-for-optimized-lookup-format tool.
-
-2012-10-09 11:47  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi,
-	  swig/hfst_swig_extensions.h, swig/libhfst.i: Updated swig
-	  bindings, edited NSIS scripts.
-
-2012-10-08 17:02  mie
-
-	* tools/src/hfst-info.cc: Parse version vector with serial strtouls
-
-2012-10-08 13:45  moshagen
-
-	* configure.ac: Bring the HFST_LONGVERSION in sync with the other
-	  version strings (?).
-
-2012-10-08 12:10  eaxelson
-
-	* NSIS/hfst_installer.nsi: Added files to HFSt installer.
-
-2012-10-06 19:55  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_constructors.cc, test/libhfst/test_examples.cc,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  test/libhfst/test_streams.cc, tools/src/hfst-txt2fst.cc: Changed
-	  HfstTransducer(FILE*, ...) so that epsilon symbol is an
-	  obligatory argument and added a new obligatory argument that
-	  keeps track of the line number in the AT&T file. Did the same to
-	  HfstBasicTransducer::read_in_att_format.
-
-2012-10-05 14:19  eaxelson
-
-	* NSIS/hfst_installer.nsi: Updated installer script.
-
-2012-10-05 11:58  eaxelson
-
-	* NSIS, NSIS/hfst_installer.nsi, swig/hfst_swig_extensions.h,
-	  swig/libhfst.i, swig/test_std_streams.py: Added a directory for
-	  NSIS installer scripts.
-
-2012-10-04 13:07  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  swig/hfst_swig_extensions.h, swig/libhfst.i,
-	  swig/test_streams.py: Now FomaTransducer::read_net accepts also
-	  files with CR+LF newlines.
-
-2012-10-03 16:29  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  swig/libhfst.i, swig/test_std_streams.sh, swig/test_streams.py:
-	  Added wrapper class HfstFile for FILE* that can be used in
-	  Python.
-
-2012-10-03 07:50  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: upper- and lowercase versions
-	  of convenience acceptors
-
-2012-10-01 09:09  eaxelson
-
-	* swig/libhfst.i, test/tools/Makefile.am: Added missing files to
-	  test/tools, fixed a typo in libhfst.i.
-
-2012-10-01 08:22  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.3.14.
-
-2012-09-30 07:12  eaxelson
-
-	* swig/test_std_streams.py, swig/test_std_streams.sh: Added new
-	  testing scripts.
-
-2012-09-29 14:12  eaxelson
-
-	* libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/libhfst.i, swig/test_streams.py: Now
-	  HfstTransitionGraph::read_in_att_format throws an
-	  EndOfFileException if the argument FILE is exhausted. Also fixed
-	  a typo in HfstOutputStream.
-
-2012-09-29 11:44  eaxelson
-
-	* libhfst/src/HfstOutputStream.cc, libhfst/src/HfstOutputStream.h,
-	  swig/libhfst.i, swig/setup.py, swig/test_streams.py: Added an
-	  alias for HfstOutputStream::operator<<,
-	  HfstOutputStream::redirect. Also added a Python test
-	  test_streams.py.
-
-2012-09-29 10:26  eaxelson
-
-	* swig/libhfst.i: Fixed a namespace issue in libhfst.i, now
-	  omor_query.py works.
-
-2012-09-29 10:04  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/libhfst.i: Added HFST exceptions to the Python interface.
-	  Renamed HfstBasicTransducer::at(HfstState) to
-	  transitions(HfstState).
-
-2012-09-28 16:18  eaxelson
-
-	* swig/libhfst.i: Added more functionalities to the swig interface.
-
-2012-09-27 20:21  mpsilfve
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Fixed
-	  missing symbol table in optionalization bug for tropical weight
-	  type transducers.
-
-2012-09-27 13:36  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/libhfst.i: Added wrappers for operators [], = and << so that
-	  they can be used in swig bindings.
-
-2012-09-26 15:09  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/hfst_swig_extensions.h, swig/libhfst.i: Added the function
-	  write_in_att_format(char * buffer, bool) to HfstTransducer. This
-	  makes it possible to call python's print() to a transducer.
-
-2012-09-25 14:53  eaxelson
-
-	* swig/hfst_swig_extensions.h, swig/libhfst.i: Tentatively added
-	  HfstBasicTransducer to the swig interface.
-
-2012-09-25 12:53  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/xre_parse.yy: Changed Replace rules interface
-
-2012-09-25 07:07  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/hfst-pmatch2fst.cc: Fallback utf-8 tokenization
-
-2012-09-25 06:19  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Tokenize string literals for
-	  pmatch parsing
-
-2012-09-20 15:30  eaxelson
-
-	* tools/src/hfst-lookup.cc: Now hfst-lookup handles the '\r'
-	  character right when parsing input strings on Windows.
-
-2012-09-20 12:12  eaxelson
-
-	* libhfst/src/implementations/HfstOlTransducer.cc: HfstOlTransducer
-	  streams are now opened in binary mode.
-
-2012-09-18 15:20  eaxelson
-
-	* libhfst/src/Makefile.am, libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am, test/libhfst/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-twolc/src/Makefile.am:
-	  Added dlfcn include path to Makefiles.
-
-2012-09-18 14:54  mie
-
-	* README: Remove mentions of apertium and xml stuff
-
-2012-09-18 09:30  hardwick
-
-	* tools/src/hfst-pmatch2fst.cc: Multiline handling like regexp2fst
-
-2012-09-18 09:13  eaxelson
-
-	* tools/src/Makefile.am: Fixed a typo in Makefile.am.
-
-2012-09-18 07:48  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Tentative names for
-	  charclasses
-
-2012-09-18 07:44  hardwick
-
-	* tools/src/hfst-pmatch2fst.cc: Semicolon separation is default
-
-2012-09-18 06:31  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.h: Context-checking markers in
-	  pmatch2fst parsing
-
-2012-09-17 15:54  moshagen
-
-	* windows/sfst: Ignore generated files.
-
-2012-09-17 14:14  mie
-
-	* libhfst/src/parsers/xre_lex.ll: Make , reserved. Fixes [#134].
-
-2012-09-17 14:12  mie
-
-	* tools/src/hfst-regexp2fst.cc: print yacc debug traces if hidden
-	  sekrit debug mode is on.
-
-2012-09-17 12:03  eaxelson
-
-	* windows/sfst/interface.h: Added missing file sfst/interface.h
-
-2012-09-17 11:15  eaxelson
-
-	* test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.hfst.script,
-	  test/tools/fsmbook-examples/BetterColaMachine/test.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese2.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/EinsteinsPuzzle.hfst.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.sh,
-	  test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAdjectivesAndVerbs.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/test.sh,
-	  test/tools/fsmbook-examples/FinnishNumerals/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.sh,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/test.script,
-	  test/tools/fsmbook-examples/FinnishProsody/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/test.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script,
-	  test/tools/fsmbook-examples/Lingala/test.script,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-examples/MonishAnalysis/test.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.sh,
-	  test/tools/fsmbook-examples/Palindromes/Palindromes.hfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/test.script,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.hfst.script,
-	  test/tools/fsmbook-examples/test-example.sh: Changed
-	  ../../tools/src to in fsmbook-examples to make tests more
-	  flexible.
-
-2012-09-17 09:26  eaxelson
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/compare-functionality.sh,
-	  test/tools/compose-functionality.sh,
-	  test/tools/compose-intersect-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh, test/tools/empty-input.sh,
-	  test/tools/format-functionality.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/fst2txt-functionality.sh,
-	  test/tools/head-functionality.sh,
-	  test/tools/hfst-check-environment.sh,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh,
-	  test/tools/incompatible-formats.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/latin-1-strings.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh, test/tools/lexc2fst-stress.sh,
-	  test/tools/lookup-functionality.sh, test/tools/lookup-stress.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/permutate-file-params.sh,
-	  test/tools/proc-functionality.sh, test/tools/proc-stress.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/push-weights-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/reweight-functionality.sh,
-	  test/tools/shuffle-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/strings2fst-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/summarize-functionality.sh,
-	  test/tools/tail-functionality.sh,
-	  test/tools/txt2fst-functionality.sh, test/tools/utf-8-strings.sh,
-	  test/tools/valgrind.sh: Changed the pathname ../../tools/src to .
-	  This makes testing more flexible.
-
-2012-09-14 13:58  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am,
-	  test/tools/regexp2fst-functionality.sh: Fixed a couple of typos.
-
-2012-09-13 14:53  eaxelson
-
-	* windows/sfst/Makefile.am, windows/sfst/alphabet.C,
-	  windows/sfst/alphabet.cc, windows/sfst/basic.C,
-	  windows/sfst/basic.cc, windows/sfst/compact.C,
-	  windows/sfst/compact.cc, windows/sfst/determinise.C,
-	  windows/sfst/determinise.cc, windows/sfst/fst.C,
-	  windows/sfst/fst.cc, windows/sfst/generate.C,
-	  windows/sfst/generate.cc, windows/sfst/hopcroft.C,
-	  windows/sfst/hopcroft.cc, windows/sfst/operators.C,
-	  windows/sfst/operators.cc, windows/sfst/utf8.C,
-	  windows/sfst/utf8.cc: Renamed .c files to .cc so that
-	  c++-compiler is used.
-
-2012-09-13 13:44  eaxelson
-
-	* libhfst/src/Makefile.am, libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am, test/libhfst/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am: Fixed sfst include path.
-
-2012-09-13 12:35  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am, test/libhfst/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am, windows/Makefile.am,
-	  windows/openfst/README, windows/sfst, windows/sfst/Makefile.am,
-	  windows/sfst/README, windows/sfst/alphabet.C,
-	  windows/sfst/alphabet.h, windows/sfst/basic.C,
-	  windows/sfst/basic.h, windows/sfst/compact.C,
-	  windows/sfst/compact.h, windows/sfst/determinise.C,
-	  windows/sfst/fst.C, windows/sfst/fst.h, windows/sfst/generate.C,
-	  windows/sfst/hopcroft.C, windows/sfst/mem.h,
-	  windows/sfst/operators.C, windows/sfst/sgi.h,
-	  windows/sfst/utf8.C, windows/sfst/utf8.h: Tentatively added SFST
-	  under directory windows.
-
-2012-09-13 11:29  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h: #include
-	  <stack> (seems to be necessary when compiling without openfst at
-	  least)
-
-2012-09-12 22:48  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Some compilers don't believe
-	  in universal characters given from the ASCII
-	  range, so instead of \u000D, have \r
-
-2012-09-12 15:44  eaxelson
-
-	* libhfst/src/FormatSpecifiers.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am, windows/foma/io.c: Fixed
-	  format specifiers when printing long long on Windows. Also
-	  specified windows/foma as include directory in Makefiles.
-
-2012-09-11 16:21  moshagen
-
-	* test/tools: Added one ignore.
-
-2012-09-11 16:20  moshagen
-
-	* test/tools/parallel-left-arrow-multicom-emptyline.xre,
-	  test/tools/regexp2fst-functionality.sh: Added regex test case
-	  from the GT/Divvun sources that presently does not compile with
-	  hfst-regexp2fst.
-
-2012-09-11 15:26  eaxelson
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am, windows/foma/Makefile.am,
-	  windows/foma/fomalib.h, windows/foma/io.c: Made fixes to foma
-	  compilation.
-
-2012-09-11 15:18  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Add charset-defining
-	  hardcoded transducers to pmatch utilities for now
-
-2012-09-11 12:53  eaxelson
-
-	* windows/foma/Makefile.am, windows/foma/README,
-	  windows/foma/fomalib.h, windows/foma/io.c: Foma's io functions
-	  are now skipped.
-
-2012-09-11 12:38  moshagen
-
-	* windows/foma: Ignore generated files.
-
-2012-09-11 12:01  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  test/tools/parallel-left-arrow.xre: Fixed left replace rule
-
-2012-09-11 07:20  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Stateful
-	  context-checking mechanism; remove recursive functions for same
-
-2012-09-10 16:04  eaxelson
-
-	* configure.ac, windows/foma/Makefile.am: OpenFst library check is
-	  now skipped and flag -D_MSC_VER is used when compiling on
-	  Windows.
-
-2012-09-10 14:58  eaxelson
-
-	* windows/foma/Makefile.am: Fixed a typo in library name.
-
-2012-09-10 14:51  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am, windows/Makefile.am,
-	  windows/foma, windows/foma/CHANGELOG, windows/foma/COPYING,
-	  windows/foma/Makefile.am, windows/foma/README,
-	  windows/foma/README.cmatrix, windows/foma/README.symbols,
-	  windows/foma/apply.c, windows/foma/coaccessible.c,
-	  windows/foma/constructions.c, windows/foma/define.c,
-	  windows/foma/determinize.c, windows/foma/dynarray.c,
-	  windows/foma/extract.c, windows/foma/flags.c,
-	  windows/foma/foma.h, windows/foma/fomalib.h,
-	  windows/foma/fomalibconf.h, windows/foma/int_stack.c,
-	  windows/foma/io.c, windows/foma/lex.lexc.c,
-	  windows/foma/lex.yy.c, windows/foma/lexc.h, windows/foma/lexc.l,
-	  windows/foma/lexcread.c, windows/foma/mem.c,
-	  windows/foma/minimize.c, windows/foma/regex.l,
-	  windows/foma/regex.tab.c, windows/foma/regex.tab.h,
-	  windows/foma/regex.y, windows/foma/reverse.c,
-	  windows/foma/rewrite.c, windows/foma/sigma.c,
-	  windows/foma/spelling.c, windows/foma/stringhash.c,
-	  windows/foma/structures.c, windows/foma/topsort.c,
-	  windows/foma/trie.c, windows/foma/utf8.c: Tentatively added foma
-	  under directory windows.
-
-2012-09-10 13:51  mpsilfve
-
-	* tools/src/generate_model_forms.cc,
-	  tools/src/generate_model_forms.h, tools/src/hfst-guess.cc: Added
-	  generate_threshold parameter to prevent generating suboptimal
-	  forms.
-
-2012-09-10 13:28  mpsilfve
-
-	* tools/src/generate_model_forms.cc,
-	  tools/src/generate_model_forms.h: Generate several forms if
-	  several forms can be generated.
-
-2012-09-10 11:46  eaxelson
-
-	* test/tools/strings2fst-functionality.sh: Added missing --format
-	  flag in hfst-strings2fst functionality test.
-
-2012-09-10 11:35  moshagen
-
-	* tools/src: One more binary file to ignore.
-
-2012-09-10 11:13  mpsilfve
-
-	* tools/src/guessify_fst.cc: Modified guessify to handle gradation
-	  in omofi.
-
-2012-09-09 13:19  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/generate_model_forms.cc,
-	  tools/src/hfst-expand-equivalences.cc, tools/src/hfst-guess.cc:
-	  ACX tool disabled by default, requires libxml/tree.h and -lxml2
-
-2012-09-09 07:56  moshagen
-
-	* libhfst/src, libhfst/src/parsers, test/tools,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle,
-	  test/tools/fsmbook-examples/EnglishNumerals,
-	  test/tools/fsmbook-examples/Esperanto,
-	  test/tools/fsmbook-examples/FinnishNumerals,
-	  test/tools/fsmbook-examples/NumbersToNumerals,
-	  tools/src/hfst-twolc/test: Ignore generated test files.
-
-2012-09-09 07:43  moshagen
-
-	* tools/src/hfst-twolc/test/Makefile.am~: Temporary file - does not
-	  belong in svn.
-
-2012-09-09 00:44  mie
-
-	* test/tools/parallel-left-arrow.xre,
-	  test/tools/regexp2fst-functionality.sh: Test parallel left arrows
-	  [#132] part 2.
-
-2012-09-09 00:30  mie
-
-	* tools/src/hfst-regexp2fst.cc: Ignore expressions that _only_
-	  contain whitespace. Fixes [#132]?
-
-2012-09-09 00:30  mie
-
-	* test/tools/not-contains-a-comment-emptyline.xre,
-	  test/tools/not-contains-a.xre,
-	  test/tools/regexp2fst-functionality.sh: Test not contains and
-	  multiline expressions with comments and emptylines,
-	  Bug [#132]
-
-2012-09-09 00:12  mie
-
-	* tools/src/hfst-regexp2fst.cc: Bail on parse errors
-
-2012-09-09 00:03  mie
-
-	* test/tools/cats_and_dogs_semicolon.xre: No semicolons, huh
-
-2012-09-08 23:41  mie
-
-	* tools/src/hfst-strings2fst.cc: Allow windows or mac legacy \r's
-	  to end strings
-
-2012-09-08 23:37  mie
-
-	* tools/src/hfst-regexp2fst.cc, tools/src/hfst-strings2fst.cc: Stop
-	  recording input data to headers until header support for longer
-	  data
-	  gets fixed
-
-2012-09-08 23:31  mie
-
-	* test/tools/Makefile.am: Only test fsmbook-examples if other tools
-	  actually work...
-
-2012-09-08 22:29  mie
-
-	* configure.ac, tools/src/hfst-info.cc: Do not use AC_PACKAGE_URL
-	  or resp. parameter to support autoconf's
-	  older than 2.63 or so
-
-2012-09-08 22:23  mie
-
-	* test/tools/strings2fst-functionality.sh: Test that dos strings
-	  compile like unix
-
-2012-09-08 22:18  mie
-
-	* test/tools/lexc-functionality.sh: tests should pass 77 if tool is
-	  not available
-
-2012-09-08 21:49  mie
-
-	* test/tools/dos.strings, test/tools/strings2fst-functionality.sh:
-	  Test that strings2fst handles M$-strings
-
-2012-09-07 12:32  eaxelson
-
-	* test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh,
-	  tools/src/hfst-twolc/test/test: Fixed a bug in testing if
-	  compilation is done on Windows.
-
-2012-09-07 11:25  eaxelson
-
-	* test/tools/lexc-functionality.sh, tools/src/hfst-lexc.cc:
-	  Disabled using hfst-lexc with multiple input files on Windows.
-
-2012-09-07 10:34  eaxelson
-
-	* test/tools/fst2txt-functionality.sh,
-	  test/tools/lexc-functionality.sh: Fixed some problems with
-	  automatic LF-to-CRLF conversion on Windows.
-
-2012-09-07 07:44  eaxelson
-
-	* tools/src/hfst-twolc/test/test: Now hfst-twolc test uses 'uname'
-	  to find out if Windows is used.
-
-2012-09-07 07:40  eaxelson
-
-	* test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Added excutable file extension '.exe' to tests when running them
-	  on Windows.
-
-2012-09-06 15:46  eaxelson
-
-	* configure.ac: Disabled tagger tools on Windows until they work
-	  there too.
-
-2012-09-06 13:56  eaxelson
-
-	* tools/src/hfst-substitute.cc: hfst-substitute now recognizes
-	  '@0@' as epsilon, fixes bug #133.
-
-2012-09-05 13:04  moshagen
-
-	* tools/src, tools/src/hfst-tagger/src: Ignore generated files.
-
-2012-09-05 12:38  eaxelson
-
-	* configure.ac, test/tools/fsmbook-examples/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-twolc/src/Makefile.am:
-	  Noticed missing files and tests that should be skipped during
-	  distcheck.
-
-2012-09-05 09:05  eaxelson
-
-	* tools/src/hfst-twolc/src/Makefile.am: make dist revealed an extra
-	  file listed in Makefile, skipped that
-
-2012-09-05 09:01  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.3.13.
-
-2012-09-04 14:04  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.sh,
-	  test/tools/hfst-check-version.sh,
-	  test/tools/shuffle-functionality.sh, tools/src/hfst-compare.cc,
-	  tools/src/hfst-duplicate.cc,
-	  tools/src/hfst-pair-test-transducers.h,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-twolc/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/hfst-twolc/src/common_globals.h,
-	  tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/test/test,
-	  tools/src/parsers/XfstCompiler.cc: Merged changes from old
-	  repository.
-
-2012-09-04 13:43  hardwick
-
-	* libhfst/src/parsers/Makefile.am: Undo conditional compilation of
-	  pmatch compiling stuff
-
-2012-09-04 12:08  mpsilfve
-
-	* tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.h,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponentPair.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponentPair.h,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceTagger.cc: Limit
-	  memory consumption a bit by clearing SequenceModelComponentPair
-	  state tables between tagging sentences.
-
-2012-09-04 12:06  hardwick
-
-	* libhfst/src/parsers/Makefile.am: Make pmatch parsing code
-	  conditional on WANT_PMATCH2FST
-
-2012-09-04 12:03  mpsilfve
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h: Changed
-	  sizeof(input_symbol) and so on to sizeof(SymbolNumber) since
-	  sizeof can only be applied to static data members according to
-	  standard (though not all versions of gcc).
-
-2012-09-04 11:51  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.cc:
-	  Changed WeightedStringVectorCollection test so that it takes into
-	  account the model penalty weight line.
-
-2012-09-04 10:04  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Fixed
-	  incorrect loop condition in previous commit to this file
-
-2012-09-04 08:16  mpsilfve
-
-	* tools/src/hfst-guess.cc: Added newline between results for
-	  different words.
-
-2012-09-04 08:09  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Recommit fix to ol -> basic conversion bug (hopefully)
-
-2012-08-31 21:52  mie
-
-	* libhfst/src/parsers/lexc-utils.cc: missing part of %0 handling
-
-2012-08-29 13:55  eaxelson
-
-	* test/libhfst/Makefile.am, tools/src/hfst-twolc/src/Makefile.am:
-	  Option --enable-windows is passed to Makefiles.
-
-2012-08-29 08:16  eaxelson
-
-	* tools/src/hfst-twolc/Makefile.am: hfst-twolc test is currently
-	  skipped on Windows. hfst-twolc is a bash script that will be
-	  replaced by a batch file on Windows.
-
-2012-08-28 10:13  mpsilfve
-
-	* tools/src/hfst-tagger/src/hfst-open-input-file-for-tagger.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.cc:
-	  Fixed multiple defintions of SequenceModelComponent::START_STATE
-	  in make check
-
-2012-08-28 07:47  hardwick
-
-	* tools/src: Ignore binary
-
-2012-08-28 07:28  hardwick
-
-	* libhfst/src/parsers/PmatchCompiler.cc: Comment out xre-specific
-	  tests for the time being
-
-2012-08-28 06:41  hardwick
-
-	* tools/src/hfst-pmatch.h: Merge missing header file
-
-2012-08-28 06:36  hardwick
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-pmatch2fst.cc: Merge changes to tools pmatch2fst
-	  and pmatch
-
-2012-08-28 06:26  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Merge pmatch parser changes
-
-2012-08-28 06:23  hardwick
-
-	* libhfst/src/Makefile.am: Merge inclusion of hfst.h in HFST_HDRS
-
-2012-08-28 06:21  hardwick
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Merge
-	  pmatch library parts from devbranch
-
-2012-08-27 14:39  mpsilfve
-
-	* tools/src/generate_model_forms.h, tools/src/hfst-guess.cc,
-	  tools/src/hfst-guessify.cc: Improved error messages and fixed
-	  help message.
-
-2012-08-27 10:39  mpsilfve
-
-	* tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.h:
-	  Maybe fixed undefined ref. to SequenceModelComponent::START_STATE
-	  problem.
-
-2012-08-24 12:26  mie
-
-	* configure.ac: Set revision for info
-
-2012-08-24 11:54  moshagen
-
-	* libhfst/src, tools/src: Even more files to ignore.
-
-2012-08-24 11:52  eaxelson
-
-	* test/tools/fst2txt-functionality.sh,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh,
-	  test/tools/proc-functionality.sh: Newlines are now handled
-	  correctly when testing command line tools on Windows. Version and
-	  help checks also skip the tool hfst-info.
-
-2012-08-24 11:15  mie
-
-	* libhfst/src/hfst.hpp.in, tools/src/hfst-info.cc: Further porting
-	  for info
-
-2012-08-24 10:57  mie
-
-	* configure.ac: Missing square bracket in define
-
-2012-08-24 10:50  mie
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-info.cc: Port
-	  basic info app to trunk.
-
-2012-08-24 10:45  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Fix
-	  conversion bug where when converting to BasicTransducer, we would
-	  stop
-	  looking for a particular flag diacritic when seeing symbols that
-	  aren't epsilon or this flag. This caused misses of flags when
-	  they
-	  weren't arranged in a lucky way.
-
-2012-08-24 10:32  mie
-
-	* configure.ac: Uh, actually declare hfst.hpp in headers and not
-	  files to get the meta
-
-2012-08-24 10:19  mie
-
-	* configure.ac, libhfst/src/hfst.hpp.in: Port some versioning and
-	  meta from branch
-
-2012-08-24 09:59  moshagen
-
-	* tools/src: More binary files to ignore.
-
-2012-08-24 08:50  moshagen
-
-	* libhfst/src/parsers, tools/src, tools/src/hfst-twolc/src,
-	  windows/dlfcn, windows/openfst/src/lib: Ignore generatated *.hh
-	  file and .deps directories.
-
-2012-08-24 07:33  eaxelson
-
-	* libhfst/src/FormatSpecifiers.h, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am, tools/src/hfst-affix-guessify.cc,
-	  tools/src/hfst-binary-tool.cc, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-compare.cc, tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-determinize.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-duplicate.cc,
-	  tools/src/hfst-edit-metadata.cc, tools/src/hfst-fst2fst.cc,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-grep.cc,
-	  tools/src/hfst-head.cc, tools/src/hfst-invert.cc,
-	  tools/src/hfst-lookup.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-name.cc, tools/src/hfst-pair-test.cc,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-remove-epsilons.cc, tools/src/hfst-repeat.cc,
-	  tools/src/hfst-reverse.cc, tools/src/hfst-reweight.cc,
-	  tools/src/hfst-shuffle.cc, tools/src/hfst-split.cc,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-subtract.cc,
-	  tools/src/hfst-summarize.cc, tools/src/hfst-tail.cc,
-	  tools/src/hfst-txt2fst.cc, tools/src/hfst-unary-tool.cc: Replaced
-	  size_t format specifier %zu with a macro that is expanded to %zu
-	  or %Iu (Windows).
-
-2012-08-23 10:35  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-summarize.cc: Removed debugging prints from
-	  HfstTransitionGraph.h. Added --help information to
-	  hfst-summarize.
-
-2012-08-22 12:55  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/tagger_aux.py,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py:
-	  Fixed python and utf-8 related problems.
-
-2012-08-22 06:34  eaxelson
-
-	* libhfst/src/Makefile.am, libhfst/src/implementations/Makefile.am:
-	  Added preprocessing flag -DWINDOWS to Makefiles if HFST is
-	  compiled on Windows.
-
-2012-08-21 15:41  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/inc/globals-common.h: Streams to files in
-	  TropicalWeightInputStream and TropicalWeightOutputStream are now
-	  opened in binary mode. The global variable _CRT_fmode is also set
-	  to binary mode in file globals-common.h when compiling on
-	  Windows. This makes sure that streams are always processed in
-	  binary mode on Windows, with no extra or missing carriage return
-	  or line feed characters.
-
-2012-08-21 12:13  mie
-
-	* README: Add Mac OS X abort trap to faqs
-
-2012-08-14 19:38  mie
-
-	* libhfst/src/parsers/xre_parse.yy: Move "stuff that is next to
-	  colons" to another level to support quoted
-	  literals and some other constructs maybe
-
-2012-08-13 12:51  mie
-
-	* tools/src/hfst-lexc.cc: Provide more info about itnae's in lexc
-	  for mac users
-
-2012-08-13 09:39  hardwick
-
-	* libhfst/src/hfst.h: A convenience header file including HFST
-	  headers
-	  necessary for doing practically anything
-
-2012-08-13 08:12  eaxelson
-
-	* windows/dlfcn/dlfcn.c, windows/dlfcn/dlfcn.h,
-	  windows/openfst/src/include/fst/accumulator.h,
-	  windows/openfst/src/include/fst/add-on.h,
-	  windows/openfst/src/include/fst/arc-map.h,
-	  windows/openfst/src/include/fst/arc.h,
-	  windows/openfst/src/include/fst/arcfilter.h,
-	  windows/openfst/src/include/fst/arcsort.h,
-	  windows/openfst/src/include/fst/bi-table.h,
-	  windows/openfst/src/include/fst/cache.h,
-	  windows/openfst/src/include/fst/closure.h,
-	  windows/openfst/src/include/fst/compact-fst.h,
-	  windows/openfst/src/include/fst/compat.h,
-	  windows/openfst/src/include/fst/complement.h,
-	  windows/openfst/src/include/fst/compose-filter.h,
-	  windows/openfst/src/include/fst/compose.h,
-	  windows/openfst/src/include/fst/concat.h,
-	  windows/openfst/src/include/fst/config.h,
-	  windows/openfst/src/include/fst/connect.h,
-	  windows/openfst/src/include/fst/const-fst.h,
-	  windows/openfst/src/include/fst/determinize.h,
-	  windows/openfst/src/include/fst/dfs-visit.h,
-	  windows/openfst/src/include/fst/difference.h,
-	  windows/openfst/src/include/fst/edit-fst.h,
-	  windows/openfst/src/include/fst/encode.h,
-	  windows/openfst/src/include/fst/epsnormalize.h,
-	  windows/openfst/src/include/fst/equal.h,
-	  windows/openfst/src/include/fst/equivalent.h,
-	  windows/openfst/src/include/fst/expanded-fst.h,
-	  windows/openfst/src/include/fst/expectation-weight.h,
-	  windows/openfst/src/include/fst/factor-weight.h,
-	  windows/openfst/src/include/fst/flags.h,
-	  windows/openfst/src/include/fst/float-weight.h,
-	  windows/openfst/src/include/fst/fst-decl.h,
-	  windows/openfst/src/include/fst/fst.h,
-	  windows/openfst/src/include/fst/fstlib.h,
-	  windows/openfst/src/include/fst/generic-register.h,
-	  windows/openfst/src/include/fst/heap.h,
-	  windows/openfst/src/include/fst/icu.h,
-	  windows/openfst/src/include/fst/intersect.h,
-	  windows/openfst/src/include/fst/interval-set.h,
-	  windows/openfst/src/include/fst/invert.h,
-	  windows/openfst/src/include/fst/label-reachable.h,
-	  windows/openfst/src/include/fst/lexicographic-weight.h,
-	  windows/openfst/src/include/fst/lock.h,
-	  windows/openfst/src/include/fst/log.h,
-	  windows/openfst/src/include/fst/lookahead-filter.h,
-	  windows/openfst/src/include/fst/lookahead-matcher.h,
-	  windows/openfst/src/include/fst/map.h,
-	  windows/openfst/src/include/fst/matcher-fst.h,
-	  windows/openfst/src/include/fst/matcher.h,
-	  windows/openfst/src/include/fst/minimize.h,
-	  windows/openfst/src/include/fst/mutable-fst.h,
-	  windows/openfst/src/include/fst/pair-weight.h,
-	  windows/openfst/src/include/fst/partition.h,
-	  windows/openfst/src/include/fst/power-weight.h,
-	  windows/openfst/src/include/fst/product-weight.h,
-	  windows/openfst/src/include/fst/project.h,
-	  windows/openfst/src/include/fst/properties.h,
-	  windows/openfst/src/include/fst/prune.h,
-	  windows/openfst/src/include/fst/push.h,
-	  windows/openfst/src/include/fst/queue.h,
-	  windows/openfst/src/include/fst/randequivalent.h,
-	  windows/openfst/src/include/fst/randgen.h,
-	  windows/openfst/src/include/fst/random-weight.h,
-	  windows/openfst/src/include/fst/rational.h,
-	  windows/openfst/src/include/fst/register.h,
-	  windows/openfst/src/include/fst/relabel.h,
-	  windows/openfst/src/include/fst/replace-util.h,
-	  windows/openfst/src/include/fst/replace.h,
-	  windows/openfst/src/include/fst/reverse.h,
-	  windows/openfst/src/include/fst/reweight.h,
-	  windows/openfst/src/include/fst/rmepsilon.h,
-	  windows/openfst/src/include/fst/rmfinalepsilon.h,
-	  windows/openfst/src/include/fst/shortest-distance.h,
-	  windows/openfst/src/include/fst/shortest-path.h,
-	  windows/openfst/src/include/fst/signed-log-weight.h,
-	  windows/openfst/src/include/fst/slist.h,
-	  windows/openfst/src/include/fst/sparse-power-weight.h,
-	  windows/openfst/src/include/fst/sparse-tuple-weight.h,
-	  windows/openfst/src/include/fst/state-map.h,
-	  windows/openfst/src/include/fst/state-reachable.h,
-	  windows/openfst/src/include/fst/state-table.h,
-	  windows/openfst/src/include/fst/statesort.h,
-	  windows/openfst/src/include/fst/string-weight.h,
-	  windows/openfst/src/include/fst/string.h,
-	  windows/openfst/src/include/fst/symbol-table-ops.h,
-	  windows/openfst/src/include/fst/symbol-table.h,
-	  windows/openfst/src/include/fst/synchronize.h,
-	  windows/openfst/src/include/fst/test-properties.h,
-	  windows/openfst/src/include/fst/topsort.h,
-	  windows/openfst/src/include/fst/tuple-weight.h,
-	  windows/openfst/src/include/fst/types.h,
-	  windows/openfst/src/include/fst/union-find.h,
-	  windows/openfst/src/include/fst/union.h,
-	  windows/openfst/src/include/fst/unordered_map.h,
-	  windows/openfst/src/include/fst/unordered_set.h,
-	  windows/openfst/src/include/fst/util.h,
-	  windows/openfst/src/include/fst/vector-fst.h,
-	  windows/openfst/src/include/fst/verify.h,
-	  windows/openfst/src/include/fst/visit.h,
-	  windows/openfst/src/include/fst/weight.h,
-	  windows/openfst/src/lib/compat.cc,
-	  windows/openfst/src/lib/flags.cc, windows/openfst/src/lib/fst.cc,
-	  windows/openfst/src/lib/properties.cc,
-	  windows/openfst/src/lib/symbol-table-ops.cc,
-	  windows/openfst/src/lib/symbol-table.cc,
-	  windows/openfst/src/lib/util.cc: Added OpenFst and dlfcn
-	  functionalities as a part of HFST (at least when it is compiled
-	  on Windows).
-
-2012-08-08 09:05  eaxelson
-
-	* test/tools/fsmbook-examples/monish-guesser-analyzer-test.sh:
-	  Added a script for Monish guesser-analyzer test.
-
-2012-08-01 13:53  mie
-
-	* README.deps: Installation instructions for dependencies that are
-	  not in our control...
-
-2012-08-01 13:16  mie
-
-	* README-alpha: No alphas in trunk
-
-2012-07-31 13:17  moshagen
-
-	* test/tools/fsmbook-examples/MonishGuesserAnalyzer: Ignore
-	  generated files.
-
-2012-07-30 00:27  mie
-
-	* README: retab!
-
-2012-07-30 00:21  mie
-
-	* README: Add port and gentoo installation instructions
-
-2012-07-21 20:53  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/build_model_src/tagger_aux.py,
-	  tools/src/hfst-tagger/src/hfst-reweight-tagger.cc,
-	  tools/src/hfst-tagger/src/hfst-tag.cc: Added reweighting tool.
-
-2012-07-21 14:30  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/tagger_aux.py,
-	  tools/src/hfst-tagger/src/hfst-open-input-file-for-tagger.cc,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py:
-	  Added config-file.
-
-2012-07-21 14:27  mpsilfve
-
-	* tools/src/hfst-tagger/src/use_model_src/SequenceModelComponentPair.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponentPair.h:
-	  Added size() function.
-
-2012-07-21 09:21  mpsilfve
-
-	* tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py:
-	  Added dummy-tags to guesser and lexicon entries without real
-	  tags, so that the could be parsed in the same way as regular
-	  lexicon and guesser entries.
-
-2012-07-21 09:19  mpsilfve
-
-	* tools/src/hfst-tagger/src/hfst-tag.cc: Fixed output file, so that
-	  output is printed to stdout, when no output file is given instead
-	  of file "<stdout>".
-
-2012-07-21 09:17  mpsilfve
-
-	* tools/src/hfst-tagger/src/use_model_src/DataTypes.h,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.cc,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.h,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceTagger.cc:
-	  Changed guesser tags.
-
-2012-07-21 09:15  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/FstBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/FstBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.cc,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.h,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.cc,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.h,
-	  tools/src/hfst-tagger/src/build_model_src/tagger_aux.py: Some
-	  default-transitions were missing. Added them.
-
-2012-07-19 20:37  hardwick
-
-	* tools/src/generate_model_forms.h: Another #include
-	  <hfst/HfstTransducer.h> -> #include "HfstTransducer.h"
-
-2012-07-18 19:05  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/LexicalModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/LexicalModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/tagger_aux.py,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py:
-	  Added case sensitivity to suffix counts.
-
-2012-07-12 13:32  sdrobac
-
-	* configure.ac, test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/Makefile.am,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.xfst.att,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.xfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/test.script,
-	  test/tools/fsmbook-examples/YaleShooting/test.script,
-	  test/tools/fsmbook-examples/xfst-prolog-to-hfst-att.sh: Added
-	  'MonishGuesserAnalyzer' test for parser
-
-2012-07-09 14:38  hardwick
-
-	* libhfst/src/HfstInputStream.cc: Continued adventures in unsigned
-	  short reading: cast to unsigned char,
-	  not unsigned short, before shifting and adding the bytes.
-
-2012-07-05 11:37  sdrobac
-
-	* libhfst/src/parsers/xre_parse.yy: (Regular) containment fixed in
-	  'Regexp2fst'
-
-2012-06-30 19:57  mpsilfve
-
-	* tools/src/hfst-guess.cc, tools/src/hfst-guessify.cc: Fixed
-	  kitwiki addresses in the help-messages of hfst-guess and
-	  hfst-guessify.
-
-2012-06-30 00:21  mpsilfve
-
-	* tools/src/generate_model_forms.cc, tools/src/hfst-guess.cc: Fixed
-	  printouts so that they match for guesses and generated forms.
-	  Fixed printing of guesses, so that they're not printed reversed.
-
-2012-06-29 20:08  mpsilfve
-
-	* tools/src/hfst-guess.cc: Fixed hfst-guess help-message and exit
-	  value.
-
-2012-06-29 16:40  hardwick
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstInputStream.h:
-	  Implement a little-endian unsigned short stream-reader on top of
-	  the
-	  char-reader. Use it to read the header size rather than fiddle
-	  around with
-	  signed shorts.
-
-2012-06-29 16:27  mpsilfve
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/generate_model_forms.cc,
-	  tools/src/generate_model_forms.h, tools/src/hfst-guess.cc:
-	  Initial commit of hfst-guess utility.
-
-2012-06-29 14:31  mpsilfve
-
-	* configure.ac, tools/src/Makefile.am, tools/src/guessify_fst.cc,
-	  tools/src/guessify_fst.h, tools/src/hfst-guessify.cc: Initial
-	  commit of the hfst-guessify utility.
-
-2012-06-29 14:20  sdrobac
-
-	* libhfst/src/parsers/xre_parse.yy: Complement added to the
-	  'regexp'
-
-2012-06-29 13:11  hardwick
-
-	* libhfst/src/HfstInputStream.cc: When reading header size, which
-	  on the disk is a two-byte unsigned number,
-	  we need to call stream_get(short &) because it's not implemented
-	  for
-	  unsigned short. Then cast it to unsigned short.
-
-2012-06-28 18:16  hardwick
-
-	* libhfst/src/HfstInputStream.cc: header_size needs to be able to
-	  handle MAX_HEADER_LENGTH=65535 bytes, so
-	  make it an int instead of a short
-
-2012-06-28 14:12  eaxelson
-
-	* windows/dlfcn/Makefile.am, windows/openfst/src/lib/Makefile.am:
-	  Excluded source files under windows directory from distribution.
-
-2012-06-28 13:46  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/parsers/xre_lex.ll,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Curly brackets added to regexp
-
-2012-06-28 10:37  eaxelson
-
-	* tools/src/Makefile.am: Appended $(EXEEXT) to program names in
-	  Makefile.
-
-2012-06-28 10:28  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-commandline.cc: Temporarily
-	  disabled 'hfst_mkstemp' in windows compilation, because it uses
-	  'mkstemp' that is not standard C++.
-
-2012-06-28 10:06  eaxelson
-
-	* tools/src/Makefile.am: Fixed a typo in Makefile.
-
-2012-06-28 08:42  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Complete purge of trap_transition in try_epsilon_transitions
-
-2012-06-28 08:13  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: When
-	  following epsilon index, set found_index *after* returning.
-	  Added rather verbose comment to try_epsilon_transitions to
-	  clarify
-	  when transition-taking needs to be trapped and when it doesn't.
-
-2012-06-27 14:29  moshagen
-
-	* test/tools/fsmbook-examples/FinnishOTProsody,
-	  test/tools/fsmbook-examples/YaleShooting, windows, windows/dlfcn,
-	  windows/openfst, windows/openfst/src, windows/openfst/src/lib:
-	  Ignore generated files.
-
-2012-06-27 13:49  eaxelson
-
-	* Makefile.am: if -> endif in Makefile
-
-2012-06-27 13:39  eaxelson
-
-	* Makefile.am, configure.ac, libhfst/src/Makefile.am,
-	  tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  windows/openfst/get-openfst.sh: Now all Makefiles should be aware
-	  of windows compilation.
-
-2012-06-27 10:33  eaxelson
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am: Added include flags to Makefiles
-	  when using windows compilation.
-
-2012-06-26 15:36  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am, tools/src/Makefile.am,
-	  windows/openfst/get-openfst.sh,
-	  windows/openfst/src/lib/Makefile.am: Made autotools more aware of
-	  windows compilation.
-
-2012-06-26 14:35  eaxelson
-
-	* windows/openfst/Makefile.am, windows/openfst/src/lib/Makefile.am:
-	  Edited Makefiles.
-
-2012-06-26 14:23  eaxelson
-
-	* windows/openfst/get-openfst.sh, windows/openfst/src/include,
-	  windows/openfst/src/include/fst: Added directories to
-	  windows/openfst and a script to fetch openfst.
-
-2012-06-26 13:00  eaxelson
-
-	* windows/dlfcn/get-dlfcn.sh: Added a script to retrieve dlfcn.
-
-2012-06-26 12:07  eaxelson
-
-	* Makefile.am, configure.ac, windows, windows/Makefile.am,
-	  windows/dlfcn, windows/dlfcn/Makefile.am, windows/openfst,
-	  windows/openfst/Makefile.am, windows/openfst/src,
-	  windows/openfst/src/Makefile.am, windows/openfst/src/lib,
-	  windows/openfst/src/lib/Makefile.am: Tentatively added support
-	  for windows compilation.
-
-2012-06-26 10:11  mie
-
-	* test/tools/fst2txt-functionality.sh, tools/src/hfst-fst2txt.cc:
-	  Implement PCKIMMO output mode for fst2txt
-
-2012-06-25 15:18  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.3.12.
-
-2012-06-25 15:02  eaxelson
-
-	* configure.ac: Tentatively added the possibility to compile hfst
-	  in Windows to configure.ac.
-
-2012-06-25 13:55  mpsilfve
-
-	* tools/src/hfst-tagger/src: Ignore enerated files.
-
-2012-06-25 13:46  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.cc:
-	  Maded changes in tests required by previous edit in
-	  WeightedStringVectorCollection.
-
-2012-06-25 13:39  mpsilfve
-
-	* tools/src/hfst-tagger/src: Ignore generated files.
-
-2012-06-25 13:21  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/FstBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.h: Changed
-	  a bool to weighted_string_type in add_sequence function.
-
-2012-06-25 13:07  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/LexicalModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/SequenceModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.cc,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.h:
-	  Changed the bool lexical_model parameter in the constructor of
-	  WeightedStringVectorCollection to an enum.
-
-2012-06-25 12:58  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/string_handling.h:
-	  Fixed comments
-
-2012-06-25 12:56  mpsilfve
-
-	* tools/src/hfst-tagger/src/hfst-build-tagger.cc: Fixed initial
-	  comments
-
-2012-06-25 11:51  mpsilfve
-
-	* tools/src/hfst-tagger/src/tagger_aux.py: Fixed statistics.
-
-2012-06-25 11:48  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/build_model_src/tagger_aux.py,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py:
-	  Fixed statistics.
-
-2012-06-21 09:03  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/FstBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/LexicalModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/SequenceModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/TaggerBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.h,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.h,
-	  tools/src/hfst-tagger/src/build_model_src/tagger_aux.py,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py:
-	  Added documentation.
-
-2012-06-20 15:17  hardwick
-
-	* libhfst/src/implementations/HfstOlTransducer.cc: Use convenient
-	  STL set constructor with InputIterator objects for returning
-	  alphabet sets
-
-2012-06-20 11:22  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am: Maybe find
-	  unit_test_aux.cc now...
-
-2012-06-20 11:21  hardwick
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h: Support StringSet
-	  get_alphabet() for hfst_ol(w) types
-
-2012-06-19 17:05  mie
-
-	* configure.ac: use am_prog_ar for automake >= 1.12
-
-2012-06-19 15:15  mie
-
-	* tools/src/hfst-commandline.cc: include unistd for systems where
-	  it does not leak in
-
-2012-06-19 08:54  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Handle the "only default transitions in state" case
-
-2012-06-18 12:33  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am: Now perhaps building
-	  unit_test_aux.o properly...
-
-2012-06-18 12:19  mpsilfve
-
-	* tools/src/hfst-tagger/Makefile.am: Build tagger tools only if the
-	  enable-tagger flag has been used during configure.
-
-2012-06-18 11:55  mpsilfve
-
-	* tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.h:
-	  Changed NewLexicalModel.h so that it includes the local header
-	  before instllation.
-
-2012-06-18 11:50  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.cc:
-	  Added unit_test_aux.h to the sources of the test for
-	  string_handling.cc
-
-2012-06-18 11:24  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am: Added DataTypes.h to the
-	  sources of appropriate testa and hfst-tag.
-
-2012-06-17 21:58  moshagen
-
-	* tools/src/hfst-tagger, tools/src/hfst-tagger/src,
-	  tools/src/hfst-tagger/test: Ignore generated items.
-
-2012-06-14 14:30  mpsilfve
-
-	* tools/src/hfst-tagger/src/hfst-tag.cc: Added version of
-	  hfst-tag.cc that compiles.
-
-2012-06-13 13:26  mpsilfve
-
-	* tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponentPair.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceTagger.cc: Tidied
-	  up code in use_model_src.
-
-2012-06-13 13:18  mpsilfve
-
-	* tools/src/hfst-tagger/src/use_model_src/AcyclicAutomaton.cc,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SentenceTagger.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceTagger.cc: Now we
-	  pass all use_model_src/ tests.
-
-2012-06-12 13:53  hardwick
-
-	* tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.h:
-	  #include "HfstTransducer.h" instead of <hfst/HfstTransducer.h>,
-	  since often
-	  people will be building this without having headers already
-	  installed
-
-2012-06-11 19:02  mie
-
-	* test/libhfst/Makefile.am: Remove lexc tests as long as parser is
-	  not reusable
-
-2012-06-11 13:01  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/hfst-tag.cc,
-	  tools/src/hfst-tagger/src/use_model_src/AcyclicAutomaton.cc,
-	  tools/src/hfst-tagger/src/use_model_src/DataTypes.h,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.cc,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.h,
-	  tools/src/hfst-tagger/src/use_model_src/SentenceTransducer.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.h,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceTagger.cc: Added
-	  skeleton for hfst-tag.cc and got all tests in use_model_src
-	  compiling. Some tests still fail.
-
-2012-06-08 14:33  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/FstBuilder.cc: Removed
-	  printout from the unit test of FstBuilder.cc
-
-2012-06-08 12:16  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.cc,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.cc:
-	  Fixed WeightedStringVectorCollection.cc and string_handling.cc
-
-2012-06-08 12:00  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am: Tidied Makefile.am.
-
-2012-06-08 11:59  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am: Tests are now run using
-	  make check.
-
-2012-06-08 10:25  mpsilfve
-
-	* swig/libhfst.i: Added invert parameter to compose_intersect in
-	  HfstTransducer
-
-2012-06-07 19:51  mpsilfve
-
-	* tools/src/hfst-tagger/src/hfst-open-input-file-for-tagger.cc:
-	  Added hfst-open-input-file-for-tagger.cc, which was missing.
-
-2012-06-07 17:56  mie
-
-	* tools/src/hfst-tagger/src/build_model_src/FstBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/LexicalModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/SequenceModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.h: Use
-	  intree headers for intree build
-
-2012-06-07 14:41  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/LexicalModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/SequenceModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/TaggerBuilder.cc,
-	  tools/src/hfst-tagger/src/hfst-build-tagger.cc,
-	  tools/src/hfst-tagger/src/hfst-train-tagger.sh,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py,
-	  tools/src/hfst-tagger/src/tagger_aux.py: Added some printouts to
-	  verbose mode.
-
-2012-06-07 13:25  mpsilfve
-
-	* tools/src/hfst-tagger/src/hfst-build-tagger.cc: Fixed issue with
-	  exit value.
-
-2012-06-07 12:50  mpsilfve
-
-	* configure.ac, tools/src/Makefile.am: Updated build files so that
-	  tagger tools can be built. They are not built by default.
-
-2012-06-07 12:41  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/build_model_src/FstBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.cc,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.h,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.cc,
-	  tools/src/hfst-tagger/src/hfst-build-tagger.cc,
-	  tools/src/hfst-tagger/src/hfst-train-tagger.sh: Fixed some in
-	  input handling bugs.
-
-2012-06-07 08:39  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/compute_data_statistics.py,
-	  tools/src/hfst-tagger/src/hfst-train-tagger.sh,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py:
-	  Changed comput_data_statistics.py to
-	  hfst_tagger_data_statistics.py
-
-2012-06-06 14:33  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/build_model_src/FstBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/LexicalModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/SequenceModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/TaggerBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.h,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.h,
-	  tools/src/hfst-tagger/src/hfst-build-tagger.cc,
-	  tools/src/hfst-tagger/src/hfst-train-tagger.sh,
-	  tools/src/hfst-tagger/src/tagger_aux.py,
-	  tools/src/hfst-tagger/src/unit_test_aux.h,
-	  tools/src/hfst-tagger/src/use_model_src/AcyclicAutomaton.h,
-	  tools/src/hfst-tagger/src/use_model_src/DataTypes.h,
-	  tools/src/hfst-tagger/src/use_model_src/DelayedSequenceModelComponent.h,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.h,
-	  tools/src/hfst-tagger/src/use_model_src/SentenceTagger.h,
-	  tools/src/hfst-tagger/src/use_model_src/SentenceTransducer.h,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.h,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponentPair.h,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceTagger.h,
-	  tools/src/hfst-tagger/test/Makefile.am: Some changes that
-	  actually allow compiling and installing hfst-train-tagger
-
-2012-06-05 10:02  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am: Added test dependencies.
-
-2012-06-05 09:49  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/FstBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.cc:
-	  Fixed test defines in build_model_src/.
-
-2012-06-05 09:45  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am: Added unit tests to
-	  hfst-tagger.
-
-2012-06-05 09:41  mpsilfve
-
-	* tools/src/hfst-tagger/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am: Added Makefile.am files to
-	  hfst-tagger.
-
-2012-06-05 09:29  mpsilfve
-
-	* tools/src/hfst-tagger/build_model_src,
-	  tools/src/hfst-tagger/compute_data_statistics.py,
-	  tools/src/hfst-tagger/hfst-build-tagger.cc,
-	  tools/src/hfst-tagger/src,
-	  tools/src/hfst-tagger/src/build_model_src,
-	  tools/src/hfst-tagger/src/compute_data_statistics.py,
-	  tools/src/hfst-tagger/src/hfst-build-tagger.cc,
-	  tools/src/hfst-tagger/src/unit_test_aux.cc,
-	  tools/src/hfst-tagger/src/unit_test_aux.h,
-	  tools/src/hfst-tagger/src/use_model_src,
-	  tools/src/hfst-tagger/test,
-	  tools/src/hfst-tagger/unit_test_aux.cc,
-	  tools/src/hfst-tagger/unit_test_aux.h,
-	  tools/src/hfst-tagger/use_model_src: Added src and test subdirs
-	  to hfst-tagger.
-
-2012-06-05 09:21  mpsilfve
-
-	* tools/src/hfst-tagger/CompletedCycleBuilder.cc,
-	  tools/src/hfst-tagger/CompletedCycleBuilder.h,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModel.cc,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModel.h,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModelPair.cc,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModelPair.h,
-	  tools/src/hfst-tagger/CycleBuilder.cc,
-	  tools/src/hfst-tagger/CycleBuilder.h,
-	  tools/src/hfst-tagger/GuesserBuilder.cc,
-	  tools/src/hfst-tagger/GuesserBuilder.h,
-	  tools/src/hfst-tagger/GuesserDivisorTransformer.cc,
-	  tools/src/hfst-tagger/GuesserDivisorTransformer.h,
-	  tools/src/hfst-tagger/GuesserStreamTransformer.cc,
-	  tools/src/hfst-tagger/GuesserStreamTransformer.h,
-	  tools/src/hfst-tagger/HMMTagger.cc,
-	  tools/src/hfst-tagger/HMMTagger.h,
-	  tools/src/hfst-tagger/IdentityTransformer.cc,
-	  tools/src/hfst-tagger/IdentityTransformer.h,
-	  tools/src/hfst-tagger/LanguageModel.cc,
-	  tools/src/hfst-tagger/LanguageModel.h,
-	  tools/src/hfst-tagger/LastEntryRemover.cc,
-	  tools/src/hfst-tagger/LastEntryRemover.h,
-	  tools/src/hfst-tagger/LexicalModel.cc,
-	  tools/src/hfst-tagger/LexicalModel.h,
-	  tools/src/hfst-tagger/LexicalStreamTransformer.cc,
-	  tools/src/hfst-tagger/LexicalStreamTransformer.h,
-	  tools/src/hfst-tagger/LexiconBuilder.cc,
-	  tools/src/hfst-tagger/LexiconBuilder.h,
-	  tools/src/hfst-tagger/LexiconDivisorTransformer.cc,
-	  tools/src/hfst-tagger/LexiconDivisorTransformer.h,
-	  tools/src/hfst-tagger/LogSequenceWeightTable.cc,
-	  tools/src/hfst-tagger/LogSequenceWeightTable.h,
-	  tools/src/hfst-tagger/Makefile,
-	  tools/src/hfst-tagger/ModelBuilder.cc,
-	  tools/src/hfst-tagger/ModelBuilder.h,
-	  tools/src/hfst-tagger/NGramAbstracter.cc,
-	  tools/src/hfst-tagger/NGramAbstracter.h,
-	  tools/src/hfst-tagger/NGramModelConstructor.cc,
-	  tools/src/hfst-tagger/NGramModelConstructor.h,
-	  tools/src/hfst-tagger/SentenceStream.cc,
-	  tools/src/hfst-tagger/SentenceStream.h,
-	  tools/src/hfst-tagger/SequenceCounter.cc,
-	  tools/src/hfst-tagger/SequenceCounter.h,
-	  tools/src/hfst-tagger/SequenceModel.cc,
-	  tools/src/hfst-tagger/SequenceModel.h,
-	  tools/src/hfst-tagger/SequenceWeightTable.cc,
-	  tools/src/hfst-tagger/SequenceWeightTable.h,
-	  tools/src/hfst-tagger/SequenceWeighter.cc,
-	  tools/src/hfst-tagger/SequenceWeighter.h,
-	  tools/src/hfst-tagger/Speller.cc,
-	  tools/src/hfst-tagger/Speller.h,
-	  tools/src/hfst-tagger/StandardHMMLexicalModel.cc,
-	  tools/src/hfst-tagger/StandardHMMLexicalModel.h,
-	  tools/src/hfst-tagger/StreamFieldInverter.cc,
-	  tools/src/hfst-tagger/StreamFieldInverter.h,
-	  tools/src/hfst-tagger/StreamMarkovizer.cc,
-	  tools/src/hfst-tagger/StreamMarkovizer.h,
-	  tools/src/hfst-tagger/StreamReinitializer.cc,
-	  tools/src/hfst-tagger/StreamReinitializer.h,
-	  tools/src/hfst-tagger/StreamTokenizer.cc,
-	  tools/src/hfst-tagger/StreamTokenizer.h,
-	  tools/src/hfst-tagger/StreamTransformer.cc,
-	  tools/src/hfst-tagger/StreamTransformer.h,
-	  tools/src/hfst-tagger/StringTransformer.h,
-	  tools/src/hfst-tagger/StringTransformerList.cc,
-	  tools/src/hfst-tagger/StringTransformerList.h,
-	  tools/src/hfst-tagger/SuggestionsInContext.cc,
-	  tools/src/hfst-tagger/SuggestionsInContext.h,
-	  tools/src/hfst-tagger/Tagger.cc, tools/src/hfst-tagger/Tagger.h,
-	  tools/src/hfst-tagger/ToEmptyStringTransforme.cc,
-	  tools/src/hfst-tagger/ToEmptyStringTransforme.h,
-	  tools/src/hfst-tagger/ToEmptyStringTransformer.cc,
-	  tools/src/hfst-tagger/ToEmptyStringTransformer.h,
-	  tools/src/hfst-tagger/TrieBuilder.cc,
-	  tools/src/hfst-tagger/TrieBuilder.h,
-	  tools/src/hfst-tagger/WordformProbabilityListBuilder.cc,
-	  tools/src/hfst-tagger/WordformProbabilityListBuilder.h,
-	  tools/src/hfst-tagger/WordformProbabilityListTransformer.cc,
-	  tools/src/hfst-tagger/WordformProbabilityListTransformer.h,
-	  tools/src/hfst-tagger/WordformRemover.cc,
-	  tools/src/hfst-tagger/WordformRemover.h,
-	  tools/src/hfst-tagger/build_model_src,
-	  tools/src/hfst-tagger/build_model_src/FstBuilder.cc,
-	  tools/src/hfst-tagger/build_model_src/FstBuilder.h,
-	  tools/src/hfst-tagger/build_model_src/LexicalModelBuilder.cc,
-	  tools/src/hfst-tagger/build_model_src/LexicalModelBuilder.h,
-	  tools/src/hfst-tagger/build_model_src/Makefile,
-	  tools/src/hfst-tagger/build_model_src/ModelBuilder.cc,
-	  tools/src/hfst-tagger/build_model_src/ModelBuilder.h,
-	  tools/src/hfst-tagger/build_model_src/SequenceModelBuilder.cc,
-	  tools/src/hfst-tagger/build_model_src/SequenceModelBuilder.h,
-	  tools/src/hfst-tagger/build_model_src/TaggerBuilder.cc,
-	  tools/src/hfst-tagger/build_model_src/TaggerBuilder.h,
-	  tools/src/hfst-tagger/build_model_src/WeightedStringVectorCollection.cc,
-	  tools/src/hfst-tagger/build_model_src/WeightedStringVectorCollection.h,
-	  tools/src/hfst-tagger/build_model_src/string_handling.cc,
-	  tools/src/hfst-tagger/build_model_src/string_handling.h,
-	  tools/src/hfst-tagger/build_model_src/tagger_aux.py,
-	  tools/src/hfst-tagger/compute_data_statistics.py,
-	  tools/src/hfst-tagger/context_speller.cc,
-	  tools/src/hfst-tagger/hfst-build-tagger.cc,
-	  tools/src/hfst-tagger/hfst_tagger_code_skeleton.cc,
-	  tools/src/hfst-tagger/hfst_tagger_header_skeleton.h,
-	  tools/src/hfst-tagger/tag_with_hmm_tagger.cc,
-	  tools/src/hfst-tagger/train_hmm_tagger.cc,
-	  tools/src/hfst-tagger/unit_test_aux.cc,
-	  tools/src/hfst-tagger/unit_test_aux.h,
-	  tools/src/hfst-tagger/use_model_src,
-	  tools/src/hfst-tagger/use_model_src/AcyclicAutomaton.cc,
-	  tools/src/hfst-tagger/use_model_src/AcyclicAutomaton.h,
-	  tools/src/hfst-tagger/use_model_src/DataTypes.h,
-	  tools/src/hfst-tagger/use_model_src/DelayedSequenceModelComponent.cc,
-	  tools/src/hfst-tagger/use_model_src/DelayedSequenceModelComponent.h,
-	  tools/src/hfst-tagger/use_model_src/NewLexicalModel.cc,
-	  tools/src/hfst-tagger/use_model_src/NewLexicalModel.h,
-	  tools/src/hfst-tagger/use_model_src/SentenceTagger.cc,
-	  tools/src/hfst-tagger/use_model_src/SentenceTagger.h,
-	  tools/src/hfst-tagger/use_model_src/SentenceTransducer.cc,
-	  tools/src/hfst-tagger/use_model_src/SentenceTransducer.h,
-	  tools/src/hfst-tagger/use_model_src/SequenceModelComponent.cc,
-	  tools/src/hfst-tagger/use_model_src/SequenceModelComponent.h,
-	  tools/src/hfst-tagger/use_model_src/SequenceModelComponentPair.cc,
-	  tools/src/hfst-tagger/use_model_src/SequenceModelComponentPair.h,
-	  tools/src/hfst-tagger/use_model_src/SequenceTagger.cc,
-	  tools/src/hfst-tagger/use_model_src/SequenceTagger.h: Initial
-	  commit of new tagger lib architecture.
-
-2012-06-05 06:50  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Copy
-	  input to output for default transitions
-
-2012-05-31 02:35  mie
-
-	* libhfst/src/parsers/lexc-lexer.ll,
-	  test/tools/basic.multi-file-1.lexc,
-	  test/tools/basic.multi-file-2.lexc,
-	  test/tools/basic.multi-file-3.lexc,
-	  tools/src/hfst-lexc-compiler.cc, tools/src/hfst-lexc.cc: Allow
-	  reserved chars between quotation marks, avoid one more segfault
-	  on
-	  parser error
-
-2012-05-31 02:19  mie
-
-	* test/tools/Makefile.am,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh, test/tools/xre.quotations.lexc:
-	  Add quotation example that breaks the legacy parser; use all
-	  tests on both
-	  lexc front-ends
-
-2012-05-30 23:04  mie
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/parsers/LexcCompiler.cc, test/libhfst/test_lexc.cc:
-	  Emit parse error on unopenable file...
-
-2012-05-30 21:54  mie
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h, test/libhfst/test_lexc.cc,
-	  tools/src/hfst-lexc-compiler.cc: Pass parse errors upwards from
-	  LexcCompiler
-
-2012-05-30 20:46  mie
-
-	* tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-lexc.cc: Remove temporary lexc concatenations on
-	  successful exit
-
-2012-05-30 19:54  mie
-
-	* tools/src/hfst-program-options.cc: Reword -q to "print only fatal
-	  errors and requested output" as it does
-
-2012-05-27 19:40  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Notice @_DEFAULT_SYMBOL_@ in other Alphabet contructors than the
-	  copying one as well
-
-2012-05-27 19:05  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Add an
-	  internal boolean found_index to keep track of whether an index
-	  has been
-	  successfully hit in the current iteration, and try to find a
-	  default symbol
-	  otherwise
-
-2012-05-27 18:42  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Make
-	  alphabet know about default
-
-2012-05-27 18:39  hardwick
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h:
-	  @_DEFAULT_SYMBOL_@ and hfst::is_default()
-
-2012-05-10 13:51  mie
-
-	* test/tools/Makefile.am, tools/src/hfst-commandline.cc: Remove
-	  warning messages and XFAIL tests that may confuse users.
-	  Fixes bug #3525179
-
-2012-05-10 09:27  eaxelson
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese1/Makefile.am,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/Makefile.am:
-	  Added READMEs under BrazilianPortuguese 1 and 2 to EXTRA_DIST.
-
-2012-05-08 09:51  eaxelson
-
-	* Doxyfile, api_documentation.dox: Updated Doxygen documentation.
-
-2012-05-04 10:46  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.3.11.
-
-2012-04-27 06:22  moshagen
-
-	* libhfst/src/parsers, tools/src: Ignore generated items.
-
-2012-04-26 15:49  eaxelson
-
-	* configure.ac, test/tools/shuffle-functionality.sh: Now
-	  hfst-shuffle is disabled by default.
-
-2012-04-26 11:33  eaxelson
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  test/libhfst/test_transducer_functions.cc,
-	  test/tools/Makefile.am, test/tools/ab.txt,
-	  test/tools/ab_shuffle_bc.txt, test/tools/aid.txt,
-	  test/tools/aid_shuffle_idb.txt, test/tools/bc.txt,
-	  test/tools/id.txt, test/tools/id_shuffle_id.txt,
-	  test/tools/idb.txt, test/tools/shuffle-functionality.sh,
-	  tools/src/Makefile.am, tools/src/hfst-shuffle.cc: Added the
-	  command line tool hfst-shuffle and functionality tests for that.
-
-2012-04-25 13:39  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_transducer_functions.cc: Tentatively added
-	  function shuffle under HfstTransducer.
-
-2012-04-23 16:06  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: A nicer single production
-	  for INSERT
-
-2012-04-23 14:57  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc: Fixed a bug in
-	  SfstTransducer::random_path that happened when indexing states of
-	  the argument transducer.
-
-2012-04-23 14:23  hardwick
-
-	* configure.ac, libhfst/src/Makefile.am,
-	  libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/PmatchCompiler.cc,
-	  libhfst/src/parsers/PmatchCompiler.h,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h, tools/src/Makefile.am,
-	  tools/src/hfst-pmatch2fst.cc: Introduction of semifunctional
-	  pmatch2fst
-
-2012-04-18 23:03  moshagen
-
-	* tools/src/hfst-proc/formatter.cc: No plus sign in front of tags
-	  in CG mode, not even the special carry-through tag.
-
-2012-04-18 17:37  moshagen
-
-	* tools/src/hfst-proc/formatter.cc,
-	  tools/src/hfst-proc/formatter.h: Added experimental support for
-	  printing the raw analysis tag as part of the Xerox analysis. It
-	  is printed as a tag with a special prefix, and with the full
-	  analysis string enclosed in quotes. The idea is that vislcg, if
-	  enhanced to read the Xerox format, should carry this "tag"
-	  through the disambiguation (and possibly analysis), and print it
-	  out on the other end. The tag can then be used as input to
-	  morphological generation.
-
-2012-04-18 16:25  moshagen
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese1,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2: Ignore
-	  auto-generated files.
-
-2012-04-18 13:55  moshagen
-
-	* tools/src/hfst-proc/formatter.cc: Print the raw analysis string
-	  as a specially prefixed tag at the end, instead of as a
-	  sub-reading in the beginning of the analysis.
-
-2012-04-18 12:53  eaxelson
-
-	* test/tools/fst2txt-functionality.sh: Now hfst-fst2txt
-	  functionality test tests whether the program dot exists before
-	  using it.
-
-2012-04-18 12:32  eaxelson
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese2.hfst.script:
-	  Changed call to the installed hfst-regexp2fst to the one in
-	  tools/src/.
-
-2012-04-18 12:25  eaxelson
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.hfst.script:
-	  Changed call to the installed hfst-regexp2fst to the one in
-	  tools/src/.
-
-2012-04-17 01:21  mie
-
-	* libhfst/src/parsers/xre_parse.yy: Add containments and term
-	  negation, remove nasty windows formatting markers
-
-2012-04-16 15:16  eaxelson
-
-	* man/hfst-fst2strings.1, tools/src/hfst-fst2strings.cc: Added the
-	  option --print-separator in hfst-fst2strings. The option will
-	  print
-	  a separating line "--" after each input transducer is processed.
-
-2012-04-16 15:11  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc:
-	  FomaInputStream::write_transducer and
-	  SfstInputStream::write_transducer now call fflush
-	  after writing the transducer. Now the command line tools should
-	  work correctly when pipelined.
-
-2012-04-16 14:57  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: The regexp [?] was parsed as
-	  [?|?:?] by FomaTransducer::define_transducer(const &string, const
-	  &string).
-	  This is now circumvented by using
-	  FomaTransducer::define_transducer(const &string) instead.
-	  This bug will be reported and fixed soon.
-
-2012-04-16 12:42  eaxelson
-
-	* man/Makefile.am, man/hfst-compose-intersect.1: Manpages are not
-	  created unless 'make man' is executed in directory man.
-
-2012-04-13 13:30  mpsilfve
-
-	* tools/src/hfst-compose-intersect.cc: Added support for inverting
-	  the composition i.e. computing intersect(rules) .o. lexicon
-	  instead of lexicon .o. intersect(rules).
-
-2012-04-13 13:28  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Added possibility to invert the composition in compose_intersect
-	  i.e. to compute intersect(rules) .o. lexicon instead of lexicon
-	  .o. intersect(rules). Also added added support for indetity
-	  symbols in the lexicon to compose_intersect.
-
-2012-04-12 15:29  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstConstantTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.h,
-	  libhfst/src/implementations/Makefile.am: Removed
-	  HfstConstantTransducer as it is not used.
-
-2012-04-12 14:15  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am: Removed FinnishOTProsody
-	  from tests as it does not yet work. Also added
-	  HfstXeroxRulesTest.cc to EXTRA_DIST.
-
-2012-04-11 11:28  eaxelson
-
-	* man/Makefile.am, man/hfst-head.1, man/hfst-tail.1: Temporarily
-	  excluded hfst-lookup from man page creation (due to a bug in
-	  help2man?). Also updated hfst-tail and hfst-head man pages.
-
-2012-04-10 22:31  mie
-
-	* test/tools/Makefile.am, test/tools/head-functionality.sh,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-head.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/hfst-tail.cc: Heads and tails with plusses and minuses
-
-2012-04-10 19:24  mie
-
-	* test/tools/Makefile.am, test/tools/head-functionality.sh,
-	  test/tools/tail-functionality.sh: Test negative heads and
-	  positive tails
-
-2012-04-05 12:51  eaxelson
-
-	* configure.ac, test/tools/fsmbook-examples/Makefile.am: Added
-	  Brazilian Portuguese tests to fsmbook-examples, they now work
-	  because missing files were added.
-
-2012-04-05 12:49  sdrobac
-
-	* test/tools/fsmbook-examples/DateParser/DateParser.xfst.att,
-	  test/tools/fsmbook-examples/DateParser/DateParser.xfst.script,
-	  test/tools/fsmbook-examples/brazilian-portuguese1-test.sh,
-	  test/tools/fsmbook-examples/xfst-prolog-to-hfst-att.sh: adding
-	  missing files
-
-2012-04-05 12:42  sdrobac
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese2.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese2.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese2.xfst.script:
-	  Added missing files
-
-2012-04-05 09:07  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.3.10.
-
-2012-04-05 08:38  eaxelson
-
-	* configure.ac, test/tools/fsmbook-examples/Makefile.am: Brazilian
-	  Portuguese tests disabled in fstmbook-examples to get a working
-	  release. They probably had missing files.
-
-2012-04-05 08:14  eaxelson
-
-	* man/hfst-compare.1, man/hfst-compose.1, man/hfst-concatenate.1,
-	  man/hfst-conjunct.1, man/hfst-disjunct.1, man/hfst-subtract.1:
-	  Updated man pages of binary tools as their help messages were
-	  changed.
-
-2012-04-05 08:06  eaxelson
-
-	* tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-program-options.cc: Added documentation to the
-	  binary tools about the restored feature that the first input can
-	  have several transducers while the second has only one.
-
-2012-04-05 08:02  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc:
-	  TropicalWeightTransducer::extract_random_paths now also
-	  calculates the weight of each path. Fixes bug ID 3514912.
-
-2012-04-04 14:22  eaxelson
-
-	* tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-subtract.cc: All
-	  binary tools now handle the case where the first input contains
-	  several transducers and the second input exactly one transducer.
-
-2012-04-04 13:31  sdrobac
-
-	* configure.ac, man/hfst-calculate.1, man/hfst-compare.1,
-	  man/hfst-compose-intersect.1, man/hfst-compose.1,
-	  man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinize.1, man/hfst-disjunct.1, man/hfst-format.1,
-	  man/hfst-fst2fst.1, man/hfst-fst2strings.1, man/hfst-fst2txt.1,
-	  man/hfst-head.1, man/hfst-invert.1, man/hfst-minimize.1,
-	  man/hfst-name.1, man/hfst-project.1, man/hfst-push-weights.1,
-	  man/hfst-regexp2fst.1, man/hfst-remove-epsilons.1,
-	  man/hfst-repeat.1, man/hfst-reverse.1, man/hfst-split.1,
-	  man/hfst-strings2fst.1, man/hfst-substitute.1,
-	  man/hfst-subtract.1, man/hfst-summarize.1, man/hfst-tail.1,
-	  man/hfst-txt2fst.1,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese.xfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/Makefile.am,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/README,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/test.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/brazilian-portuguese2-test.sh:
-	  BrazilianPortuguese2 fmsbook example added to tests
-
-2012-04-04 11:54  sdrobac
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.xfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/README,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/test-example.sh,
-	  test/tools/fsmbook-examples/xfst-prolog-to-hfst-att.sh:
-	  BrazilianPortuguese1 test should pass now
-
-2012-04-04 09:37  eaxelson
-
-	* tools/src/hfst-compare.cc: hfst-compare now handles the case
-	  where the first input contains several transducers and the second
-	  input exactly one transducer.
-
-2012-04-04 09:11  eaxelson
-
-	* tools/src/hfst-compose.cc: hfst-compose now handles the case
-	  where the first input contains several transducers and the second
-	  input exactly one transducer.
-
-2012-04-03 14:59  eaxelson
-
-	* tools/src/hfst-summarize.cc: hfst-summarize now prints at the end
-	  how many transducers it has read in total.
-
-2012-04-03 13:58  eaxelson
-
-	* tools/src/inc/check-params-binary.h: Added documentation to
-	  different cases that are gone through when checking binary
-	  parameters.
-
-2012-04-03 13:56  eaxelson
-
-	* tools/src/hfst-twolc/src/htwolcpre3.yy: Changed the variable name
-	  stdout to stdout_ to avoid namespace conflicts.
-
-2012-04-03 13:34  sdrobac
-
-	* test/tools/fsmbook-examples/FinnishOTProsody/Makefile.am:
-	  forgotten Makefile.am
-
-2012-04-03 12:44  sdrobac
-
-	* configure.ac: Configure file had to be changed to compile fsm
-	  book examples
-
-2012-04-03 12:43  sdrobac
-
-	* test/tools/fsmbook-examples/Makefile.am: Fsmbook examples update
-
-2012-04-03 12:34  sdrobac
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/Makefile.am,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/YaleShooting/Makefile.am,
-	  test/tools/fsmbook-examples/test-example.sh,
-	  test/tools/fsmbook-examples/xfst-att-to-hfst-att.sh,
-	  test/tools/fsmbook-examples/xfst-prolog-to-hfst-att.sh: Fsmbook
-	  examples update
-
-2012-04-03 12:29  sdrobac
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/xre_parse.yy: In xfstRules, removed TMP
-	  marker from the result alphabet
-
-2012-04-02 10:04  eaxelson
-
-	* tools/src/hfst-compose-intersect.cc: Updated
-	  hfst-compose-intersect help message.
-
-2012-04-02 09:34  eaxelson
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/xre_parse.yy: Appended namespace std:: in
-	  front of vector and pair where avoiding it might cause
-	  compilation problems. Also changed calls to 'rindex' to
-	  'strrchar'.
-
-2012-03-27 08:42  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Doxygen for the speller and some ol internals
-
-2012-03-26 14:28  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS: Forgot to commit ChangeLog and
-	  NEWS, now ready for release 3.3.9.
-
-2012-03-26 14:09  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am: Ready for release 3.3.9
-
-2012-03-26 13:36  eaxelson
-
-	* man/hfst-calculate.1, man/hfst-fst2fst.1, man/hfst-regexp2fst.1,
-	  man/hfst-strings2fst.1, man/hfst-txt2fst.1,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-format.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-txt2fst.cc: Fixed
-	  help messages of tools.
-
-2012-03-26 10:16  eaxelson
-
-	* tools/src/hfst-lexc.cc: Changed hfst-lexc so that the
-	  implementation format defaults to openfst-tropical.
-
-2012-03-21 18:14  hardwick
-
-	* test/tools/proc-caps-out5.strings: Changed expected output to
-	  reflect current cg printing
-
-2012-03-20 11:00  hardwick
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/ospell.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Integrate ospell, first commit
-
-2012-03-19 15:02  sdrobac
-
-	* test/tools/fsmbook-examples/Makefile.am: updated so that tests
-	  don't fail
-
-2012-03-19 14:38  sdrobac
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese.xfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.xfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/Makefile.am,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/test.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/test-example.sh: updated one fsmbook
-	  example, still not working properly
-
-2012-03-15 17:59  moshagen
-
-	* tools/src/hfst-proc/formatter.cc: Double greek PI met opposition
-	  in #apertium, hereby changed to double dagger instead (‡). It is
-	  still open whether the raw analysis string should end up in this
-	  position at all.
-
-2012-03-15 09:34  moshagen
-
-	* tools/src/hfst-proc/hfst-proc.cc: Fixed a bug in command-line
-	  option parsing, where -e conflicted with all case-handling
-	  options.
-
-2012-03-14 10:54  hardwick
-
-	* tools/src/hfst-proc/hfst-proc.cc: Fixed bug wrt option counting
-
-2012-03-14 09:02  moshagen
-
-	* tools/src/hfst-proc/formatter.cc,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/hfst-proc.h: Added a new option to turn on
-	  printing of raw analysis string in CG format output. Default is
-	  to not print it.
-
-2012-03-13 23:51  moshagen
-
-	* tools/src/hfst-proc/formatter.cc: Replaced triple ] (]]]) with
-	  double ∏ (∏∏ - capital greek PI) as the CG sub-reading separator.
-	  It turned out that inserting +]]] into the transducer was not
-	  working very well.
-
-2012-03-13 23:21  moshagen
-
-	* tools/src/hfst-proc/formatter.cc: Deleting the + char in front of
-	  GT/Divvun tags for the CG output. Also, there is no problem with
-	  printing the raw analysis string, all is fine (contrary to what I
-	  said in my previous commit). This tool is now pretty close to
-	  what we need in the Divvun work :)
-
-2012-03-13 23:00  moshagen
-
-	* tools/src/hfst-proc/formatter.cc: Experimenting with the CG
-	  output mode. Using the -C option, the output will now include the
-	  original lemma+tags string, including all tags within compounds
-	  etc. It is printed before the CG-formatted tag list, and
-	  separated with ]]] (suggested CG sub-reading separator). For some
-	  reason, the tags have lost their initial + sign at this point, so
-	  the result is pretty ugly and unusable. I don't know why or where
-	  - feedback appreciated.
-
-2012-03-13 17:06  hardwick
-
-	* tools/src/hfst-proc/formatter.cc: Make sure the outputs are
-	  sorted before filtering and printing
-
-2012-03-13 16:40  hardwick
-
-	* tools/src/hfst-proc/hfst-proc.cc: Corrected key string for
-	  getopt_long
-
-2012-03-13 16:39  hardwick
-
-	* tools/src/hfst-proc/lookup-path.cc: Corrected condition in
-	  LookupPathW::operator< (or at least made it more understandable)
-
-2012-03-13 15:34  hardwick
-
-	* tools/src/hfst-proc/formatter.cc: Correct terminating condition
-
-2012-03-13 15:31  hardwick
-
-	* tools/src/hfst-proc/formatter.cc: Stop before end of output
-	  iterator
-
-2012-03-13 15:20  hardwick
-
-	* tools/src/hfst-proc/formatter.cc: Clarified comment
-
-2012-03-13 15:19  hardwick
-
-	* tools/src/hfst-proc/formatter.cc,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/hfst-proc.h: Added an option to only print
-	  analyses belonging to N equal-weight classes
-
-2012-03-13 14:42  hardwick
-
-	* tools/src/hfst-proc/hfst-proc.cc: Typo in error message
-
-2012-03-13 10:46  moshagen
-
-	* tools/src/hfst-proc/alphabet.cc: Adding identification and
-	  processing of GT-style tags beginning with +. When formatting for
-	  CG output, this is important, otherwise the output is more or
-	  less useless. This change should probably be enhanced with tests
-	  for the requested output format, so that it does not contaminate
-	  the Apertium analyser. Please have a look.
-
-2012-03-12 20:47  hardwick
-
-	* tools/src/hfst-proc/alphabet.cc: indentation
-
-2012-03-12 20:35  moshagen
-
-	* tools/src/hfst-proc/alphabet.cc,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/hfst-proc.h: Added a quietFlag variable,
-	  which makes the -s/-q flags actually useful. Using either -s or
-	  -q the warning "Warning: Transducer contains one or more
-	  multi-character symbols made up of ASCII characters which are
-	  also available as single-character symbols." will be suppressed.
-	  There might be other output that should also be suppressed, but
-	  that is not implemented yet.
-
-2012-03-12 17:25  moshagen
-
-	* tools/src/hfst-compose-intersect.cc: Removed "e.g." to avoid
-	  ambiguity in the interpretation of the output.
-
-2012-03-08 16:56  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/xre_lex.ll: Boundary mark in contexts is
-	  beeing handled now.
-
-2012-03-08 15:56  sdrobac
-
-	* libhfst/src/parsers/xre_parse.yy, tools/src/hfst-regexp2fst.cc:
-	  Xfst rules parser should be working now
-
-2012-03-07 14:25  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/parsers/xre_lex.ll,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc, tools/src/hfst-regexp2fst.cc:
-	  regexp updated, precedance seems to be fine now, but parallel
-	  rules with one comma and context still don't work.
-
-2012-03-07 13:49  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc:
-	  FomaTransducer::extract_paths bug fixed, now it does not produces
-	  duplicate paths.
-
-2012-03-06 17:04  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Ready
-	  for release 3.3.8.
-
-2012-03-06 11:28  hardwick
-
-	* tools/src/hfst-summarize.cc: Add expected arcs per symbol
-	  statistic
-
-2012-03-05 15:59  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for releasing version 3.3.7.
-
-2012-03-05 15:24  eaxelson
-
-	* man/Makefile.am, man/hfst-lookup.1, man/hfst-regexp2fst.1:
-	  Updated tool man pages.
-
-2012-03-05 15:22  eaxelson
-
-	* tools/src/align.sh, tools/src/hfst-regexp2fst.cc,
-	  tools/src/test-memory-leaks.sh: Updated hfst-regexp2fst help
-	  message.
-
-2012-03-05 15:20  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Fixed an
-	  error in composition introduced by the newest version of OpenFst
-	  (1.3.1).
-
-2012-03-05 11:06  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: Fixed identities in regexp
-	  parser, now [?] is parsed as identity pair.
-
-2012-03-01 15:36  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.h, man/hfst-calculate.1,
-	  man/hfst-compare.1, man/hfst-compose-intersect.1,
-	  man/hfst-compose.1, man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinize.1, man/hfst-disjunct.1, man/hfst-format.1,
-	  man/hfst-fst2fst.1, man/hfst-fst2strings.1, man/hfst-fst2txt.1,
-	  man/hfst-head.1, man/hfst-invert.1, man/hfst-lookup.1,
-	  man/hfst-minimize.1, man/hfst-name.1, man/hfst-project.1,
-	  man/hfst-push-weights.1, man/hfst-regexp2fst.1,
-	  man/hfst-remove-epsilons.1, man/hfst-repeat.1,
-	  man/hfst-reverse.1, man/hfst-split.1, man/hfst-strings2fst.1,
-	  man/hfst-substitute.1, man/hfst-subtract.1, man/hfst-summarize.1,
-	  man/hfst-tail.1, man/hfst-txt2fst.1: Updated regexp2fst parser -
-	  rules work fine for themselves, but there remains precedance
-	  issue.
-
-2012-02-27 16:27  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for HFST release 3.3.6.
-
-2012-02-27 16:05  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  tools/src/test-memory-leaks.sh: Changed include directives of
-	  implementation headers (foma, sfst, openfst) so that they search
-	  for headers in default include path first. Also modified memory
-	  leak script.
-
-2012-02-27 14:31  eaxelson
-
-	* tools/src/test-memory-leaks.sh: Updated memory leak test.
-
-2012-02-27 13:04  eaxelson
-
-	* tools/src/test-memory-leaks.sh: Tentatively added a script for
-	  testing memory leaks.
-
-2012-02-27 12:40  eaxelson
-
-	* tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-determinize.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-fst2fst.cc,
-	  tools/src/hfst-invert.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-remove-epsilons.cc, tools/src/hfst-repeat.cc,
-	  tools/src/hfst-reverse.cc, tools/src/hfst-reweight.cc,
-	  tools/src/hfst-subtract.cc: Fixed memory leaks caused by
-	  hfst_get_name in command line tools.
-
-2012-02-27 11:07  eaxelson
-
-	* man/Makefile.am, man/hfst-lookup.1: Fixed a bug in hfst-lookup
-	  man page generation, now option --no-discard-stderr is used in
-	  help2man. (However, cannot figure out why this helps..)
-
-2012-02-21 17:17  eaxelson
-
-	* libhfst/src/HfstRules.cc: Removed yet some extra code.
-
-2012-02-21 16:42  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc: Removed commented code.
-
-2012-02-21 16:16  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  tools/src/HfstCompiler.cc: Fixed some compilation warnings and
-	  removed commented code.
-
-2012-02-20 18:13  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-optimized-lookup.h, tools/src/hfst-pair-test.cc,
-	  tools/src/hfst-proc/hfst-proc.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-summarize.cc, tools/src/hfst-traverse.cc,
-	  tools/src/lexc-readline-ui.cc: Fixed some more compilation
-	  warnings.
-
-2012-02-20 17:10  eaxelson
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h: Fixed
-	  more compilation warnings.
-
-2012-02-20 16:51  eaxelson
-
-	* libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  test/libhfst/test_transducer_functions.cc: Fixed some compilation
-	  warnings.
-
-2012-02-13 13:37  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for HFST release 3.3.5.
-
-2012-02-13 13:34  eaxelson
-
-	* man/hfst-fst2txt.1, man/hfst-strings2fst.1: Man pages updated.
-
-2012-02-09 15:27  eaxelson
-
-	* man/Makefile.am: Modified Makefile.am.
-
-2012-02-09 14:07  sdrobac
-
-	* libhfst/src/HfstXeroxRules.h: Added some comments
-
-2012-02-09 11:15  eaxelson
-
-	* test/tools/fst2txt-functionality.sh: Fixed a small bug in
-	  hfst-fst2txt functionality test.
-
-2012-02-08 13:55  mie
-
-	* test/tools/fst2txt-functionality.sh, tools/src/hfst-fst2txt.cc:
-	  Output dot/graphviz
-
-2012-02-08 12:29  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: Maybe finally the reversion is
-	  working..
-
-2012-02-08 12:26  eaxelson
-
-	* test/libhfst/auxiliary_functions.cc,
-	  test/libhfst/test_transducer_functions.cc: Made yet some changes
-	  to revert to the older revision.'
-
-2012-02-08 12:11  eaxelson
-
-	* BUGS.old, INSTALL, Makefile.am, README, configure.ac,
-	  libhfst/src/HfstApply.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/BooleanWeightTransducer.cc,
-	  libhfst/src/implementations/BooleanWeightTransducer.h,
-	  libhfst/src/implementations/ConvertBooleanWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/Makefile.am,
-	  test/libhfst/auxiliary_functions.cc,
-	  test/libhfst/test_transducer_functions.cc: Reverted to revision
-	  2076.
-
-2012-02-07 10:15  eaxelson
-
-	* libhfst/src/implementations/BooleanWeightTransducer.cc,
-	  libhfst/src/implementations/BooleanWeightTransducer.h,
-	  libhfst/src/implementations/ConvertBooleanWeightTransducer.cc:
-	  Forgot to add the new files for BooleanWeightTransducer.
-
-2012-02-07 10:13  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/Makefile.am: Tentatively added a new
-	  HfstTransducer type, BOOLEAN_WEIGHT_TYPE.
-
-2012-02-06 14:50  eaxelson
-
-	* tools/src/hfst-strings2fst.cc: Fixed a small error in the options
-	  handling part of the help message for hfst-strings2fst.
-
-2012-02-02 13:05  eaxelson
-
-	* man, man/Makefile.am, man/hfst-format.1, man/hfst-name.1: Added
-	  new man pages for hfst-name and hfst-format and links to man
-	  pages for tool aliases.
-
-2012-02-01 15:07  eaxelson
-
-	* man/Makefile.am, man/hfst-calculate.1, man/hfst-compare.1,
-	  man/hfst-compose-intersect.1, man/hfst-compose.1,
-	  man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinize.1, man/hfst-disjunct.1, man/hfst-fst2fst.1,
-	  man/hfst-fst2strings.1, man/hfst-fst2txt.1, man/hfst-head.1,
-	  man/hfst-invert.1, man/hfst-minimize.1, man/hfst-project.1,
-	  man/hfst-push-weights.1, man/hfst-regexp2fst.1,
-	  man/hfst-remove-epsilons.1, man/hfst-repeat.1,
-	  man/hfst-reverse.1, man/hfst-split.1, man/hfst-strings2fst.1,
-	  man/hfst-substitute.1, man/hfst-subtract.1, man/hfst-summarize.1,
-	  man/hfst-tail.1, man/hfst-txt2fst.1: Now the man pages also have
-	  a short description of the tool, i.e. the one given by hfst-foo
-	  --help.
-
-2012-01-27 14:59  eaxelson
-
-	* test/tools/cat2dog.substitute: Added a test case for the bug
-	  fixed in revision 2016 (out_of_range thrown by substitute
-	  function).
-
-2012-01-27 14:58  hardwick
-
-	* tools/src/hfst-compose.cc: De-spanishify hint string
-	  ("argumentes" -> "arguments")
-
-2012-01-27 14:32  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Now
-	  HfstTransitionGraph:substitute(const HfstSymbolSubstitutions &
-	  subs) adds all symbols in subs to the global alphabet before
-	  relabeling, thus avoiding the out_of_range exceptions thrown
-	  earlier by this function.
-
-2012-01-26 21:05  mpsilfve
-
-	* tools/src/hfst-compose-intersect.cc: Changed
-	  hfst-compose-intersect so that it gives a warning (1) when the
-	  rule does not contain the identity symbol and the output tape of
-	  the lexicon contains a symbol not found on the input tape of the
-	  first rule, and (2) when the output tape of the lexicon contains
-	  multi character symbols not found on the input tape of the first
-	  rule.
-
-2012-01-26 16:39  eaxelson
-
-	* libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Removed
-	  spurious consts from optimized lookup conversion functions. Fixes
-	  bug ID 3469227.
-
-2012-01-26 16:27  eaxelson
-
-	* test/tools/fsmbook-examples/FinnishNumerals/test.sh: Bug on mac
-	  os caused by its sort order (bug ID: 3462485) fixed.
-
-2012-01-26 14:24  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-optimized-lookup.cc:
-	  Added function write_in_att_format_number. Also fixed
-	  hfst-optimized-lookup so that --version and --help print to
-	  standard output instead of standard error.
-
-2012-01-25 18:25  hardwick
-
-	* tools/src/Makefile.am, tools/src/hfst-optimized-lookup.h:
-	  hfst-optimized-lookup softlink and some package strings for
-	  hfst-optimized-lookup.h
-
-2012-01-25 09:20  hardwick
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-optimized-lookup.h: Heavy-handed bundling of the
-	  hfst-optimized-lookup standalone
-
-2012-01-23 15:25  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/xre_parse.yy: Rules parser - added epenthesis
-
-2012-01-19 15:51  eaxelson
-
-	* test/tools/hfst-check-environment.sh,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Still needed to fix some errors caused by in-place sed.. Now
-	  everything should work in commandline tools tests.
-
-2012-01-19 15:20  eaxelson
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/compare-functionality.sh,
-	  test/tools/compose-functionality.sh,
-	  test/tools/compose-intersect-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh,
-	  test/tools/format-functionality.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/fst2txt-functionality.sh,
-	  test/tools/head-functionality.sh,
-	  test/tools/hfst-check-environment.sh,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh,
-	  test/tools/incompatible-formats.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/latin-1-strings.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh, test/tools/lexc2fst-stress.sh,
-	  test/tools/lookup-functionality.sh, test/tools/lookup-stress.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/permutate-file-params.sh, test/tools/proc-stress.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/push-weights-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/reweight-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/strings2fst-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/summarize-functionality.sh,
-	  test/tools/tail-functionality.sh,
-	  test/tools/txt2fst-functionality.sh, test/tools/utf-8-strings.sh,
-	  test/tools/valgrind.sh: Fixed problems in test/tools that came
-	  after updating the Makefile.
-
-2012-01-19 13:46  eaxelson
-
-	* test/tools/Makefile.am, test/tools/at_file_quote.foma.xre,
-	  test/tools/at_file_quote.openfst-tropical.xre,
-	  test/tools/at_file_quote.sfst.xre,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/proc-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh: Removed commas from
-	  filename suffixes (e.g. .hfst.sfst -> .sfst) in test/tools. Also
-	  replaced compilation rules using %-symbol in Makefile.am with
-	  old-fashioned suffix rules. Now commandline tool tests should
-	  work with older versions of make as well.
-
-2012-01-17 12:01  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/Makefile.am: Ready for
-	  HFST release 3.3.4.
-
-2012-01-16 15:37  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstSymbolDefs.h: Added some
-	  documentation for HfstSymbolSubstitutions and
-	  HfstSymbolPairSubstitutions. Also updated the doxygen
-	  documentation.
-
-2012-01-16 14:03  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc: Now HfstTransducer
-	  supports making several substitutions at the same time. Also made
-	  a test for these functions. Adding documentation soon.
-
-2012-01-16 12:57  eaxelson
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Tentatively
-	  added a symbol-to-symbol substitution function to
-	  HfstTransitionGraph.
-
-2012-01-16 12:15  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/xre_parse.yy: newer version of the rules
-	  parser
-
-2012-01-12 03:11  mie
-
-	* libhfst/src/parsers/xre_parse.yy: weighted expressions
-
-2012-01-11 17:58  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.h,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.sh,
-	  tools/src/hfst-regexp2fst.cc: added some xerox rules to
-	  xre_parser (hfst-regexp2fst). Also, slightly modified xerox rules
-
-2012-01-11 08:43  mie
-
-	* libhfst/src/parsers/xre_parse.yy: Remove some debugging printout
-
-2012-01-04 17:14  mie
-
-	* libhfst/src/parsers, libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  Merge xre precedence fixes
-
-2012-01-04 16:21  eaxelson
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  tools/src/hfst-substitute.cc: Now const_cast<char*> is used
-	  instead of strdup/free in
-	  ConvertFomaTransducer::hfst_basic_transducer_to_foma. Also
-	  modified hfst-substitute so that the alphabet is not pruned after
-	  substitution.
-
-2012-01-04 14:49  eaxelson
-
-	* tools/src/hfst-substitute.cc: hfst-substitute now implements the
-	  option --in-order.
-
-2012-01-04 11:55  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.h: Fixed bug,
-	  which prevented compilation of grammars with both set
-	  constructions and : or ?.
-
-2012-01-04 11:54  mpsilfve
-
-	* tools/src/hfst-twolc/test/test60,
-	  tools/src/hfst-twolc/test/test60.txt_fst: Unit test for grammars
-	  which have both set constructions and : or ?
-
-2012-01-03 13:45  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc:
-	  FomaTransducer::repeat_n now takes a copy of its argument
-	  transducer to avoid double delete caused by new foma interface.
-	  Fixes bug 3468373.
-
-2011-12-30 19:51  mie
-
-	* README: OpenFst linking bug is fixed in 1.2.10; also gqipped some
-	  paras
-
-2011-12-30 18:28  mie
-
-	* configure.ac: Warn end users about disabled "important" tools
-
-2011-12-30 15:17  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/Makefile.am: Xerox rules added to the library
-
-2011-12-25 02:03  spectre360
-
-	* tools/src/hfst-proc/alphabet.cc: more alphabet hacks
-
-2011-12-24 23:25  spectre360
-
-	* tools/src/hfst-proc/alphabet.cc: more alphabet hacks
-
-2011-12-22 17:23  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-substitute.cc: Added new substitution functions.
-	  Now it is possible to perform many string pair-to-string pair
-	  mappings at the same time on a transducer. Also tentatively added
-	  a functions that performs many string-to-string mappings at the
-	  same time.
-
-2011-12-22 12:00  sdrobac
-
-	* test/tools/fsmbook-examples/EinsteinsPuzzle/EinsteinsPuzzle.hfst.script:
-	  Now the test EinsteinsPuzzle uses local tools instead of the
-	  installed ones.
-
-2011-12-22 11:56  eaxelson
-
-	* test/tools/fsmbook-examples/FinnishNumerals/FinnishNumerals.hfst.script:
-	  Now the test FinnishNumerals uses local tools, no the installed
-	  ones.
-
-2011-12-21 17:12  eaxelson
-
-	* libhfst/src/implementations/ConvertTropicalWeightTransducer.cc:
-	  Conversions between HfstTropicalTransducer and
-	  HfstBasicTransducer also made more modular.
-
-2011-12-21 16:32  eaxelson
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/SfstTransducer.cc: Made conversion
-	  functions more modular by moving code to subroutines. Also
-	  removed commented code from files.
-
-2011-12-21 14:30  eaxelson
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc: Now
-	  conversions between transducer formats openfst-tropical, sfst and
-	  foma are carried out using numbers always when possible.
-
-2011-12-20 23:45  eaxelson
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h: Tentatively added
-	  functions for fast conversion between transducer formats.
-
-2011-12-20 22:39  eaxelson
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc: Now also
-	  conversion from foma to basic transducer uses numbers. Some
-	  commented code also removed.
-
-2011-12-20 17:36  eaxelson
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Some
-	  conversion functions are not carreid out using numbers directly.
-
-2011-12-20 15:27  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.cc,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Renamed HfstTropicalTransitionData variable
-	  'number2symbol_vector' to 'number2symbol_map' to avoid a strange
-	  linking error. Also removed transducer conversion functions that
-	  are not used.
-
-2011-12-19 23:54  eaxelson
-
-	* libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.cc,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Removed some extra code.
-
-2011-12-19 18:17  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-substitute.cc: Tentatively added alphabet pruning
-	  to substitute functions, it still has to be removed from
-	  hfst-substitute.
-
-2011-12-19 15:24  eaxelson
-
-	* libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Conversion between HfstBasicTransducer and
-	  TropicalOpenfstTransducer is now more efficient as it is done
-	  using numbers directly.
-
-2011-12-16 17:22  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Changed
-	  conversion from HfstTropicalTransducer to HfstTransitionGraph so
-	  that it uses transition numbers directly. This improves the
-	  performance greatly.
-
-2011-12-14 13:36  mpsilfve
-
-	* tools/src/hfst-pair-test.cc: Fixed bug which made tests always
-	  pass.
-
-2011-12-09 12:10  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am, test/tools/fsmbook-examples/Makefile.am:
-	  Ready for HFST release 3.3.3. Also disabled DateParser test
-	  because it relies on hfst-calculate.
-
-2011-12-08 17:52  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/Rule.cc: Fixed speces so that
-	  the space symbol is used in the transition instead of @_SPACE_ at .
-
-2011-12-08 13:18  hardwick
-
-	* libhfst/src/implementations/FomaTransducer.cc: Skip copying the
-	  foma transducer name to the net, leaving an empty string.
-	  Rationale: foma has a limiting 40 char ceiling on names, and we
-	  might as well
-	  use HFST3-style names for everything.
-
-2011-12-08 12:37  eaxelson
-
-	* tools/src/hfst-txt2fst.cc: Removed hard tab indentation from
-	  hfst-txt2fst.cc
-
-2011-12-08 12:34  eaxelson
-
-	* tools/src/hfst-lexc.cc: Replaced tabs with spaces in hfst-lexc.cc
-
-2011-12-08 12:25  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Fixed
-	  HfstTransitionGraph:swap_states so that the variable new_target
-	  is no longer used uninitialized.
-
-2011-12-08 12:10  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/DateParser.hfst.script:
-	  DateParser test fixed, the path os hfst-calculate was not
-	  correct.
-
-2011-12-07 12:00  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc:
-	  Fixed ComposeIntersectLexicon test
-
-2011-12-07 11:45  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc,
-	  tools/src/hfst-twolc/src/scanner1.ll: Now the escape '% ' should
-	  work everywhere.
-
-2011-12-07 11:43  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test59,
-	  tools/src/hfst-twolc/test/test59.txt_fst: Added test for rules
-	  with space symbols.
-
-2011-12-07 11:24  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/Makefile.am: Added a conversion test
-	  and made the LIBHFST_TST actually run, causing
-	  test failure for the time being
-
-2011-12-02 13:24  mpsilfve
-
-	* libhfst/src/implementations/HfstTropicalTransducerTransitionData.cc,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Optimized HfstTropicalTransducerTransitionData::get_symbol(...)
-
-2011-11-30 09:21  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h: Call
-	  sizeof() on type names, not variable names due to OSX compilation
-	  thinking the variables are non-static uninitialized fields.
-	  Fixes #3445592.
-
-2011-11-29 15:53  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h: Fixed
-	  (serious) typo
-
-2011-11-29 15:23  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h:
-	  (re-)added a char* constructor for tables, made it the default to
-	  only read
-	  disk once per table
-
-2011-11-29 09:40  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Eliminate use of non-portable strdupa(const char *).
-	  Fixes #3444950.
-
-2011-11-28 13:28  hardwick
-
-	* tools/src/hfst-lookup.cc: Removed some garbage
-
-2011-11-28 13:24  hardwick
-
-	* tools/src/hfst-lookup.cc: Removed some of the unnecessary work
-	  done in tokenizing for ol-lookup
-
-2011-11-28 13:23  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Fixed
-	  a name shadowing bug
-
-2011-11-28 12:56  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Added
-	  a lookup_fd(char *), reduced code duplication in interface
-	  functions
-
-2011-11-23 17:42  hardwick
-
-	* README: Added note about current OpenFst / Ubuntu problems.
-
-2011-11-17 17:09  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre3.yy: Fixed error message.
-
-2011-11-17 16:31  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.h,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc: Now terminating
-	  compilation, if an empty pair is found in a defintion, rule
-	  center or rule context.
-
-2011-11-16 11:46  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am,
-	  test/tools/fsmbook-examples/numbers-to-numerals-test.sh: Ready
-	  for release 3.3.2
-
-2011-11-16 09:47  mpsilfve
-
-	* libhfst/src/implementations/ConvertTropicalWeightTransducer.cc:
-	  Use NumArcs as a member function instead of using NumArcs from
-	  the OpenFst internal namespace.
-
-2011-11-16 09:25  hardwick
-
-	* libhfst/src/implementations/ConvertTropicalWeightTransducer.cc:
-	  OpenFst has moved NumArcs into the namespace ::internal. This
-	  commit reflects
-	  that, fixing compilation with the newest version of OpenFst.
-	  NOTE:
-	  THIS BREAKS BACKWARDS COMPATIBILITY, you need the newest OFST to
-	  compile after
-	  this commit.
-
-2011-11-14 07:52  eaxelson
-
-	* test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.xfst.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.sh,
-	  test/tools/fsmbook-examples/Esperanto/test.sh,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.sh,
-	  test/tools/fsmbook-examples/Lingala/Lingala.xfst.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.sh,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.xfst.script:
-	  Fixed svn properties of executables in fsmbook-tests.
-
-2011-11-14 03:06  mie
-
-	* configure.ac, tools/src/hfst-proc/Makefile.am: Remove PKG_ macros
-	  from end user builds since they do not work nicely on
-	  all platforms.
-
-2011-11-13 14:33  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/Makefile.am,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/EinsteinsPuzzle.xfst.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/Makefile.am,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/expected_result_foma,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.sh,
-	  test/tools/fsmbook-examples/EnglishNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/Esperanto/Makefile.am,
-	  test/tools/fsmbook-examples/Esperanto/test.sh,
-	  test/tools/fsmbook-examples/NumbersToNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.sh,
-	  test/tools/fsmbook-examples/foma-att-to-hfst-att.sh,
-	  test/tools/fsmbook-examples/test-example.sh: Tentatively added to
-	  fsmbook-examples tests where the results from foma and xfst are
-	  compared.
-
-2011-11-13 12:13  eaxelson
-
-	* test/tools/fsmbook-examples/EinsteinsPuzzle/Makefile.am,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.sh,
-	  test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/Makefile.am,
-	  test/tools/fsmbook-examples/Esperanto/test.sh,
-	  test/tools/fsmbook-examples/FinnishNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.sh,
-	  test/tools/fsmbook-examples/NumbersToNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.sh: Now all
-	  tests in fsmbook-examples use the tools in tools/src/ instead of
-	  installed tools.
-
-2011-11-12 14:37  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/Makefile.am,
-	  test/tools/fsmbook-examples/EnglishNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.xfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.sh,
-	  test/tools/fsmbook-examples/test-example.sh: Tentatively fixed
-	  parts of fsmbook-tests where intalled commandline tools are used
-	  instead of tools in tools/src/.
-
-2011-11-11 14:35  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.3.1
-
-2011-11-11 08:44  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Fixed memory leak in HfstTransducer::get_property
-
-2011-11-11 07:50  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/Rule.cc: Remove escape sequence
-	  __HFST_TWOLC_ from symbols in rule names.
-
-2011-11-10 23:39  mpsilfve
-
-	* tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-subtract.cc: Changed
-	  flag diacritics handling in hfst-compose, hfst-conjunct,
-	  hfst-concatenate and hfst-subtract. Now flags are harmonized
-	  using HfstTransducer::harmonize_flag_diacritics(...).
-
-2011-11-10 23:36  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Added a function for querying if a transducer has flag diacritics
-	  and added a parameter in harmonize_flag_diacritics for diabling
-	  insertion of missgin flags (needed for hfst-concatenate).
-
-2011-11-10 21:28  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Added function bool HfstTransducer::has_flag_diacritics(void)
-	  const
-
-2011-11-10 18:08  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: When
-	  looking for indexes with a particular symbol (which is used for
-	  converting to other transducer types), handle flag diacritics
-	  specially
-	  as per their indexing rules.
-
-2011-11-10 17:44  mpsilfve
-
-	* libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h: Added
-	  HfstTransducer::hamonize_flag_diacritcs(HfstTransducer &another)
-
-2011-11-10 17:03  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/convert.h: 1) Report
-	  the correct indexing offset for epsilon as 0 even when there
-	  aren't
-	  any epsilons
-	  2) Put the exception about trying to find the offset of absent
-	  symbols in
-	  the proper scope so it actually gets thrown
-
-2011-11-10 13:10  eaxelson
-
-	* test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.xfst.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/foma-att-to-hfst-att.sh,
-	  test/tools/fsmbook-examples/remove-complement.sh,
-	  test/tools/fsmbook-examples/test-example.sh: Tentatively added to
-	  fsmbook-examples tests where results from foma and xfst are
-	  compared. Also fixed a small bug in remove-complement.sh.
-
-2011-11-10 11:00  eaxelson
-
-	* test/libhfst, test/libhfst/test_constructors.cc,
-	  test/libhfst/test_streams.cc, test/tools,
-	  test/tools/fsmbook-examples/Esperanto,
-	  test/tools/fsmbook-examples/FinnishNumerals,
-	  test/tools/fsmbook-examples/NumbersToNumerals: Extra files
-	  created during tests are no ignored by svn.
-
-2011-11-10 05:25  moshagen
-
-	* test/tools/fsmbook-examples/EinsteinsPuzzle,
-	  test/tools/fsmbook-examples/EnglishNumerals: Ignore generated
-	  autotools files.
-
-2011-11-09 23:23  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc:
-	  Added flag diacritics to the epsilon filter.
-
-2011-11-09 21:14  eaxelson
-
-	* test/tools/fsmbook-examples/EinsteinsPuzzle/Makefile.am: Added
-	  missing file.
-
-2011-11-09 14:35  eaxelson
-
-	* README, configure.ac,
-	  test/tools/fsmbook-examples/DateParser/DateParser.xfst.att,
-	  test/tools/fsmbook-examples/DateParser/DateParser.xfst.script,
-	  test/tools/fsmbook-examples/DateParser/Makefile.am,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/Makefile,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/expected_result,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.sh,
-	  test/tools/fsmbook-examples/EnglishNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAdjectivesAndVerbs.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/Makefile.am,
-	  test/tools/fsmbook-examples/Esperanto/test.script,
-	  test/tools/fsmbook-examples/Esperanto/test.sh,
-	  test/tools/fsmbook-examples/FinnishNumerals/Makefile,
-	  test/tools/fsmbook-examples/FinnishNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.script,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.sh,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/NumbersToNumerals/Makefile,
-	  test/tools/fsmbook-examples/NumbersToNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.sh,
-	  test/tools/fsmbook-examples/einsteins-puzzle-test.sh,
-	  test/tools/fsmbook-examples/esperanto-test.sh,
-	  test/tools/fsmbook-examples/finnish-numerals-test.sh,
-	  test/tools/fsmbook-examples/numbers-to-numerals-test.sh,
-	  test/tools/fsmbook-examples/test-example.sh: Added a note on
-	  configure enable/disable switches to README. Changed
-	  fsmbook-examples so that now all examples that can be compiled
-	  with the current HFST tools are included in the tests.
-
-2011-11-07 20:37  eaxelson
-
-	* configure.ac: Forgot to commit configure.ac last time, now
-	  automake should work.
-
-2011-11-07 16:14  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/Makefile.am,
-	  test/tools/fsmbook-examples/DateParser/remove-complement.sh,
-	  test/tools/fsmbook-examples/DateParser/test-example.sh,
-	  test/tools/fsmbook-examples/DateParser/test.sh,
-	  test/tools/fsmbook-examples/EnglishNumerals/Makefile,
-	  test/tools/fsmbook-examples/EnglishNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/EnglishNumerals/test.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/date-parser-test.sh,
-	  test/tools/fsmbook-examples/english-numerals-test.sh,
-	  test/tools/fsmbook-examples/remove-complement.sh,
-	  test/tools/fsmbook-examples/test-example.sh,
-	  test/tools/fsmbook-examples/test.sh: Made some modifications to
-	  fsmbook tests.
-
-2011-11-07 13:23  moshagen
-
-	* test/tools/fsmbook-examples,
-	  test/tools/fsmbook-examples/DateParser: Ignore auto-generated
-	  files by auto-tools.
-
-2011-11-07 11:44  hardwick
-
-	* tools/src/hfst-grep.cc: Same leak issue as in r1846
-
-2011-11-07 10:38  hardwick
-
-	* tools/src/hfst-lookup.cc: free() char*'s that get strdup'd in a
-	  loop (which leaks memory if not free()'d).
-
-2011-11-04 14:15  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/Makefile,
-	  test/tools/fsmbook-examples/DateParser/Makefile.am: Added missing
-	  file.
-
-2011-11-03 16:16  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/Makefile,
-	  test/tools/fsmbook-examples/DateParser/test.sh: Made small
-	  changes to the tests under fsmbook-examples, now make distcheck
-	  should work also when scripts in an upper-level directory are
-	  used.
-
-2011-11-03 14:41  eaxelson
-
-	* configure.ac, test/tools/Makefile.am,
-	  test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/Makefile,
-	  test/tools/fsmbook-examples/DateParser/remove-complement.sh,
-	  test/tools/fsmbook-examples/DateParser/test-example.sh,
-	  test/tools/fsmbook-examples/DateParser/test.sh: Tentatively added
-	  one subdirectory of fsmbook-examples to the tests performed in
-	  make check.
-
-2011-11-02 14:02  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/Makefile,
-	  test/tools/fsmbook-examples/DateParser/test.script,
-	  test/tools/fsmbook-examples/DateParser/test.sh,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/EinsteinsPuzzle.hfst.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/Makefile,
-	  test/tools/fsmbook-examples/FinnishNumerals/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script,
-	  test/tools/fsmbook-examples/Makefile,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-examples/Palindromes/Palindromes.hfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.hfst.script,
-	  test/tools/fsmbook-examples/test.sh: Tentatively added some
-	  testing scripts to fstbook-examples
-
-2011-11-01 14:20  hardwick
-
-	* tools/src/hfst-commandline.cc: Remove spurious space character
-	  from error message
-
-2011-11-01 14:19  hardwick
-
-	* tools/src/hfst-commandline.cc: Give more guidance when ejecting
-	  the user for having a non-UTF-8 charset
-
-2011-10-28 19:05  hardwick
-
-	* test/tools/Makefile.am: Comment out fsmbook-subdir; it's broken
-
-2011-10-28 11:16  eaxelson
-
-	* test/tools/Makefile.am, test/tools/fsmbook-examples/Makefile,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/Palindromes/Makefile,
-	  test/tools/fsmbook-examples/test.sh: fsmbook-examples are now
-	  included in tests.
-
-2011-10-27 13:25  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for HFST release 3.3.0.
-
-2011-10-27 12:50  eaxelson
-
-	* test/tools/format-functionality.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lookup-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh: missing added to some
-	  tests so that they pass distcheck
-
-2011-10-26 15:48  eaxelson
-
-	* test/tools/Makefile.am: lexc-functionality updated
-
-2011-10-26 14:31  eaxelson
-
-	* test/tools/Makefile.am, test/tools/lookup-functionality.sh: make
-	  distcheck should now find the missing files
-
-2011-10-25 16:20  mie
-
-	* tools/src/hfst-flag-diacritics.cc: remove hfst2 broken flags from
-	  main tree
-
-2011-10-25 16:04  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-apertium2fst.cc, tools/src/hfst-xfst-compiler.cc:
-	  Remove experimental, hard to compile and dependent programs from
-	  main
-	  compilation
-
-2011-10-25 14:27  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, test/tools/Makefile.am,
-	  tools/src/Makefile.am: Added missing files to Makefiles. Also
-	  replaced HfstExceptions.h with HfstExceptionsDefs.h in include
-	  declarations.
-
-2011-10-25 11:53  eaxelson
-
-	* tools/src/hfst-lexc.cc, tools/src/hfst-substitute.cc: Option -s
-	  in hfst-lexc and hfst-substitute now suppresses warnings as it
-	  should.
-
-2011-10-25 11:51  eaxelson
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/incompatible-formats.sh,
-	  test/tools/lexc-functionality.sh,
-	  test/tools/substitute-functionality.sh: Made yet some tests less
-	  verbose.
-
-2011-10-25 11:28  eaxelson
-
-	* tools/src/hfst-lookup.cc: The option -s in hfst-lookup now
-	  suppresses warnings as they should.
-
-2011-10-25 11:16  eaxelson
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/compare-functionality.sh,
-	  test/tools/compose-functionality.sh,
-	  test/tools/compose-intersect-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh,
-	  test/tools/head-functionality.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/latin-1-strings.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lookup-functionality.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/permutate-file-params.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/push-weights-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/strings2fst-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/tail-functionality.sh,
-	  test/tools/txt2fst-functionality.sh, test/tools/valgrind.sh: Made
-	  tests less verbose.
-
-2011-10-25 10:50  eaxelson
-
-	* tools/src/hfst-twolc/test/test: Testing if a library exists is
-	  now done with the command 'hfst-format --test-format'.
-
-2011-10-24 16:53  eaxelson
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/format-functionality.sh,
-	  test/tools/lexc-functionality.sh: Now all tests in test/tools
-	  should pass.
-
-2011-10-24 14:59  eaxelson
-
-	* test/tools/format-functionality.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lookup-functionality.sh, tools/src/hfst-format.cc:
-	  Fixed a bug in hfst-format. Also fixed some tests so that they
-	  don't assume that all backend libraries are available.
-
-2011-10-24 11:19  hardwick
-
-	* configure.ac: Indicate whether apertium2fst is enabled
-
-2011-10-21 13:53  hardwick
-
-	* libhfst/src/Makefile.am: A spurious space was apparently
-	  preventing libhfst.la from getting built (!!)
-
-2011-10-20 15:01  eaxelson
-
-	* test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/test.script:
-	  Fixed some small bugs.
-
-2011-10-20 11:47  eaxelson
-
-	* test/tools/fsmbook-examples/Esperanto/EsperantoNounsAdjectivesAndVerbs.lexc:
-	  Added a missing file.
-
-2011-10-20 11:46  eaxelson
-
-	* test/tools/fsmbook-examples/Esperanto/EsperantoNounsAdjectivesAndVerbs.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/test.script: Now all
-	  Esperanto tests work.
-
-2011-10-20 09:37  eaxelson
-
-	* test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.hfst.script:
-	  Now EsperantoNounsAndAdjectivesWithTags passes.
-
-2011-10-19 20:14  mie
-
-	* README: Mention both forms of <SFST-1.4.6 error messages
-
-2011-10-19 13:41  eaxelson
-
-	* test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/test.script: Fixed some
-	  bugs.
-
-2011-10-19 09:39  eaxelson
-
-	* test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.xfst.att:
-	  EsperantoNounsAndAdjectives works now.
-
-2011-10-19 09:22  mie
-
-	* configure.ac, scripts/hfst-lexc: Remove hfst-lexc and feature
-	  check that requires newer autotools from
-	  default builds
-
-2011-10-19 09:00  eaxelson
-
-	* test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.lexc,
-	  test/tools/fsmbook-examples/Esperanto/test.script: Updated the
-	  tests.
-
-2011-10-18 15:00  eaxelson
-
-	* test/tools/fsmbook-examples/Esperanto,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/test.script: New tests.
-
-2011-10-18 13:31  eaxelson
-
-	* test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.hfst.script:
-	  HFST scripts for Monish tests ready.
-
-2011-10-18 08:51  eaxelson
-
-	* test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.xfst.att,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.xfst.script:
-	  Fixed a bug in the xfst file.
-
-2011-10-18 08:44  eaxelson
-
-	* test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.xfst.att,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.xfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/test.script:
-	  Adding a new test.
-
-2011-10-14 12:07  eaxelson
-
-	* test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.xfst.att,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.xfst.script,
-	  test/tools/fsmbook-examples/MonishAnalysis/test.script,
-	  test/tools/fsmbook-examples/xfst-att-to-hfst-att.sh: Added files
-	  to MonishAnalysis
-
-2011-10-14 11:21  eaxelson
-
-	* test/tools/fsmbook-examples/MonishAnalysis,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.xfst.script:
-	  Adding a new test case
-
-2011-10-14 10:58  eaxelson
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/test.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese.xfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/test.script:
-	  Added an alternative solution to Brazilian Portuguese.
-
-2011-10-14 10:34  eaxelson
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese/test.script,
-	  test/tools/fsmbook-examples/xfst-att-to-hfst-att.sh: Now unicode
-	  characters are transformed correctly from xfst att format to hfst
-	  att format.
-
-2011-10-13 17:44  moshagen
-
-	* tools/src, tools/src/hfst-proc: Ignore generated binaries.
-
-2011-10-13 13:33  eaxelson
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese,
-	  test/tools/fsmbook-examples/BrazilianPortuguese/BrazilianPortuguese.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese/BrazilianPortuguese.xfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese/test.script:
-	  Added new test
-
-2011-10-13 12:34  eaxelson
-
-	* test/tools/fsmbook-examples/BetterColaMachine,
-	  test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.hfst.script,
-	  test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.xfst.att,
-	  test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.xfst.script,
-	  test/tools/fsmbook-examples/BetterColaMachine/test.script: Added
-	  a new test
-
-2011-10-13 10:53  eaxelson
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh,
-	  test/tools/subtract-functionality.sh: Fixed some tests so that
-	  they work when only openfst is installed.
-
-2011-10-13 09:34  mie
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc: use const char * in bison's
-	  error handler
-
-2011-10-13 09:24  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, test/libhfst/test_constructors.cc,
-	  test/libhfst/test_examples.cc,
-	  test/libhfst/test_flag_diacritics.cc,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  test/libhfst/test_lexc.cc, test/libhfst/test_rules.cc,
-	  test/libhfst/test_streams.cc,
-	  test/libhfst/test_transducer_functions.cc: Fixed tests in
-	  test/libhfst so that they also pass when only OpenFst is
-	  installed. Also changed HfstTransducer::convert so that
-	  exceptions are handled correctly.
-
-2011-10-07 13:52  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/LeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftRestrictionArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc: Ultimate fix
-	  to implementation type availability checking in twolc
-	  unit-testmake check
-
-2011-10-07 13:44  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc:
-	  Tentatively fixed unit-test in OtherSymbolTransducer.cc
-
-2011-10-07 12:56  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftRestrictionArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRule.cc: Added checks
-	  for existence of implementation types to unit tests.
-
-2011-10-07 12:25  mpsilfve
-
-	* tools/src/hfst-twolc/src/commandline_src/CommandLine.cc: Added
-	  support for new backend format strings in commandline arguments.
-
-2011-10-07 12:24  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Added check for existence of
-	  backend formats to tests.
-
-2011-10-07 10:33  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h:
-	  HfstTransducer::is_implementation_type_available changed from
-	  protected to public. HfstTransducer and HfstRules tests now work
-	  also when all backend libraries are not available.
-
-2011-10-06 14:18  hardwick
-
-	* swig/hfstBot.py: Only respond to nick + , or nick + :. Fixed
-	  flood-handling.
-
-2011-10-06 09:35  mie
-
-	* README: Update instructions for easier svn source
-
-2011-10-05 10:49  mie
-
-	* configure.ac: Disable problematic backend libraries from default
-	  build
-
-2011-10-04 15:48  mie
-
-	* autogen.sh, configure.ac, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h:
-	  Remove all version requirements and dependencies and tools that
-	  require versions, features, or dependencies to support older tool
-	  chains and systems
-
-2011-09-30 06:03  mie
-
-	* tools/src/hfst-reweight.cc: allow modifying only end state
-
-2011-09-28 10:22  eaxelson
-
-	* test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.xfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/expected_result.strings:
-	  Fixed character coding in Finnish examples.
-
-2011-09-28 09:01  eaxelson
-
-	* test/tools/fsmbook-examples/YaleShooting/YaleShooting.hfst.script,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.xfst.att,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.xfst.script,
-	  test/tools/fsmbook-examples/YaleShooting/test.script:
-	  YaleShooting test complete, rules must be implemented in HFST
-	  commandline tools before it can be tested.
-
-2011-09-28 08:36  eaxelson
-
-	* test/tools/fsmbook-examples/Palindromes,
-	  test/tools/fsmbook-examples/Palindromes/Palindromes.hfst.script,
-	  test/tools/fsmbook-examples/Palindromes/Palindroms.hfst.script,
-	  test/tools/fsmbook-examples/Palindromes/test.script,
-	  test/tools/fsmbook-examples/Palindroms,
-	  test/tools/fsmbook-examples/test.sh: Changed 'Palindroms' into
-	  'Palindromes'.
-
-2011-09-28 07:36  mie
-
-	* configure.ac, test/tools/Makefile.am,
-	  test/tools/reweight-functionality.sh, tools/src/Makefile.am,
-	  tools/src/hfst-reweight.cc: Add tool for modifying weights
-
-2011-09-27 13:46  eaxelson
-
-	* test/tools/fsmbook-examples/Palindroms/Palindroms.hfst.script,
-	  test/tools/fsmbook-examples/Palindroms/test.script: Now the test
-	  passes also for foma implementation type when revision 47 of foma
-	  is used.
-
-2011-09-27 13:33  eaxelson
-
-	* test/tools/fsmbook-examples/YaleShooting,
-	  test/tools/fsmbook-examples/YaleShooting/Makefile.am,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.hfst.script,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.xfst.script,
-	  test/tools/fsmbook-examples/YaleShooting/test.script: Added test
-	  files.
-
-2011-09-27 13:23  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: A bug in
-	  HfstTransitionGraph::swap_states fixed, now final states are
-	  swapped too.
-
-2011-09-27 08:16  eaxelson
-
-	* test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.xfst.att,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.xfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/test.script,
-	  test/tools/fsmbook-examples/test.sh: Added documentation
-
-2011-09-27 06:31  mie
-
-	* tools/src/hfst-proc/Makefile.am: alias old proc
-
-2011-09-26 14:49  mie
-
-	* man/hfst-xfst.1: add bugs
-
-2011-09-26 14:24  mie
-
-	* man/hfst-fst2strings.1: Missing -r option
-
-2011-09-26 14:20  mie
-
-	* man/hfst-apertium-proc.1: document input format requirements in
-	  the beginning
-
-2011-09-26 13:56  mie
-
-	* test/tools/proc-functionality.sh, test/tools/proc-stress.sh,
-	  test/tools/valgrind.sh: few less apertiums in directories
-
-2011-09-26 13:46  mie
-
-	* man/Makefile.am, man/hfst-apertium-proc.1, man/hfst-proc.1,
-	  test/tools/proc-functionality.sh, test/tools/proc-stress.sh,
-	  test/tools/regexp2fst-functionality.sh, test/tools/valgrind.sh,
-	  tools/src/hfst-proc/Makefile.am: s/proc/apertium-proc/g
-
-2011-09-26 13:09  eaxelson
-
-	* test/tools/fsmbook-examples/Lingala,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.xfst.script,
-	  test/tools/fsmbook-examples/Lingala/test.script,
-	  test/tools/fsmbook-examples/test.sh: Added a test case, Lingala.
-	  The test is not included until an issue with writing transducers
-	  in AT&T format with the limited licence of xfst.
-
-2011-09-26 11:18  eaxelson
-
-	* test/tools/fsmbook-examples/FinnishOTProsody,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.xfst.att,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.xfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/test.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/test.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/xfst-att-to-hfst-att.sh,
-	  test/tools/fsmbook-examples/test.sh,
-	  test/tools/fsmbook-examples/xfst-att-to-hfst-att.sh: Added a new
-	  test, FinnishOTProsody
-
-2011-09-26 10:32  eaxelson
-
-	* test/tools/fsmbook-examples/PlusOrMinus,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.xfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/test.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/xfst-att-to-hfst-att.sh,
-	  test/tools/fsmbook-examples/test.sh: Added a new test,
-	  PlusOrMinus
-
-2011-09-23 14:34  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc: Fixed a bug that
-	  occurred in binary operators when the calling transducer and the
-	  argument transducer were the same.
-
-2011-09-22 11:48  eaxelson
-
-	* test/tools/fsmbook-examples/FinnishProsody,
-	  test/tools/fsmbook-examples/FinnishProsody/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/expected_result.strings,
-	  test/tools/fsmbook-examples/FinnishProsody/test.script,
-	  test/tools/fsmbook-examples/Palindroms,
-	  test/tools/fsmbook-examples/Palindroms/Palindroms.hfst.script,
-	  test/tools/fsmbook-examples/Palindroms/expected_result,
-	  test/tools/fsmbook-examples/Palindroms/test.script,
-	  test/tools/fsmbook-examples/Palindroms/words.txt,
-	  test/tools/fsmbook-examples/test.sh: Added more fsmbook examples.
-	  The tests have to wait until we get rules in hfst-regexp2fst.
-
-2011-09-22 05:00  mie
-
-	* libhfst/src/parsers/xre_utils.cc,
-	  test/tools/at_file_quote.foma.xre,
-	  test/tools/at_file_quote.openfst-tropical.xre,
-	  test/tools/at_file_quote.sfst.xre: Terminate xre parsed quoted
-	  string, fixes 3400657
-
-2011-09-20 07:51  mie
-
-	* tools/src/hfst-twolc/src/Makefile.am: Declare BUILT_SOURCES
-
-2011-09-15 13:34  eaxelson
-
-	* configure.ac,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.script,
-	  test/tools/fsmbook-examples/Makefile,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/test.sh: We are one step closer to
-	  get the tests in test/tools/fsmbook-examples under autotools..
-
-2011-09-14 12:17  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/fsmbook-examples/DateParser/Makefile,
-	  test/tools/fsmbook-examples/DateParser/test.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/Makefile,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/Makefile,
-	  test/tools/fsmbook-examples/EnglishNumerals/test.script,
-	  test/tools/fsmbook-examples/FinnishNumerals/Makefile,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.script,
-	  test/tools/fsmbook-examples/Makefile,
-	  test/tools/fsmbook-examples/NumbersToNumerals/Makefile,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.script,
-	  test/tools/fsmbook-examples/test.script,
-	  test/tools/fsmbook-examples/test.sh: Added Makefiles to
-	  fsmbook-examples. The tests in fsmbook-examples are not executed
-	  until they use autotools.
-
-2011-09-14 11:15  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/DateParser.xfst.att,
-	  test/tools/fsmbook-examples/DateParser/test.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.xfst.att,
-	  test/tools/fsmbook-examples/EnglishNumerals/test.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.xfst.att,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.script,
-	  test/tools/fsmbook-examples/test.script: Now the tests do not
-	  depend on the tool hfst-xfst. Instead, they use hfst-txt2fst and
-	  a transducer in att format.
-
-2011-09-13 10:02  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc: A bug in
-	  FomaTransducer::write_net fixed. Now the the function fsm_count
-	  is called before writing the transducer so that the number of
-	  lines is always correct.
-
-2011-09-13 09:58  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/test.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.script,
-	  test/tools/fsmbook-examples/test.script: A testfile added.
-
-2011-09-12 07:24  mie
-
-	* tools/src/hfst-apertium2fst.cc: Use basic transducer and trie
-	  disjunction
-
-2011-09-11 17:37  mie
-
-	* tools/src/hfst-apertium2fst.cc: Works minus regexps
-
-2011-09-11 14:53  mie
-
-	* configure.ac: dl before openfst though
-
-2011-09-11 14:33  mie
-
-	* configure.ac: do we still need pthreads and m?
-
-2011-09-11 14:32  mie
-
-	* libhfst/src/HfstTransducer.cc: Yet another missing header and
-	  using
-
-2011-09-09 14:39  moshagen
-
-	* tools/src: Ignore generated binaries.
-
-2011-09-09 14:06  mpsilfve
-
-	* tools/src/hfst-tagger/training_data: Removed file training_data,
-	  which was accidentally added.
-
-2011-09-09 13:57  mpsilfve
-
-	* tools/src/hfst-tagger,
-	  tools/src/hfst-tagger/CompletedCycleBuilder.cc,
-	  tools/src/hfst-tagger/CompletedCycleBuilder.h,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModel.cc,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModel.h,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModelPair.cc,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModelPair.h,
-	  tools/src/hfst-tagger/CycleBuilder.cc,
-	  tools/src/hfst-tagger/CycleBuilder.h,
-	  tools/src/hfst-tagger/GuesserBuilder.cc,
-	  tools/src/hfst-tagger/GuesserBuilder.h,
-	  tools/src/hfst-tagger/GuesserDivisorTransformer.cc,
-	  tools/src/hfst-tagger/GuesserDivisorTransformer.h,
-	  tools/src/hfst-tagger/GuesserStreamTransformer.cc,
-	  tools/src/hfst-tagger/GuesserStreamTransformer.h,
-	  tools/src/hfst-tagger/HMMTagger.cc,
-	  tools/src/hfst-tagger/HMMTagger.h,
-	  tools/src/hfst-tagger/IdentityTransformer.cc,
-	  tools/src/hfst-tagger/IdentityTransformer.h,
-	  tools/src/hfst-tagger/LanguageModel.cc,
-	  tools/src/hfst-tagger/LanguageModel.h,
-	  tools/src/hfst-tagger/LastEntryRemover.cc,
-	  tools/src/hfst-tagger/LastEntryRemover.h,
-	  tools/src/hfst-tagger/LexicalModel.cc,
-	  tools/src/hfst-tagger/LexicalModel.h,
-	  tools/src/hfst-tagger/LexicalStreamTransformer.cc,
-	  tools/src/hfst-tagger/LexicalStreamTransformer.h,
-	  tools/src/hfst-tagger/LexiconBuilder.cc,
-	  tools/src/hfst-tagger/LexiconBuilder.h,
-	  tools/src/hfst-tagger/LexiconDivisorTransformer.cc,
-	  tools/src/hfst-tagger/LexiconDivisorTransformer.h,
-	  tools/src/hfst-tagger/LogSequenceWeightTable.cc,
-	  tools/src/hfst-tagger/LogSequenceWeightTable.h,
-	  tools/src/hfst-tagger/Makefile,
-	  tools/src/hfst-tagger/ModelBuilder.cc,
-	  tools/src/hfst-tagger/ModelBuilder.h,
-	  tools/src/hfst-tagger/NGramAbstracter.cc,
-	  tools/src/hfst-tagger/NGramAbstracter.h,
-	  tools/src/hfst-tagger/NGramModelConstructor.cc,
-	  tools/src/hfst-tagger/NGramModelConstructor.h,
-	  tools/src/hfst-tagger/SentenceStream.cc,
-	  tools/src/hfst-tagger/SentenceStream.h,
-	  tools/src/hfst-tagger/SequenceCounter.cc,
-	  tools/src/hfst-tagger/SequenceCounter.h,
-	  tools/src/hfst-tagger/SequenceModel.cc,
-	  tools/src/hfst-tagger/SequenceModel.h,
-	  tools/src/hfst-tagger/SequenceWeightTable.cc,
-	  tools/src/hfst-tagger/SequenceWeightTable.h,
-	  tools/src/hfst-tagger/SequenceWeighter.cc,
-	  tools/src/hfst-tagger/SequenceWeighter.h,
-	  tools/src/hfst-tagger/Speller.cc,
-	  tools/src/hfst-tagger/Speller.h,
-	  tools/src/hfst-tagger/StandardHMMLexicalModel.cc,
-	  tools/src/hfst-tagger/StandardHMMLexicalModel.h,
-	  tools/src/hfst-tagger/StreamFieldInverter.cc,
-	  tools/src/hfst-tagger/StreamFieldInverter.h,
-	  tools/src/hfst-tagger/StreamMarkovizer.cc,
-	  tools/src/hfst-tagger/StreamMarkovizer.h,
-	  tools/src/hfst-tagger/StreamReinitializer.cc,
-	  tools/src/hfst-tagger/StreamReinitializer.h,
-	  tools/src/hfst-tagger/StreamTokenizer.cc,
-	  tools/src/hfst-tagger/StreamTokenizer.h,
-	  tools/src/hfst-tagger/StreamTransformer.cc,
-	  tools/src/hfst-tagger/StreamTransformer.h,
-	  tools/src/hfst-tagger/StringTransformer.h,
-	  tools/src/hfst-tagger/StringTransformerList.cc,
-	  tools/src/hfst-tagger/StringTransformerList.h,
-	  tools/src/hfst-tagger/SuggestionsInContext.cc,
-	  tools/src/hfst-tagger/SuggestionsInContext.h,
-	  tools/src/hfst-tagger/Tagger.cc, tools/src/hfst-tagger/Tagger.h,
-	  tools/src/hfst-tagger/ToEmptyStringTransforme.cc,
-	  tools/src/hfst-tagger/ToEmptyStringTransforme.h,
-	  tools/src/hfst-tagger/ToEmptyStringTransformer.cc,
-	  tools/src/hfst-tagger/ToEmptyStringTransformer.h,
-	  tools/src/hfst-tagger/TrieBuilder.cc,
-	  tools/src/hfst-tagger/TrieBuilder.h,
-	  tools/src/hfst-tagger/WordformProbabilityListBuilder.cc,
-	  tools/src/hfst-tagger/WordformProbabilityListBuilder.h,
-	  tools/src/hfst-tagger/WordformProbabilityListTransformer.cc,
-	  tools/src/hfst-tagger/WordformProbabilityListTransformer.h,
-	  tools/src/hfst-tagger/WordformRemover.cc,
-	  tools/src/hfst-tagger/WordformRemover.h,
-	  tools/src/hfst-tagger/context_speller.cc,
-	  tools/src/hfst-tagger/hfst_tagger_code_skeleton.cc,
-	  tools/src/hfst-tagger/hfst_tagger_header_skeleton.h,
-	  tools/src/hfst-tagger/tag_with_hmm_tagger.cc,
-	  tools/src/hfst-tagger/train_hmm_tagger.cc,
-	  tools/src/hfst-tagger/training_data: Initial add of hfst-tagger.
-	  A lot of stuff is still missing and the tool needs to be
-	  integrated in the build system.
-
-2011-09-08 15:55  eaxelson
-
-	* test/tools/fsmbook-examples/EinsteinsPuzzle/test.script,
-	  test/tools/fsmbook-examples/FinnishNumerals/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.script: tests
-	  modified
-
-2011-09-08 15:24  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/test.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/EinsteinsPuzzle.hfst.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/test.script,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.script: some
-	  of the tests rewritten
-
-2011-09-08 13:00  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/test.script: Now the tests
-	  are performed for sfst, openfst-tropical and foma types.
-
-2011-09-08 11:59  eaxelson
-
-	* libhfst/src/HfstDataTypes.h: typedef HfstTransducerPairSet
-	  removed from HfstDataTypes.h because it is not used anywhere and
-	  would cause problems because HfstTransducer::operator< is not
-	  defined
-
-2011-09-08 11:10  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, test/libhfst/test_constructors.cc,
-	  test/tools/fsmbook-examples/EnglishNumerals/test.script: Now
-	  HfstTransducer::operator= works for the case of optimized lookup
-	  transducers and copies the name of the transducer for all cases.
-
-2011-09-08 03:32  mie
-
-	* libhfst/src/HfstTransducer.cc, test/libhfst/test_constructors.cc:
-	  copy props in copy constructor (excepting type); fixes bug
-	  #3405831
-
-2011-09-07 22:40  mie
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc, tools/src/hfst-edit-metadata.cc,
-	  tools/src/hfst-grep.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/hfst-tool-metadata.cc, tools/src/hfst-traverse.cc: make
-	  compilation work without inclusions leaking from backend headers
-
-2011-09-06 07:50  spectre360
-
-	* tools/src/hfst-edit-metadata.cc: add include for std::map
-
-2011-09-06 07:35  spectre360
-
-	* tools/src/hfst-apertium2fst.cc: add include for std::set
-
-2011-09-05 22:16  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-apertium2fst.cc, tools/src/hfst-program-options.h,
-	  tools/src/hfst-regexp2fst.cc: apertium2fst tool added
-
-2011-09-05 22:14  mie
-
-	* libhfst/src/HfstOutputStream.cc: Avoid writing name, version or
-	  type twice
-
-2011-09-02 10:49  hardwick
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc: Added necessary std::qualifiers.
-	  (With --without-sfst some using-directives apparently disappear.)
-
-2011-09-01 23:47  mie
-
-	* libhfst/src/HfstTokenizer.cc, tools/src/hfst-strings2fst.cc: Fix
-	  UTF-8 bugs in strings:
-	  * use error_at_line instead of error when linens are known
-	  * remove bogus double try blocks
-	  * throw UTF-8 errors with messages
-
-2011-09-01 23:45  mie
-
-	* tools/src/hfst-tool-metadata.cc: Fix formulae for filenames and
-	  data starting with non-ASCII
-
-2011-09-01 23:23  mie
-
-	* tools/src/hfst-strings2fst.cc: Revert tab-containing commit r1576
-
-2011-09-01 22:22  mie
-
-	* test/tools/compare-functionality.sh,
-	  test/tools/lexc-functionality.sh,
-	  test/tools/proc-functionality.sh: fix missing paths in tests
-	  (would've used $PATH instead of newly builts)
-
-2011-09-01 22:21  mie
-
-	* tools/src/hfst-commandline.h,
-	  tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-determinize.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-grep.cc,
-	  tools/src/hfst-invert.cc, tools/src/hfst-lexc-compiler.cc,
-	  tools/src/hfst-lexc.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-remove-epsilons.cc,
-	  tools/src/hfst-repeat.cc, tools/src/hfst-reverse.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-subtract.cc, tools/src/hfst-summarize.cc,
-	  tools/src/hfst-txt2fst.cc: Use new metadata handling in tools
-	  * fix signedness in -grep
-	  * fix erroneous error printout in -compose-intersect
-	  * add few features to summarize
-
-2011-09-01 22:18  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-edit-metadata.cc, tools/src/hfst-tool-metadata.cc,
-	  tools/src/hfst-tool-metadata.h: * common practices headers and
-	  utils for metadata in cli tools
-	  * a simple cli tool to edit metadata
-
-2011-09-01 22:12  mie
-
-	* doc/hfst3-metadata-header-registry.rst: metadata header name
-	  registry
-
-2011-09-01 22:05  mie
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstExceptions.h,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h: Make use of HFST3 transducer format
-	  metadata:
-	  This is basically upwards and downwards compatible change with
-	  HFST3
-	  automata and header parsing, but be cautious that everything may
-	  break at
-	  random
-
-2011-09-01 12:54  eaxelson
-
-	* test/tools/fsmbook-examples,
-	  test/tools/fsmbook-examples/DateParser,
-	  test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/DateParser.xfst.script,
-	  test/tools/fsmbook-examples/DateParser/test.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/EinsteinsPuzzle.hfst.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.script,
-	  test/tools/fsmbook-examples/EnglishNumerals,
-	  test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.xfst.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/test.script,
-	  test/tools/fsmbook-examples/FinnishNumerals,
-	  test/tools/fsmbook-examples/FinnishNumerals/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/FinnishNumerals/english_to_finnish_numerals_expected,
-	  test/tools/fsmbook-examples/FinnishNumerals/finnish_to_english_numerals_expected,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.xfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.script: Added
-	  Beesley and Karttunen's fsmbook examples to the tests. The
-	  fsmbook tests are not yet run when doing make check.
-
-2011-08-29 14:16  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/variable_src/MatchedConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableDefs.h: Fixed bug
-	  that caused hfst-twolc to segfault when variable rules with
-	  keyword matched had unequal value lists. Now it will give an
-	  error message and terminate compilation.
-
-2011-08-29 13:03  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Cross product added to the library
-
-2011-08-26 11:52  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Universal pair update and added identity pair
-
-2011-08-25 09:44  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc: A
-	  bug in transducer conversion fixed.
-
-2011-08-24 17:16  hardwick
-
-	* tools/src/hfst-substitute.cc: Don't do foma-SFST conversion if we
-	  don't HAVE_SFST
-
-2011-08-24 17:10  hardwick
-
-	* tools/src/hfst-substitute.cc: Warning about broken foma handling
-
-2011-08-24 14:09  hardwick
-
-	* tools/src/hfst-substitute.cc: More accurate comment
-
-2011-08-24 13:28  hardwick
-
-	* tools/src/hfst-substitute.cc: Do foma-sfst -conversion for
-	  substitute also (not just pruning);
-	  HfstTransducer doesn't know about foma's substitute.
-
-2011-08-24 13:13  hardwick
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc: Typo
-
-2011-08-24 13:07  hardwick
-
-	* tools/src/hfst-substitute.cc: Swing foma substitutions through
-	  sfst to prevent horrible leaks
-
-2011-08-24 11:42  hardwick
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc: Don't leak
-	  1 (!!) byte of empty string when constructing foma transducer
-
-2011-08-23 13:57  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed mismatched free/delete when
-	  freeing foma transducers.
-
-2011-08-23 13:11  hardwick
-
-	* tools/src/hfst-substitute.cc: Don't leak "fallback" transducer
-	  for each label
-
-2011-08-23 08:29  hardwick
-
-	* swig/hfstBot.py: Strip server junk from username reply
-
-2011-08-22 16:00  hardwick
-
-	* libhfst/src/HfstTransducer.cc: Fixed wrong exception name
-
-2011-08-22 12:19  hardwick
-
-	* libhfst/src/HfstTransducer.cc: Make composition with OL throw a
-	  Mismatch exception, which compose is
-	  looking for (it still needs to know about the second tranducer
-	  being OL)
-
-2011-08-18 19:09  spectre360
-
-	* tools/src/hfst-affix-guessify.cc: add 'using std::set' to fix
-	  compilation problem in hfst-affix-guessify.cc
-
-2011-08-18 13:56  eaxelson
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-lexc-compiler.cc,
-	  tools/src/hfst-lexc.cc, tools/src/hfst-txt2fst.cc,
-	  tools/src/hfst-xfst-compiler.cc: Standardized the transducer
-	  format options of commandline tools.
-
-2011-08-17 18:09  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.h:
-	  MAde ComposeIntersectRulePair::get_transitions virtual.
-
-2011-08-17 16:06  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h:
-	  made size_t size(void) a const method.
-
-2011-08-17 15:26  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h:
-	  Added method ComposeIntersectFst::get_symbol_number, because
-	  HfstTropicalTransducerTransitionData::get_number is not
-	  accessible from outside the library.
-
-2011-08-17 15:16  mpsilfve
-
-	* libhfst/src/implementations/Makefile.am: Edited Makefile.am so
-	  that it installs compose intersect headers properly
-
-2011-08-17 13:37  mpsilfve
-
-	* tools/src/HfstStrings2FstTokenizer.cc,
-	  tools/src/hfst-strings2fst.cc: Fixed bug in tokenizing string
-	  with lonely backslashes. Backslash can now escape any symbol and
-	  it is ignored when it occurs as the last symbol in the input.
-
-2011-08-16 18:13  moshagen
-
-	* tools/src, tools/src/hfst-twolc/src: Ignore generated files.
-
-2011-08-16 09:05  sdrobac
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h: Updated Rules - left replace down
-	  karttunen + tests
-
-2011-08-16 07:46  moshagen
-
-	* README: Whitespace, punctuation, cleaned double conjunction.
-
-2011-08-16 07:36  moshagen
-
-	* README: Updates on building on the Mac.
-
-2011-08-15 22:44  mie
-
-	* tools/src/hfst-affix-guessify.cc: iterators can no longer be
-	  used...
-
-2011-08-15 22:36  mie
-
-	* README: Update SFST requirements
-
-2011-08-15 19:50  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-affix-guessify.cc: Resurrect the affix guesser
-	  maker
-
-2011-08-15 18:51  hardwick
-
-	* swig/hfstBot.py: Flood protection for channel messages
-
-2011-08-15 18:44  hardwick
-
-	* swig/hfstBot.py: Improved message finding and private messaging
-
-2011-08-15 15:24  mie
-
-	* configure.ac: autoconf doesn't understand dnl without space?
-
-2011-08-15 14:42  mie
-
-	* configure.ac, tools/src/hfst-traverse.cc: apparently mac os x
-	  "readline" does not support rl_completion_matches...
-
-2011-08-15 14:33  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc:
-	  HfstTransitionGraph::iterator is now protected, the public
-	  HfstTransitionGraph::const_iterator should be used instead.
-
-2011-08-15 14:22  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc:
-	  Replaced all mentions of HfstBasicTransducer::iterator with
-	  HfstBasicTransducer::const_iterator in OtherSymbolTransducer.cc.
-
-2011-08-15 14:15  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/src/scanner2.ll,
-	  tools/src/hfst-twolc/src/scanner3.ll,
-	  tools/src/hfst-twolc/test/test57,
-	  tools/src/hfst-twolc/test/test58: Changed syntax of negative
-	  context rules.
-
-2011-08-15 13:52  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc:
-	  Modified OtherSymbolTransducer::harmonize_diacritics, so
-	  HfstBasicTransducer::add_transition is used instead of adding
-	  transitions directly to the transition vector.
-
-2011-08-15 13:50  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Enabled sfst tests.
-
-2011-08-15 12:47  hardwick
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h: untabify recent
-	  changes
-
-2011-08-15 12:30  eaxelson
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h: Updated HFST so
-	  that it works with the newest version of SFST, 1.4.6.
-
-2011-08-15 10:25  hardwick
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HfstApply.cc, libhfst/src/HfstExceptionDefs.h,
-	  libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstSymbolDefs.cc,
-	  libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstConstantTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.h,
-	  libhfst/src/implementations/HfstFastTransitionData.h,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRule.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  libhfst/src/parsers/lexc-utils.cc, swig/hfst_swig_extensions.h,
-	  test/libhfst/auxiliary_functions.cc,
-	  test/libhfst/test_constructors.cc, test/libhfst/test_examples.cc,
-	  test/libhfst/test_flag_diacritics.cc,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  test/libhfst/test_lexc.cc, test/libhfst/test_rules.cc,
-	  test/libhfst/test_streams.cc, test/libhfst/test_tokenizer.cc,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/FunctionalTransducer.cc, tools/src/HfstAlphabet.cc,
-	  tools/src/HfstAlphabet.h, tools/src/HfstBasic.cc,
-	  tools/src/HfstCompiler.cc, tools/src/HfstCompiler.h,
-	  tools/src/HfstLookupFlagDiacritics.cc,
-	  tools/src/HfstLookupFlagDiacritics.h,
-	  tools/src/HfstStrings2FstTokenizer.cc,
-	  tools/src/HfstStrings2FstTokenizer.h, tools/src/HfstUtf8.cc,
-	  tools/src/hfst-flag-diacritics.cc, tools/src/hfst-format.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-optimized-lookup.h,
-	  tools/src/hfst-pair-test-commandline.h,
-	  tools/src/hfst-pair-test-transducers.h,
-	  tools/src/hfst-pair-test.cc,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc,
-	  tools/src/hfst-proc/buffer.h, tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-split.cc, tools/src/hfst-strip-header.cc,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.cc,
-	  tools/src/hfst-twolc/src/io_src/InputReader.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingRightArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingRightArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftRestrictionArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftRestrictionArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.h,
-	  tools/src/hfst-twolc/src/rule_src/RuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.h,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.cc,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.h,
-	  tools/src/hfst-twolc/src/variable_src/ConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/MatchedConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/MixedConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/RuleSymbolVector.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleVariablesConstIterator.cc,
-	  tools/src/hfst-twolc/src/variable_src/VariableBlock.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableValueIterator.h,
-	  tools/src/parsers/xfst-utils.cc, tools/src/test.cc: detab hfst3
-	  tree - feel free to revert (and report) if this causes any
-	  problems
-
-2011-08-15 04:10  mie
-
-	* tools/src/hfst-summarize.cc: add few trivial features to list
-
-2011-08-15 03:30  mie
-
-	* tools/src/hfst-compose-intersect.cc: Be more verbose about type
-	  mismatch
-
-2011-08-14 21:43  mie
-
-	* tools/src/hfst-substitute.cc: check for empty strings
-
-2011-08-14 08:50  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Modified test script so that it
-	  runs tests for all backend formats. Disabled tests for sfst and
-	  log-openfst formats, since sfst segaults and log-openfst gives
-	  weird results. These are errors from the library.
-
-2011-08-12 17:55  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test58,
-	  tools/src/hfst-twolc/test/test58.txt_fst: Added test for negative
-	  rule contexts in rules with variables.
-
-2011-08-12 09:20  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/src/scanner2.ll,
-	  tools/src/hfst-twolc/src/scanner3.ll: Added negative context
-	  rules.
-
-2011-08-12 09:19  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test57,
-	  tools/src/hfst-twolc/test/test57.txt_fst: Added tests for
-	  negative contexts in twolc rules.
-
-2011-08-11 12:47  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  test/libhfst/test_constructors.cc: Now HfstTransducer::operator=
-	  throws a FunctionNotImplementedException instead of a
-	  TransducerHasWrongTypeException.
-
-2011-08-10 20:16  mie
-
-	* tools/src/hfst-lexc.cc: Fallback to anything or nothing from
-	  settings; resolves bug #1061990
-
-2011-08-10 18:17  mie
-
-	* INSTALL: kind reminder about importance of the README
-
-2011-08-09 11:34  hardwick
-
-	* swig/hfstBot.py: Some logging changes
-
-2011-08-09 11:33  hardwick
-
-	* swig/README: end readme in nl
-
-2011-08-09 08:56  hardwick
-
-	* swig/hfstBot.py: Save misses to logfile
-
-2011-08-08 13:37  hardwick
-
-	* swig/hfstBot.py: Send notice if word is unknown
-
-2011-08-08 13:31  hardwick
-
-	* swig/hfstBot.py: Don't print ugly weights
-
-2011-08-08 13:14  hardwick
-
-	* swig/hfstBot.py: Just dump privmsg to console and don't do
-	  anything for now..
-
-2011-08-08 13:11  hardwick
-
-	* swig/README, swig/hfstBot.py: hfst-bot demo
-
-2011-08-08 11:46  hardwick
-
-	* swig/README, swig/libhfst.i, swig/omor_query.py: Lookup demo
-
-2011-08-08 11:17  hardwick
-
-	* swig/README, swig/hfst_swig_extensions.h, swig/libhfst.i,
-	  swig/setup.py: Full api and distutils-based build & install
-
-2011-08-08 00:28  mie
-
-	* README: clarify SFST libraries relation to HFST; thanks to
-	  spectie for the suggestion
-
-2011-08-08 00:18  mie
-
-	* tools/src/Makefile.am, tools/src/hfst-lexc.cc,
-	  tools/src/lexc-readline-ui.cc: * Save temporary files for foma in
-	  /tmp/
-	  * import old readline UI from 2nd branch
-	  * deprecation warning if input = stdin
-	  * error if output = stdout
-
-2011-08-07 18:07  mie
-
-	* tools/src/hfst-traverse.cc: Another readline editline libedit fix
-	  maybe
-
-2011-08-07 17:43  mie
-
-	* configure.ac, tools/src/hfst-traverse.cc: CHECK_DECLs to support
-	  mac os X's fake cripple readline
-
-2011-08-05 10:04  eaxelson
-
-	* libhfst/src/HfstRules.cc: Tests of replace functions now work for
-	  transducers of foma type as well.
-
-2011-08-05 09:33  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  test/libhfst/test_rules.cc: A new function
-	  rules::replace_down_karttunen added. This function returns the
-	  actual downward replacement rule transducer instead of
-	  rules::replace_down that returns a downward rule transducer as
-	  defined in SFST-PL.
-
-2011-08-04 14:25  mie
-
-	* Makefile.am, libhfst/src/Makefile.am,
-	  libhfst/src/valgrind-unit-tests.sh, test/tools/Makefile.am,
-	  test/tools/valgrind.sh: New target for root makefile: valgrind
-
-2011-08-03 15:26  mie
-
-	* autogen.sh: >=autoconf-2.62 not 2.22
-
-2011-08-03 15:21  mie
-
-	* configure.ac: Remove libtool 1 support tricks, more trouble than
-	  it's worth
-
-2011-08-03 09:49  mie
-
-	* autogen.sh: Mark version requirements in autogen
-
-2011-08-02 21:54  mie
-
-	* configure.ac: Move version requirement to beginning of the line
-	  to be sure...
-
-2011-08-02 18:29  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-traverse.cc:
-	  debugging tool
-
-2011-08-02 10:32  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: A bug in
-	  function random_path fixed
-
-2011-08-01 17:46  mie
-
-	* tools/src/hfst-grep.cc: help messages to message_out instead of
-	  stderr
-
-2011-08-01 17:22  mie
-
-	* test/tools/Makefile.am, test/tools/compounds.txt,
-	  test/tools/proc-compounds-out.strings,
-	  test/tools/proc-compounds.strings,
-	  test/tools/proc-functionality.sh,
-	  tools/src/hfst-proc/applicators.cc: Do not cut unknown word forms
-	  from first non-alphabetic character in
-	  analysis, test case added
-
-2011-08-01 11:47  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_hfst_basic_transducer.cc: Fixed a piece of
-	  documentation on HfstTransitionGraph and added a test case too.
-
-2011-08-01 11:17  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/fst2strings-functionality.sh,
-	  tools/src/HfstAlphabet.cc, tools/src/HfstAlphabet.h,
-	  tools/src/hfst-fst2txt.cc: Now extract_random_paths works for an
-	  empty tropical transducer. A test case also added.
-
-2011-08-01 07:20  mie
-
-	* tools/src/hfst-summarize.cc: print more than fstinfo only if
-	  verbose
-
-2011-08-01 06:00  mie
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc: Fix
-	  arc-based leak in conversion
-
-2011-07-31 22:57  mie
-
-	* configure.ac, scripts/Makefile.am, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-commandline.h, tools/src/hfst-lexc.cc: Make old
-	  lexc default lexc again; fixes: 100000000 Mac OS X bugs
-
-2011-07-31 17:53  mie
-
-	* test/tools/Makefile.am, test/tools/hfst-check-environment.sh,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-compare.cc, tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-determinize.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-duplicate.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-head.cc,
-	  tools/src/hfst-invert.cc, tools/src/hfst-lexc-compiler.cc,
-	  tools/src/hfst-lexc.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-minimize.cc, tools/src/hfst-name.cc,
-	  tools/src/hfst-pair-test.cc,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-remove-epsilons.cc,
-	  tools/src/hfst-repeat.cc, tools/src/hfst-reverse.cc,
-	  tools/src/hfst-split.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-subtract.cc,
-	  tools/src/hfst-summarize.cc, tools/src/hfst-tail.cc,
-	  tools/src/hfst-txt2fst.cc, tools/src/hfst-xfst-compiler.cc: allow
-	  options to be passed via env.var. HFST_OPTIONS
-
-2011-07-31 05:06  mie
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-grep.cc:
-	  works but leaks
-
-2011-07-30 16:33  mie
-
-	* configure.ac: and default to glib to test if end users are ready
-	  for that in next rel
-
-2011-07-30 16:27  mie
-
-	* ChangeLog, NEWS, authors.xml, configure.ac, libhfst/hfst.pc.in,
-	  libhfst/src/Makefile.am: Release changes
-
-2011-07-28 16:20  mie
-
-	* test/libhfst/test_examples.cc, test/libhfst/test_streams.cc:
-	  delete created test files
-
-2011-07-28 15:41  mie
-
-	* test/tools/Makefile.am: include new proc tests in dist
-
-2011-07-28 15:40  mie
-
-	* Makefile.am: extra dist m4 macros
-
-2011-07-27 21:32  spectre360
-
-	* tools/src/hfst-proc/alphabet.cc, tools/src/hfst-proc/alphabet.h,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/hfst-proc.h: fix how compound words are
-	  generated
-
-2011-07-27 20:34  mie
-
-	* tools/src/hfst-proc/applicators.cc,
-	  tools/src/hfst-proc/applicators.h: try generating first without
-	  compound interpretations; possible fix for
-	  bug #3290585
-
-2011-07-27 00:26  mie
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/compare-functionality.sh,
-	  test/tools/compose-functionality.sh,
-	  test/tools/compose-intersect-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh,
-	  test/tools/head-functionality.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/push-weights-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/tail-functionality.sh,
-	  test/tools/txt2fst-functionality.sh: do not pipe error messages
-	  from tests to /dev/null
-
-2011-07-26 23:27  mie
-
-	* test/tools/project-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/subtract-functionality.sh: fix some -a tests
-
-2011-07-26 23:20  mie
-
-	* test/tools/Makefile.am, test/tools/valgrind.sh: add valgrind to
-	  stress test targets
-
-2011-07-26 16:24  mie
-
-	* README: Add a blurb about Unicode support requirements
-
-2011-07-26 01:32  mie
-
-	* tools/src/hfst-lookup.cc: calculate spaces in length of print
-	  forms; fixes #3296854
-
-2011-07-26 00:33  mie
-
-	* configure.ac, tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-proc/alphabet.cc: Allow use of glib for proc
-	  unicode casing (most likely breaks all Macs
-	  because of pkg-config and all that)
-
-2011-07-25 19:03  mie
-
-	* test/tools/incompatible-formats.sh,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-subtract.cc: Implement
-	  type mismatch error messages for all binary tools
-
-2011-07-25 16:07  mie
-
-	* tools/src/hfst-twolc/test/test: add quotation and neat printing
-	  in twolc tests
-
-2011-07-25 15:58  mie
-
-	* test/tools/Makefile.am,
-	  test/tools/incompatible-formats-compare.sh,
-	  test/tools/incompatible-formats.sh, tools/src/hfst-compose.cc:
-	  incompatible format messages in composition
-
-2011-07-25 15:27  mie
-
-	* README: document new tests in troubleshooting with examples.
-
-2011-07-25 15:20  mie
-
-	* test/tools/Makefile.am, test/tools/latin-1-strings.sh: Move
-	  latin-1 string tests to XFAIL
-
-2011-07-25 15:00  mie
-
-	* test/tools/Makefile.am,
-	  test/tools/incompatible-formats-compare.sh,
-	  tools/src/PathPrettyPrinters, tools/src/hfst-compare.cc: Neat
-	  error output when incompatible formats; bug #3287458
-
-2011-07-18 14:55  mie
-
-	* README: Troubleshooting for Mac OS X's getopt
-
-2011-07-18 14:45  mie
-
-	* configure.ac, scripts/hfst-lexc: Check for GNU compatible getopt,
-	  try to fallback to broken getopts more aggressively on Mac OS X
-
-2011-07-18 11:31  mie
-
-	* tools/src/hfst-summarize.cc: Implement print-sigma and acceptor
-
-2011-07-09 15:04  mie
-
-	* man/hfst-proc.1: include new command line option in man pages
-
-2011-07-09 14:40  mie
-
-	* tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/tokenizer.cc,
-	  tools/src/hfst-proc/tokenizer.h: Disable reserved characters and
-	  escapes in raw mode.
-
-2011-07-08 20:55  mie
-
-	* test/tools/permutate-file-params.sh,
-	  test/tools/proc-caps-gen.strings,
-	  test/tools/proc-functionality.sh: remove roundtrip test: mac os x
-	  sed does not support new lines
-
-2011-07-06 13:09  mie
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-lexc.cc:
-	  hfst-lexc around lexc_read
-
-2011-07-06 12:07  spectre360
-
-	* tools/src/hfst-proc/alphabet.cc: more alphabet hacks, i should
-	  really fix this properly as opposed to just
-	  patching the bugs i find
-
-2011-07-05 01:07  mie
-
-	* test/tools/proc-caps-out1.strings,
-	  test/tools/proc-caps-out2.strings,
-	  test/tools/proc-caps-out3.strings,
-	  test/tools/proc-caps-out4.strings,
-	  test/tools/proc-caps-out5.strings, test/tools/proc-caps.txt,
-	  test/tools/proc-functionality.sh,
-	  tools/src/hfst-proc/applicators.cc,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/hfst-proc.h,
-	  tools/src/hfst-proc/lookup-state.cc: New analysis mode for
-	  finntreebank people:
-	  * no lowercase
-	  * no uppercases
-	  * no compounds
-	  * probably some ohter things
-
-2011-07-03 20:48  mie
-
-	* README: Detail all external backend libraries in troubleshooting
-	  section also...
-
-2011-06-29 12:01  mie
-
-	* tools/src/Makefile.am, tools/src/hfst-grep.cc: here here
-
-2011-06-29 11:27  mie
-
-	* tools/src/Makefile.am: possibly hippu-compatible alias
-	  installation
-
-2011-06-29 09:36  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc: Now
-	  HfstTransducer::substitute(StringPair, HfstTransducer) does not
-	  modify the argument transducer. A test for this case also added.
-
-2011-06-28 21:22  mie
-
-	* Makefile.am, hfst.m4: Provide preliminary autoconf scripts for
-	  HFST
-
-2011-06-28 15:02  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: Replaced HfstFastTransducer with
-	  HfstBasicTransducer in conversions. This might make HFST slower,
-	  but it is needed until the bugs in alphabet handling are fixed.
-
-2011-06-28 13:53  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_rules.cc,
-	  test/libhfst/test_transducer_functions.cc: When performing
-	  transducer conversion through HfstFastTransducer, symbols leaked
-	  from one alphabet to another. Now HfstBasicTransducer is used
-	  instead and a test case is added that will fail if
-	  HfstFastTransducer is used instead. The original bug is to be
-	  fixed at some point.
-
-2011-06-27 14:49  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_rules.cc: Added a test case for replace_up with
-	  FOMA_TYPE that fails. Currently it is commented so that make
-	  check will pass, but it will be fixed soon.
-
-2011-06-27 13:23  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  test/libhfst/test_transducer_functions.cc: Now binary operations
-	  HfstTransducer::disjunct etc. do not modify the argument
-	  transducer.
-
-2011-06-27 09:08  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_transducer_functions.cc:
-	  HfstTransducer::insert_to_alphabet and
-	  HfstTransducer::remove_from_alphabet now pass the tests.
-
-2011-06-23 13:33  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/libhfst/test_transducer_functions.cc: Added function
-	  HfstTransducer::remove_from_alphabet. Currently throws
-	  FunctionNotImplementedException because it does not pass all
-	  tests.
-
-2011-06-22 22:27  mie
-
-	* test/tools/proc-functionality.sh: verbose test failures
-
-2011-06-22 14:32  eaxelson
-
-	* libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc:
-	  Documentation updated.
-
-2011-06-22 13:06  mpsilfve
-
-	* tools/src/hfst-twolc/src/string_src/string_manipulation.cc:
-	  Removed check for null-termination of string in the test of
-	  string_mainpultion.cc, because it fails on Mac.
-
-2011-06-21 20:08  moshagen
-
-	* .: Hide all generated distributions.
-
-2011-06-21 10:32  eaxelson
-
-	* test/libhfst/Makefile.am, test/libhfst/test_constructors.cc,
-	  test/libhfst/test_examples.cc,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  test/libhfst/test_streams.cc, test/libhfst/test_transducer.att,
-	  test/libhfst/test_transducers.att, test/libhfst/transducer.att:
-	  Now distcheck passes the tests but still complains about att
-	  files..
-
-2011-06-21 08:59  moshagen
-
-	* test/libhfst/foobar.att, test/libhfst/test_transducer.att,
-	  test/libhfst/test_transducers.att, test/libhfst/transducer.att:
-	  Reverted r1418 - these files are supposed to be here, and 'make
-	  clean' is over-cleaning.
-
-2011-06-21 07:15  moshagen
-
-	* test/tools: Don't ignore all generated files - they should be
-	  cleaned after a successful test run, ie if they are still there
-	  after the run, that is a sign there is a problem somewhere.
-
-2011-06-21 07:14  moshagen
-
-	* test/libhfst: Don't ignore all generated files - they should be
-	  cleaned after a successful test run, ie if they are still there
-	  after the run, that is a sign there is a problem somewhere.
-
-2011-06-21 07:11  moshagen
-
-	* test/libhfst/foobar.att, test/libhfst/test_transducer.att,
-	  test/libhfst/test_transducers.att, test/libhfst/transducer.att:
-	  Deleted supposedly generated files - they were removed by the
-	  make clean target in test/.
-
-2011-06-20 09:39  mie
-
-	* test/libhfst/test_constructors.cc: assert fopen != NULL
-
-2011-06-16 20:30  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRule.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRule.h:
-	  Modified compose-intersect, so that it will treat only flg
-	  diacritics not found in the alphabet of the rules as epsilons.
-
-2011-06-15 11:40  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  test/libhfst/test_rules.cc: A small bug fixed in the newest
-	  version of foma in the foma svn. Now the FomaTransducer test
-	  works correctly.
-
-2011-06-14 14:39  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/libhfst/test_constructors.cc: Code reorganized. There seems
-	  to be some errors in openfst's minimization, temporarily fixed
-	  the situation by pushing weights before minimization.
-
-2011-06-13 18:35  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc, test/tools/Makefile.am,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/walk_or_dog.txt: Retain root joiners while applying
-	  morphotax
-
-2011-06-13 15:51  mie
-
-	* tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/src/scanner2.ll,
-	  tools/src/hfst-twolc/src/scanner3.ll: kill some warnings by
-	  settings
-
-2011-06-13 12:12  hardwick
-
-	* NEWS: New NEWS
-
-2011-06-13 12:10  hardwick
-
-	* configure.ac, libhfst/src/Makefile.am: New releasenum (3.1.1) and
-	  libvector (6:0:0)
-
-2011-06-13 11:50  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Changed the test script so that
-	  it removes temp.twolc.hfst0, when it's done
-
-2011-06-13 11:14  hardwick
-
-	* test/libhfst/test_constructors.cc: Fixed typo where $SRCDIR
-	  wasn't getting assigned to the file we want to test
-
-2011-06-13 11:04  mpsilfve
-
-	* tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/test/test53,
-	  tools/src/hfst-twolc/test/test54,
-	  tools/src/hfst-twolc/test/test55,
-	  tools/src/hfst-twolc/test/test56: Changed [[ ... ]] in regular
-	  expression center rules to <[ ... ]> to avoid introducing syntax
-	  errors in previously working twolc-grammars.
-
-2011-06-10 20:24  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am: Added new tests in
-	  Makefile.am.
-
-2011-06-10 19:56  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.h,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.h,
-	  tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/src/scanner2.ll,
-	  tools/src/hfst-twolc/src/scanner3.ll: Added support for rules
-	  which have centers that are regular expressions of pairs.
-
-2011-06-10 19:52  mpsilfve
-
-	* tools/src/hfst-twolc/test/test53,
-	  tools/src/hfst-twolc/test/test53.txt_fst,
-	  tools/src/hfst-twolc/test/test54,
-	  tools/src/hfst-twolc/test/test54.txt_fst,
-	  tools/src/hfst-twolc/test/test55,
-	  tools/src/hfst-twolc/test/test55.txt_fst,
-	  tools/src/hfst-twolc/test/test56,
-	  tools/src/hfst-twolc/test/test56.txt_fst: Added tests for rules
-	  with regular expression centers.
-
-2011-06-10 19:51  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Improved test script so it won't
-	  exit normally if hfst-twolc crashes.
-
-2011-06-09 09:17  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: The public and
-	  protected interface of HfstTransitionGraph revised. Unnecessary
-	  comments and debugging code removed from HfstTransducer.
-
-2011-06-08 14:41  eaxelson
-
-	* libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/Makefile.am: class HfstTransition
-	  moved to file 'HfstTransition.h'
-
-2011-06-08 13:59  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Substitute
-	  functions in HfstTransitionGraph should now be easier to read.
-
-2011-06-08 12:17  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Code of
-	  HfstTransitionGraph made clearer, a bug in including
-	  HfstTransitionData.h fixed.
-
-2011-06-08 11:39  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Code
-	  simplified.
-
-2011-06-08 10:31  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.h,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  test/libhfst/test_examples.cc, test/libhfst/test_lexc.cc,
-	  test/libhfst/test_streams.cc,
-	  test/libhfst/test_transducer_functions.cc: Transducer conversion
-	  done through HfstTransitionGraph.
-
-2011-06-08 08:13  mpsilfve
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Included
-	  <algorithm>...
-
-2011-06-08 07:18  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h:
-	  Changed member const HfstBasicTransducer &t to
-	  HfstBasicTransducer t in ComposeIntersectFst
-
-2011-06-08 06:59  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc:
-	  Fixed bug in ComposeIntersectFst which forced all states in a
-	  transducer to have the same final weight as the initial state.
-
-2011-06-07 14:15  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc:
-	  Sorting the arcs of the argument transducer in the constructor of
-	  ComposeIntersectFst, because they need not be sorted nowadays.
-
-2011-06-07 14:13  mpsilfve
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Added arc_sort
-	  member function to HfstTransitionGraph.
-
-2011-06-07 12:16  hardwick
-
-	* swig/hfst_swig_extensions.h, swig/libhfst.i: Some additional
-	  experimental container-hacking layer stuff
-
-2011-06-06 08:47  sdrobac
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.h: left
-	  arrow rules
-
-2011-06-05 17:48  spectre360
-
-	* tools/src/hfst-proc/alphabet.cc: some more hacks to alphabet.cc
-
-2011-06-03 11:46  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.h,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy: Added support for rule
-	  centers which have the form 'X:a' where 'X' is a set and 'a' is a
-	  symbol.
-
-2011-06-03 11:45  mpsilfve
-
-	* tools/src/hfst-twolc/test/test51,
-	  tools/src/hfst-twolc/test/test51.txt_fst,
-	  tools/src/hfst-twolc/test/test52,
-	  tools/src/hfst-twolc/test/test52.txt_fst: Added tests for rules
-	  with centers 'X:a' where 'X' is a set and 'a' is a symbol.
-
-2011-06-03 11:11  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h: Undid
-	  some changes that stopped working after the interface of
-	  HfstBasicTransducer apparently changed. Also changed
-	  HfstTransducer OtherSymbolTransducer::get_transducer(void) to
-	  const and added the function void
-	  OtherSymbolTransducer::get_initial_transition_pairs(SymbolPairVector
-	  &pair_container) const.
-
-2011-06-03 11:09  mpsilfve
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.h: Made max() and
-	  is_subset() static functions.
-
-2011-06-03 08:38  mpsilfve
-
-	* tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/io_src/InputReader.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingRightArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftRestrictionArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.cc:
-	  hfst-twolc unit tests added.
-
-2011-06-02 08:46  hardwick
-
-	* NEWS: New NEWS
-
-2011-06-02 08:44  hardwick
-
-	* configure.ac, libhfst/src/Makefile.am: New release number, 3.1.0
-	  release and 5:0:0 libvector
-
-2011-05-31 13:48  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Removed an
-	  extra debugging print
-
-2011-05-31 13:46  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_lexc.cc:
-	  HfstTransducer::insert_freely(HfstTransducer&) now uses
-	  HfstFastTransducer
-
-2011-05-30 19:21  mie
-
-	* configure.ac, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-commandline.h, tools/src/hfst-lookup.cc: check
-	  locale in some tools
-
-2011-05-30 14:03  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstFastTransitionData.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  test/libhfst/test_transducer_functions.cc:
-	  HfstTransducer::insert_freely now uses HfstFastTransducer for
-	  foma type. More tests also added for insert_freely.
-
-2011-05-30 11:32  eaxelson
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Conversion
-	  functions between HfstFastTransducer and backend implementations
-	  added. Now HfstTransducer::convert also converts through
-	  HfstFastTransducer. HfstFastTransducer will gradually replace
-	  HfstBasicTransducer for HfstTransducer functions that require
-	  conversion.
-
-2011-05-26 13:51  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  test/libhfst/test_constructors.cc,
-	  test/libhfst/test_flag_diacritics.cc,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-pair-test.cc,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc,
-	  tools/src/hfst-summarize.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc:
-	  HfstTransitionGraph now has a vector of states instead of a set.
-	  All programs and functions updated accordingly.
-
-2011-05-26 12:22  mie
-
-	* tools/src/hfst-lookup.cc: Reword slow lookup warning
-
-2011-05-25 15:05  hardwick
-
-	* swig/hfst_swig_extensions.h, swig/libhfst.i: An apparently
-	  functional way to expose sets by copying them in order to vectors
-
-2011-05-25 13:49  mpsilfve
-
-	* libhfst/src/HfstRules.cc: Fixed typo
-
-2011-05-25 09:27  mpsilfve
-
-	* libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/XreCompiler.h: Fixed includes in
-	  XreCompiler.h and LexcCompiler.h
-
-2011-05-24 19:51  moshagen
-
-	* tools/src: Ignore generated items.
-
-2011-05-24 15:00  eaxelson
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h: added some
-	  functions to ConversionFunctions that will be used in fast
-	  conversion between transducer types instead of
-	  HfstConstantTransducer
-
-2011-05-24 14:37  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Fixed test script so that it
-	  should work in distcheck
-
-2011-05-24 07:59  hardwick
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h: Made
-	  lookdown functions consistent with lookup ones, updated docs
-
-2011-05-24 07:17  hardwick
-
-	* libhfst/src/HfstTransducer.h: Updated doxygen to reflect changes
-	  in lookup functions
-
-2011-05-23 17:49  mie
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-duplicate.cc:
-	  simple archive tool for duplicating repeats
-
-2011-05-23 13:59  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/Makefile.am, test/libhfst/test_lexc.cc,
-	  test/libhfst/test_lexc_fail.lexc,
-	  test/libhfst/test_transducer_functions.cc: Added a faster version
-	  of lexc compiler for a transducer of foma type.
-
-2011-05-23 12:00  mie
-
-	* test/tools/lookup-stress.sh, test/tools/proc-stress.sh: decrease
-	  stress by order of 8
-
-2011-05-23 09:46  hardwick
-
-	* libhfst/src/HfstFlagDiacritics.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc: Keep
-	  information about the parent FdTable of an FdState in the class
-	  to avoid invalid reads if it gets deleted
-
-2011-05-23 08:40  hardwick
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/hfst-lookup.cc: Changed lookup functions to return
-	  pointer to HfstOneLevelPaths, and take no
-	  argument for it. Calling functions are (still) responsible for
-	  freeing memory.
-
-2011-05-23 02:31  mie
-
-	* README: Add more common problems
-
-2011-05-20 14:03  moshagen
-
-	* libhfst/src/parsers: Ignore generated files.
-
-2011-05-19 14:19  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Added
-	  HfstTransducer::get_symbol_number, it will be used in faster
-	  conversion between transducer formats.
-
-2011-05-19 13:34  eaxelson
-
-	* test/libhfst/test_hfst_basic_transducer.cc: A small bug in
-	  testing the EmptyStringException fixed.
-
-2011-05-19 12:36  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  test/libhfst/test_lexc.cc: EmptyStringException is now thrown if
-	  the empty string is used as a transition symbol.
-
-2011-05-19 11:23  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Universal pair function added
-
-2011-05-19 11:16  mie
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/parsers/LexcCompiler.cc: Need more inclusions and
-	  usings when they don't leak in from backend
-	  libraries
-
-2011-05-18 10:37  eaxelson
-
-	* test/libhfst/test_constructors.cc, test/libhfst/test_lexc.cc,
-	  test/libhfst/test_streams.cc: Pathnames of testfiles in
-	  test/libhfst are now given as getenv("pwd") + "/tesfilename"
-
-2011-05-18 09:25  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/LexcCompiler.cc, test/libhfst/Makefile.am,
-	  test/libhfst/test_lexc.cc: Tests in test/libhfst now create the
-	  test files in EXTRA_DIST, so that distcheck works. This is a
-	  temporary solution.
-
-2011-05-17 19:13  mie
-
-	* tools/src/hfst-lookup.cc: Remove obvious memory leaks
-
-2011-05-17 12:24  eaxelson
-
-	* test/libhfst/test_lexc.cc, test/libhfst/test_lexc.lexc: Added
-	  missing test files.
-
-2011-05-17 12:16  hardwick
-
-	* configure.ac, libhfst/src/Makefile.am: Prepare 3.0.3
-
-2011-05-17 12:12  hardwick
-
-	* NEWS: New NEWS
-
-2011-05-17 10:17  eaxelson
-
-	* configure.ac, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am, libhfst/src/parsers,
-	  libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-parser.yy,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/lexc-utils.h, libhfst/src/parsers/xre_lex.ll,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h, test/libhfst/Makefile.am,
-	  tools/src/Makefile.am, tools/src/parsers/LexcCompiler.cc,
-	  tools/src/parsers/LexcCompiler.h,
-	  tools/src/parsers/XreCompiler.cc,
-	  tools/src/parsers/XreCompiler.h, tools/src/parsers/lexc-lexer.ll,
-	  tools/src/parsers/lexc-parser.yy,
-	  tools/src/parsers/lexc-utils.cc, tools/src/parsers/lexc-utils.h,
-	  tools/src/parsers/xre_lex.ll, tools/src/parsers/xre_parse.yy,
-	  tools/src/parsers/xre_utils.cc, tools/src/parsers/xre_utils.h:
-	  LexC and regexp functionalities moved from tools/src/parsers
-	  under the HFST interface at libhfst/src/parsers.
-
-2011-05-17 09:02  hardwick
-
-	* swig/setup.py: Link with libhfst/src/libhfst.la (is this
-	  portable?)
-
-2011-05-17 08:53  mie
-
-	* configure.ac: allow debianised names for libraries and headers
-
-2011-05-17 08:30  hardwick
-
-	* swig/HfstTransducer.i, swig/libhfst.i, swig/setup.py: Global
-	  wrapper - could it be this easy?
-
-2011-05-17 08:10  hardwick
-
-	* swig/setup.py: Fetch headers from srcdir instead and assume
-	  libhfst is installed in the
-	  sense of ldconf
-
-2011-05-17 08:08  hardwick
-
-	* swig/setup.py: Fetch headers and libraries from a (presently)
-	  hardcoded /usr/local
-
-2011-05-17 07:32  hardwick
-
-	* swig/HfstTransducer.i: Testing a simple swig module
-
-2011-05-17 07:31  hardwick
-
-	* swig/setup.py: SWIG generates files with .cxx extensions
-
-2011-05-17 07:22  hardwick
-
-	* swig/setup.py: Removed debugging message
-
-2011-05-17 07:21  hardwick
-
-	* swig, swig/setup.py: Initial framework
-
-2011-05-17 00:35  mie
-
-	* test/tools/proc-stress.sh: stress test for proc
-
-2011-05-16 23:08  mie
-
-	* configure.ac, test/tools/Makefile.am,
-	  test/tools/lexc2fst-stress.sh, test/tools/lookup-stress.sh:
-	  Optional stress tests now
-
-2011-05-16 22:34  mie
-
-	* test/tools/lexc-compiler-functionality.sh: Move stress tests out
-
-2011-05-16 11:09  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Priority union function and unit tests
-
-2011-05-13 14:29  eaxelson
-
-	* libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstFastTransitionData.h,
-	  libhfst/src/implementations/HfstTransitionGraph.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.cc,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  libhfst/src/implementations/Makefile.am: Starting to implement a
-	  faster conversion, added file HfstFastTransitionData.h for that
-	  purpose. Also separated HfstTropicalTransducerTransitionData into
-	  its own file.
-
-2011-05-13 11:53  eaxelson
-
-	* libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  libhfst/src/implementations/Makefile.am:
-	  HfstTropicalTransducerTransitionData moved to a separate file
-	  from HfstTransitionGraph.h.
-
-2011-05-13 10:54  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: The pathname
-	  of HfstDataTypes.h fixed in HfstTransitionGraph.h
-
-2011-05-12 10:15  eaxelson
-
-	* libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am: A
-	  non-existing file removed from Makefile and an include command.
-
-2011-05-11 14:56  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.h,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/HfstCompiler.cc, tools/src/HfstCompiler.h,
-	  tools/src/HfstStrings2FstTokenizer.cc,
-	  tools/src/HfstStrings2FstTokenizer.h,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-scanner.ll: Including
-	  HfstTransducer.h and HfstTransitionGraph.h into header files
-	  avoided in most cases by using HfstDataTypes.h instead.
-
-2011-05-11 12:58  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc,
-	  tools/src/parsers/LexcCompiler.h,
-	  tools/src/parsers/XreCompiler.cc,
-	  tools/src/parsers/XreCompiler.h: Made some changes to header
-	  files in order to avoid cyclic dependencies.
-
-2011-05-09 12:48  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: A bug in
-	  TropicalWeightTransducer::determinize fixed. The weights must not
-	  be encoded, only the label pairs.
-
-2011-05-09 06:51  hardwick
-
-	* configure.ac: Typo in license conflict warning
-
-2011-05-06 13:53  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  test/tools/Makefile.am, test/tools/subtract-functionality.sh: Now
-	  the subtraction of two empty transducers works also for
-	  SfstTransducer. A test case also added for all transducer
-	  implementations.
-
-2011-05-06 09:17  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Now
-	  read_in_att_format and hfst-txt2fst also accept a single newline
-	  as an empty transducer, if that is the only transducer in a
-	  stream.
-
-2011-05-05 14:30  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstSymbolDefs.cc,
-	  libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstConstantTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/HfstAlphabet.cc, tools/src/HfstCompiler.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-pair-test.cc, tools/src/hfst-summarize.cc: The
-	  library now uses is_epsilon, internal_epsilon etc. instead of
-	  string literals.
-
-2011-05-05 10:42  mpsilfve
-
-	* libhfst/Makefile.am: Added pkgconfig definitions
-
-2011-05-05 10:41  mpsilfve
-
-	* configure.ac: Fixed variable LIBHFST_VERSION
-
-2011-05-05 10:22  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc:
-	  HfstTransducer::get_alphabet declared public. Now the foma
-	  implementation returns also special symbols that are not included
-	  in the sigma of foma, but foma is still aware of them. Some unit
-	  tests also added.
-
-2011-05-04 13:54  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc: Added some unit
-	  test for SfstTransducer that test if the alphabet is pruned in
-	  operations.
-
-2011-05-04 13:20  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h:
-	  Fixed possible bug in ComposeIntersectUtilities and the find
-	  member function of SpaeSavingSet.
-
-2011-05-04 09:01  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc: Put stl sort
-	  function in stl namespace (which for unknown reasons is
-	  apparently unnecessary but it's probably clearer this way).
-
-2011-05-03 13:45  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/Makefile.am, test/tools/a2b.txt,
-	  test/tools/a2b_complement.txt,
-	  test/tools/a2b_input_projection_complement.txt,
-	  test/tools/project-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/unk_or_id_star.txt: Added more test cases for
-	  hfst-subtract that test if the identities and symbols are handled
-	  right. Now subtraction seems to work for SfstTransducer, too.
-
-2011-05-03 08:29  mie
-
-	* tools/src/hfst-proc/hfst-proc.cc: Print --version and --help to
-	  stdout in standard style
-
-2011-05-03 08:28  mie
-
-	* tools/src/hfst-twolc/src/Makefile.am: clean generated scripts
-
-2011-05-03 08:19  mie
-
-	* test/libhfst/Makefile.am: Remove all binaries and texts after
-	  tests
-
-2011-05-03 08:17  mie
-
-	* test/tools/latin-1-strings.sh: remove generated files on expected
-	  failures
-
-2011-05-03 08:01  mie
-
-	* test/tools/project-functionality.sh: remove generated files after
-	  testing
-
-2011-05-03 07:56  mie
-
-	* tools/src/Makefile.am: Skip broken aliases
-
-2011-05-03 02:33  mie
-
-	* scripts/Makefile.am, tools/src/hfst-twolc/src/Makefile.am: exempt
-	  scripts and tools with broken option parsing from distcheck
-
-2011-05-03 00:04  mie
-
-	* test/tools/Makefile.am, test/tools/empty-input.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/fst2txt-functionality.sh,
-	  test/tools/latin-1-strings.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh,
-	  test/tools/lookup-functionality.sh,
-	  test/tools/proc-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh,
-	  test/tools/strings2fst-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/txt2fst-functionality.sh, test/tools/utf-8-strings.sh:
-	  Use $srcdir in tests and include all sources
-
-2011-05-02 21:11  mie
-
-	* test/tools/unk2unk.txt: Missing text file reconstructed by
-	  guessing
-
-2011-05-02 17:20  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/Makefile.am, test/tools/cat2dog_0.3.txt,
-	  test/tools/cat2dog_0.5.txt, test/tools/empty.txt,
-	  test/tools/project-functionality.sh,
-	  test/tools/subtract-functionality.sh: Now input and output
-	  projections keep all symbols in the alphabet and have unknowns
-	  replaced with identities. Subtraction of tropical transducers
-	  handles weights correctly, all paths in the second transducer are
-	  subtracted from the first one.
-
-2011-05-02 12:54  hardwick
-
-	* test/tools/Makefile.am: Comment out failing test prereq for now
-	  (it broke make dist).
-
-2011-05-02 11:55  hardwick
-
-	* libhfst/src/implementations,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/compose_intersect,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRule.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h,
-	  libhfst/src/implementations/optimized-lookup,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc: Unit
-	  tests reinstated for .cc files under implementations,
-	  compose_intersect
-	  forced under same regimen (whether MAIN_TEST is #defined).
-
-2011-05-02 11:27  moshagen
-
-	* libhfst/src: Ignore generated unit testing files.
-
-2011-05-02 09:29  hardwick
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HfstApply.cc, libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstSymbolDefs.cc,
-	  libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/Makefile.am: Dummy unit tests for every .cc file in
-	  libhfst/src except HfstExceptionDefs.cc
-
-2011-04-28 08:22  eaxelson
-
-	* test/tools/lookup-functionality.sh, tools/src/hfst-lookup.cc:
-	  Tests added for hfst-lookup with transducers that contain
-	  identitites.
-
-2011-04-27 21:33  mie
-
-	* README: Document openfst version requirements in troubleshooting
-	  also
-
-2011-04-27 14:38  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  test/libhfst/test_flag_diacritics.cc,
-	  test/libhfst/test_transducer_functions.cc,
-	  test/tools/Makefile.am, test/tools/abid.txt,
-	  test/tools/lookup-functionality.sh, tools/src/hfst-lookup.cc: An
-	  error in harmonization fixed: now flags are excluded when
-	  expanding unknowns. A test also added that checks this case.
-
-2011-04-26 11:37  moshagen
-
-	* test/libhfst, test/tools: Ignore generated files in the test dir.
-
-2011-04-26 10:01  mie
-
-	* test/tools/basic.UTF-8.lexc, test/tools/basic.cat-dog-bird.lexc,
-	  test/tools/basic.colons.lexc, test/tools/basic.comments.lexc,
-	  test/tools/basic.empty-sides.lexc, test/tools/basic.end.lexc,
-	  test/tools/basic.escapes.lexc, test/tools/basic.infostrings.lexc,
-	  test/tools/basic.initial-lexicon-empty.lexc,
-	  test/tools/basic.multi-entry-lines.lexc,
-	  test/tools/basic.multi-file-1.lexc,
-	  test/tools/basic.multi-file-2.lexc,
-	  test/tools/basic.multi-file-3.lexc,
-	  test/tools/basic.multichar-symbol-with-0.lexc,
-	  test/tools/basic.multichar-symbols.lexc,
-	  test/tools/basic.no-Root.lexc,
-	  test/tools/basic.no-newline-at-end.lexc,
-	  test/tools/basic.punctuation.lexc,
-	  test/tools/basic.root-loop.lexc,
-	  test/tools/basic.spurious-lexicon.lexc,
-	  test/tools/basic.string-pairs.lexc,
-	  test/tools/basic.two-lexicons.lexc,
-	  test/tools/basic.zeros-epsilons.lexc,
-	  test/tools/hfst.weights.lexc,
-	  test/tools/stress.random-lexicons-100.lexc,
-	  test/tools/xfail.ISO-8859-1.lexc, test/tools/xfail.bogus.lexc,
-	  test/tools/xfail.lexicon-semicolon.lexc,
-	  test/tools/xre.any-variations.lexc, test/tools/xre.at-file.lexc,
-	  test/tools/xre.automatic-multichar-symbols.lexc,
-	  test/tools/xre.basic.lexc, test/tools/xre.definitions.lexc,
-	  test/tools/xre.months.lexc,
-	  test/tools/xre.nested-definitions.lexc,
-	  test/tools/xre.numeric-star.lexc, test/tools/xre.sharp.lexc,
-	  test/tools/xre.star-plus-optional.lexc: Missing lexc test cases
-
-2011-04-26 09:48  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Reinstate
-	  final weights (they've apparently been absent since the
-	  missing state -relabeling code was added...)
-
-2011-04-26 07:01  hardwick
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Added
-	  overloaded lookup functions passing untokenized strings
-
-2011-04-26 00:43  mie
-
-	* tools/src/hfst-lookup.cc: print verbosely tokenization and
-	  blocked flags unless ol
-
-2011-04-25 22:53  mie
-
-	* scripts/hfst-lexc: use GNU getopt if available
-
-2011-04-25 20:07  mie
-
-	* tools/src/Makefile.am: declare more built sources
-
-2011-04-25 19:58  mie
-
-	* test/tools/Makefile.am, test/tools/cat.lexc,
-	  test/tools/heavycat.strings, test/tools/heavycat.txt,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/proc-functionality.sh,
-	  test/tools/strings2fst-functionality.sh,
-	  test/tools/substitute-functionality.sh: More weight tests
-
-2011-04-25 19:51  mie
-
-	* tools/src/hfst-substitute.cc: More sanity checks for escaped
-	  colons
-
-2011-04-25 11:23  mie
-
-	* man/hfst-strings2fst.1: Give weighted example
-
-2011-04-23 18:35  spectre360
-
-	* tools/src/hfst-proc/alphabet.cc: partial fix for 3269636
-
-2011-04-23 15:08  mie
-
-	* tools/src/parsers/xre_utils.cc: remove debug printout
-
-2011-04-23 14:28  mie
-
-	* tools/src/parsers/LexcCompiler.cc,
-	  tools/src/parsers/lexc-lexer.ll,
-	  tools/src/parsers/lexc-parser.yy,
-	  tools/src/parsers/lexc-utils.cc, tools/src/parsers/lexc-utils.h:
-	  filenames and line numbers in error reporting again
-
-2011-04-23 13:14  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-lexc-compiler.cc,
-	  tools/src/parsers/LexcCompiler.cc,
-	  tools/src/parsers/LexcCompiler.h: Build obsolete lexc compiler by
-	  default:
-	  * remove handbuilt lexicon combinatorics and revert to sfcm2009
-	  algo
-	  * use pretty name for lexicons
-	  * more verbose printing instead of xerox style again
-
-2011-04-22 10:47  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/Rule.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.h,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.cc,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.h: Now
-	  hfst-twolc rule names are unquoted.
-
-2011-04-20 23:33  mie
-
-	* test/tools/Makefile.am, test/tools/cats_and_dogs_semicolon.xre,
-	  test/tools/compose-functionality.sh, test/tools/identity.txt,
-	  test/tools/unknown2a.txt: Add missing files with likely sources
-
-2011-04-20 14:30  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/tools/summarize_test1.txt: Now composition should work
-	  correctly
-
-2011-04-15 12:38  mpsilfve
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc: Changed
-	  population of symbols sets in
-	  HarmonizeUnknownAndIdentitySymbols.cc so that it relies on the
-	  get_alphabet method in HfstTransitionGraph. get_alphabet
-	  sometimes returns an empty set, so that needs to be fixed in
-	  order for unknown and identity symbols harmonization to be
-	  reliable.
-
-2011-04-15 12:34  mpsilfve
-
-	* libhfst/src/Makefile.am: Added
-	  HarmonizeUnknownAndIdentitySymbols.{cc,h} to Makefile.am
-
-2011-04-14 14:41  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/Makefile.am, test/tools/compose-functionality.sh,
-	  test/tools/summarize_test1.txt: Unknown and identity symbols
-	  should now work correctly in composition. Still some errors in
-	  other tools in test/tools, trying to get them pass all.
-
-2011-04-14 13:07  mpsilfve
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.h:
-	  HarmonizeUnknownAndIdentitySymbols.{h,cc}: A model for how
-	  identity and unknown symbol harmonization can be done...
-
-2011-04-13 15:29  hardwick
-
-	* NEWS: New NEWS for 3.0.2 rerelease
-
-2011-04-13 15:21  hardwick
-
-	* libhfst/src/implementations/Makefile.am: Added missing
-	  ComposeIntersectUtilities.cc
-
-2011-04-13 15:12  hardwick
-
-	* libhfst/src/implementations/Makefile.am: Added missing
-	  ComposeIntersectUtilities.h to Makefile.am
-
-2011-04-12 09:59  hardwick
-
-	* NEWS, configure.ac, libhfst/src/Makefile.am: Prepare 3.0.2
-	  release
-
-2011-04-12 09:41  mie
-
-	* tools/src/hfst-compose.cc: s/warning: Warning/warning: /
-
-2011-04-11 08:13  mpsilfve
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc: Moved the
-	  #ifdef HAVE_SFST a bit higher..
-
-2011-04-10 12:51  mie
-
-	* configure.ac, test/tools/regexp2fst-functionality.sh,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-regexp2fst.cc: Fix ; separated regexps:
-	  * add compatibility function for mac OS X missing getdelim
-	  * use delim for all cases in regexp2fst
-
-2011-04-07 14:43  eaxelson
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h: Converting
-	  to and from SFST format is now faster because function
-	  'check_visited' is used instead of a set of visited states.
-
-2011-04-07 13:52  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.h: Conversions
-	  between tropical, sfst and foma transducers are now carried out
-	  through HfstConstantTransducer, which is faster than using
-	  HfstBasicTransducer.
-
-2011-04-07 13:38  mie
-
-	* tools/src/hfst-substitute.cc: Make fallback dependent on fnie
-
-2011-04-07 12:10  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h:
-	  Removed some unused code..
-
-2011-04-07 12:09  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h:
-	  Reduced hfst-compose-intersect memory consumption a bit.
-
-2011-04-06 17:23  moshagen
-
-	* tools/src: Ignore generated items.
-
-2011-04-06 14:46  mpsilfve
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-pair-test.cc:
-	  Added hfst-pair-test for testing hfst-twolc rule files.
-
-2011-04-06 11:46  eaxelson
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.h,
-	  libhfst/src/implementations/HfstConversionTransducer.cc,
-	  libhfst/src/implementations/HfstConversionTransducer.h,
-	  libhfst/src/implementations/Makefile.am: HfstConversionTransducer
-	  renamed to HfstConstantTransducer, most functions in
-	  ConvertTransducerFormat.cc splitted to separate files
-
-2011-04-05 14:24  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstConversionTransducer.cc,
-	  libhfst/src/implementations/HfstConversionTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  tools/src/hfst-lookup.cc: Some optimizations done on conversion
-	  functions. Class HfstConversionTransducer added, it will be soon
-	  used in a more efficient conversion.
-
-2011-04-05 07:53  mie
-
-	* configure.ac: Note that we have licence exception for foma and
-	  warn if foma is missing
-
-2011-04-04 16:10  mie
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc:
-	  Epsilon filter compose intersect
-
-2011-04-04 15:39  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Only
-	  ascii-tokenize a-zA-Z to avoid breaking eg. generating
-	  transducers
-
-2011-04-04 12:41  hardwick
-
-	* NEWS: 3.0.1 release news
-
-2011-04-04 12:37  hardwick
-
-	* configure.ac, libhfst/src/Makefile.am: Prepare bugfix release
-	  3.0.1
-
-2011-04-04 11:57  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Use
-	  library function to check for epsilon in to_ol
-
-2011-04-04 11:57  hardwick
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h: Pass
-	  strings to internal representation checking functions by
-	  reference
-
-2011-04-04 10:50  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: More
-	  control over floor lift behaviour
-
-2011-04-04 10:49  moshagen
-
-	* tools/src: Ignore generated items.
-
-2011-04-04 09:18  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Clean up
-	  conflict resolution mess
-
-2011-04-04 09:02  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Better
-	  floor jumping + relabel non-contiguous states (could slowdown in
-	  extreme cases, possibly revisit)
-
-2011-04-04 05:53  mie
-
-	* tools/src/Makefile.am: Alias hfst-optimized-lookup -> hfst-lookup
-	  for compatibility
-
-2011-04-03 19:50  moshagen
-
-	* tools/src: Ignore generated items.
-
-2011-04-03 16:18  mie
-
-	* tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-determinize.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-invert.cc,
-	  tools/src/hfst-minimize.cc,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-remove-epsilons.cc, tools/src/hfst-repeat.cc,
-	  tools/src/hfst-reverse.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-subtract.cc: use default names to trace hfst
-	  operations neatly
-
-2011-04-03 14:51  mie
-
-	* scripts/hfst-lexc, tools/src/hfst-name.cc: Allow name truncation
-	  for neater names
-
-2011-04-03 11:15  mie
-
-	* man/hfst-fst2strings.1, man/hfst-fst2txt.1,
-	  man/hfst-regexp2fst.1, man/hfst-strings2fst.1,
-	  man/hfst-substitute.1, man/hfst-txt2fst.1: describe input/output
-	  formats in man pages
-
-2011-04-03 09:16  mie
-
-	* man/hfst-tool.1.template: Extend example to contain all sections
-	  and stuff
-	  --Denn och nedanstående rader kommer inte med i loggmeddelandet--
-	  
-	  M hfst-tool.1.template
-
-2011-04-03 05:21  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc: New
-	  tool for preprocessing automata before optimizing
-
-2011-03-31 11:55  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-summarize.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc: A
-	  state in an HfstTransitionGraph now has a vector of transitions
-	  intead of a set of transitions.
-
-2011-03-31 11:42  hardwick
-
-	* tools/src/hfst-fst2fst.cc: ...I meant HfstException
-
-2011-03-31 11:39  hardwick
-
-	* tools/src/hfst-fst2fst.cc: Catch HfstFatalException in convertion
-
-2011-03-31 11:38  hardwick
-
-	* libhfst/src/HfstExceptionDefs.h: HFST_CATCH macro
-
-2011-03-31 11:10  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/HfstLookupFlagDiacritics.cc,
-	  tools/src/HfstLookupFlagDiacritics.h, tools/src/Makefile.am,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-lookup.cc:
-	  hfst-lookup now handles flag diacritics correctly
-
-2011-03-31 08:59  hardwick
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h:
-	  Added functions to check for equality to internal reserved
-	  strings
-
-2011-03-31 06:48  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc: a bug in printing
-	  epsilons in hfst-fst2strings for sfst transducers fixed
-
-2011-03-30 15:24  mie
-
-	* README, libhfst/src/HfstTransducer.h: Add custom error message
-	  and README blurb for ::malloc errors
-
-2011-03-30 14:54  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: When the
-	  floor sticks for (even) a single round, jump up to most recent
-	  successful allocation. This makes things a lot faster, at the
-	  cost of some
-	  waste of space. --quick should not be necessary for most purposes
-	  now.
-	  
-	  Soon: some research on what's a better jumping threshold (this
-	  version is
-	  rather sensitive).
-
-2011-03-30 13:24  eaxelson
-
-	* libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-lookup.cc:
-	  hfst-fst2strings now implements option --random for sfst and
-	  openfst transducers
-
-2011-03-30 12:38  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Misc.
-	  speed improvements, in particular removed the need to separately
-	  track
-	  which indices begin states
-
-2011-03-30 10:27  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Actually write the index table finality markers
-
-2011-03-29 15:23  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: see
-	  previous commit message
-
-2011-03-29 15:20  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Fixed
-	  oopsie wrt removed profiling variables
-
-2011-03-29 14:47  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Run twolc tests in numerical
-	  order.
-
-2011-03-29 14:45  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/scanner1.ll: Fixed problem with word
-	  boundries breaking the alphabet.
-
-2011-03-29 14:44  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test49,
-	  tools/src/hfst-twolc/test/test49.txt_fst: Added tests for
-	  ensuring that word boundary conversions wonät break the alphabet.
-
-2011-03-29 14:20  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/scanner1.ll: Changed word boundaries so
-	  that they perhaps emulate what xerox does. A "#" in a rule file
-	  is always compiled to both an absolute word boundary (which is an
-	  internal symbol in hfst-twolc) and a relative word boundary "#".
-	  The absolute word boundary will always correspond to zero in
-	  output strings and the relative one will correspond to whatever
-	  it corresponded to in the rule file.
-
-2011-03-29 14:18  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test48,
-	  tools/src/hfst-twolc/test/test48.txt_fst: Word bounadry tests
-	  added.
-
-2011-03-29 13:47  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Major
-	  improvements to --quick and some speed cases
-
-2011-03-28 12:03  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  test/tools/Makefile.am, tools/src/hfst-fst2strings.cc: option
-	  --random added to hfst-fst2strings, not yet implemented
-
-2011-03-28 11:50  hardwick
-
-	* test/tools/Makefile.am: Removed trailing whitespace that broke
-	  make
-
-2011-03-24 18:37  mie
-
-	* configure.ac, test/tools/cat.lexc,
-	  test/tools/lexc-functionality.sh, tools/src/hfst-commandline.h,
-	  tools/src/hfst-lookup.cc, tools/src/hfst-substitute.cc: Fix lexc
-	  tests:
-	  * make script in build dir +x
-	  * put script dir in beginning of PATH in tests
-
-2011-03-24 11:32  eaxelson
-
-	* test/libhfst/Makefile.am, test/tools/Makefile.am:
-
-2011-03-23 16:47  moshagen
-
-	* .: Ignore files generated by 'make dist' and 'make distcheck'.
-
-2011-03-23 14:33  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, test/libhfst/Makefile.am,
-	  test/libhfst/foobar.att, test/libhfst/test_constructors.cc,
-	  test/libhfst/test_streams.cc, test/libhfst/test_transducers.att,
-	  test/tools/Makefile.am: Missing files added to Makefiles, make
-	  distcheck still fails.
-
-2011-03-23 12:45  hardwick
-
-	* tools/src/hfst-fst2fst.cc: Turned option passing back on for
-	  convert function
-
-2011-03-22 16:16  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: test-script fixed. Previously it
-	  required installed hfst-compare, hfst-txt2fst and hfst-fst2txt
-
-2011-03-21 07:13  mie
-
-	* tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h: fix
-	  partial commit of portability c xfunctions
-
-2011-03-21 01:27  mie
-
-	* tools/src/hfst-fst2fst.cc: remove unnecessary read
-
-2011-03-21 01:19  mie
-
-	* scripts/hfst-lexc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-txt2fst.cc: use
-	  pretty names by default
-
-2011-03-21 00:28  mie
-
-	* tools/src/Makefile.am: Fix name tool installation
-
-2011-03-21 00:22  mie
-
-	* tools/src/hfst-commandline.cc, tools/src/hfst-compare.cc,
-	  tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-determinize.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2txt.cc,
-	  tools/src/hfst-head.cc, tools/src/hfst-invert.cc,
-	  tools/src/hfst-lookup.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-program-options.cc, tools/src/hfst-project.cc,
-	  tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-remove-epsilons.cc, tools/src/hfst-repeat.cc,
-	  tools/src/hfst-reverse.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-subtract.cc, tools/src/hfst-summarize.cc,
-	  tools/src/hfst-tail.cc, tools/src/hfst-unary-tool.cc: Use
-	  automata names from metadata instead of filenames
-
-2011-03-18 12:51  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy: Fixed a bug with
-	  %-escaped variable values, which weren't properly unescaped
-	  previously.
-
-2011-03-18 12:50  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test47,
-	  tools/src/hfst-twolc/test/test47.txt_fst: Added tests for
-	  %-escaped variable values.
-
-2011-03-18 10:46  eaxelson
-
-	* tools/src/hfst-fst2strings.cc: hfst-fst2strings help message and
-	  special character printing fixed
-
-2011-03-18 09:19  eaxelson
-
-	* api_documentation.dox, test/tools/fst2strings-functionality.sh,
-	  tools/src/hfst-fst2strings.cc: hfst-fst2strings fixed
-
-2011-03-18 07:06  mie
-
-	* tools/src/hfst-fst2strings.cc: filter flags should've defaulted
-	  true
-
-2011-03-17 12:53  hardwick
-
-	* tools/src/hfst-compose-intersect.cc: Typo in usage message
-
-2011-03-17 09:20  mpsilfve
-
-	* tools/src/FunctionalTransducer.cc,
-	  tools/src/FunctionalTransducer.h: Added some files for a
-	  transducer testing environment.
-
-2011-03-16 23:10  mie
-
-	* tools/src/hfst-compose-intersect.cc: fix spacing in examples and
-	  describe
-
-2011-03-16 21:37  mie
-
-	* NEWS: update version
-
-2011-03-16 21:32  mie
-
-	* README: "environment" variables fed to configure get saved
-
-2011-03-16 15:10  hardwick
-
-	* README: Added note about local libraries
-
-2011-03-16 14:20  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc: Fixed a bug in
-	  compiling <=>-rules with list centers.
-
-2011-03-16 14:19  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test46,
-	  tools/src/hfst-twolc/test/test46.txt_fst: Added test for
-	  compiling <=>-rules with list centers.
-
-2011-03-16 13:57  hardwick
-
-	* configure.ac: Changed target to first release version
-
-2011-03-16 13:31  eaxelson
-
-	* tools/src/hfst-lookup.cc: hfst-lookup should now work correctly
-
-2011-03-16 11:30  hardwick
-
-	* tools/src/hfst-compiler.yy: Added deprecated (and undocumented)
-	  -w switch to hfst-calculate for backwards
-	  compatibility
-
-2011-03-16 11:08  mie
-
-	* man/Makefile.am, man/hfst-substitute.1,
-	  tools/src/hfst-substitute.cc: Update substitute documentation
-
-2011-03-16 10:28  eaxelson
-
-	* tools/src/hfst-lookup.cc: hfst-lookup should now work, still some
-	  problems in printing strings
-
-2011-03-15 15:42  eaxelson
-
-	* tools/src/hfst-fst2fst.cc, tools/src/hfst-lookup.cc: A more
-	  organized version of lookup function added to hfst-lookup. It
-	  will soon replace the original function.
-
-2011-03-15 15:42  hardwick
-
-	* test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Don't expect hfst-lexc-compiler to have a proper help and version
-	  string
-	  because it's just a humble wrapper.
-	  
-	  With this commit, hfst3's make check passes for the first
-	  time..!!
-
-2011-03-15 14:40  hardwick
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  tools/src/hfst-fst2fst.cc: Added a way for ol-conversion to be
-	  done really lazily (for when you want it
-	  done quickly - should still be faster, honestly). Also to pass a
-	  string
-	  parameter to conversion functions if they ever want a hint about
-	  something.
-
-2011-03-15 14:00  hardwick
-
-	* libhfst/src/implementations/Makefile.am: Don't run obsolete tests
-	  that break when run after make clean
-
-2011-03-15 10:38  mie
-
-	* test/libhfst/Makefile.am, tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test: more distcheck fixes
-
-2011-03-15 08:43  eaxelson
-
-	* tools/src/hfst-lookup.cc: small changes made to hfst-lookup
-
-2011-03-15 06:02  moshagen
-
-	* tools/src/hfst-commandline.cc: Added single quotes around and
-	  space after the filename for file-not-found errors. Makes it
-	  easier to read the filename (earlier the cause of the error was
-	  printed flush after the filename, with no space between).
-
-2011-03-15 03:57  mie
-
-	* README, configure.ac, scripts/Makefile.am: be explicit explicit
-	  about foma requirement for lexc and xfst
-
-2011-03-14 22:34  mie
-
-	* scripts/hfst-foma-wrapper.sh.in: Only claim to convert files that
-	  test -f
-
-2011-03-14 16:27  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/tools/project-functionality.sh,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-txt2fst.cc: Small changes made to helps and
-	  arguments in tools that convert between text, string and binary
-	  formats.
-
-2011-03-14 14:56  hardwick
-
-	* tools/src/hfst-lookup.cc: Maybe INFINITY will be defined more
-	  portably this way
-
-2011-03-14 13:49  mpsilfve
-
-	* tools/src/hfst-lookup.cc: INFINTY in hfst-lookup was not defined
-	  properly. fixed it.
-
-2011-03-14 13:33  mpsilfve
-
-	* tools/src/hfst-fst2strings.cc: string::npos changed to
-	  std::string::npos
-
-2011-03-14 13:20  hardwick
-
-	* test/tools/Makefile.am: Generate binaries needed to test
-	  hfst-proc correctly
-
-2011-03-14 13:14  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-fst2txt.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-txt2fst.cc: More
-	  utf-8 checks added. Command line tool helps also updated.
-
-2011-03-14 13:12  mpsilfve
-
-	* tools/src/hfst-twolc/src/Makefile.am: Fixed Makefile.am so that
-	  make dist works.
-
-2011-03-14 13:01  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Initialise weight
-
-2011-03-14 12:40  hardwick
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Missing std
-	  qualifier
-
-2011-03-14 12:28  mpsilfve
-
-	* test/libhfst/auxiliary_functions.cc,
-	  test/libhfst/test_tokenizer.cc: Added HfstTokenizer utf-8
-	  validation tests.
-
-2011-03-14 12:21  hardwick
-
-	* tools/src/hfst-proc/hfst-proc.cc: Enlightened hfst-proc as to the
-	  true nature of HFST3 headers
-
-2011-03-14 11:21  mpsilfve
-
-	* libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTokenizer.h: made
-	  HfstTokenizer::check_utf8_correctness a public static
-
-2011-03-14 10:10  mpsilfve
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTokenizer.h: Added utf-8 validation to the
-	  tokenizer and added the exception IncorrectUtf8CodingException.
-
-2011-03-13 19:23  mie
-
-	* test/libhfst/transducer.att, test/tools/permutate-file-params.sh:
-	  Fix brokentests
-
-2011-03-13 18:09  mie
-
-	* libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/Makefile.am, libhfst/src/coding-style.sh: remove
-	  coding style requirements and unit tests since they aren't
-	  followed anyways
-
-2011-03-13 17:28  mie
-
-	* tools/src/hfst-lookup.cc: Do not print all multicharacter symbols
-	  unless in verbose mode
-
-2011-03-12 17:48  mie
-
-	* man/Makefile.am, man/hfst-calculate.1, man/hfst-compare.1,
-	  man/hfst-compose-intersect.1, man/hfst-compose.1,
-	  man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinize.1, man/hfst-disjunct.1, man/hfst-fst2fst.1,
-	  man/hfst-fst2strings.1, man/hfst-fst2txt.1, man/hfst-head.1,
-	  man/hfst-invert.1, man/hfst-lexc-compiler.1, man/hfst-lookup.1,
-	  man/hfst-minimize.1, man/hfst-project.1, man/hfst-push-weights.1,
-	  man/hfst-regexp2fst.1, man/hfst-remove-epsilons.1,
-	  man/hfst-repeat.1, man/hfst-reverse.1, man/hfst-split.1,
-	  man/hfst-strings2fst.1, man/hfst-subtract.1,
-	  man/hfst-summarize.1, man/hfst-tail.1, man/hfst-txt2fst.1: Update
-	  man pages
-
-2011-03-12 17:22  mie
-
-	* HACKING, NEWS, configure.ac: mark 3.0_rc1
-
-2011-03-12 02:45  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/test/Makefile.am~,
-	  tools/src/hfst-twolc/test/test45,
-	  tools/src/hfst-twolc/test/test45.txt_fst: Fixed a bug in
-	  compiling rules with word boundaries and added test45.
-
-2011-03-11 18:39  mie
-
-	* scripts/hfst-foma-wrapper.sh.in: Don't use sed in scripts since
-	  it's broken on MacOS
-
-2011-03-11 16:05  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed bug in compose_intersect
-	  which discarded the second rule systematically.
-
-2011-03-11 15:25  mpsilfve
-
-	* tools/src/HfstStrings2FstTokenizer.cc,
-	  tools/src/HfstStrings2FstTokenizer.h,
-	  tools/src/hfst-strings2fst.cc: @_SPACE_@, @_TAB_@ and @_COLON_@
-	  added to HfstStrings2FstTokenizer.cc
-
-2011-03-11 14:46  moshagen
-
-	* tools/src/hfst-twolc/src, tools/src/hfst-twolc/test: Ignore more
-	  generated items.
-
-2011-03-11 14:10  eaxelson
-
-	* test/tools/cat.two-level.strings,
-	  test/tools/fst2strings-functionality.sh,
-	  tools/src/HfstStrings2FstTokenizer.cc, tools/src/Makefile.am,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-lookup.cc:
-	  hfst-lookup now uses HfstFst2StringsTokenizer to tokenize the
-	  input strings.
-
-2011-03-11 13:00  mie
-
-	* scripts/hfst-foma-wrapper.sh.in: Don't convert same stack more
-	  than once
-
-2011-03-11 12:42  mie
-
-	* scripts/hfst-foma-wrapper.sh.in, scripts/hfst-lexc: fis?\008x
-	  some warnings
-
-2011-03-11 08:31  mie
-
-	* tools/src/hfst-substitute.cc: workaround mac''s missing strndup
-
-2011-03-11 04:19  mie
-
-	* tools/src/hfst-substitute.cc: Allow pair substitutions...
-
-2011-03-11 02:38  mie
-
-	* tools/src/hfst-twolc/test/test: Fix test for Mac OS
-
-2011-03-11 01:49  mie
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h,
-	  libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-fst2strings.cc: Replace tabs with random number of
-	  spaces
-
-2011-03-11 01:00  mie
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/compose-intersect-functionality.sh: More tests limited
-	  to available formats
-
-2011-03-11 00:45  mie
-
-	* test/tools/txt2fst-functionality.sh: Only test available automata
-	  formats
-
-2011-03-11 00:35  mie
-
-	* test/tools/Makefile.am, test/tools/cat2dog.csv,
-	  test/tools/cat2dog.pairs, test/tools/cat2dog.pairstring,
-	  test/tools/cat2dog.spaces, test/tools/cat2dog.strings,
-	  test/tools/strings2fst-functionality.sh: Test all string formats
-	  in strings2fst
-
-2011-03-10 17:06  mpsilfve
-
-	* tools/src/HfstStrings2FstTokenizer.cc,
-	  tools/src/HfstStrings2FstTokenizer.h, tools/src/Makefile.am,
-	  tools/src/hfst-strings2fst.cc: Fixed hfst-string2fst parsing of
-	  input strings and reading of multichar symbols.
-
-2011-03-10 17:02  eaxelson
-
-	* tools/src/hfst-strings2fst.cc: hfst-strings2fst should now be
-	  able to handle all kind of string formats.
-
-2011-03-10 13:47  mpsilfve
-
-	* tools/src/hfst-twolc/src/scanner1.ll: # is no longer a special
-	  symbol, because it is not a special symbol in xerox twolc.
-
-2011-03-10 13:45  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/LeftArrowRuleContainer.cc,
-	  tools/src/hfst-twolc/src/scanner1.ll: Fixed print in left arrow
-	  rule conflict warnings.
-
-2011-03-10 13:35  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed word boundaries in
-	  compose-intersect, again...
-
-2011-03-10 13:10  eaxelson
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-strings2fst.cc:
-	  Special symbol handling changed in the commandline tools.
-
-2011-03-09 20:14  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed word boundaries in
-	  compose_intersect. When HfstBasicTransducer substitute starts
-	  working correctly, this can be done more efficiently.
-
-2011-03-09 17:21  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed word boundaries in
-	  compose_intersect.
-
-2011-03-09 13:25  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h: Added
-	  printing the conflicting context in left a row rule conflict
-	  warnings.
-
-2011-03-09 12:52  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Unknown and
-	  identity symbols are now correctly handled in composition. AT&T
-	  format now allows spaces in symbols if they are ascaped as
-	  '@_SPACE_@'
-
-2011-03-08 20:40  mie
-
-	* test/tools/Makefile.am, test/tools/compose-functionality.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/identity-star.txt, test/tools/unknown-star.txt: Tests
-	  for ? symbols
-
-2011-03-08 20:01  mie
-
-	* tools/src/parsers/xre_parse.yy: Use unknowns and identities in
-	  regexp2fst
-
-2011-03-08 17:25  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstExceptionDefs.h,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstTransducer.h,
-	  test/libhfst/test_examples.cc, tools/src/hfst-txt2fst.cc:
-	  Documentation added. Exceptions now throw a message.
-
-2011-03-08 14:08  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Modified test so that the script
-	  does not have to be changed when new tests are added.
-
-2011-03-08 13:48  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/LeftArrowRuleContainer.cc:
-	  Removed a unnecessary newline printed when not reporting left
-	  arrow conflicts.
-
-2011-03-08 13:47  mpsilfve
-
-	* tools/src/hfst-twolc/src/Makefile.am: Added a rule for compiling
-	  a local version of hfst-twolc used in tests.
-
-2011-03-08 13:46  mpsilfve
-
-	* tools/src/hfst-twolc/Makefile.am: Added hfst-twolc tests.
-
-2011-03-08 13:45  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test, tools/src/hfst-twolc/test/test10,
-	  tools/src/hfst-twolc/test/test10.txt_fst,
-	  tools/src/hfst-twolc/test/test11.txt_fst,
-	  tools/src/hfst-twolc/test/test12.txt_fst,
-	  tools/src/hfst-twolc/test/test13.txt_fst,
-	  tools/src/hfst-twolc/test/test14.txt_fst,
-	  tools/src/hfst-twolc/test/test15.txt_fst,
-	  tools/src/hfst-twolc/test/test16.txt_fst,
-	  tools/src/hfst-twolc/test/test17.txt_fst,
-	  tools/src/hfst-twolc/test/test18.txt_fst,
-	  tools/src/hfst-twolc/test/test19.txt_fst,
-	  tools/src/hfst-twolc/test/test20.txt_fst,
-	  tools/src/hfst-twolc/test/test21.txt_fst,
-	  tools/src/hfst-twolc/test/test22.txt_fst,
-	  tools/src/hfst-twolc/test/test23.txt_fst,
-	  tools/src/hfst-twolc/test/test24.txt_fst,
-	  tools/src/hfst-twolc/test/test25.txt_fst,
-	  tools/src/hfst-twolc/test/test26.txt_fst,
-	  tools/src/hfst-twolc/test/test27.txt_fst,
-	  tools/src/hfst-twolc/test/test28.txt_fst,
-	  tools/src/hfst-twolc/test/test29.txt_fst,
-	  tools/src/hfst-twolc/test/test30.txt_fst,
-	  tools/src/hfst-twolc/test/test31.txt_fst,
-	  tools/src/hfst-twolc/test/test32.txt_fst,
-	  tools/src/hfst-twolc/test/test33.txt_fst,
-	  tools/src/hfst-twolc/test/test34.txt_fst,
-	  tools/src/hfst-twolc/test/test35.txt_fst,
-	  tools/src/hfst-twolc/test/test36.txt_fst,
-	  tools/src/hfst-twolc/test/test37.txt_fst,
-	  tools/src/hfst-twolc/test/test38.txt_fst,
-	  tools/src/hfst-twolc/test/test39.txt_fst,
-	  tools/src/hfst-twolc/test/test40.txt_fst,
-	  tools/src/hfst-twolc/test/test41.txt_fst,
-	  tools/src/hfst-twolc/test/test42.txt_fst,
-	  tools/src/hfst-twolc/test/test43,
-	  tools/src/hfst-twolc/test/test43.txt_fst,
-	  tools/src/hfst-twolc/test/test44,
-	  tools/src/hfst-twolc/test/test44.txt_fst,
-	  tools/src/hfst-twolc/test/test9.txt_fst: Added hfst-twolc tsts.
-
-2011-03-08 13:43  mpsilfve
-
-	* configure.ac: Added hfst-twolc tests.
-
-2011-03-07 16:46  mpsilfve
-
-	* tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-twolc/test/test1.txt_fst,
-	  tools/src/hfst-twolc/test/test2,
-	  tools/src/hfst-twolc/test/test2.txt_fst,
-	  tools/src/hfst-twolc/test/test3,
-	  tools/src/hfst-twolc/test/test3.txt_fst,
-	  tools/src/hfst-twolc/test/test4,
-	  tools/src/hfst-twolc/test/test4.txt_fst,
-	  tools/src/hfst-twolc/test/test5,
-	  tools/src/hfst-twolc/test/test5.txt_fst,
-	  tools/src/hfst-twolc/test/test6,
-	  tools/src/hfst-twolc/test/test6.txt_fst,
-	  tools/src/hfst-twolc/test/test7.txt_fst,
-	  tools/src/hfst-twolc/test/test8,
-	  tools/src/hfst-twolc/test/test8.txt_fst,
-	  tools/src/hfst-twolc/test/test9,
-	  tools/src/inc/check-params-binary.h: Cahnged order of arguments
-	  so that 'cat fst1 | hfst-binary-tool fst2' will treat fst1 as the
-	  first and fst2 as the second argument.
-
-2011-03-07 15:12  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed compose-intersect
-
-2011-03-07 14:48  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Handle
-	  the empty transducer in ->ol
-
-2011-03-07 14:47  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTransducer.h, test/libhfst/Makefile.am,
-	  test/libhfst/test_examples.cc, tools/src/hfst-compare.cc: Now
-	  hfst-compare does not print anything in silent mode. More tests
-	  added to test/libhfst.
-
-2011-03-07 14:13  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/scanner3.ll: Fixed definitions
-
-2011-03-07 13:36  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc: Fixed
-	  d:0 where d is a diacritic.
-
-2011-03-07 12:15  hardwick
-
-	* libhfst/src/HfstFlagDiacritics.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc: Fixed
-	  symbol offset calculation in certain flag diacritic-concerning
-	  cases
-
-2011-03-07 11:57  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc: Fixed problem
-	  with diacritic pair syntax. Now d d: and d:0 are equivalent for
-	  the diacritic d and d:x will give a warning.
-
-2011-03-07 11:07  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Remove
-	  debugging strings
-
-2011-03-07 11:00  hardwick
-
-	* libhfst/src/HfstFlagDiacritics.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Properly copy flag state vector on stack
-
-2011-03-07 08:54  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/scanner1.ll: Fixed a bug with
-	  definitions
-
-2011-03-07 03:17  mie
-
-	* test/tools/Makefile.am, test/tools/latin-1-strings.sh,
-	  test/tools/latin-1.strings, test/tools/utf-8-strings.sh,
-	  test/tools/utf-8.strings: Add tests for UTF-8 and latin-1 encoded
-	  strings
-
-2011-03-06 01:01  mie
-
-	* tools/src/hfst-fst2strings.cc: follow print-epsilons in all
-	  formats
-
-2011-03-06 00:37  mie
-
-	* tools/src/hfst-fst2strings.cc: format options like other tools
-	  have them
-
-2011-03-04 15:50  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.h: More
-	  documentation added.
-
-2011-03-03 10:41  moshagen
-
-	* tools/src/hfst-twolc, tools/src/hfst-twolc/src: Ignore generated
-	  files.
-
-2011-03-03 10:38  moshagen
-
-	* libhfst/src/implementations/compose_intersect: Ignore autotools
-	  file+dir.
-
-2011-03-03 03:36  mie
-
-	* configure.ac, scripts/hfst-foma-wrapper.sh.in, scripts/hfst-lexc,
-	  scripts/hfst-xfst: More careful quotation and informative error
-	  messages for foma scripts
-
-2011-03-02 16:56  mie
-
-	* tools/src/hfst-twolc/src/commandline_src/CommandLine.h,
-	  tools/src/hfst-twolc/src/rule_src/Rule.h: Use "HfstTransducer.hh"
-	  instead of <hfst/HfstTransducer.hh> for in tree builds
-
-2011-03-02 14:45  eaxelson
-
-	* tools/src/hfst-strings2fst.cc: hfst-strings2fst fixed
-
-2011-03-02 14:30  eaxelson
-
-	* tools/src/hfst-strings2fst.cc: Now hfst-strings2fst should handle
-	  escaping correctly.
-
-2011-03-02 14:01  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-format.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-summarize.cc: A bug
-	  in hfst-strings2fst fixed: now the backslash is reserved for
-	  escaping characters. Now the library also throws more informative
-	  exceptions.
-
-2011-03-01 16:13  hardwick
-
-	* libhfst/src/HfstFlagDiacritics.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Fixed
-	  operation retrieval
-
-2011-03-01 13:32  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Fixed
-	  problem wrt subtracting from an end() iterator of an empty
-	  state_placeholder index placeholder map
-
-2011-02-26 15:40  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc: Removed some more
-	  debug prints.
-
-2011-02-26 15:01  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc: Removed some
-	  debugging prints
-
-2011-02-26 14:55  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/scanner1.ll: Fixed bug in defining lista
-	  using other lists and another bug which prevented variable rules
-	  unless there was a Definitions section.
-
-2011-02-26 00:16  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.h,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc: Fixed diacritics
-	  handling.
-
-2011-02-24 22:58  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy: Fixed output file
-	  handling.
-
-2011-02-24 22:22  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/scanner1.ll: Gave up on making }, ] and
-	  ) literal if they are not preceeded by opening {, [ and [, since
-	  this is too difficult in flex when brackets get nested. Fixed
-	  commandline argument handling properly and separated { and } from
-	  [ and ] i.e. they get their own bison symbols.
-
-2011-02-24 21:39  mpsilfve
-
-	* tools/src/hfst-twolc/src/commandline_src/CommandLine.cc: Fixed
-	  handling of commandline paramters so that the input filename can
-	  be given as a free argument without -i or --input.
-
-2011-02-24 21:36  mpsilfve
-
-	* tools/src/hfst-twolc/src/commandline_src/CommandLine.cc,
-	  tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/io_src/InputReader.cc,
-	  tools/src/hfst-twolc/src/scanner1.ll: Fixed syntax so that a
-	  lonely }, ] or ) is not interpreted as abracket, parenthesis and
-	  so on. Fixed numbers so that they need not be quoted unless
-	  preceeded by ^
-
-2011-02-24 19:42  mie
-
-	* scripts/hfst-foma-wrapper.sh.in: nore quotation and script
-	  guessing
-
-2011-02-24 18:58  mpsilfve
-
-	* tools/src/Makefile.am, tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-twolc/src/htwolcpre1.yy: Added
-	  hfst-compose-intersect.cc
-
-2011-02-24 18:56  mpsilfve
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/Makefile.am: Changes needed for
-	  libhfst/src/implementations/compose_intersect
-
-2011-02-24 18:41  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRule.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRule.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.h:
-	  Added fiels needed in compose_intersect
-
-2011-02-23 16:43  mpsilfve
-
-	* configure.ac: configure.ac changed because hfst-twolc was added.
-
-2011-02-23 15:23  mpsilfve
-
-	* tools/src/hfst-twolc/.txt_fst: Removed file hfst-twolc/.txt_fst
-	  which was added by mistake.
-
-2011-02-23 15:22  mpsilfve
-
-	* tools/src/hfst-twolc/src/.deps: Removed geerated dir
-	  hfst-twolc/src/.deps which was added by mistake
-
-2011-02-23 15:18  mpsilfve
-
-	* tools/src/Makefile.am, tools/src/hfst-twolc,
-	  tools/src/hfst-twolc/.txt_fst, tools/src/hfst-twolc/Makefile.am,
-	  tools/src/hfst-twolc/src, tools/src/hfst-twolc/src/.deps,
-	  tools/src/hfst-twolc/src/.deps/Alphabet.Po,
-	  tools/src/hfst-twolc/src/.deps/CommandLine.Po,
-	  tools/src/hfst-twolc/src/.deps/ConflictResolvingLeftArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/ConflictResolvingRightArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/InputReader.Po,
-	  tools/src/hfst-twolc/src/.deps/LeftArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/LeftArrowRuleContainer.Po,
-	  tools/src/hfst-twolc/src/.deps/LeftRestrictionArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/OtherSymbolTransducer.Po,
-	  tools/src/hfst-twolc/src/.deps/RightArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/RightArrowRuleContainer.Po,
-	  tools/src/hfst-twolc/src/.deps/Rule.Po,
-	  tools/src/hfst-twolc/src/.deps/RuleContainer.Po,
-	  tools/src/hfst-twolc/src/.deps/RuleSymbolVector.Po,
-	  tools/src/hfst-twolc/src/.deps/RuleVariables.Po,
-	  tools/src/hfst-twolc/src/.deps/RuleVariablesConstIterator.Po,
-	  tools/src/hfst-twolc/src/.deps/TwolCGrammar.Po,
-	  tools/src/hfst-twolc/src/.deps/VariableValues.Po,
-	  tools/src/hfst-twolc/src/.deps/hfst-commandline.Po,
-	  tools/src/hfst-twolc/src/.deps/hfst-program-options.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre1.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre2.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-Alphabet.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-ConflictResolvingLeftArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-ConflictResolvingRightArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-InputReader.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-LeftArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-LeftArrowRuleContainer.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-LeftRestrictionArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-OtherSymbolTransducer.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-RightArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-RightArrowRuleContainer.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-Rule.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-RuleContainer.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-TwolCGrammar.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-htwolcpre3.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-scanner3.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-string_manipulation.Po,
-	  tools/src/hfst-twolc/src/.deps/scanner1.Po,
-	  tools/src/hfst-twolc/src/.deps/scanner2.Po,
-	  tools/src/hfst-twolc/src/.deps/scanner3.Po,
-	  tools/src/hfst-twolc/src/.deps/string_manipulation.Po,
-	  tools/src/hfst-twolc/src/Doxyfile,
-	  tools/src/hfst-twolc/src/HfstTwolcDefs.h,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/hfst-twolc/src/alphabet_src,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.h,
-	  tools/src/hfst-twolc/src/commandline_src,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.cc,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.h,
-	  tools/src/hfst-twolc/src/doxygen_src,
-	  tools/src/hfst-twolc/src/doxygen_src/hfst_twolc_doxygen_header.h,
-	  tools/src/hfst-twolc/src/grammar_defs.h,
-	  tools/src/hfst-twolc/src/hfst-twolc.sh,
-	  tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/io_src,
-	  tools/src/hfst-twolc/src/io_src/InputReader.cc,
-	  tools/src/hfst-twolc/src/io_src/InputReader.h,
-	  tools/src/hfst-twolc/src/io_src/input_defs.h,
-	  tools/src/hfst-twolc/src/rule_src,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingRightArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingRightArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRuleContainer.h,
-	  tools/src/hfst-twolc/src/rule_src/LeftRestrictionArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftRestrictionArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRuleContainer.h,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.h,
-	  tools/src/hfst-twolc/src/rule_src/RuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/RuleContainer.h,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.h,
-	  tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/src/scanner2.ll,
-	  tools/src/hfst-twolc/src/scanner3.ll,
-	  tools/src/hfst-twolc/src/string_src,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.cc,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.h,
-	  tools/src/hfst-twolc/src/variable_src,
-	  tools/src/hfst-twolc/src/variable_src/ConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/MatchedConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/MixedConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/RuleSymbolVector.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleSymbolVector.h,
-	  tools/src/hfst-twolc/src/variable_src/RuleVariables.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleVariables.h,
-	  tools/src/hfst-twolc/src/variable_src/RuleVariablesConstIterator.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleVariablesConstIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableBlock.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableBlockContainer.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableContainer.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableContainerBase.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableDefs.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableValueIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableValues.cc,
-	  tools/src/hfst-twolc/src/variable_src/VariableValues.h,
-	  tools/src/hfst-twolc/test, tools/src/hfst-twolc/test/test1,
-	  tools/src/hfst-twolc/test/test1.txt_fst,
-	  tools/src/hfst-twolc/test/test10,
-	  tools/src/hfst-twolc/test/test10.txt_fst,
-	  tools/src/hfst-twolc/test/test11,
-	  tools/src/hfst-twolc/test/test11.txt_fst,
-	  tools/src/hfst-twolc/test/test12,
-	  tools/src/hfst-twolc/test/test12.txt_fst,
-	  tools/src/hfst-twolc/test/test13,
-	  tools/src/hfst-twolc/test/test13.txt_fst,
-	  tools/src/hfst-twolc/test/test14,
-	  tools/src/hfst-twolc/test/test14.txt_fst,
-	  tools/src/hfst-twolc/test/test15,
-	  tools/src/hfst-twolc/test/test15.txt_fst,
-	  tools/src/hfst-twolc/test/test16,
-	  tools/src/hfst-twolc/test/test16.txt_fst,
-	  tools/src/hfst-twolc/test/test17,
-	  tools/src/hfst-twolc/test/test17.txt_fst,
-	  tools/src/hfst-twolc/test/test18,
-	  tools/src/hfst-twolc/test/test18.txt_fst,
-	  tools/src/hfst-twolc/test/test19,
-	  tools/src/hfst-twolc/test/test19.txt_fst,
-	  tools/src/hfst-twolc/test/test2,
-	  tools/src/hfst-twolc/test/test2.txt_fst,
-	  tools/src/hfst-twolc/test/test20,
-	  tools/src/hfst-twolc/test/test20.txt_fst,
-	  tools/src/hfst-twolc/test/test21,
-	  tools/src/hfst-twolc/test/test21.txt_fst,
-	  tools/src/hfst-twolc/test/test22,
-	  tools/src/hfst-twolc/test/test22.txt_fst,
-	  tools/src/hfst-twolc/test/test23,
-	  tools/src/hfst-twolc/test/test23.txt_fst,
-	  tools/src/hfst-twolc/test/test24,
-	  tools/src/hfst-twolc/test/test24.txt_fst,
-	  tools/src/hfst-twolc/test/test25,
-	  tools/src/hfst-twolc/test/test26,
-	  tools/src/hfst-twolc/test/test26.txt_fst,
-	  tools/src/hfst-twolc/test/test27,
-	  tools/src/hfst-twolc/test/test27.txt_fst,
-	  tools/src/hfst-twolc/test/test28,
-	  tools/src/hfst-twolc/test/test28.txt_fst,
-	  tools/src/hfst-twolc/test/test29,
-	  tools/src/hfst-twolc/test/test29.txt_fst,
-	  tools/src/hfst-twolc/test/test3,
-	  tools/src/hfst-twolc/test/test3.txt_fst,
-	  tools/src/hfst-twolc/test/test30,
-	  tools/src/hfst-twolc/test/test30.txt_fst,
-	  tools/src/hfst-twolc/test/test31,
-	  tools/src/hfst-twolc/test/test31.txt_fst,
-	  tools/src/hfst-twolc/test/test32,
-	  tools/src/hfst-twolc/test/test32.txt_fst,
-	  tools/src/hfst-twolc/test/test33,
-	  tools/src/hfst-twolc/test/test33.txt_fst,
-	  tools/src/hfst-twolc/test/test34,
-	  tools/src/hfst-twolc/test/test35,
-	  tools/src/hfst-twolc/test/test35.txt_fst,
-	  tools/src/hfst-twolc/test/test36,
-	  tools/src/hfst-twolc/test/test36.txt_fst,
-	  tools/src/hfst-twolc/test/test37,
-	  tools/src/hfst-twolc/test/test37.txt_fst,
-	  tools/src/hfst-twolc/test/test38,
-	  tools/src/hfst-twolc/test/test38.txt_fst,
-	  tools/src/hfst-twolc/test/test39,
-	  tools/src/hfst-twolc/test/test39.txt_fst,
-	  tools/src/hfst-twolc/test/test4,
-	  tools/src/hfst-twolc/test/test4.txt_fst,
-	  tools/src/hfst-twolc/test/test40,
-	  tools/src/hfst-twolc/test/test40.txt_fst,
-	  tools/src/hfst-twolc/test/test41,
-	  tools/src/hfst-twolc/test/test41.txt_fst,
-	  tools/src/hfst-twolc/test/test42,
-	  tools/src/hfst-twolc/test/test42.txt_fst,
-	  tools/src/hfst-twolc/test/test5,
-	  tools/src/hfst-twolc/test/test5.txt_fst,
-	  tools/src/hfst-twolc/test/test6,
-	  tools/src/hfst-twolc/test/test6.txt_fst,
-	  tools/src/hfst-twolc/test/test7,
-	  tools/src/hfst-twolc/test/test7.txt_fst,
-	  tools/src/hfst-twolc/test/test8,
-	  tools/src/hfst-twolc/test/test8.txt_fst,
-	  tools/src/hfst-twolc/test/test9,
-	  tools/src/hfst-twolc/test/test9.txt_fst: Added hfst-twolc.
-
-2011-02-23 12:30  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Miscellaneous packing tricks & fixed a typo
-
-2011-02-23 09:44  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h:
-	  Correction to flag indexing
-
-2011-02-23 08:34  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Corrected
-	  alphabet ordering (eps-input-flag-other)
-
-2011-02-22 17:16  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Small changes done in documentation.
-
-2011-02-22 16:47  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: More
-	  refactoring
-
-2011-02-22 16:35  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h:
-	  Miscellaneous improvements and refactoring
-
-2011-02-22 11:16  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Fixed bug
-	  wrt finding the largest used index
-
-2011-02-22 09:49  eaxelson
-
-	* test/libhfst/test_flag_diacritics.cc,
-	  test/libhfst/test_transducer_functions.cc: missing test file
-	  added
-
-2011-02-22 09:39  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc:
-	  Parametrized packing aggression. Packing is still a little slow
-	  for
-	  decent levels of aggression. Consider adding a mechanism to ask
-	  conversion
-	  to be maximally aggressive (eg. for binary distribution).
-
-2011-02-21 19:59  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Redo flag
-	  handling in ol-conversion
-
-2011-02-21 15:07  eaxelson
-
-	* tools/src/hfst-fst2strings.cc, tools/src/hfst-lookup.cc: A bug in
-	  hfst-lookup fixed: reading input strings in spaced format now
-	  works.
-
-2011-02-21 14:02  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h: Fix
-	  stupid mistake in previous fix to optimized-lookup internals
-
-2011-02-21 13:37  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: More
-	  coding style conformism
-
-2011-02-21 13:18  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Coding style conformism
-
-2011-02-21 13:12  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Fixes
-	  to optimized-lookup internals and conversion
-
-2011-02-21 13:02  eaxelson
-
-	* Doxyfile, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/hfst-compose.cc: Exception classes refined
-
-2011-02-18 12:38  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstExceptions.h,
-	  libhfst/src/HfstExtractStrings.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTokenizer.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am, libhfst/src/coding-style.sh,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.cc,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  test/libhfst/test_rules.cc, test/libhfst/test_streams.cc,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-binary-tool.cc,
-	  tools/src/hfst-compare.cc, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-determinize.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-format.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-head.cc,
-	  tools/src/hfst-invert.cc, tools/src/hfst-lexc-compiler.cc,
-	  tools/src/hfst-lookup.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-name.cc, tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-remove-epsilons.cc, tools/src/hfst-repeat.cc,
-	  tools/src/hfst-reverse.cc, tools/src/hfst-split.cc,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-subtract.cc,
-	  tools/src/hfst-summarize.cc, tools/src/hfst-tail.cc,
-	  tools/src/hfst-unary-tool.cc, tools/src/hfst-xfst-compiler.cc,
-	  tools/src/test.cc: All exceptions changed to
-	  HFST_THROW(HfstException).
-
-2011-02-18 10:15  mpsilfve
-
-	* libhfst/src/HfstExceptionDefs.h: Renamed TWROW HFST_THROW in
-	  HfstExceptionDefs.h
-
-2011-02-17 14:09  mpsilfve
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h: Added some macro definitions,
-	  which make it easy to declare, define and throw informative
-	  exceptions.
-
-2011-02-17 12:47  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Free
-	  memory earlier and do some less work in ol-conversion
-
-2011-02-17 10:28  moshagen
-
-	* tools/src: Ignore the latest binary file.
-
-2011-02-17 10:07  eaxelson
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstExtractStrings.h,
-	  libhfst/src/HfstTokenizer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-lookup.cc: The order of weight and string/string
-	  pair changed in HfstOneLevelPath and HfstTwoLevelPath. Now the
-	  elements of a set are sorted in ascending weight order.
-
-2011-02-16 16:37  eaxelson
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstExtractStrings.h,
-	  libhfst/src/HfstTokenizer.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/hfst-lookup.cc: HfstLookupPath(s) is now replaced with
-	  HfstOneLevelPath(s)
-
-2011-02-16 15:48  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/libhfst/Makefile.am, test/libhfst/auxiliary_functions.cc:
-	  Flag diacritics should now be handled right in functions lookup
-	  and extract_strings
-
-2011-02-16 13:09  eaxelson
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstExtractStrings.h,
-	  libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTokenizer.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-lookup.cc: HfstTransducer::lookup now takes a
-	  StringVector as argument and HfstTransducer::extract_strings
-	  stores its results in an 'HfstTwoLevelPaths'
-
-2011-02-15 15:50  eaxelson
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstFlagDiacritics.h,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/coding-style.sh, libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Now
-	  coding-style.sh should pass.
-
-2011-02-15 15:28  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstExceptions.h, libhfst/src/HfstExtractStrings.h,
-	  libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTokenizer.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.cc,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/new-ConvertTransducerFormat.cc:
-	  Overlong lines separated on several lines.
-
-2011-02-15 11:08  hardwick
-
-	* tools/src/hfst-compiler.yy: More more more OFST->OPENFST renaming
-
-2011-02-15 11:06  hardwick
-
-	* libhfst/src/implementations/HfstInternalTransducer.cc: More more
-	  OFST->OPENFST renaming
-
-2011-02-15 11:04  hardwick
-
-	* libhfst/src/HfstInputStream.cc: more OFST -> OPENFST name
-	  renaming
-
-2011-02-14 14:54  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc:
-	  HfstTransducer::read_in_att_format is now protected
-
-2011-02-14 12:52  eaxelson
-
-	* test/libhfst/test_rules.cc: A bug in tests fixed.
-
-2011-02-14 12:48  eaxelson
-
-	* test/libhfst/Makefile.am, test/libhfst/auxiliary_functions.cc,
-	  test/libhfst/test.cc, test/libhfst/test_constructors.cc,
-	  test/libhfst/test_rules.cc, test/libhfst/test_streams.cc,
-	  test/libhfst/test_transducer_functions.cc: test.cc renamed to
-	  test_rules.cc and only tests for functions in namespace
-	  hfst::rules preserved
-
-2011-02-14 12:18  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstExceptions.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2txt.cc,
-	  tools/src/hfst-lexc-compiler.cc, tools/src/hfst-name.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-split.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-summarize.cc,
-	  tools/src/hfst-txt2fst.cc, tools/src/hfst-xfst-compiler.cc,
-	  tools/src/parsers/LexcCompiler.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XreCompiler.cc, tools/src/test.cc:
-	  TROPICAL_OFST_TYPE and LOG_OFST_TYPE changed to
-	  TROPICAL_OPENFST_TYPE and LOG_OPENFST_TYPE.
-
-2011-02-14 11:32  mpsilfve
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  tools/src/Makefile.am: Fixed a bug in reading binary SFST and
-	  FOMA transducers.
-
-2011-02-12 22:59  mie
-
-	* README: update requirements and reorganise
-
-2011-02-11 16:44  mpsilfve
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Fixed bug
-	  in reading and writing transducer binary headers.
-
-2011-02-11 14:49  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstExtractStrings.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/libhfst/Makefile.am, test/libhfst/test.cc,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  test/libhfst/test_transducer_functions.cc,
-	  test/libhfst/test_transducers.att, tools/src/HfstCompiler.cc:
-	  AT&T format now accepts all whitespace characters as field
-	  separators.
-
-2011-02-11 10:49  mpsilfve
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Added a
-	  const-version of HfstTransitionGraph::operator[], so that it is
-	  possible to access the transitions of a const
-	  HfstTransitionGraph.
-
-2011-02-10 15:21  hardwick
-
-	* libhfst/src/HfstTransducer.cc: Added appropriate type checks in a
-	  HfstTransducer constructor - probably many more needed...
-
-2011-02-10 15:20  hardwick
-
-	* tools/src/hfst-txt2fst.cc: Fixed typo and clarified help message
-
-2011-02-10 13:09  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Represent epsilon as blank string when returning representations
-	  from
-	  ol-library
-
-2011-02-10 10:48  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc: More tests added.
-	  Substitute bugs fixed in TropicalWeightTransducer.
-
-2011-02-09 14:32  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_transducer_functions.cc: New tests added.
-	  Substitution functions cause a segfault in
-	  TropicalWeightTransducer, debugging under way.
-
-2011-02-09 11:30  eaxelson
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTokenizer.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  test/libhfst/test_transducer_functions.cc: More tests added.
-
-2011-02-08 15:51  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc: Fixed some problems
-	  (due to epsilon symbol) in SfstTransducer functions that take a
-	  String or StringPair as argument. FomaTransducer::is_cyclic now
-	  works correctly, function 'fsm_topsort' must be called before
-	  'is_loop_free'.
-
-2011-02-08 15:06  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc: More tests added.
-
-2011-02-08 13:14  eaxelson
-
-	* test/libhfst/test_transducer_functions.cc: File
-	  test_transducer_functions fixed.
-
-2011-02-08 13:12  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  test/libhfst/Makefile.am,
-	  test/libhfst/test_transducer_functions.cc: Extra debugging
-	  messages removed.
-
-2011-02-07 14:41  eaxelson
-
-	* test/libhfst/Makefile.am, test/libhfst/auxiliary_functions.cc,
-	  test/libhfst/test_streams.cc, test/libhfst/test_tokenizer.cc,
-	  test/libhfst/transducer.att: Test for tokenizer added.
-
-2011-02-07 14:02  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  test/libhfst/Makefile.am, test/libhfst/test_streams.cc:
-	  FomaTransducer::define_transducer(char*) now calls
-	  fsm_count(struct *fsm) on its return value. In this way the
-	  number of fsm lines is correct when the transducer is written to
-	  file.
-
-2011-02-04 15:25  eaxelson
-
-	* test/libhfst/Makefile.am, test/libhfst/test_streams.cc,
-	  test/libhfst/test_transducers.att: More tests added.
-
-2011-02-04 15:14  eaxelson
-
-	* test/libhfst/Makefile.am, test/libhfst/auxiliary_functions.cc,
-	  test/libhfst/test_constructors.cc:
-
-2011-02-04 14:21  eaxelson
-
-	* test/libhfst/foobar.att, test/libhfst/test_constructors.cc:
-
-2011-02-04 13:53  eaxelson
-
-	* test/libhfst/Makefile.am, test/libhfst/test.cc,
-	  test/libhfst/test_constructors.cc: File test_constructors.cc
-	  added
-
-2011-02-03 16:20  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-	  Documentation added.
-
-2011-02-02 16:03  eaxelson
-
-	* api_documentation.dox, configure.ac,
-	  libhfst/src/HfstExceptions.h, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstTransducer.h,
-	  tools/src/Makefile.am, tools/src/hfst-name.cc: Documentation
-	  updated. Tool hfst-name added.
-
-2011-02-02 13:49  eaxelson
-
-	* libhfst/src/HfstExceptions.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-summarize.cc: Now conversion from OpenFst and SFST
-	  to HFST handles special symbols correctly. How special symbols
-	  should be handled in the reverse case is still an open question.
-
-2011-02-01 13:47  mie
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-lookup.cc: remove deprecated conversions and
-	  unused parameters
-
-2011-02-01 10:35  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  ol-basic -conversion
-
-2011-01-31 14:00  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Function
-	  HfstTransducer::insert_freely(const HfstTransducer &tr) added.
-
-2011-01-31 11:06  eaxelson
-
-	* libhfst/src/HfstOutputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Now the
-	  output symbol table of a tropical or log HFST transducer is
-	  assigned a copy of the input symbol table when the transducer is
-	  written. This should make conversions between OpenFst and HFST
-	  transducers easier.
-
-2011-01-31 10:42  mpsilfve
-
-	* tools/src/hfst-summarize.cc: Fixed two typedefs in
-	  trunk/hfst3/tools/src/hfst-summarize.cc
-
-2011-01-31 10:41  mpsilfve
-
-	* libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Fixed an
-	  #include in
-	  trunk/hfst3/libhfst/src/implementations/ConvertTransducerFormat.h
-	  and a typedef in
-	  trunk/hfst3/libhfst/src/implementations/convert.h
-
-2011-01-30 22:51  mie
-
-	* tools/src/hfst-fst2fst.cc: Fix verbose messages about HFST3
-	  headers
-
-2011-01-30 22:30  mie
-
-	* test/tools/cat2epsilon.txt, test/tools/epsilon.txt,
-	  test/tools/epsilon2cat.txt: epsilon tests
-
-2011-01-28 14:20  eaxelson
-
-	* libhfst/src/HfstOutputStream.h, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  tools/src/hfst-lookup.cc: hfst-lookup now prints the results in
-	  the FILE requested instead of stderr
-
-2011-01-28 11:09  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, tools/src/hfst-lookup.cc:
-	  hfst-lookup has two options more. It is possible to print results
-	  in pairstring format (not implemented for optimized lookup
-	  format) and defined how the epsilon is printed.
-
-2011-01-27 15:18  eaxelson
-
-	* libhfst/src/HfstExtractStrings.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/tools/Makefile.am: extract_strings and WeightedPath changed
-	  so that it is possible to include a StringPairVector
-	  representation of the extracted paths
-
-2011-01-27 04:00  mie
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/Makefile.am, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-lookup.cc: implement flags and epsilons and xfst
-	  options print-space print-flag obey-flags etc.
-
-2011-01-26 23:24  mie
-
-	* test/tools/Makefile.am, test/tools/compose-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/fst2txt-functionality.sh,
-	  test/tools/head-functionality.sh, test/tools/hfst-check-help.sh,
-	  test/tools/hfst-check-version.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/summarize-functionality.sh,
-	  test/tools/tail-functionality.sh: Avoid testing missing backends
-	  if possible
-
-2011-01-26 15:45  eaxelson
-
-	* libhfst/src/HfstExceptions.h, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTokenizer.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, tools/src/HfstCompiler.cc:
-	  Documentation added. Thrown exception types changed for some
-	  functions.
-
-2011-01-25 17:18  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstExceptions.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTokenizer.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-strings2fst.cc:
-	  Documentation improved and added. Keyword 'const' added to
-	  functions and their arguments when appropriate.
-
-2011-01-24 16:18  eaxelson
-
-	* api_documentation.dox,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  tools/src/hfst-fst2strings.cc: Documentation added.
-
-2011-01-21 15:57  eaxelson
-
-	* Doxyfile, api_documentation.dox, configure.ac,
-	  libhfst/src/HfstApply.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstExceptions.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTokenizer.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/MfstlTransducer.cc,
-	  libhfst/src/implementations/MfstlTransducer.h,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.cc,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.h:
-	  Documentation changed.
-
-2011-01-19 15:18  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstExceptions.h,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-lookup.cc: HfstFileException changed to
-	  HfstStreamException
-
-2011-01-19 11:50  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-compose.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-subtract.cc: Missing flag diacritics now yield a
-	  warning in hfst-compose, hfst-conjunct and hfst-subtract, unless
-	  freely inserted by option -F.
-
-2011-01-18 14:23  hardwick
-
-	* tools/src/HfstCompiler.cc: One more portability fix... could be
-	  the last one!
-
-2011-01-18 14:20  hardwick
-
-	* tools/src/hfst-summarize.cc: Yet another without-openfst
-	  portability fix
-
-2011-01-18 14:17  hardwick
-
-	* tools/src/parsers/xre_utils.cc: Another without-openfst
-	  portability fix
-
-2011-01-18 14:14  hardwick
-
-	* tools/src/parsers/xre_utils.h: Another without-openfst
-	  portability fix
-
-2011-01-18 14:12  hardwick
-
-	* tools/src/hfst-lookup.cc: Added using-directives to
-	  hfst-lookup.cc - apparently they don't get
-	  included from somewhere else when not HAVE_OPENFST, so this is
-	  necessary
-	  for portability
-
-2011-01-18 13:55  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: More
-	  optimized-lookup conversion fixes... produces correct results at
-	  least
-	  for trivial cases now.
-
-2011-01-17 20:11  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Various
-	  bits of format correctness for optimized-lookup conversion
-	  (lookup still doesn't give correct results)
-
-2011-01-17 16:45  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstTransitionGraph.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/HfstAlphabet.h, tools/src/HfstBasic.h,
-	  tools/src/HfstUtf8.h: Documentation added.
-
-2011-01-17 15:08  eaxelson
-
-	* libhfst/src/HfstAlphabet.cc, libhfst/src/HfstAlphabet.h,
-	  libhfst/src/HfstBasic.cc, libhfst/src/HfstBasic.h,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/HfstUtf8.cc,
-	  libhfst/src/HfstUtf8.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh,
-	  test/tools/lookup-functionality.sh,
-	  test/tools/permutate-file-params.sh, tools/src/HfstAlphabet.cc,
-	  tools/src/HfstAlphabet.h, tools/src/HfstBasic.cc,
-	  tools/src/HfstBasic.h, tools/src/HfstUtf8.cc,
-	  tools/src/HfstUtf8.h, tools/src/Makefile.am,
-	  tools/src/hfst-lookup.cc, tools/src/hfst-txt2fst.cc:
-	  HfstAlphabet, HfstBasic and HfstUtf8 cc and h files moved to
-	  tools/src. Some functions in HfstTransducer decalred as
-	  protected.
-
-2011-01-17 08:41  hardwick
-
-	* libhfst/src/HfstOutputStream.cc: #if HAVE_HFST_OL perhaps not
-	  working correctly - in any case HFST_OL-writing
-	  is now enabled, although the results still don't appear to be
-	  quite correct
-
-2011-01-17 08:31  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Oops,
-	  forgot to remove some debugging messages
-
-2011-01-17 08:29  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Fixed
-	  hanging hfst-ol conversion, still doesn't get written
-
-2011-01-16 18:24  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Ol-conversion (untested as yet)
-
-2011-01-15 13:27  hardwick
-
-	* tools/src/Makefile.am: Added parsers/xre_utils.h to noist_HEADERS
-	  in tools/src/Makefile.am
-	  
-	  This commit is also to celebrate that hfst3 will now actually
-	  build on a clean
-	  system!
-
-2011-01-15 12:40  hardwick
-
-	* tools/src/Makefile.am: Added parsers/XreCompiler.h to
-	  noinst_HEADERS in tools/src/Makefile.am
-
-2011-01-14 15:41  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstInputStream.h:
-	  Documentation added.
-
-2011-01-13 14:46  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstTransducer.h:
-	  Documentation added.
-
-2011-01-12 16:23  eaxelson
-
-	* configure.ac, libhfst/src/HfstGrammar.cc,
-	  libhfst/src/HfstGrammar.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightComposeIntersect.cc,
-	  libhfst/src/implementations/TropicalWeightComposeIntersect.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/tools/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-compose-intersect.cc: Intersecting composition
-	  functionalities removed, they will be implemented using
-	  HfstBasicTransducer format in the future.
-
-2011-01-12 14:13  hardwick
-
-	* configure.ac: Updated configure.ac to reflect dropping of
-	  tools/src/parsers/Makefile.am
-
-2011-01-12 14:12  hardwick
-
-	* tools/src/parsers/Makefile.am: Deleted unneeded Makefile.am in
-	  tools/src/parsers
-
-2011-01-12 13:37  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Substituting
-	  unknowns and identities now works correctly in composition.
-
-2011-01-12 12:32  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  tools/src/parsers/LexcCompiler.cc: A bug in reading transducers
-	  in AT&T format fixed. Also an alphabet bug in converting
-	  HfstBasicTransducers into SFST transducers fixed.
-
-2011-01-12 08:49  moshagen
-
-	* api_documentation.dox: Corrected documentation link.
-
-2011-01-11 15:21  eaxelson
-
-	* Doxyfile, api_documentation.dox, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Documentation
-	  added.
-
-2011-01-10 16:47  eaxelson
-
-	* api_documentation.dox,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-summarize.cc: Redundant code removed from class
-	  HfstTransitionGraph.
-
-2011-01-10 15:29  moshagen
-
-	* .: Ignore typical build subdirs.
-
-2011-01-10 15:21  eaxelson
-
-	* Doxyfile, api_documentation.dox, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstNet.cc,
-	  libhfst/src/implementations/HfstNet.h,
-	  libhfst/src/implementations/HfstTransitionGraph.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/Makefile.am,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-summarize.cc,
-	  tools/src/parsers/LexcCompiler.cc: HfstNet renamed to
-	  HfstTransitionGraph, HfstFsm to HfstBasicTransducer and HfstArc
-	  to HfstBasicTransition
-
-2011-01-06 08:57  mie
-
-	* scripts/Makefile.am: extra_dist all scripts
-
-2011-01-06 02:59  mie
-
-	* libhfst/src/HfstAlphabet.cc, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/Makefile.am, tools/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: fix VPATH _build_
-
-2011-01-05 13:58  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstNet.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-	  Substitute functions of HfstNet updated.
-
-2011-01-05 11:53  hardwick
-
-	* tools/src/Makefile.am: HfstCompiler.h in noinst_HEADERS
-
-2011-01-05 11:30  hardwick
-
-	* tools/src/parsers/Makefile.am: Added items to noinst_HEADERS in
-	  tools/src/parsers/Makefile.am, evidently needed
-	  for building
-
-2011-01-05 08:50  moshagen
-
-	* tools/src: Ignore more generated files.
-
-2011-01-04 17:24  mie
-
-	* scripts/hfst-foma-wrapper.sh.in, scripts/hfst-lexc: Remove
-	  intermediate files and be selectively verbose to avoid confusion
-
-2011-01-04 15:50  hardwick
-
-	* libhfst/src/Makefile.am: YAUH: HfstUtf8.h
-
-2011-01-04 15:19  hardwick
-
-	* libhfst/src/Makefile.am: YAUH: HfstBasic.h
-
-2011-01-04 15:02  hardwick
-
-	* libhfst/src/Makefile.am: Another unshipped header (HfstGrammar.h)
-
-2011-01-04 11:05  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: oops
-
-2011-01-04 10:57  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h:
-	  HAVE_OPENFST guards
-
-2011-01-04 10:46  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstNet.h, tools/src/HfstCompiler.cc:
-	  A bug in transducer conversion functions fixed.
-
-2011-01-04 10:17  hardwick
-
-	* libhfst/src/implementations/Makefile.am: Missing \ in another
-	  header shipping directive in
-	  libhfst/src/implementations/Makefile.am
-
-2011-01-04 10:14  hardwick
-
-	* libhfst/src/implementations/Makefile.am: Another missing header,
-	  TropicalWeightComposeIntersect.h included for shipping
-	  (this is probably temporary and the header shouldn't be needed
-	  anymore,
-	  but for now building fails without it on clean machines)
-
-2011-01-04 07:40  mie
-
-	* README-alpha, libhfst/src/coding-style.sh: The alpha testing
-	  instructions
-
-2011-01-03 18:01  mie
-
-	* libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc: skip all
-	  tests that might fail
-
-2011-01-03 17:00  mie
-
-	* configure.ac, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  tools/src/FlagDiacritics, tools/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: * some new autoconfiscate features
-	  (silent make!)
-	  * misc. stylistic changes
-
-2011-01-03 15:50  mpsilfve
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstNet.h: Made
-	  HfstNet::get_final_weight(...) a const member function.
-
-2011-01-03 15:36  hardwick
-
-	* libhfst/src/implementations/Makefile.am: Added missing headers to
-	  Makefile
-
-2011-01-03 14:34  mpsilfve
-
-	* libhfst/src/implementations/HfstNet.h: changed void
-	  HfstNet::add_state(HfstState s) so that it returns s and added
-	  HfstState HfstNet::add_state(void), which adds a new state.
-
-2011-01-03 11:46  eaxelson
-
-	* libhfst/src/implementations/HfstNet.cc: HfstNet.cc added
-
-2011-01-03 11:15  eaxelson
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstNet.h,
-	  libhfst/src/implementations/Makefile.am,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-summarize.cc,
-	  tools/src/parsers/LexcCompiler.cc,
-	  tools/src/parsers/xfst-lexer.ll: Conversions between transducer
-	  formats updated so that they use HfstFsm
-
-2011-01-02 20:15  moshagen
-
-	* tools/src: Ignore generated files.
-
-2011-01-02 19:37  moshagen
-
-	* tools/src/parsers: Ignore generated files.
-
-2011-01-01 13:28  mie
-
-	* tools/src/Makefile.am, tools/src/hfst-lexc-compiler.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-xfst-compiler.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-utils.cc, tools/src/parsers/xfst-utils.h:
-	  Fix the missing includes and linkage
-
-2010-12-31 14:22  mie
-
-	* configure.ac, libhfst/src/Makefile.am, libhfst/src/extensions,
-	  tools/src/Makefile.am, tools/src/hfst-compare.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/hfst-repeat.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-strip-header.cc, tools/src/parsers,
-	  tools/src/parsers/LexcCompiler.cc,
-	  tools/src/parsers/LexcCompiler.h, tools/src/parsers/Makefile.am,
-	  tools/src/parsers/XreCompiler.h, tools/src/parsers/xre_lex.ll,
-	  tools/src/parsers/xre_parse.yy, tools/src/parsers/xre_utils.cc,
-	  tools/src/parsers/xre_utils.h: Remove hfst's lexc, xfst and xre
-	  parsers and use foma's instead of reinventing
-	  wheel and doubling update burden
-
-2010-12-28 16:34  eaxelson
-
-	* libhfst/src/implementations/HfstNet.h,
-	  libhfst/src/implementations/new-ConvertTransducerFormat.cc: New
-	  transducer conversion functions added.
-
-2010-12-28 14:17  eaxelson
-
-	* libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  tools/src/HfstCompiler.cc:
-
-2010-12-28 13:28  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  tools/src/HfstCompiler.cc: A bug in
-	  FomaTransducer::define_transducer fixed.
-
-2010-12-22 17:18  eaxelson
-
-	* libhfst/src/implementations/HfstNet.h: A bug fixed in
-	  HfstNet::substitute(StringPair, HfstNet)
-
-2010-12-22 16:26  eaxelson
-
-	* libhfst/src/implementations/HfstNet.h: More functions added to
-	  HfstNet
-
-2010-12-22 13:15  eaxelson
-
-	* api_documentation.dox,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FooTransducer.h,
-	  libhfst/src/implementations/HfstNet.h,
-	  libhfst/src/implementations/new-ConvertTransducerFormat.cc,
-	  test/libhfst/Makefile.am, test/tools/Makefile.am: More functions
-	  added to HfstNet
-
-2010-12-21 07:38  mie
-
-	* test/tools/compare-functionality.sh,
-	  test/tools/permutate-file-params.sh: Use local compare for all
-	  tests
-
-2010-12-21 02:52  mie
-
-	* configure.ac, tools/src/hfst-regexp2fst.cc: don't fclose infile
-	  too early
-
-2010-12-21 01:29  mie
-
-	* tools/src/hfst-compare.cc, tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-determinize.cc,
-	  tools/src/hfst-diff-test.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-format.cc, tools/src/hfst-fst2fst.cc,
-	  tools/src/hfst-fst2pairstrings.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-head.cc,
-	  tools/src/hfst-invert.cc, tools/src/hfst-lexc-compiler.cc,
-	  tools/src/hfst-lookup-optimize.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-minimize.cc, tools/src/hfst-omor-evaluate.cc,
-	  tools/src/hfst-optimized-lookup.cc, tools/src/hfst-pair-test.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-remove-epsilons.cc,
-	  tools/src/hfst-repeat.cc, tools/src/hfst-reverse.cc,
-	  tools/src/hfst-split.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-strip-header.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-subtract.cc, tools/src/hfst-summarize.cc,
-	  tools/src/hfst-symbols.cc, tools/src/hfst-tail.cc,
-	  tools/src/hfst-txt2fst.cc, tools/src/hfst-xfst-compiler.cc: *
-	  Separate bug report from further info by newline
-	  * remove old and deprecated tools
-
-2010-12-21 00:40  mie
-
-	* man/Makefile.am, man/hfst-calculate.1, man/hfst-compare.1,
-	  man/hfst-compose-intersect.1, man/hfst-compose.1,
-	  man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinize.1, man/hfst-disjunct.1, man/hfst-fst2fst.1,
-	  man/hfst-fst2strings.1, man/hfst-fst2txt.1, man/hfst-head.1,
-	  man/hfst-intersect.1, man/hfst-invert.1, man/hfst-minimize.1,
-	  man/hfst-proc.1, man/hfst-project.1, man/hfst-push-weights.1,
-	  man/hfst-regexp2fst.1, man/hfst-remove-epsilons.1,
-	  man/hfst-repeat.1, man/hfst-reverse.1, man/hfst-split.1,
-	  man/hfst-strings2fst.1, man/hfst-subtract.1,
-	  man/hfst-summarize.1, man/hfst-tail.1, man/hfst-txt2fst.1,
-	  man/hfst-xfst-compiler.1, man/hfst-xfst.1: * intersect has been
-	  called conjunct since forever
-	  * move external links in SEE ALSO
-
-2010-12-20 22:05  mie
-
-	* libhfst/src/Makefile.am, libhfst/src/coding-style.sh: enforce
-	  coding style in make check :-)
-
-2010-12-20 14:55  eaxelson
-
-	* Doxyfile, api_documentation.dox,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstNet.h,
-	  libhfst/src/implementations/new-ConvertTransducerFormat.cc: File
-	  new-ConvertTransducerFormat.cc added, it will soon replace
-	  ConvertTransducerFormat.cc
-
-2010-12-20 06:04  mie
-
-	* test/tools/compare-functionality.sh,
-	  test/tools/permutate-file-params.sh: testing results of parameter
-	  vcombinations
-
-2010-12-20 05:09  mie
-
-	* man/hfst-lexc.1, scripts/Makefile.am, scripts/hfst-lexc,
-	  scripts/hfst-xfst, test/tools/Makefile.am,
-	  test/tools/lexc-functionality.sh: add hfst-lexc script
-
-2010-12-20 04:27  mie
-
-	* man/Makefile.am, man/hfst-foma-wrapper.1,
-	  man/hfst-tool.1.template, man/hfst-xfst.1,
-	  scripts/hfst-foma-wrapper.sh.in, scripts/hfst-xfst,
-	  test/tools/Makefile.am: Update xfst/foma scripts
-
-2010-12-19 12:28  eaxelson
-
-	* libhfst/src/implementations/HfstNet.h: Added a substitute
-	  function to class HfstNet.
-
-2010-12-17 15:26  eaxelson
-
-	* libhfst/src/implementations/HfstNet.h: HfstNet.h has now a
-	  function write_in_att_format
-
-2010-12-17 14:30  eaxelson
-
-	* libhfst/src/implementations/HfstNet.h: HfstNet.h updated and
-	  tested.
-
-2010-12-17 10:26  eaxelson
-
-	* libhfst/src/implementations/HfstInternalTransducer.h,
-	  libhfst/src/implementations/HfstNet.h: Added file HfstNet.h that
-	  will soon replace file HfstInternalTransducer.h.
-
-2010-12-16 22:37  mie
-
-	* libhfst/src/implementations/HfstInternalTransducer.cc: Fix
-	  internal tests
-
-2010-12-16 16:36  eaxelson
-
-	* libhfst/src/implementations/HfstInternalTransducer.h:
-	  HfstInternalTransducer_ updated.
-
-2010-12-16 16:19  eaxelson
-
-	* Doxyfile, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.h: A new
-	  HfstInternalTransducer class HfstInternalTransducer_ added.
-
-2010-12-16 10:00  eaxelson
-
-	* libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.h: class
-	  HfstTransition changed to struct HfstTransition
-
-2010-12-16 09:38  eaxelson
-
-	* Doxyfile, api_documentation.dox, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h: A bug in
-	  converting empty transducers between internal and OpenFst's
-	  formats fixed.
-
-2010-12-16 07:20  mie
-
-	* libhfst/src/HfstTransducer.cc: use #if's on backend specific code
-
-2010-12-15 13:27  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.h,
-	  libhfst/src/implementations/LogFstTrieFunctions.cc,
-	  libhfst/src/implementations/LogFstTrieFunctions.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-	  LogFstTrieFunctions .cc and .h removed and their functions moved
-	  to LogWeightTransducer .cc and .h and copied also to
-	  TropicalWeightTransducer .cc and .h
-
-2010-12-14 16:09  eaxelson
-
-	* libhfst/src/ExtractStrings.h, libhfst/src/FlagDiacritics.cc,
-	  libhfst/src/FlagDiacritics.h, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstExceptions.h, libhfst/src/HfstExtractStrings.h,
-	  libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstMutableTransducer.h,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstSymbolDefs.cc,
-	  libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTokenizer.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am, libhfst/src/SymbolDefs.cc,
-	  libhfst/src/SymbolDefs.h, libhfst/src/apply_schemas.h,
-	  libhfst/src/extensions/LexcCompiler.cc,
-	  libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstInternalTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/MfstlTransducer.cc,
-	  libhfst/src/implementations/MfstlTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-proc/lookup-path.h, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-summarize.cc, tools/src/test.cc: Files renamed and
-	  deleted.
-
-2010-12-13 17:11  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstMutableTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.h: Including
-	  headers should now work correctly. Doxygen documentation also
-	  added.
-
-2010-12-13 07:18  mie
-
-	* libhfst/src/extensions/LexcCompiler.cc,
-	  test/tools/lexc-compiler-functionality.sh: The minimal lexc
-	  compiler functionality tests and minor fixes to compilation
-	  formula
-
-2010-12-13 05:46  mie
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/MfstlTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc:
-	  implementations unit tests
-
-2010-12-13 03:27  mie
-
-	* libhfst/src/extensions/LexcCompiler.cc,
-	  libhfst/src/extensions/LexcCompiler.h,
-	  libhfst/src/extensions/Makefile.am,
-	  libhfst/src/extensions/XfstCompiler.cc,
-	  libhfst/src/extensions/XfstCompiler.h,
-	  libhfst/src/extensions/XreCompiler.cc,
-	  libhfst/src/extensions/XreCompiler.h,
-	  libhfst/src/extensions/xre_utils.cc,
-	  libhfst/src/extensions/xre_utils.h: Add unit tests for extensions
-
-2010-12-13 03:16  mie
-
-	* libhfst/src/HfstInputStream.cc: don't test default input stream
-	  since it requires stdin
-
-2010-12-11 07:00  mie
-
-	* libhfst/src/FlagDiacritics.cc, libhfst/src/HfstTokenizer.cc:
-	  EXIT_* needs cstdlib on newere gcc's/glibc's
-
-2010-12-11 05:08  mie
-
-	* libhfst/src/FlagDiacritics.cc, libhfst/src/HfstAlphabet.cc,
-	  libhfst/src/HfstGrammar.cc, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/Makefile.am: main interface unit tests 3/6
-
-2010-12-10 21:58  mie
-
-	* libhfst/src/HfstTransducer.cc, test/tools/Makefile.am: It's a
-	  verbose test suite
-
-2010-12-10 16:53  eaxelson
-
-	* tools/src/hfst-strings2fst.cc: hfst-strings2fst now tokenizes
-	  multicharacter symbols
-
-2010-12-10 16:01  eaxelson
-
-	* tools/src/hfst-strings2fst.cc: A bug in hfst-strings2fst with
-	  (not pairstrings && not spaces) fixed.
-
-2010-12-10 15:39  eaxelson
-
-	* Doxyfile, api_documentation.dox, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.h,
-	  libhfst/src/implementations/MfstlTransducer.h,
-	  new_library/MyFst.cc, new_library/MyFst.h,
-	  tools/src/hfst-strings2fst.cc: hfst-strings2fst now uses the
-	  internal trie transducer format and converts to the format
-	  requested before writing the output. This should make
-	  hfst-strings2fst faster.
-
-2010-12-10 11:22  eaxelson
-
-	* api_documentation.dox: Documentation added.
-
-2010-12-10 10:41  eaxelson
-
-	* configure.ac, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/MfstlTransducer.cc,
-	  libhfst/src/implementations/MfstlTransducer.h, new_library,
-	  new_library/Makefile, new_library/MyFst.cc, new_library/MyFst.h,
-	  new_library/README, new_library/test.cc: Added a simple example
-	  transducer library, MFSTL, that can be included by command
-	  './configure --with-mfstl=true'
-
-2010-12-09 17:52  eaxelson
-
-	* configure.ac, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FooTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-strings2fst.cc: An
-	  implementation type FOO_TYPE added for testing, by default it is
-	  not included in HFST.
-
-2010-12-09 13:00  mie
-
-	* test/tools/Makefile.am, test/tools/lookup-functionality.sh,
-	  tools/src/hfst-lookup.cc: Fix lookup_printf and test it
-
-2010-12-08 16:55  eaxelson
-
-	* libhfst/src/HfstInputStream.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Reading
-	  hfst version 2 transducers whose implementation type is OpenFst
-	  should work now.
-
-2010-12-08 15:38  eaxelson
-
-	* Doxyfile, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstTransducer.h: Documentation added. A bug in hfst
-	  version 2 transducer handling detected, fixing started.
-
-2010-12-08 03:32  mie
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/Makefile.am: Full-ish
-	  HfstTransducer unit test
-
-2010-12-07 15:09  eaxelson
-
-	* Doxyfile, libhfst/src/HfstTransducer.h, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-strings2fst.cc: A bug in hfst-strings2fst fixed,
-	  now the newline character is discarded before converting the
-	  weight string into a float. More Doxygen documentation also
-	  added.
-
-2010-12-07 10:55  hardwick
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Lookup
-	  implemented for optimized-lookup API with new style headers,
-	  though hfst-lookup doesn't print anything due to commented-out
-	  printing
-	  function (it seems to break when I uncomment it..?)
-
-2010-12-07 01:01  mie
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/Makefile.am: This
-	  could be unit test
-
-2010-12-04 16:58  eaxelson
-
-	* libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/HfstTransducer.h, tools/src/hfst-lookup.cc:
-	  hfst-lookup should now work correctly for transducers having
-	  epsilon input cycles. Also added some documentation.
-
-2010-12-04 04:17  mie
-
-	* tools/src/hfst-commandline.cc: fix more of mac os x getline
-	  substitute
-
-2010-12-04 03:56  mie
-
-	* test/tools/empty-input.sh: skip hfst-proc dir for empty input tst
-
-2010-12-03 22:44  mie
-
-	* man/Makefile.am, man/hfst-foma-wrapper.1,
-	  man/hfst-xfst-compiler.1, man/hfst-xfst.1: Revert man
-	  bootstrapping stuff and add stubs for rest of the tools
-
-2010-12-03 22:39  mie
-
-	* libhfst/src/extensions/LexcCompiler.cc: add set and use zu for
-	  size_t prints
-
-2010-12-03 18:12  moshagen
-
-	* tools/src: New item to ignore.
-
-2010-12-03 14:31  eaxelson
-
-	* tools/src/hfst-lookup.cc: hfst-lookup fixed, still allows too
-	  many cycles although limits the results to a finite number
-
-2010-12-03 10:52  eaxelson
-
-	* man/hfst-calculate.1, man/hfst-compare.1,
-	  man/hfst-compose-intersect.1, man/hfst-compose.1,
-	  man/hfst-concatenate.1, man/hfst-determinize.1,
-	  man/hfst-disjunct.1, man/hfst-fst2fst.1, man/hfst-fst2strings.1,
-	  man/hfst-fst2txt.1, man/hfst-head.1, man/hfst-invert.1,
-	  man/hfst-minimize.1, man/hfst-project.1, man/hfst-push-weights.1,
-	  man/hfst-regexp2fst.1, man/hfst-remove-epsilons.1,
-	  man/hfst-repeat.1, man/hfst-reverse.1, man/hfst-split.1,
-	  man/hfst-strings2fst.1, man/hfst-subtract.1,
-	  man/hfst-summarize.1, man/hfst-tail.1, man/hfst-txt2fst.1,
-	  tools/src/hfst-lexc-compiler.cc, tools/src/hfst-lookup.cc: A bug
-	  in hfst-lexc-compiler fixed, still some errors in help2man and
-	  tool tests.
-
-2010-12-03 10:01  eaxelson
-
-	* libhfst/src/HfstExceptions.cc, tools/src/hfst-lookup.cc: File
-	  added.
-
-2010-12-02 15:14  eaxelson
-
-	* libhfst/src/HfstExceptions.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FooTransducer.h,
-	  tools/src/hfst-compare.cc, tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-lookup.cc, tools/src/hfst-split.cc: Outputs of
-	  help commands of commandline tools fixed.
-
-2010-11-30 13:57  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  tools/src/hfst-format.cc: A bug in
-	  HfstTransducer(StringPairVector&, type==FOMA_TYPE) fixed.
-
-2010-11-30 11:35  moshagen
-
-	* libhfst/src/extensions: More files to ignore.
-
-2010-11-30 09:32  hardwick
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: A
-	  version of infinitely_ambiguous (necessary for at least lookup)
-
-2010-11-30 09:30  hardwick
-
-	* tools/src/hfst-lookup.cc: Removed conditional compilation guards
-	  from non-template
-	  lookup-performing function (which way do we want it to be?)
-
-2010-11-30 01:58  mie
-
-	* configure.ac, tools/src/hfst-commandline.cc: enable lexc, missing
-	  ) added
-
-2010-11-29 19:13  hardwick
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Some
-	  additional HFST_OL functionality
-
-2010-11-29 17:29  mie
-
-	* man/Makefile.am, man/hfst-calculate.1, man/hfst-compare.1,
-	  man/hfst-compose-intersect.1, man/hfst-compose.1,
-	  man/hfst-concatenate.1, man/hfst-determinize.1,
-	  man/hfst-diff-test.1, man/hfst-disjunct.1, man/hfst-fst2fst.1,
-	  man/hfst-fst2pairstrings.1, man/hfst-fst2strings.1,
-	  man/hfst-fst2txt.1, man/hfst-head.1, man/hfst-invert.1,
-	  man/hfst-lexc-compiler.1, man/hfst-lookup.1, man/hfst-minimize.1,
-	  man/hfst-pair-test.1, man/hfst-proc.1, man/hfst-project.1,
-	  man/hfst-push-weights.1, man/hfst-regexp2fst.1,
-	  man/hfst-remove-epsilons.1, man/hfst-repeat.1,
-	  man/hfst-reverse.1, man/hfst-split.1, man/hfst-strings2fst.1,
-	  man/hfst-subtract.1, man/hfst-summarize.1, man/hfst-tail.1,
-	  man/hfst-txt2fst.1, man/hfst-unweighted2weighted.1,
-	  man/hfst-weighted2unweighted.1: Update man pages for release :-)
-
-2010-11-29 17:26  eaxelson
-
-	* test/tools/Makefile.am, test/tools/compose-functionality.sh,
-	  test/tools/compose-intersect-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/fst2txt-functionality.sh,
-	  test/tools/head-functionality.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/strings2fst-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/summarize-functionality.sh,
-	  test/tools/summarize_test2.txt, test/tools/tail-functionality.sh,
-	  test/tools/txt2fst-functionality.sh, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-program-options.cc: Tests added.
-
-2010-11-29 16:30  hardwick
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Some
-	  fixes to make the right names defined down the line, plus
-	  a first attempt at the lookup API
-
-2010-11-29 16:12  hardwick
-
-	* libhfst/src/FlagDiacritics.h,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Lookup
-	  for hfst_ol in hfst3
-
-2010-11-26 15:31  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/implementations/FooTransducer.h: More documentation
-	  added.
-
-2010-11-25 17:08  eaxelson
-
-	* Doxyfile, libhfst/src/ExtractStrings.h,
-	  libhfst/src/FlagDiacritics.h, libhfst/src/HfstAlphabet.h,
-	  libhfst/src/HfstApply.cc, libhfst/src/HfstBasic.h,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstExceptions.h,
-	  libhfst/src/HfstGrammar.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstMutableTransducer.h,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstTokenizer.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/HfstUtf8.h, libhfst/src/SymbolDefs.h,
-	  libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/FooTransducer.h,
-	  libhfst/src/implementations/HfstInternalTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LogFstTrieFunctions.h,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightComposeIntersect.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Files
-	  documented, a skeleton file added for adding a new backend
-	  implementation
-
-2010-11-25 14:29  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  tools/src/HfstCompiler.cc: Files renamed
-
-2010-11-25 14:21  eaxelson
-
-	* libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h:
-
-2010-11-25 13:20  eaxelson
-
-	* libhfst/src/FlagDiacritics.cc, libhfst/src/FlagDiacritics.h,
-	  libhfst/src/HfstAlphabet.cc, libhfst/src/HfstAlphabet.h,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/FlagDiacritics.cc,
-	  libhfst/src/implementations/FlagDiacritics.h,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/HfstAlphabet.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/HfstCompiler.h, tools/src/hfst-proc/lookup-path.h: Now
-	  libhfst/src/implementations contains files that modify backend
-	  transducers directly and libhfst/src other files
-
-2010-11-25 12:47  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTokenizer.h, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/Makefile.am: Files moved
-
-2010-11-25 11:41  eaxelson
-
-	* libhfst/src/ExtractStrings.h, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstExceptions.h, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Files
-	  moved
-
-2010-11-25 06:39  moshagen
-
-	* .: More things to ignore.
-
-2010-11-25 05:53  moshagen
-
-	* scripts/Makefile.am, scripts/hfst-foma-wrapper.sh.in,
-	  scripts/hfst-xfst: Set executable bit + line endings.
-
-2010-11-25 05:30  moshagen
-
-	* scripts: Ignore generated files.
-
-2010-11-25 00:59  mie
-
-	* Makefile.am, configure.ac, scripts, scripts/Makefile.am,
-	  scripts/hfst-foma-wrapper.sh.in, scripts/hfst-xfst: Fake
-	  hfst-xfst using foma-wrapper hacks
-
-2010-11-24 18:15  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/Makefile.am, tools/src/HfstCompiler.cc,
-	  tools/src/HfstCompiler.h, tools/src/Makefile.am: HfstCompiler.cc
-	  and HfstCompiler.h added to tools/src/
-
-2010-11-24 17:59  eaxelson
-
-	* libhfst/src/HfstBasic.cc, libhfst/src/HfstBasic.h,
-	  libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/HfstUtf8.cc,
-	  libhfst/src/HfstUtf8.h, libhfst/src/Makefile.am,
-	  libhfst/src/SymbolDefs.cc, libhfst/src/SymbolDefs.h,
-	  libhfst/src/extensions/Makefile.am,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/GlobalSymbolTable.cc,
-	  libhfst/src/implementations/GlobalSymbolTable.h,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SymbolDefs.cc,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-scanner.ll: Files moved.
-
-2010-11-24 14:58  eaxelson
-
-	* tools/src/hfst-lookup.cc: hfst-lookup updated, handling flag
-	  diacritics and multiple paths with the same weights not yet
-	  implemented
-
-2010-11-24 13:23  eaxelson
-
-	* tools/src/hfst-lookup.cc: hfst-lookup no works on unweighted
-	  acyclic transducers
-
-2010-11-24 08:42  moshagen
-
-	* tools/src: Ignore compiled binary tools.
-
-2010-11-24 08:02  mie
-
-	* tools/src/hfst-commandline.cc: set type after exiting error for
-	  mac compiler
-
-2010-11-24 02:27  mie
-
-	* tools/src/hfst-txt2fst.cc: Fix -o handling
-
-2010-11-23 17:44  eaxelson
-
-	* libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  tools/src/hfst-lookup.cc: hfst-lookup implementation continued,
-	  works not yet
-
-2010-11-23 16:37  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  test/tools/format-functionality.sh, tools/src/hfst-format.cc,
-	  tools/src/hfst-lookup.cc: beginning to implement hfst-lookup
-
-2010-11-22 14:44  hardwick
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc:
-	  Recover from make-breaking stupid mistake
-
-2010-11-22 14:37  hardwick
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h: Standardization
-	  of HfstOlTransducer's iostreams
-
-2010-11-22 13:26  eaxelson
-
-	* Doxyfile, libhfst/src/HfstCompiler.cc,
-	  libhfst/src/HfstCompiler.h, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/SymbolDefs.h: just testing that
-	  everything works
-
-2010-11-22 08:08  moshagen
-
-	* libhfst/src/extensions: Ignore generated items.
-
-2010-11-22 01:54  mie
-
-	* configure.ac, libhfst/src/HfstCompiler.cc,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstGrammar.cc,
-	  libhfst/src/HfstGrammar.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstMutableTransducer.h,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am, libhfst/src/extensions/LexcCompiler.cc,
-	  libhfst/src/extensions/LexcCompiler.h,
-	  libhfst/src/extensions/Makefile.am,
-	  libhfst/src/extensions/XfstCompiler.cc,
-	  libhfst/src/extensions/XfstCompiler.h,
-	  libhfst/src/extensions/XreCompiler.cc,
-	  libhfst/src/extensions/XreCompiler.h,
-	  libhfst/src/extensions/lexc-lexer.ll,
-	  libhfst/src/extensions/lexc-parser.yy,
-	  libhfst/src/extensions/lexc-utils.cc,
-	  libhfst/src/extensions/lexc-utils.h,
-	  libhfst/src/extensions/xfst-lexer.ll,
-	  libhfst/src/extensions/xfst-parser.yy,
-	  libhfst/src/extensions/xfst-utils.cc,
-	  libhfst/src/extensions/xfst-utils.h,
-	  libhfst/src/extensions/xre_lex.ll,
-	  libhfst/src/extensions/xre_parse.yy,
-	  libhfst/src/extensions/xre_utils.cc,
-	  libhfst/src/extensions/xre_utils.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LexcCompiler.cc,
-	  libhfst/src/implementations/LexcCompiler.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/XfstCompiler.cc,
-	  libhfst/src/implementations/XfstCompiler.h,
-	  libhfst/src/implementations/XreCompiler.cc,
-	  libhfst/src/implementations/XreCompiler.h,
-	  libhfst/src/implementations/lexc-lexer.ll,
-	  libhfst/src/implementations/lexc-parser.yy,
-	  libhfst/src/implementations/lexc-utils.cc,
-	  libhfst/src/implementations/lexc-utils.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  libhfst/src/implementations/xfst-lexer.ll,
-	  libhfst/src/implementations/xfst-parser.yy,
-	  libhfst/src/implementations/xfst-utils.cc,
-	  libhfst/src/implementations/xfst-utils.h,
-	  libhfst/src/implementations/xre_lex.ll,
-	  libhfst/src/implementations/xre_parse.yy,
-	  libhfst/src/implementations/xre_utils.cc,
-	  libhfst/src/implementations/xre_utils.h, test/libhfst/test.cc,
-	  test/tools/empty-input.sh, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-commandline.h, tools/src/hfst-compare.cc,
-	  tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-determinize.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-format.cc, tools/src/hfst-fst2fst.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-fst2txt.cc,
-	  tools/src/hfst-head.cc, tools/src/hfst-invert.cc,
-	  tools/src/hfst-lookup.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-remove-epsilons.cc,
-	  tools/src/hfst-repeat.cc, tools/src/hfst-reverse.cc,
-	  tools/src/hfst-split.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-subtract.cc,
-	  tools/src/hfst-summarize.cc, tools/src/hfst-tail.cc,
-	  tools/src/hfst-txt2fst.cc: Clean up few minor details
-
-2010-11-18 15:08  eaxelson
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/HfstTokenizer.h: Documentation added.
-
-2010-11-17 14:48  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/SymbolDefs.h: More documentation
-	  added, exceptions divided into subclasses.
-
-2010-11-17 09:31  eaxelson
-
-	* Doxyfile, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h: Documentation
-	  added.
-
-2010-11-17 00:16  mie
-
-	* libhfst/src/implementations/SfstTransducer.cc,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-lookup.cc: Catch stuff to provide meaningful error
-	  messages, provide better error replacement
-
-2010-11-16 14:22  eaxelson
-
-	* Doxyfile, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-compare.cc, tools/src/hfst-strings2fst.cc: Small
-	  changes done, documentation added.
-
-2010-11-15 05:18  mie
-
-	* configure.ac, libhfst/src/HfstTransducer.h,
-	  tools/src/Makefile.am, tools/src/hfst-lookup.cc: Lookup and
-	  related functions
-
-2010-11-14 22:49  mie
-
-	* tools/src/hfst-commandline.cc: Update string_to_format and some
-	  polishing
-
-2010-11-11 14:25  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.h: A
-	  bug in reading transducers with old header format fixed.
-
-2010-11-11 11:54  eaxelson
-
-	* Doxyfile, libhfst/src/HfstApply.cc, libhfst/src/HfstCompiler.cc,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-compiler.yy:
-	  harmonization function optimized
-
-2010-11-11 06:12  moshagen
-
-	* .: Ignore ChangeLog, it is generated.
-
-2010-11-10 23:41  mie
-
-	* configure.ac, tools/src/hfst-commandline.h: don't use bsd err
-	  functions
-
-2010-11-10 13:23  mie
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  return paths even if !HAVE_SFST
-
-2010-11-10 13:14  mie
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/xre_utils.cc: using std::map, have
-	  SFST stuff ifdef'd
-
-2010-11-08 14:08  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-compiler.yy: A name field added to hfst header.
-	  Doxygen documentation updated.
-
-2010-11-05 14:02  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-commandline.h: HfstInputStream changed
-
-2010-11-03 15:28  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h: Missing restriction
-	  rule operators added.
-
-2010-11-03 13:53  moshagen
-
-	* tools/src, tools/src/hfst-proc: Ignore generated source and
-	  binary files.
-
-2010-11-03 12:40  eaxelson
-
-	* libhfst/src/HfstRules.cc: A bug in HfstRules fixed. FEXPORT must
-	  be added in front of foma functions 'sigma_create', 'xxmalloc'
-	  and 'sigma_max' in file fomalibconf.h until new version of foma
-	  is released.
-
-2010-11-01 14:44  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.h, test/tools/split-functionality.sh,
-	  tools/src/hfst-compose-intersect.cc: A bug in HFST header
-	  handling fixed. Todo: update HFST code to work with the newest
-	  version of SFST.
-
-2010-11-01 08:56  moshagen
-
-	* libhfst/src/implementations,
-	  libhfst/src/implementations/optimized-lookup: Ignore more
-	  generated items.
-
-2010-10-31 23:52  mie
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/LexcCompiler.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  tools/src/hfst-lexc-compiler.cc: Fix lexc compiler
-
-2010-10-31 12:28  mie
-
-	* README: Detail GNU bison version and feature requirements
-
-2010-10-31 12:22  mie
-
-	* libhfst/src/implementations/lexc-parser.yy,
-	  libhfst/src/implementations/xfst-parser.yy,
-	  libhfst/src/implementations/xre_parse.yy: Use obsolete syntax for
-	  name-prefix to support slightly older bisons
-
-2010-10-29 15:57  mie
-
-	* configure.ac: More checks for backend installation sanity§
-
-2010-10-29 15:40  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-xfst-compiler.cc: Make compiler tools dependent on
-	  relevant features in library
-
-2010-10-29 15:39  mie
-
-	* README: Also include current foma diffs
-
-2010-10-29 14:50  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/xre_parse.yy,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-compare.cc,
-	  tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-determinize.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-fst2fst.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-fst2txt.cc,
-	  tools/src/hfst-head.cc, tools/src/hfst-invert.cc,
-	  tools/src/hfst-minimize.cc, tools/src/hfst-project.cc,
-	  tools/src/hfst-push-weights.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/hfst-remove-epsilons.cc, tools/src/hfst-repeat.cc,
-	  tools/src/hfst-reverse.cc, tools/src/hfst-split.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-subtract.cc, tools/src/hfst-tail.cc,
-	  tools/src/hfst-txt2fst.cc, tools/src/hfst-xfst-compiler.cc:
-	  Function open() removed from HfstInputStream and
-	  HfstOutputStream. HFST transducer header structure changed.
-
-2010-10-29 12:04  moshagen
-
-	* ., libhfst/src/implementations/optimized-lookup, tools/src,
-	  tools/src/hfst-proc: Ignore generated items.
-
-2010-10-29 11:56  moshagen
-
-	* README: Added MacOS X notes.
-
-2010-10-28 21:36  mie
-
-	* libhfst/src/implementations/SFST,
-	  libhfst/src/implementations/foma: Remove bundled foma and SFST
-
-2010-10-28 16:37  mie
-
-	* configure.ac, games, games/src, tools/src/Makefile.am:
-	  Mergefail→delete duplicate lines
-
-2010-10-28 16:15  mie
-
-	* libhfst/src/implementations/LexcCompiler.cc,
-	  libhfst/src/implementations/LexcCompiler.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/XfstCompiler.cc,
-	  libhfst/src/implementations/XfstCompiler.h,
-	  libhfst/src/implementations/XreCompiler.cc,
-	  libhfst/src/implementations/XreCompiler.h,
-	  libhfst/src/implementations/xfst-lexer.ll,
-	  libhfst/src/implementations/xfst-parser.yy,
-	  libhfst/src/implementations/xfst-utils.cc,
-	  libhfst/src/implementations/xfst-utils.h,
-	  libhfst/src/implementations/xre_parse.yy,
-	  libhfst/src/implementations/xre_utils.cc,
-	  libhfst/src/implementations/xre_utils.h, tools/src/Makefile.am,
-	  tools/src/hfst-xfst-compiler.cc: Add preliminary xfst compiler
-	  for offline compilation of static files
-
-2010-10-28 11:02  mie
-
-	* autogen.sh: Add autogen.sh for problematic oses and systems
-
-2010-10-28 10:35  mie
-
-	* AUTHORS, NEWS, README: Document library backend requirements
-
-2010-10-28 09:58  mie
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-summarize.cc: add replacement strndup and
-	  error_at_line for mac again
-
-2010-10-21 13:06  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/Makefile.am,
-	  test/tools/compose-intersect-functionality.sh: commandline tool
-	  hfst-compose-intersect and test added
-
-2010-10-20 14:17  eaxelson
-
-	* configure.ac, libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  test/tools/Makefile.am, test/tools/calculate-functionality.sh,
-	  test/tools/format-functionality.sh, tools/src/Makefile.am,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-format.cc,
-	  tools/src/inc/getopt-cases-common.h: more tests added to tools,
-	  SFST_TYPE transducer header now has an optional field that tells
-	  if the transducer is minimal
-
-2010-10-19 12:14  eaxelson
-
-	* configure.ac, libhfst/src/implementations/SfstTransducer.cc,
-	  test/tools/Makefile.am, test/tools/calculate-functionality.sh,
-	  test/tools/head-functionality.sh,
-	  test/tools/push-weights-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/tail-functionality.sh, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-split.cc: more tests added to test/tools and small
-	  bugs fixed in commandline programs
-
-2010-10-18 15:28  eaxelson
-
-	* libhfst/src/HfstCompiler.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/Makefile.am, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-summarize.cc: HfstInputStream and HfstOutputStream
-	  now work correctly with tropical and log weight transducers if
-	  their file argument is an empty string
-
-2010-10-14 13:37  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Alphabet
-	  definition in HfstCompiler is now not done through internal
-	  format when using SfstTransducers. This optimization makes
-	  hfst-calculate slightly faster.
-
-2010-10-13 14:56  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: tropical
-	  transducer harmonization code optimized
-
-2010-10-13 12:57  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Moved the
-	  #endif to the actual correct place...
-
-2010-10-13 12:06  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Moved
-	  #endif to correct place. Suggestion: when there's a lot of
-	  distance
-	  between #if and #endif, consider placing a comment after #endif
-	  to indicate
-	  what it's ending (emacs can't figure it out).
-
-2010-10-13 11:59  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.h: Removed
-	  obsolete definitions
-
-2010-10-12 14:06  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc:
-	  transducer harmonization code optimized
-
-2010-10-11 15:55  eaxelson
-
-	* libhfst/src/HfstCompiler.cc,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-
-2010-10-11 10:39  eaxelson
-
-	* libhfst/src/HfstBasic.cc, libhfst/src/HfstBasic.h,
-	  libhfst/src/HfstUtf8.cc, libhfst/src/HfstUtf8.h: missing files
-	  added
-
-2010-10-08 14:32  eaxelson
-
-	* libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-
-2010-10-06 15:32  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-	  HfstCompiler's code optimized
-
-2010-10-04 13:53  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  tools/src/hfst-compiler.yy:
-
-2010-10-01 12:24  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-	  replace_in_context's code optimized
-
-2010-09-30 15:37  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc:
-
-2010-09-29 16:04  eaxelson
-
-	* libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/FomaTransducer.cc:
-
-2010-09-29 13:26  eaxelson
-
-	* libhfst/src/HfstCompiler.cc,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h: Class
-	  'HfstTrie' added for quick disjunction of words in hfst-calculate
-
-2010-09-28 14:52  eaxelson
-
-	* libhfst/src/HfstCompiler.cc,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/SfstTransducer.cc: reading words from
-	  a file should now be faster in hfst-calculate
-
-2010-09-27 14:15  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/HfstAlphabet.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-scanner.ll:
-
-2010-09-24 14:13  eaxelson
-
-	* libhfst/src/HfstCompiler.cc:
-
-2010-09-23 14:44  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/InternalTransducer.cc: a bug in
-	  hfst-calculate's 'make_mapping' fixed
-
-2010-09-22 15:36  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-scanner.ll: now
-	  hfst-calculate does not unnecessarily handle unknown symbols in
-	  composition
-
-2010-09-21 14:38  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/HfstAlphabet.h,
-	  libhfst/src/implementations/InternalTransducer.cc: A bug in
-	  alphabet definition in hfst-calculate fixed. It seems that
-	  handling unknown and identity symbols in composition is very slow
-	  for some reason.
-
-2010-09-20 14:11  eaxelson
-
-	* libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/HfstAlphabet.cc: A bug in
-	  HfstCompiler::complement_range fixed
-
-2010-09-17 14:58  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  tools/src/hfst-compiler.yy: HfstCompiler::new_transducer is now
-	  faster
-
-2010-09-15 15:39  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  test/libhfst/test.cc, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-summarize.cc: some bugs
-	  in command line programs fixed
-
-2010-09-14 13:54  eaxelson
-
-	* configure.ac, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  test/tools/fst2txt-functionality.sh, tools/src/hfst-fst2txt.cc,
-	  tools/src/hfst-summarize.cc: some bugs fixed in tests and hfst
-	  library
-
-2010-09-14 11:27  eaxelson
-
-	* test/tools/2to4cats.txt, test/tools/4_cats.txt,
-	  test/tools/4cats.txt: 4cats.txt now contains a transducer
-	  accepting 4 consecutive 'cat's, and 4_cats.txt contains 4
-	  consecutive transducers that each accept 'cat'.
-
-2010-09-13 14:42  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-txt2fst.cc: a bug in
-	  function 'harmonize' fixed
-
-2010-09-10 14:22  moshagen
-
-	* ., tools/src, tools/src/hfst-proc: Ignore generated autotools
-	  stuff.
-
-2010-09-10 12:17  mie
-
-	* tools/src/Makefile.am, tools/src/inc/getopt-cases-unary.h: Commit
-	  missing inputNamed
-
-2010-09-08 15:14  eaxelson
-
-	* configure.ac, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/xre_utils.cc,
-	  libhfst/src/implementations/xre_utils.h: hfst now compiles with
-	  all combinations of available backend libraries
-
-2010-09-07 11:58  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h:
-
-2010-09-06 18:46  mie
-
-	* libhfst/hfst.pc.in, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-scanner.ll: Make
-	  --without-foma work
-
-2010-09-06 13:13  hardwick
-
-	* tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-optimized-lookup.h: optimized-lookup bigfix wrt
-	  weights in flagged transducers
-
-2010-09-02 15:36  eaxelson
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SymbolDefs.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/Makefile.am: Function HfstTransducer::push_weights
-	  added. Foma is now dynamically linked to hfst, option
-	  -fvisibility must not be used when compiling foma, because then
-	  some of foma's functions will not be visible to hfst.
-
-2010-09-02 13:20  mie
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.h:
-	  Tentatively implement HFST 2 format
-
-2010-09-01 01:55  mie
-
-	* tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-split.cc,
-	  tools/src/hfst-txt2fst.cc, tools/src/inc/check-params-common.h,
-	  tools/src/inc/check-params-unary.h,
-	  tools/src/inc/getopt-cases-binary.h,
-	  tools/src/inc/getopt-cases-common.h,
-	  tools/src/inc/getopt-cases-unary.h,
-	  tools/src/inc/globals-binary.h, tools/src/inc/globals-common.h,
-	  tools/src/inc/globals-unary.h: move things around
-
-2010-08-31 22:56  mie
-
-	* libhfst/src/HfstTransducer.h, test/tools/c_a_t.strings,
-	  test/tools/strings2fst-functionality.sh,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-strings2fst.cc: Add
-	  space separated strings2fst; parse - as filename in hfst_fopen
-
-2010-08-31 15:37  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/HfstAlphabet.h,
-	  libhfst/src/implementations/SFST/src/alphabet.C,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  tools/src/hfst-compiler.yy: hfst now works without making any
-	  changes in sfst files
-
-2010-08-29 22:36  mie
-
-	* configure.ac,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-lexc-compiler.cc: Configuring out broken parts
-
-2010-08-29 18:19  mie
-
-	* Makefile.am, configure.ac,
-	  libhfst/src/implementations/LexcCompiler.cc,
-	  libhfst/src/implementations/LexcCompiler.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/lexc-lexer.ll,
-	  libhfst/src/implementations/lexc-parser.yy,
-	  libhfst/src/implementations/lexc-utils.cc,
-	  libhfst/src/implementations/lexc-utils.h,
-	  tools/src/LexcCompiler.cc, tools/src/LexcCompiler.h,
-	  tools/src/Makefile.am, tools/src/hfst-lexc-compiler.cc: Add
-	  preliminary lexc compiler
-
-2010-08-29 17:18  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  tools/src/hfst-summarize.cc: HfstMutableTransducer defined in
-	  namespace hfst, small bugs fixed in TropicalWeightTransducer
-
-2010-08-29 12:13  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: unknown and identity symbols are
-	  now handled correctly in composition
-
-2010-08-28 18:38  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/HfstAlphabet.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  tools/src/hfst-summarize.cc: HfstMutableTransducer replaced with
-	  HfstInternalTransducer
-
-2010-08-28 14:11  mie
-
-	* libhfst/src/implementations/XreCompiler.h: Document the XRE
-	  compiler
-
-2010-08-28 10:11  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h: functions that
-	  read and write in AT&T format now use HfstInternalFormat
-
-2010-08-27 16:17  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-scanner.ll: some
-	  modifications made to HfstInternalTransducer
-
-2010-08-26 14:14  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h: freely_insert and
-	  substitute functions now do not depend on any specific library.
-	  They must still be tested.
-
-2010-08-25 14:49  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h: some functions
-	  added to HfstInternalTransducer
-
-2010-08-25 11:36  mie
-
-	* configure.ac, libhfst/src/extensions,
-	  libhfst/src/implementations/xre_lex.ll,
-	  libhfst/src/implementations/xre_utils.cc: invert XRE autoconf
-	  logic
-
-2010-08-25 11:14  eaxelson
-
-	* libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/HfstAlphabet.h,
-	  libhfst/src/implementations/InternalTransducer.cc: missing files
-	  added
-
-2010-08-25 10:45  eaxelson
-
-	* libhfst/src/HfstCompiler.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h:
-	  conversions between internal transducers and sfst, tropical and
-	  foma transducers implemented
-
-2010-08-25 00:54  mie
-
-	* configure.ac, libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/XreCompiler.cc,
-	  libhfst/src/implementations/XreCompiler.h,
-	  libhfst/src/implementations/xre_lex.ll,
-	  libhfst/src/implementations/xre_parse.yy,
-	  libhfst/src/implementations/xre_utils.cc,
-	  libhfst/src/implementations/xre_utils.h, test/tools/Makefile.am,
-	  test/tools/cats_and_dogs.xre,
-	  test/tools/regexp2fst-functionality.sh,
-	  tools/src/hfst-regexp2fst.cc: Enable XRE parser
-
-2010-08-24 14:24  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SFST/src/fst.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/Makefile.am: conversions between SFST and internal
-	  transducers added
-
-2010-08-23 23:25  mie
-
-	* tools/src/hfst-summarize.cc: summarize more statistics
-
-2010-08-23 16:59  mie
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.h: Wrap
-	  backends around autoconf have_
-
-2010-08-23 16:26  mie
-
-	* configure.ac, tools/src/hfst-compose-intersect.cc: Enable basic
-	  compose-intersect again; no flags, no #'s
-
-2010-08-23 14:07  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/Makefile.am: HFST code updated so that it works with
-	  OpenFst version 1.2. New internal transducer format added.
-
-2010-08-22 22:58  mie
-
-	* configure.ac,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-commandline.h, tools/src/hfst-fst2strings.cc: fix
-	  signs when wno-sign-compare fails
-
-2010-08-22 22:56  mie
-
-	* tools/src/hfst-proc/Makefile, tools/src/hfst-proc/Makefile.in,
-	  tools/src/hfst-proc/hfst-proc: Delete generated files
-
-2010-08-19 15:47  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/Makefile.am, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-scanner.ll: Now hfst-calculate does not depend on
-	  SFST.
-
-2010-08-18 13:43  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  tools/src/hfst-compiler.yy: hfst-calculate now does not depend on
-	  SFST, function implementations not yet written
-
-2010-08-16 15:54  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-proc/Makefile,
-	  tools/src/hfst-proc/hfst-proc: a bug in substitute(StringPair,
-	  HfstTransducer) fixed, agreement variables added to
-	  hfst-calculate
-
-2010-08-15 18:28  bcroom
-
-	* test/tools/Makefile.am, test/tools/hfst-check-help.sh,
-	  test/tools/hfst-check-version.sh, test/tools/proc-caps.txt,
-	  test/tools/proc-cat-out.strings,
-	  test/tools/proc-cat-weighted-out.strings,
-	  test/tools/proc-functionality.sh: Add some functionality tests
-	  for hfst-proc
-
-2010-08-15 18:27  bcroom
-
-	* tools/src/hfst-proc.cc, tools/src/hfst_proc.cc,
-	  tools/src/hfst_proc.h: Remove obsolete source files of hfst-proc
-	  predecessors
-
-2010-08-15 18:27  bcroom
-
-	* test/tools/proc-caps-in.strings,
-	  test/tools/proc-caps-out1.strings,
-	  test/tools/proc-caps-out2.strings,
-	  test/tools/proc-caps-out3.strings,
-	  test/tools/proc-caps-out4.strings, test/tools/proc-caps.txt,
-	  tools/src/hfst-proc/lookup-path.cc: Fix bug causing final weights
-	  not to be included in weight calculations
-
-2010-08-15 18:26  bcroom
-
-	* tools/src/hfst-proc/flag-diacritics.cc,
-	  tools/src/hfst-proc/flag-diacritics.h,
-	  tools/src/hfst-proc/transducer.h: Remove obsolete flag diacritics
-	  code from hfst-proc
-
-2010-08-15 18:25  bcroom
-
-	* libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/hfst-proc/alphabet.cc, tools/src/hfst-proc/alphabet.h,
-	  tools/src/hfst-proc/applicators.cc,
-	  tools/src/hfst-proc/applicators.h,
-	  tools/src/hfst-proc/formatter.cc,
-	  tools/src/hfst-proc/formatter.h,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/hfst-proc.h,
-	  tools/src/hfst-proc/lookup-path.cc,
-	  tools/src/hfst-proc/lookup-path.h,
-	  tools/src/hfst-proc/lookup-state.cc,
-	  tools/src/hfst-proc/lookup-state.h,
-	  tools/src/hfst-proc/tokenizer.cc,
-	  tools/src/hfst-proc/tokenizer.h,
-	  tools/src/hfst-proc/transducer.cc,
-	  tools/src/hfst-proc/transducer.h: Add license information to
-	  hfst-proc and optimized-lookup files
-
-2010-08-15 18:24  bcroom
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Modify
-	  the extract_strings algorithm to avoid the non-standard
-	  std::vector::data() for older GCCs
-
-2010-08-15 18:24  bcroom
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/FlagDiacritics.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  man/Makefile.am, man/hfst-proc.1, tools/src/Makefile.am,
-	  tools/src/hfst-proc, tools/src/hfst-proc/Makefile,
-	  tools/src/hfst-proc/Makefile.am, tools/src/hfst-proc/Makefile.in,
-	  tools/src/hfst-proc/alphabet.cc, tools/src/hfst-proc/alphabet.h,
-	  tools/src/hfst-proc/applicators.cc,
-	  tools/src/hfst-proc/applicators.h, tools/src/hfst-proc/buffer.h,
-	  tools/src/hfst-proc/flag-diacritics.cc,
-	  tools/src/hfst-proc/flag-diacritics.h,
-	  tools/src/hfst-proc/formatter.cc,
-	  tools/src/hfst-proc/formatter.h, tools/src/hfst-proc/hfst-proc,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/hfst-proc.h,
-	  tools/src/hfst-proc/lookup-path.cc,
-	  tools/src/hfst-proc/lookup-path.h,
-	  tools/src/hfst-proc/lookup-state.cc,
-	  tools/src/hfst-proc/lookup-state.h,
-	  tools/src/hfst-proc/tokenizer.cc,
-	  tools/src/hfst-proc/tokenizer.h,
-	  tools/src/hfst-proc/transducer.cc,
-	  tools/src/hfst-proc/transducer.h: Perform initial migration of
-	  hfst-proc into its new home in the proper HFST tools directory,
-	  while refactoring to share as much code as possible with the
-	  optimized-lookup library backend
-
-2010-08-15 18:22  bcroom
-
-	* tools/src/hfst-fst2strings.cc: Add 'exclude' option to
-	  hfst-fst2strings
-
-2010-08-13 14:32  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-
-2010-08-13 08:39  mpsilfve
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Fixed
-	  memory leaks in harmonize
-
-2010-08-13 08:00  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightComposeIntersect.cc,
-	  libhfst/src/implementations/TropicalWeightComposeIntersect.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Added
-	  libhfst/src/implementations/TropicalWeightComposeIntersect.h and
-	  libhfst/src/implementations/TropicalWeightComposeIntersect.cc
-
-2010-08-12 16:45  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/SFST/src/alphabet.C,
-	  libhfst/src/implementations/SFST/src/interface.C,
-	  libhfst/src/implementations/SFST/src/interface.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/SymbolDefs.cc,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-compiler.yy: Composition can soon handle identity
-	  and unknown symbols correctly. Substitute can now also modify
-	  symbol pairs through a function pointer.
-
-2010-08-12 06:06  bcroom
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-fst2strings.cc: Refactor extract_strings to invoke
-	  a callback on paths, allowing neat features in hfst-fst2strings
-
-2010-08-12 06:06  bcroom
-
-	* AUTHORS, THANKS: Credit self in AUTHORS
-
-2010-08-10 15:04  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/SFST/src/Makefile,
-	  libhfst/src/implementations/SFST/src/Socket.h,
-	  libhfst/src/implementations/SFST/src/Transducer.h,
-	  libhfst/src/implementations/SFST/src/alphabet.C,
-	  libhfst/src/implementations/SFST/src/alphabet.h,
-	  libhfst/src/implementations/SFST/src/basic.C,
-	  libhfst/src/implementations/SFST/src/basic.h,
-	  libhfst/src/implementations/SFST/src/compact.C,
-	  libhfst/src/implementations/SFST/src/compact.h,
-	  libhfst/src/implementations/SFST/src/default-scanner.C,
-	  libhfst/src/implementations/SFST/src/default-scanner.ll,
-	  libhfst/src/implementations/SFST/src/determinise.C,
-	  libhfst/src/implementations/SFST/src/expand.C,
-	  libhfst/src/implementations/SFST/src/fst-compact.C,
-	  libhfst/src/implementations/SFST/src/fst-compare.C,
-	  libhfst/src/implementations/SFST/src/fst-compiler.C,
-	  libhfst/src/implementations/SFST/src/fst-compiler.yy,
-	  libhfst/src/implementations/SFST/src/fst-generate.C,
-	  libhfst/src/implementations/SFST/src/fst-infl.C,
-	  libhfst/src/implementations/SFST/src/fst-infl2-daemon.C,
-	  libhfst/src/implementations/SFST/src/fst-infl2.C,
-	  libhfst/src/implementations/SFST/src/fst-infl3.C,
-	  libhfst/src/implementations/SFST/src/fst-lattice.C,
-	  libhfst/src/implementations/SFST/src/fst-lowmem.C,
-	  libhfst/src/implementations/SFST/src/fst-match.C,
-	  libhfst/src/implementations/SFST/src/fst-mor.C,
-	  libhfst/src/implementations/SFST/src/fst-parse.C,
-	  libhfst/src/implementations/SFST/src/fst-parse2.C,
-	  libhfst/src/implementations/SFST/src/fst-print.C,
-	  libhfst/src/implementations/SFST/src/fst-text2bin.C,
-	  libhfst/src/implementations/SFST/src/fst-train.C,
-	  libhfst/src/implementations/SFST/src/fst.C,
-	  libhfst/src/implementations/SFST/src/fst.h,
-	  libhfst/src/implementations/SFST/src/generate.C,
-	  libhfst/src/implementations/SFST/src/interface.C,
-	  libhfst/src/implementations/SFST/src/interface.h,
-	  libhfst/src/implementations/SFST/src/lowmem.C,
-	  libhfst/src/implementations/SFST/src/lowmem.h,
-	  libhfst/src/implementations/SFST/src/make-compact.C,
-	  libhfst/src/implementations/SFST/src/make-compact.h,
-	  libhfst/src/implementations/SFST/src/mem.h,
-	  libhfst/src/implementations/SFST/src/operators.C,
-	  libhfst/src/implementations/SFST/src/robust.C,
-	  libhfst/src/implementations/SFST/src/scanner.ll,
-	  libhfst/src/implementations/SFST/src/utf8-scanner.ll,
-	  libhfst/src/implementations/SFST/src/utf8.C,
-	  libhfst/src/implementations/SFST/src/utf8.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  tools/src/hfst-compiler.yy: SFST updated to new test version,
-	  some modifications still needed to HFST library so that it will
-	  work with the new version
-
-2010-08-09 19:31  mie
-
-	* tools/src/hfst-substitute.cc: error_at_line for parsing errors
-
-2010-08-09 19:15  mie
-
-	* tools/src/hfst-substitute.cc: Allow empty lines and comment lines
-	  starting with # except when followed
-	  by a tab.
-
-2010-08-09 18:49  mie
-
-	* configure.ac, test/tools/Makefile.am,
-	  test/tools/summarize-functionality.sh, tools/src/Makefile.am,
-	  tools/src/hfst-summarize.cc: Add the basic summarize
-	  functionality and the test
-
-2010-08-06 14:49  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstRules.cc, tools/src/hfst-compiler.yy: rule
-	  operators added to hfst-calculate
-
-2010-08-06 09:50  mie
-
-	* test/tools/Makefile.am, test/tools/fst2txt-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/txt2fst-functionality.sh: More functionlaity tests
-
-2010-08-06 06:43  bcroom
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SFST/src/fst.h,
-	  libhfst/src/implementations/SFST/src/generate.C,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-fst2strings.cc: Reimplement extract_strings in all
-	  backends with cycle-limiting functionality
-
-2010-08-05 23:00  mie
-
-	* test/tools/Makefile.am, test/tools/cat2dog.substitute,
-	  tools/src/hfst-substitute.cc: substitute and test
-
-2010-08-05 16:29  mie
-
-	* test/tools/Makefile.am, test/tools/empty-input.sh,
-	  test/tools/fst2strings-functionality.sh: Add test for fst2stings
-
-2010-08-05 15:04  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstTransducer.h, tools/src/hfst-compiler.yy: more
-	  functions added to hfst-calculate
-
-2010-08-05 12:28  mie
-
-	* test/tools/empty-input.sh: Ubuntu (dash?) workaround
-
-2010-08-05 12:27  mie
-
-	* tools/src/hfst-commandline.h, tools/src/hfst-strings2fst.cc,
-	  tools/src/inc/check-params-unary.h: Make string pair
-	  implementation work
-
-2010-08-05 07:26  mie
-
-	* ., man, test/tools, tools/src: Ignore generated files§
-
-2010-08-05 07:17  mie
-
-	* tools/src/LexcCompiler.cc, tools/src/LexcCompiler.h,
-	  tools/src/hfst-lexc-compiler.cc: Add lexc compiler's old skeleton
-
-2010-08-05 00:34  bcroom
-
-	* libhfst/src/implementations/SFST/src/generate.C: Reverse how the
-	  upper and lower strings are stored during string extraction in
-	  the SFST backend
-
-2010-08-05 00:34  bcroom
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h: Implement string
-	  extraction in the optimized-lookup backend
-
-2010-08-05 00:34  bcroom
-
-	* libhfst/src/HfstInputStream.cc: Fix a compiler warning about
-	  missing a return statement
-
-2010-08-05 00:34  bcroom
-
-	* libhfst/src/implementations/FlagDiacritics.h: Remove debug output
-	  that should never have been committed
-
-2010-08-04 22:01  bcroom
-
-	* libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Fix
-	  calculation of several header properties during conversion
-
-2010-08-04 17:46  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  tools/src/hfst-compiler.yy: more functions added to
-	  hfst-calculate
-
-2010-08-04 14:28  mie
-
-	* doc/transducer-representations-formats.rst: Start a document on
-	  formats
-
-2010-08-04 11:25  mie
-
-	* test/tools/Makefile.am, test/tools/cat.strings,
-	  test/tools/strings2fst-functionality.sh,
-	  tools/src/hfst-strings2fst.cc: test strings2fst and fail
-
-2010-08-03 22:37  mie
-
-	* libhfst/src/HfstTransducer.cc: Rollback bogus repeat throw
-
-2010-08-02 22:04  mie
-
-	* libhfst/src/HfstTransducer.cc: comment out broken repeats
-
-2010-08-02 20:53  mie
-
-	* test/tools/Makefile.am, test/tools/permutate-file-params.sh,
-	  tools/src/hfst-conjunct.cc, tools/src/inc/check-params-binary.h,
-	  tools/src/inc/getopt-cases-binary.h,
-	  tools/src/inc/globals-binary.h: Fix bug in binary op parameter
-	  handling and add test for it
-
-2010-08-02 18:55  mie
-
-	* test/tools/project-functionality.sh: Invert upper and lower to
-	  follow upside-down terminology of HFST
-
-2010-08-02 18:54  mie
-
-	* tools/src/Makefile.am, tools/src/hfst-commandline.h,
-	  tools/src/hfst-program-options.h, tools/src/hfst-project.cc,
-	  tools/src/inc/check-params-unary.h,
-	  tools/src/inc/getopt-cases-error.h: Fix no parameters parsing for
-	  unary tools and project
-
-2010-08-02 16:55  mie
-
-	* test/tools/Makefile.am, test/tools/compare-functionality.sh,
-	  test/tools/compose-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/subtract-functionality.sh: Test basic algebra
-
-2010-08-02 15:38  mie
-
-	* test/tools/Makefile.am, test/tools/compare-functionality.sh,
-	  test/tools/concatenate-functionality.sh: functionality test for
-	  concatenate
-
-2010-08-02 15:15  mie
-
-	* test/tools/0to3cats.txt, test/tools/2to4cats.txt,
-	  test/tools/4cats.txt, test/tools/4toINFcats.txt,
-	  test/tools/CAT_uppercased.txt, test/tools/CAT_uppercased2cat.txt,
-	  test/tools/Makefile.am, test/tools/cat+dog.txt,
-	  test/tools/cat.txt, test/tools/cat2CAT_uppercased.txt,
-	  test/tools/cat2cat_or_CAT_uppercased.txt, test/tools/cat2dog.txt,
-	  test/tools/cat_or_dog.txt, test/tools/cat_weight_final.txt,
-	  test/tools/cat_weight_initial.txt,
-	  test/tools/cat_weight_middle.txt, test/tools/catdog.txt,
-	  test/tools/dog.txt, test/tools/dog2cat.txt,
-	  test/tools/infinitely_ambiguous.txt, test/tools/non_minimal.txt,
-	  test/tools/rule1.txt, test/tools/rule2.txt,
-	  test/tools/summarize_test1.txt, test/tools/summarize_test2.txt,
-	  test/tools/tac.txt: Add text based transducers for functionality
-	  tests
-
-2010-08-02 15:12  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-summarize.cc,
-	  tools/src/hfst-txt2fst.cc: Fix fst2strings to use
-	  set_program_name and rest of the basic tools
-
-2010-08-02 14:38  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/implementations/SFST/src/alphabet.C,
-	  libhfst/src/implementations/SFST/src/interface.C,
-	  libhfst/src/implementations/SFST/src/interface.h,
-	  tools/src/Makefile.am, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-scanner.ll: small changes done in functions that
-	  are needed for hfst-calculate
-
-2010-08-02 14:07  mie
-
-	* test/tools/Makefile.am, test/tools/empty-file,
-	  test/tools/empty-input.sh: Check handling of empty input file for
-	  all tools
-
-2010-08-01 20:39  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-commandline.cc: Default to -Wall -Wextra -Werror
-	  for developers
-
-2010-08-01 19:31  mie
-
-	* configure.ac, tools/src/hfst-commandline.h,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-txt2fst.cc,
-	  tools/src/inc/globals-common.h, tools/src/inc/globals-unary.h:
-	  Convert txt2fst;
-	  * use const for global char-*
-	  * default stdin, stdout for global FILE*
-
-2010-08-01 18:39  bcroom
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FlagDiacritics.cc,
-	  libhfst/src/implementations/FlagDiacritics.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SFST/src/fst.h,
-	  libhfst/src/implementations/SFST/src/generate.C,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-fst2strings.cc: Add initial support for evaluating
-	  and filtering flag diacritics when extracting transducer paths
-
-2010-08-01 18:38  bcroom
-
-	* libhfst/src/implementations/FlagDiacritics.cc,
-	  libhfst/src/implementations/FlagDiacritics.h,
-	  libhfst/src/implementations/Makefile.am: Add a class for dealing
-	  with flag diacritics in string extraction
-
-2010-08-01 18:38  bcroom
-
-	* configure.ac, tools/src/hfst-fst2strings.cc: Port and enable
-	  fst2strings
-
-2010-08-01 18:37  bcroom
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h: Hook up is_cyclic
-	  for the optimized-lookup backend
-
-2010-07-28 12:01  mie
-
-	* tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-project.cc: Use warn and err if warnc, errc, error
-	  are not available
-
-2010-07-28 11:35  mie
-
-	* Makefile.am, configure.ac, lib, m4/gnulib-cache.m4,
-	  man/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-binary-tool.cc, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-commandline.h, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-program-options.cc,
-	  tools/src/hfst-subtract.cc, tools/src/inc/globals-common.h:
-	  Instead of gnulib-tool, handle gnulib manually
-
-2010-07-27 01:41  mie
-
-	* tools/src/inc/check-params-unary.h: Missing file
-
-2010-07-27 01:30  mie
-
-	* m4/gnulib-cache.m4: Gnulib weirdness?
-
-2010-07-27 01:15  mie
-
-	* HACKING, configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-binary-tool.cc, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-commandline.h, tools/src/hfst-common-cases.h,
-	  tools/src/hfst-common-options.h,
-	  tools/src/hfst-common-unary-cases.h,
-	  tools/src/hfst-common-unary-options.h,
-	  tools/src/hfst-common-unary-variables.h,
-	  tools/src/hfst-compare.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-determinize.cc, tools/src/hfst-diff-test.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-flag-diacritics.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2pairstrings.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-fst2txt.cc,
-	  tools/src/hfst-head.cc, tools/src/hfst-invert.cc,
-	  tools/src/hfst-lookup-optimize.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-minimize.cc, tools/src/hfst-omor-evaluate.cc,
-	  tools/src/hfst-proc.cc, tools/src/hfst-program-options.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-remove-epsilons.cc,
-	  tools/src/hfst-repeat.cc, tools/src/hfst-reverse.cc,
-	  tools/src/hfst-split.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-strip-header.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-subtract.cc, tools/src/hfst-summarize.cc,
-	  tools/src/hfst-symbols.cc, tools/src/hfst-tail.cc,
-	  tools/src/hfst-txt2fst.cc, tools/src/hfst-unary-tool.cc,
-	  tools/src/inc/binary-check-params.h,
-	  tools/src/inc/check-params-binary.h,
-	  tools/src/inc/check-params-common.h,
-	  tools/src/inc/common-check-params.h,
-	  tools/src/inc/getopt-cases-common.h,
-	  tools/src/inc/getopt-cases-error.h,
-	  tools/src/inc/getopt-cases-unary.h,
-	  tools/src/inc/globals-unary.h: Convert some simpler command line
-	  tools to HFST3 (preliminary)
-
-2010-07-26 12:05  mie
-
-	* Makefile.am, configure.ac, lib, lib/Makefile.am,
-	  lib/arg-nonnull.h, lib/c++defs.h, lib/errno.in.h, lib/error.c,
-	  lib/error.h, lib/exitfail.c, lib/exitfail.h, lib/getdelim.c,
-	  lib/getline.c, lib/getopt.c, lib/getopt.h, lib/getopt.in.h,
-	  lib/getopt1.c, lib/getopt_int.h, lib/gettext.h, lib/intprops.h,
-	  lib/inttypes.h, lib/inttypes.in.h, lib/memchr.c,
-	  lib/memchr.valgrind, lib/progname.c, lib/progname.h,
-	  lib/realloc.c, lib/stdarg.in.h, lib/stdbool.in.h,
-	  lib/stddef.in.h, lib/stdint.h, lib/stdint.in.h,
-	  lib/stdio-write.c, lib/stdio.h, lib/stdio.in.h, lib/stdlib.h,
-	  lib/stdlib.in.h, lib/strerror.c, lib/string.h, lib/string.in.h,
-	  lib/strndup.c, lib/strnlen.c, lib/unistd.h, lib/unistd.in.h,
-	  lib/warn-on-use.h, lib/wchar.h, lib/wchar.in.h, lib/xalloc-die.c,
-	  lib/xalloc.h, lib/xmalloc.c, lib/xprintf.c, lib/xprintf.h,
-	  lib/xstrndup.c, lib/xstrndup.h, lib/xstrtod.c, lib/xstrtod.h,
-	  lib/xstrtol-error.c, lib/xstrtol.c, lib/xstrtol.h,
-	  lib/xstrtoul.c, test/tools/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-common-cases.h, tools/src/hfst-common-options.h,
-	  tools/src/hfst-common-unary-cases.h,
-	  tools/src/hfst-common-unary-options.h,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-program-options.cc,
-	  tools/src/hfst-program-options.h, tools/src/inc,
-	  tools/src/inc/binary-check-params.h,
-	  tools/src/inc/common-check-params.h,
-	  tools/src/inc/getopt-cases-binary.h,
-	  tools/src/inc/getopt-cases-error.h,
-	  tools/src/inc/globals-binary.h, tools/src/inc/globals-common.h:
-	  Perhaps gnulib for portability problems? Temp. disabled few
-	  tools.
-
-2010-07-25 00:46  mie
-
-	* configure.ac, test/Makefile.am, test/tools/Makefile.am,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Few sample tests for tools in automated tests
-
-2010-07-25 00:04  mie
-
-	* libhfst/m4, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/GlobalSymbolTable.cc,
-	  libhfst/src/implementations/GlobalSymbolTable.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/LogFstTrieFunctions.cc,
-	  libhfst/src/implementations/LogFstTrieFunctions.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/SymbolDefs.cc,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/Makefile.am, tools/m4, tools/src/calculate_functions.h,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-common-cases.h, tools/src/hfst-common-options.h,
-	  tools/src/hfst-common-unary-cases.h,
-	  tools/src/hfst-common-unary-options.h,
-	  tools/src/hfst-common-unary-variables.h: Include licensing blurb
-	  in every single file since it's very important
-
-2010-07-24 23:37  mie
-
-	* HACKING, README, configure.ac, tools/Makefile.am: Update docs a
-	  bit
-
-2010-07-22 00:14  mie
-
-	* Makefile.am, configure.ac, libhfst/Makefile.am,
-	  libhfst/configure.ac, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/foma/determinize.c,
-	  tools/Makefile.am, tools/configure.ac: First steps towards
-	  unbundling backend libraries
-
-2010-07-17 07:40  bcroom
-
-	* libhfst/src/implementations/optimized-lookup/convert.cc: Remove
-	  debug output inadvertently left enabled
-
-2010-07-17 07:39  bcroom
-
-	* libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Fix
-	  sign-problem causing format-guessing for OFST transducers to fail
-
-2010-07-16 20:52  bcroom
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Add
-	  support for converting to the HFST optimized-lookup format
-
-2010-07-14 19:45  bcroom
-
-	* tools/src/hfst-fst2fst.cc: Add support for the
-	  HFST-optimized-lookup implementation in the tool for format
-	  conversion
-
-2010-07-14 19:45  bcroom
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h: Add
-	  support for the new implementation in the interface files
-
-2010-07-14 19:45  bcroom
-
-	* libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Modify
-	  the semantics of the InputStream function is_good in the OFST
-	  implementations to match those in the SFST and foma
-	  implementations
-
-2010-07-14 19:44  bcroom
-
-	* libhfst/src/implementations/Makefile.am: Update makefile for
-	  building the new backend
-
-2010-07-14 19:44  bcroom
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h: Add
-	  conversion HFST-optimized-lookup -> OFST Tropical Weight
-
-2010-07-14 19:44  bcroom
-
-	* libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h: Initial commit of
-	  bridge classes for the HFST-optimized-lookup backend
-
-2010-07-14 19:43  bcroom
-
-	* libhfst/src/implementations/optimized-lookup,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Initial commit of an HFST-optimized-lookup backend
-
-2010-07-05 06:24  bcroom
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Add
-	  is_cyclic to the transducer API and implementations
-
-2010-07-03 05:21  bcroom
-
-	* tools/configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-strip-header.cc: Add hfst-strip-header tool for
-	  removing any HFST3 headers from a file
-
-2010-07-03 05:13  bcroom
-
-	* tools/src/hfst-compare.cc: Port hfst-compare to the new library
-
-2010-07-03 05:11  bcroom
-
-	* tools/src/hfst-fst2fst.cc: Pass the correct output type when
-	  creating the output stream
-
-2010-07-02 11:49  eaxelson
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/HfstTokenizer.h:
-
-2010-06-30 14:28  bcroom
-
-	* tools/configure.ac, tools/src/hfst-fst2txt.cc: Port hfst-fst2txt
-
-2010-06-30 14:27  bcroom
-
-	* tools/src/hfst-concatenate.cc, tools/src/hfst-fst2fst.cc,
-	  tools/src/hfst-invert.cc: Fix the already-ported tools to
-	  properly handle IO using the standard streams
-
-2010-06-30 13:27  bcroom
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.h: Add
-	  ability to read the type of the first transducer in an
-	  HfstInputStream without first having created a transducer from it
-
-2010-06-30 12:53  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  tools/src/hfst-compiler.yy:
-
-2010-06-30 11:31  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SFST/src/Makefile,
-	  libhfst/src/implementations/SFST/src/interface.C,
-	  tools/src/hfst-compiler.yy: HfstCompiler class added
-
-2010-06-29 04:22  bcroom
-
-	* tools/src/hfst-fst2fst.cc: Fix fst2fst to correctly handle inputs
-	  with multiple transducers
-
-2010-06-29 04:21  bcroom
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.h:
-	  Teach HfstInputStream how to deal with inputs containing multiple
-	  transducers, of which none have HFST3 headers
-
-2010-06-29 03:46  bcroom
-
-	* tools/configure.ac, tools/src/hfst-invert.cc: Port hfst-invert to
-	  HFST3
-
-2010-06-28 19:53  bcroom
-
-	* tools/configure.ac, tools/src/hfst-fst2fst.cc: Port hfst-fst2fst
-	  to work with HFST3
-
-2010-06-28 19:51  bcroom
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.h: Add
-	  support in HfstInputStream for loading transducers lacking the
-	  HFST3 header
-
-2010-06-28 19:50  bcroom
-
-	* libhfst/src/implementations/FomaTransducer.cc: Make foma
-	  transducer type guesser able to detect non-gzipped transducers as
-	  well
-
-2010-06-28 19:48  bcroom
-
-	* tools/src/hfst-concatenate.cc: Add call to open the output stream
-	  so the tool doesn't crash
-
-2010-06-28 14:50  bcroom
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Add
-	  static methods to the InputStream implementations allowing to
-	  check whether a FILE* or istream contains a transducer of a give
-	  type
-
-2010-06-28 14:29  bcroom
-
-	* tools/src/hfst-commandline.cc: Remove HFST2 include from file
-	  with helper functions for tools
-
-2010-06-28 13:51  eaxelson
-
-	* configure.ac, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/SFST/src/Makefile,
-	  libhfst/src/implementations/SFST/src/hfst-compiler.yy,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-scanner.ll:
-	  hfst-calculate files updated to hfst version 3. At the moment,
-	  hfst-calculate only parses single transition expressions and
-	  produces a dummy transducer as a result.
-
-2010-06-24 13:00  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SFST/src/hfst-compiler.yy,
-	  libhfst/src/implementations/SFST/src/operators.C,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/libhfst/test.cc: anonymous transducer constructors added
-
-2010-06-18 10:26  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Added HfstTransducer &operator=(const HfstTransducer &)
-
-2010-06-15 12:49  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/SFST/src/hfst-compiler.yy,
-	  test/libhfst/test.cc: hfst-compiler.yy added
-
-2010-06-14 14:32  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/libhfst/test.cc: more rule operator functions implemented
-
-2010-06-10 19:13  eaxelson
-
-	* libhfst/src/HfstRules.cc, test/libhfst/test.cc:
-
-2010-06-10 18:03  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/libhfst/test.cc: 'HfstRules.cc' added.
-
-2010-06-09 14:43  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: rule
-	  functions added
-
-2010-06-08 19:42  mie
-
-	* doc/xerox-flag-diacritics.rst: stub for flag diacritic support
-	  doc
-
-2010-06-04 14:30  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/SymbolDefs.h: documentation added
-
-2010-06-03 15:01  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: more
-	  Doxygen documentation added
-
-2010-06-03 12:47  moshagen
-
-	* libhfst/src/implementations/SFST/src,
-	  libhfst/src/implementations/foma: More files to ignore.
-
-2010-06-03 11:36  mie
-
-	* libhfst/src/implementations/HfstTokenizer.cc: Convert binary
-	  integers to decimal for old gcc support (OS X)
-
-2010-06-03 08:31  moshagen
-
-	* README: Tried to make the autoreconf text a bit clearer.
-
-2010-06-03 08:18  moshagen
-
-	* m4, tools/m4: Ignore the content of the m4 dirs, it is generated
-	  (by autoreconf -i, see the README file).
-
-2010-06-03 08:17  moshagen
-
-	* libhfst, libhfst/m4: The m4 dir needs to be in svn, otherwise
-	  autoreconf -i will bail out. The content of that dir can be
-	  ignored.
-
-2010-06-03 07:47  moshagen
-
-	* doc: Ignore generated files.
-
-2010-06-02 14:33  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/libhfst/test.cc: ImplementationType parameters removed from
-	  most functions
-
-2010-06-02 12:14  mie
-
-	* libhfst/configure.ac,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/LogFstTrieFunctions.h,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Require
-	  fst/fstlib.h as <fst/fstlib.h> and include as such.
-
-2010-06-02 11:56  mie
-
-	* Makefile.am, configure.ac, libhfst/Makefile.am,
-	  libhfst/configure.ac, libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/openfst-1.1, tools/configure.ac: *
-	  Remove openfst from source directory because bundling Apache
-	  licenced
-	  software with GNU GPL softare is a bad thing
-	  * Add licence disclaimers to auxiliary files because FSF suggests
-	  so
-
-2010-05-31 15:23  eaxelson
-
-	* Doxyfile, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SFST/src/generate.C,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/libhfst/test.cc: documentation added
-
-2010-05-27 14:34  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SFST/src/expand.C,
-	  libhfst/src/implementations/SFST/src/fst.h,
-	  libhfst/src/implementations/SFST/src/generate.C,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/SymbolDefs.cc,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/libhfst/test.cc: Documentation and type handling added, some
-	  problems in type conversion.
-
-2010-05-26 11:19  mie
-
-	* libhfst/src/implementations/Makefile.am: add ofst include dir for
-	  compilation
-
-2010-05-26 10:59  mie
-
-	* configure.ac, libhfst/src/implementations/SFST/src/sgi.h,
-	  tools/configure.ac: sgi.h is visible outside libhfst
-
-2010-05-26 10:11  mie
-
-	* libhfst/configure.ac, libhfst/src/implementations/SFST/src/sgi.h:
-	  Work around problems with missing hash
-
-2010-05-26 06:11  mie
-
-	* Makefile.am, configure.ac, doc/Makefile.am: Add extra doc stuff
-	  to build tree
-
-2010-05-25 16:34  eaxelson
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ExtractStrings.h: more doxygen
-	  documentation added
-
-2010-05-25 14:21  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SFST/src/expand.C,
-	  libhfst/src/implementations/SFST/src/fst.h,
-	  libhfst/src/implementations/SFST/src/generate.C,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/SymbolDefs.cc,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/libhfst/test.cc: some typedefs in SymbolDefs.h and
-	  ExtractStrings.h renamed
-
-2010-05-24 21:51  mie
-
-	* tools/src/hfst-proc.cc: copy hfst-proc verbatim to 3
-
-2010-05-24 21:49  mie
-
-	* .: Swap stable old trunk to branches and proposition to trunk
-
-2010-05-24 19:09  eaxelson
-
-	* more doxygen documentation added
-
-2010-05-24 15:01  eaxelson
-
-	* some doxygen documentation added
-
-2010-05-21 15:18  moshagen
-
-	* Ignore generated files. Please check that I haven't ignored too
-	  much. There are probably also other generated files that are
-	  presently stored in svn.
-
-2010-05-20 14:23  eaxelson
-
-	* extract_strings implemented to SfstTransducer, comments added to
-	  the user interface (HfstTransducer.h)
-
-2010-05-19 16:48  eaxelson
-
-	* OpenFst's Minimize adds epsilons to the result. This bug should
-	  be fixed.
-
-2010-05-18 15:25  eaxelson
-
-	* 
-
-2010-05-17 17:09  eaxelson
-
-	* hfst interface updated
-
-2010-05-16 12:18  mie
-
-	* typoed TESTS in unit test makefile
-
-2010-05-15 17:47  mie
-
-	* converted hfst-concatenate to hfst3?
-
-2010-05-14 15:08  eaxelson
-
-	* more unit tests
-
-2010-05-14 13:38  eaxelson
-
-	* expand.C added
-
-2010-05-14 13:07  eaxelson
-
-	* unit testing should now work
-
-2010-05-14 10:54  mie
-
-	* add libhfst unit test makefile and missing att formats to
-	  transducer
-
-2010-05-13 21:18  mie
-
-	* Remove unnecessary sources from foma part and generated makefile
-
-2010-05-13 19:59  mie
-
-	* Remove generated files and use top-level subdir make for library
-	  like hfst2
-
-2010-05-13 17:44  eaxelson
-
-	* more unit tests added
-
-2010-05-11 14:04  eaxelson
-
-	* added test files
-
-2010-05-11 14:01  eaxelson
-
-	* added directory test again
-
-2010-05-11 13:58  eaxelson
-
-	* deleting file test from the repository
-
-2010-05-11 13:47  eaxelson
-
-	* Test file updated to new directory structure. Repeat and
-	  optionalize functions should now work.
-
-2010-05-11 05:34  mie
-
-	* One missing makefile am
-
-2010-05-11 05:23  mie
-
-	* Initial autocorrupted version
-
-2010-05-10 20:03  mie
-
-	* Add skeletal test dir
-
-2010-05-10 12:44  mie
-
-	* Remove some odd binary from the way of directory here
-
-2010-05-06 13:51  spectre360
-
-	* more stuff converted
-
-2010-05-06 13:05  eaxelson
-
-	* some problems in equivalence testing and sfst's kleene_star()
-
-2010-05-06 12:56  spectre360
-
-	* more
-
-2010-05-06 12:13  spectre360
-
-	* more
-
-2010-05-06 11:05  eaxelson
-
-	* writing and reading att text files implemented
-
-2010-05-06 09:23  spectre360
-
-	* more changes
-
-2010-05-05 13:38  eaxelson
-
-	* 
-
-2010-05-05 12:09  eaxelson
-
-	* basic constructors and conversions tested
-
-2010-05-05 11:55  spectre360
-
-	* add preliminary front end for hfst-proc
-
-2010-05-04 15:13  eaxelson
-
-	* 
-
-2010-05-04 12:55  spectre360
-
-	* add comment
-
-2010-04-29 14:29  eaxelson
-
-	* two-argument functions should now work for all transducer types
-	  with no fatal memory errors
-
-2010-04-28 14:21  eaxelson
-
-	* still something wrong with encoding/sorting in DifferenceFst
-
-2010-04-27 16:33  eaxelson
-
-	* reading/writing streams of transducers to/from file/stdin/stdout
-	  should now work on all transducer types
-
-2010-04-26 13:43  eaxelson
-
-	* writing and reading transducers to/from a file should now work
-
-2010-04-22 16:25  eaxelson
-
-	* Reading and writing streams of foma transducers should now work.
-	  However, reading foma transducers from stdin does not work as
-	  gzdopen returns NULL
-
-2010-04-21 14:36  eaxelson
-
-	* reading foma transducers implemented, not yet tested
-
-2010-04-20 14:58  eaxelson
-
-	* writing transducers works now
-
-2010-04-19 14:12  eaxelson
-
-	* writing works, in foma the foma_net_print must be declared
-	  correctly
-
-2010-04-19 14:11  eaxelson
-
-	* writing works, in foma the foma_net_print must be declared
-	  correctly
-
-2010-04-08 15:40  eaxelson
-
-	* Expanding unknowns should now work in SfstTransducers and
-	  TropicalOfstTransducers
-
-2010-04-07 13:19  eaxelson
-
-	* expanding unknowns/identities and harmonizing should now work in
-	  Tropical ofst
-
-2010-03-24 14:54  eaxelson
-
-	* foma's binary operations now do not delete their arguments
-
-2010-03-24 07:22  eaxelson
-
-	* Work on harmonizing and expanding unknowns started. There seems
-	  to be problems when ~HfstTransducer is called for transducers
-	  that are already deleted in operations such as foma's fsm_union.
-
-2010-03-22 13:22  eaxelson
-
-	* Converting formats of transducers with symbol tables should work
-	  now.
-
-2010-03-19 14:03  eaxelson
-
-	* symbol handling in transition iterators works now. for some
-	  reason the type of the transducer is lost in
-	  HfstTransducer::convert(type)
-
-2010-03-18 15:16  eaxelson
-
-	* foma-to-internal and internal-to-foma conversions added. Their
-	  symbol tables don't yet work because HfstMutableTransducer still
-	  uses the old key_table instead of fst::SymbolTable.
-
-2010-03-17 11:58  eaxelson
-
-	* foma_to_internal_format added, not yet tested
-
-2010-03-16 15:11  eaxelson
-
-	* harmonizing functions added
-
-2010-03-15 16:04  eaxelson
-
-	* some unknown expanding functions added, do not work yet
-
-2010-03-15 13:10  eaxelson
-
-	* HfstTransitionIterator added, not yet tested
-
-2010-03-15 10:51  eaxelson
-
-	* HfstMutableTransducer added and tested
-
-2010-03-11 16:05  eaxelson
-
-	* HfstMutableTransducer added
-
-2010-03-04 16:11  eaxelson
-
-	* HfstMutableTransducer tested
-
-2010-03-04 13:50  eaxelson
-
-	* class HfstMutableTransducer added
-
-2010-02-18 13:23  eaxelson
-
-	* 
-
-2010-02-18 09:36  eaxelson
-
-	* FomaInputStream implemented
-
-2010-02-15 16:25  eaxelson
-
-	* 
-
-2010-02-11 17:07  eaxelson
-
-	* linking to foma and using its functions should now work
-
-2010-02-10 15:09  eaxelson
-
-	* FomaTransducer.h now contains everything that is needed, but the
-	  implementations are missing
-
-2010-02-09 15:22  eaxelson
-
-	* FomaTransducer.h and FomaTransducer.cc must be implemented, but
-	  compiling seems to work. foma should maybe be in namespace
-	  hfst::implementations
-
-2010-02-09 13:23  eaxelson
-
-	* foma added
-
-2010-02-01 10:45  mpsilfve
-
-	* added using declaration for hfst::implementations::
-
-2010-02-01 08:51  mpsilfve
-
-	* Did A LOT of stuff... Sorry
-
-2010-01-24 13:28  mie
-
-	* The namespace changes and slight changes for few functions
-
-2010-01-11 17:19  mpsilfve
-
-	* Added LogWeightTransducer and fixed some memory issuses
-
-2009-12-18 18:43  mpsilfve
-
-	* Changed namespaces for the better
-
-2009-12-18 17:27  mpsilfve
-
-	* Fixed Makefile so it will actually construct a library hfst3
-
-2009-12-18 16:39  mpsilfve
-
-	* Added documentation
-
-2009-12-18 15:38  mpsilfve
-
-	* Added hfst3_proposition
-
+97c1285 (HEAD -> master, origin/master, origin/HEAD) Swap implementations of commands 'apply up' and 'apply down' in hfst-xfst, making them work as they do in foma and xfst.
+85ef34c Forgot to add before latest commit...
+13280ea Edit warning about converting native foma transducers.
+b31a6c1 Fix typo: swap left and right.
+808d984 Add hfst-flookup to windows scripts.
+66db285 Update bug tracker url and copyright year.
+b127ab3 Git ignore hfst-flookup.
+1b40de6 Add tests for hfst-flookup.
+12e4cca Trandsducer operations no longer return a reference to the transducer, fix this in tests and interface operations.
+a128c7f Add a tool hfst-flookup which does lookup from right to left, i.e. in the same way as foma's flookup and xfst's lookup. hfst-lookup and hfst-optimized-lookup stay as they are, but mention in their help message that they do lookup in the opposite direction.
+cea21b4 Add a comment about the way gzipped input is handled.
+da7ebcc Make HfstInputStream constructor throw a FileIsInGZFormatException if input is in gzipped format. In hfst-fst2fst, issue an error message that asks user to unzip the transducer.
+5c2755b Merge commit frankier:add-gitignore manually and also add more files to be ignored by git.
+99b470d Merge pull request #313 from frankier/escape-dot-labels
+f6905a1 Improve handling of argumentless functions and funcalls
+d804d3d Remove some memory leaks in compilation
+ef740e0 Fix nested funcall issues
+61e1e0a Add optional versions of cap functions and AnyCase().
+68e078b Corrections and additions to casing functions, and add Implode() and Explode()
+2484633 Add a facility for detecting when hfst-tokenize is given a "bare" dictionary and generating a somewhat intelligent tokenizer when that happens. Due to awkward architectural reasons this involves changes and additions in many parts of the library, but they are not major.
+089f3ca Add .gitignore
+d1d81db Merge branch 'master' of https://github.com/hfst/hfst
+485f575 Fix bug that caused exclusionary lists to be missed much of the time.
+03ff992 Escape " in dot labels.
+9984096 Factor out replace_all into string-utils.cc.
+ca10d77 Revert swapping of hfst-xfst's 'apply up' and 'apply down' commands.
+7352cf7 Swap implementations of 'apply up' and 'apply down' in hfst-xfst, so that these commands work in the same way as in foma and xfst.
+db2d4dc Add an example for HfstTransducer constructor.
+f37b8d1 Tentatively implement lookup also for transducers that are not in optimized-lookup format using composition and path extraction.
+1cb2992 Add an HfstTransducer constructor that takes a StringVector as argument.
+f32c049 Support python 2 unicode strings in lookup.
+8d2c6b8 Fix a typo
+f442b91 Make HfstInputStream iterable by implementing functions __iter__, __next__ (for Python 3) and next (for Python 2).
+2c660ff Add functions in namespace hfst::rules to python API.
+947bb62 Add some information about Python interface in README and advise the users to see file python/README.
+067b0c2 Remove slashes from headers used when processing the file.
+c4b5ce8 Update documentation.
+0e4e8a7 Redefine functions which return a reference to themselves as void to avoid problems on the python side.
+5f97eac Tentatively add a C++ function 'std::vector<hfst::HfstTransducer> compile_pmatch_expression(const std::string & pmatch)', mostly copied from hfst-pmatch2fst.cc.
+21da500 Add a const declaration to string& argument of PmatchContainer::process and PmatchContainer::match.
+cd7f2f8 Tentatively add some pmatch functions. Add a missing typedef for HfstTransducerVector.
+a9fbd44 Add a function to HfstInputStream for finding out whether hfst headers are included in transducers. When reading native foma transducers in hfst-fst2fst, warn that inversion may be needed for lookup to work as expected.
+fa4565e (tag: v3.9.2) Release 3.9.2.
+3f7a57e Update hfst binary file used for tests.
+5cd8a71 Add option --pythonpath to python tests. Document the test tools better.
+927da9c Make fst2txt functionality test silent.
+ad8c82c Update installation check scripts.
+ddf749d Remove test.py from EXTRA_DIST, the tests have been rewritten.
+dd7d0be Merge pull request #309 from unhammer/pmatch-input-marks
+97b6e3f Merge pull request #308 from unhammer/tokenise-minor-cg-fix
+3781806 Make small modifications to documentation and typedefs used in function declarations/definitions, so that doxygen can generate documentation right.
+00d89ce Update Python and C++ API documentation files.
+4319b94 Move api documentation file under folder 'doc' too.
+67e1e8c Move C++ documentation file under folder 'doc'.
+8e2e651 Do not catch exceptions derived from HfstException inside the constructor of HfstInputStream and throw them as HfstException. Instead, throw them as such.
+56ffca8 pmatch: special symbol @PMATCH_INPUT_MARK@ for input marks
+90aa695 pmatch: on seeing a special symbol, mark the offset in the input string
+bc345c6 CG forms always go in "<>", not before the tab
+8dceb24 Merge pull request #307 from unhammer/tokenise-short-options-missing
+2c207de short option -m missing from getopt_long
+a9314ad Add m4 for older distros
+6c944ba Bump patch version since revision has decreased
+859f8da Add builting function Interpolate()
+c6f9908 Fixed condition for including symbols in exclusionary lists Rather than the printability vector, which may not be completely set yet, check the symbol itself for printability.
+780b9af Fix bug involving stale caches of function call results
+26d3d8f Change python3 into python in README as version 2 works now too.
+7af6f3f Move tools/src/hfst-string-conversions.[cc|h] under libhfst/src/.
+a1b5bb2 Update version number to 3.9.1.
+d23eb93 Do something useful in the case of a missing root rule
+9e4e663 Make Makefiles in openfst back-end licensed as LGPL.
+03e1949 Candidate for release 3.9.1.
+27f80ee Fix names of files whose names were changed.
+8e4f324 Set server based search to NO.
+5b2c698 Add word boundaries in xerox mode.
+6e78e1f Fix copypasted typo
+b6970ab Fix ToLower and ToUpper, which had transposed names and flawed implementations
+c939413 Use iterator instead of range-based loop on windows.
+e5897fb Fix a couple of typos inside 'ifdef _MSC_VER' detected when compiling on windows.
+7694ee0 License for the library code is now lgpl 3.
+b8a5b98 LGPL license
+a031526 Compatibility with python2.
+1baee13 Add exclusionary lists (eg. Exc(Whitespace) matches symbols not in Whitespace)
+a92e1d0 -X option fixed in hfst-pair-test. Additionally, the user gets an error message if unescaped :-symbols were found.
+8d0a028 Fix a bug in HfstTransitionGraph::find_replacements. Implement compile-replace without composition in XfstCompiler to avoid alignment issues in result.
+887381e Fix epsilon handling in compile-replace expressions.
+2891a27 Allow epsilons inside compile-replace expressions as xfst does.
+bcfea4a Warn about '@_EPSILON_SYMBOL_@' not being an ordinary symbol in hfst only in verbose mode.
+5fc456b Allow space after operator '^' in regular expressions.
+0758730 Fix binding precedence of :
+9f4628e Add throw to appease rpmlint no-return-in-nonvoid-function
+78efc5d Fix a bug in function 'fst'.
+23a5285 Print a blank line even if there were no results or if tokenization failed
+73d317b One && too many
+5f4a8fc Rename hfst-proc2 to hfst-tokenize, with hfst-proc2 and hfst-tokenise as aliases
+732e37e Add tests for python bindings.
+51cbc5e Complete rewrite of pmatch compilation This is a cleanup and rewrite of pmatch compilation, hopefully allowing easier extensibility and maintainability in the future. While this has been reasonably well tested, it is likely that there are some regressions; please report any. Various additional features are pending.
+31de91e Move scripts under subdirectories and remove scripts that are not needed.
+6156215 Move windows scripts under scripts/windows. Get rid of libhfst_win.i.
+0bf33d7 Remove HfstFastTransition.h also from dist.
+02fa326 Remove HfstException.cc and HfstException.h files, HfstExceptionDefs.cc and HfstExceptionDefs.h are used instead.
+9356517 Remove class HfstFastTransitionData and the template HfstFastTransducer that uses it. HfstBasicTransducer is the template of HfstTransitionGraph that is used everywhere and it is fast enough.
+dd6873e Remove tentative reentrant version of xre compiler. The normal xre compiler can handle expressions that the reentrant one was originally intended for.
+05c78d8 Update python API documentation.
+f933525 Remove old commented code. Add a warning about python bindings not being under autotools; advise users to see python/README.
+b127d48 Set -std=c++0x unless a higher standard is required with the -std option.
+f2738be Do not generate hfst-scanner header file. Make hfst-scanner depend on hfst-compiler header file to make sure they are generated in the right order.
+a44eb61 Check automake version in configure to determine whether header files generated by yacc/bison should use extension .h (automake < 1.12) or .hh (automake >= 1.12).
+7f206c0 call_counter is a member of the container, not the transducer
+2aeda9f Reweight arcs iff all conditions given with --input-symbol, --output-symbol and --symbol are met.
+fddc9ea Forgot to increment call counter
+a56089b Only call clock() every millionth time
+1c4c871 Add missing declarations
+a710ddd Only check clock() every million calls to get_analyses() to save time
+8cffb74 Move start_clock setting to where the line is read to make the time limit per-analysis
+6488877 Add short option for time cutoff (-t)
+b6fdeb6 In pmatch, make the time cutoff "soft" to ensure we at least return something (this was an issue for rulesets with RTNs only - all the time could be spent in one leaving nothing for anything else, causing needless failure)
+70e025f Ignore previous commit, I had some old library code confusing me
+8dfcd66 Add time cutoff options
+8a9f0c3 Fix what seems like a typo in hfst-lookup, &infinite_cutoff for infinite_cutoff It seems like the size_t and size_t* can substitute for each other, but the prototype is for size_t.
+2134ef4 Fix time cutoff check in ol library code
+8ff4aa3 Omit infinitely ambiguous check when we have a time cutoff
+969d479 Fix time cutoff handling
+dd30c33 Switch from !€ / !$ to !!€ / !!$ as the test case prefixes, to bring it in line with the conventions in the rest of the Giella infrastructure (where this testing setup is used).
+fd175f1 Fix option --to-transducer of hfst-substitute.
+d213839 Update HfstTransducer::priority_union declaration. It takes only one argument instead of three.
+0dec506 Add new test files to dist.
+7915ca0 Priority union bug solved.
+daee8f7 Update output of morphology tests.
+1148413 Add a check for hfst-ospell.
+a179a32 Add new replace markup tests to dist.
+c56d1f0 Markup rules completely changed
+cb9f08a Update installation check.
+5a174af Finally ready for release 3.9.0.
+0ec3e97 Add missing files to dist.
+61d1d14 fix for --xerox bug#328 introduced by weight fix
+b6e49fd Revert -r4579 "Revert changes to hfst-proc made in revision 4427. This will (temporarily) fix bug #328."
+f0e85c8 Remember to update the man pages, too.
+e31c5d9 Ready for release 3.9.0.
+64c985c Revert changes to hfst-proc made in revision 4427. This will (temporarily) fix bug #328.
+9ca8ab0 Change all pythoncode delimiters from '{' and '}' to '%{' and '%}'.
+128331b Add two missing %
+7b961c5 Add tests for hfst-substitute.
+67f3dce Add tests where one or both inputs are archives.
+26aa331 Set name of composition transducer after composition is called.
+1e2ed00 Add tests for binary tools that use input streams whose types differ.
+4c1e655 Make HfstTransducer::compose throw and exception if transducers have mismatching types.
+e21378d Implement conversion of mismatching transducers also in hfst-substitute.
+43e107d Make binary command line tools convert mismatching input streams into common format.
+573609f Make 'harmonize_flag_diacritics' throw an exception if transducer types differ. Make 'is_safe_conversion' public.
+d750847 Fix a bug in hfst-regexp2fst related to comments and remove support for legacy way of defining weights from regexp parser.
+ee3b02c Xre parser - added check if contexts in replace rules are automata
+d5258af Implement commands 'view net' and 'write dot' as system calls for non-windows platforms.
+7e041e8 Update windows scripts so that they will work with the latest changes in dot and pckimmo printing functions.
+8cb95f8 Move dot and pckimmo related functions in their own files.
+70199c8 Throw an exception in HfstTransducer::eliminate_flag if flag feature does not occur in the transducer or the flag includes a value or operator.
+6d723ca Add missing file
+aa6325f Move python tests to their own directory.
+bf0db23 Rename directory 'swig' to 'old_python' and directory 'new_python_api' to 'python'.
+da9b806 Add information about the possible values of option --xerox-composition to the help message.
+f068284 Modify infinite_cutoff and time_cutoff arguments in lookup functions.
+8645f60 Lexc, removed option -M + cosmetic changes to the alignment
+95e18d3 Handle standard and console streams when libhfst is run from IDLE.
+1275140 Throw a FunctionNotImplementedException in HfstTransducer::lookup_fd instead of converting HfstTransducer automatically into HfstBasicTransducer.
+7d11276 Update python interface.
+dc5a1f4 Added option -A to lexc, it aligns same input and output transitions
+1d3e8af Fix a minor bug in python interface on windows.
+897a7dd Fix LexcCompiler::printConnectedness const declaration.
+de59f0e Replace rules support flag diacritics (fixed lexc with -FM flags)
+6817b35 Use separate ostringstreams for standard output and standard error on Windows.
+f30e6e9 Improvements to error and output stream handling.
+1178005 Support printing to console on Windows.
+0f0dd44 Update foma back-end composition algorithm to fix a bug noticed in lexc tests.
+6e93227 Replace system exit calls with HfstFatalExceptions.
+c73aa33 Check for epsilon cycles with negative weights.
+4679a3a Optimize function 'has_negative_epsilon_cycles'.
+3bd5ce0 Add a test for checking that unknowns are not expanded into flag diacritics.
+6d803df Add option 'check-negative-epsilon-cycles' to hfst-txt2fst and tests for it.
+a678e81 Add function HfstTransitionGraph::has_negative_epsilon_cycles.
+4405b78 Improve performance of transducer harmonization.
+12d3d8e Time cutoff for the bundled standalone optimized-lookup tool too
+05e7b6b Add parameter to control output in 'compile_lexc_file'.
+879d01e Add function unsigned int LexcCompiler::getVerbosity().
+acd442e Allow user to control output in xre and xfst compilation.
+cf2a1d7 Improve error handling in lexc compiler.
+688823f Improve error handling mechanism in xre and xfst parsers.
+083f848 Add a missing period to the end of symbol lines when printing in prolog format.
+50f7ebf Added warning about very slow lookup when using HfstTransducer::lookup_fd.
+0cf9553 Added warning about very slow lookup when using HfstTransducer::lookup_fd.
+c8458dc Added possibility to transform individual transition weights in HfstTransitionGraph.
+fb50256 Add option to suppress multichar tokenization and default to on in proc2
+8e370a6 Replace part of XfstCompiler's FILE pointers with equivalent calls to ostream.
+5a773d1 Tentatively move towards o(string)streams instead of FILE pointers when printing output.
+b792ca8 Remove debug printing
+42585f5 Implement a time-based search cutoff for hfst-lookup in optimized-lookup mode only
+2aafec3 Make 'define_function_args' return a bool instead of calling exit on error in xre parser.
+18d6b12 Fix error handling in xre and xfst compilers.
+d1f2b2a Rewrite regular expression examples to be more informative.
+52dc82e Scale weights to be non-negative in function n_best.
+21d8577 Update documentation.
+5c71e4b Small fixes to read_att_string.
+727e74f Update documentation about special symbols. Add a function for reading AT&T strings.
+7b2e11d Add function start_xfst() that starts an interactive XFST compiler.
+ca3143c Update documentation between HFST and backend conversions and add the examples to tests.
+9ae4311 Fix issues related to level of verbosity when compiling xfst and regexps. Add missing documentation.
+94e7535 Merging of modified or added functionality from the xre parser
+116a076 Remove obsolete comment
+9130ba1 Revert HfstXeroxRules files to version 4484.
+04d3a64 Rewrite 'compile_lexc_file'.
+4988bb6 Improve handling of error and exit conditions in xfst.
+4ba4909 Add missing namespace: 'string' -> 'std::string'.
+b3c446d Greatly reduce memory leaks when using hfst-ol format
+f9b44a4 Update new python API.
+3239aa9 Update windows scripts after moving XfstCompiler.
+ba65f77 Move XfstCompiler from tools/src/parsers to libhfst/src/parsers.
+330447d Add three missing files to dist.
+2570d1f Add flushing to allow instrumentation of hfst-lookup
+5a1307d Replace rules now should support Flag diacritics.
+571878b Fixed lenient composition (it used to be unimplemented).
+209e969 Move HfstStrings2FstTokenizer from tools to libhfst directory.
+9105ea6 Use the actual transition data object when copying transitions in conversion.
+7b06fa5 Fix a warning about comparison of signed and unsigned value.
+4d67d87 Throw StateIndexOutOfBounds exception in get_final_weight, if state does not exist.
+4c4f56c Add examples used in documentation to the tests.
+8a37298 Test examples and fix them, if needed.
+12825fe Add missing documentation and functions.
+b2aa4b1 Add a function that takes tokenized input and returns a transducer.
+b3da97a Define new functions for creating transducers from string, string list and dictionary.
+c6ebab5 Fix some issues in the new python interface.
+4be6a9d Add more documentation and tests to the new python interface.
+3b312a3 Add aliases for different substitution functions.
+ca7834b Modify substitution functions to be more pythonic.
+21c7d01 Add more stuff to the new python interface.
+5c94995 Fix output of hfst-xfst's command 'help'.
+fb4d2ef Fix small bugs in hfst-xfst.
+21f9fbb Modify also determinization function so that negative weights are handled correctly.
+9b42c70 Added more documentation.
+833f6c6 Added more documentation.
+ceb8de6 fix NUL flush, bug #240
+5ed671d Add function __iter__() to libhfst.HfstBasicTransducer.
+323778a Modified libhfst files.
+6bc7b3f Create directory for new python API.
+d929a12 Update Doxygen HFST version number.
+39b7bd7 Update README and Doxygen documentation.
+a7efde8 Add some tests with negative weights for contain, merge and parallel rule operators.
+8bda879 Modify minimization of weighted transducers so that negative weights are handled correctly.
+e7f3b91 Always include 'generate-cc-files.sh' script in dist package.
+be9d1ad Do not allow omitting the question mark on either or both sides of colon in regular expressions. Xerox has also removed this feature from their regexp syntax. Interpret expressions such as [foo : bar], [foo: bar] and [foo :bar] as [foo:bar]. Expressions of type [foo:], [:bar] and [:] will yield an error.
+98c8423 Test if pmatch-tests.sh.* files exist before removing them to avoid 'rm: cannot remove:' messages.
+b8b1039 Remove foma license warning. The current license of foma has no compatibility issues.
+13553bd Make some changes for the python interface. Move HfstFile wrapper class to the swig interface file. Make HfstStates and HfstTransitions typedefs public. Add a destructor for HfstTransition. Update version number to 3.8.3.
+c64206b Handle a frequently encountered exception
+c48b828 Reverted changes done for class HfstFile in revision 4431.
+a8cf4ea Removed HfstFile wrapper class and functions using it. A better place for them is in the swig directory.
+65b418c Added destructor for class HfstException. It needs to be defined for SWIG.
+9965217 tests for --weight-classes 1 and ordering by weights in proc
+3e74d14 make tests pass again (only analysis order changed here)
+a882fef use std::vector as ProcResult to get output sorted by weight-class
+a0bcb70 fix --weight-classes, bug #308
+bd9ac6b Now the script generate-cc-files.sh creates also lexer files.
+c37b24c Add $(EXEEXT) for Windows
+2fa67a4 More Foma fixes for cross-building and clang
+aa58fe3 Small modifications to foma code: struct and variable had the same name.
+f0b6c85 Updated to foma version 0.9.18alpha.
+d566985 GNU address removal
+638efc5 Fixed some memory leaks in hfst-compare reported in bug #167.
+4a7ea0c Adding the renamed files.
+28182f1 Trying to rename README files...
+cdd1ad3 Updated scripts.
+6906e45 Now all files in this directory are listed in README
+ab78a6b Added a README file for the scripts directory.
+2374665 Fix help message
+445eeb1 Fix containment, implement some additional wanted operations
+892fdd8 Ready for release 3.8.3.
+4eab0f4 Updated windows scripts.
+9d0aba0 Now a warning message gets printed if stack contains transducers whose types differ (can happen if lookup-optimize is called before pushing another transducer onto stack).
+f7a8ce8 Added a windows README file for the package that contains eight command line tools.
+e4977d4 Added a Windows README file for hfst-xfst.
+9e2ef69 Added tests for windows. Made small fixes to hfst-proc and hfst-twolc for windows.
+3b3a397 Replaced alternative tokens for logical operators with the standard ones.
+65aa949 Checking for existence of config.h and getopt.h.
+f2f7fc3 Updated scripts.
+aa1f4df Added make scripts for twolc.
+e33968b Added twolc to windows compilation scripts.
+c9c02b9 Updated windows scripts.
+91a1945 Fixing again reading and writing to/from console on windows.
+3fd62f3 Using hex values for unicode characters when compiling with msvc to get rid of warnings (and possible segfaults).
+023e533 Terminator needs reading, and yes there are partial reads
+8575c6d std::string all the way
+4ba02e9 Added missing HAVE_CONFIG_H ifdef. Added globals-common.h header as some compilers complain about missing extern variables. Now creating variable size array 'next_u8' dynamically with operator 'new'.
+0a36470 Renamed help_message.cc into xfst_help_message.cc and added a header file xfst_help_message.h. Now XfstCompiler includes only the header file.
+e25e08d Fixed a typo and added explicit braces to an else statement.
+0061f6c Now option --pipe-mode takes an optional argument { input, output, both }, 'both' being the default.
+62f26f0 Install hfstdll.h
+d09ea9c Now hfst-lookup and hfst-optimized-lookup read from console and print to console by default on windows.
+09eaafb Commented out one debug print...
+cb24cf2 More improvements to utf-8 handling on windows.
+e29bdce Small modifications for better utf-8 support on windows.
+75a25d4 Small modifications for some command line tools for windows.
+b141560 Added tool compilation scripts for windows. Argument handling on windows is also supported for some tools needed for hfst-xfst testing.
+8b73295 Fixed a bug in argument handling.
+e516f16 Edited help messages and warnings of hfst-xfst and hfst-lexc on windows about character encodings.
+9d31b76 Moved getopt implementation to a separate file.
+57f9a81 Added an implementation for long options for windows.
+bb564a4 Fixed some issues noticed during msvc compilation. Renamed function 'min' to 'min_' to avoid collision with a macro with the same name. Changed arguments of comparison function given to qsort to (const void *, const void *). Added support for commandline arguments of type '--option=argument' to hfst-xfst for windows. Also changed hfst-xfst's option --print-to-console (default false) into --no-console (default false) on windows.
+34d1c54 Updated windows script files.
+b46445d Deleted getopt_long cc and h files. Processing command line arguments manually in hfst-xfst.cc on windows.
+88c44eb Added some ifdef _MSC_VER directives.
+eed630e Applied patch for musl libc compilation.
+f3ffa44 Fixed some bugs noticed when compiling on windows.
+0029101 Blank line between outputs in --finnpos mode
+5c3f801 Updated windows scripts. Added ifdefs for msvc compilation.
+1734803 Updated swig scripts for windows.
+1169774 Add FinnPos mode and reorganise
+d9c6038 Updated and added scripts for compiling python bindings on windows.
+5a00166 Fix harmonization issue and speed up the common case of only on top-level matcher
+4d8a4a6 Documented the tsv file format, added some linebreaks to make the helpt text easier to read.
+2871135 Always skip comment lines. Added verbose output for TSV file reweighting.
+3d2e4db Fixed bug #293 by initialising the line variable before using it.
+bfd227b Whitespace only.
+d850180 Added missing file 'hfstdll.h'.
+ed20de2 Edited and added scripts for windows compilation.
+25974b1 Added HFSTDLL's for some functions for windows compilation.
+9fd87e0 Added option --arcs-only to hfst-reweight. Now weights of all arcs and end states are modified unless --arcs-only or --end-states-only is used. Also fixed '--end-state-only' as '--end-states-only'.
+e8c1be4 Added some explicit type conversions.
+2a77392 Changed the short form of the xerox mode from -x to -X (upper case), to be more consistent with the other options, and to match the test on line 195.
+3ba83d9 Now it is checked if foma back-end and zlib are available before hfst-lexc-wrapper is generated. This also affects the way HfstTransducer::read_lexc_ptr is implemented for FOMA_TYPE: native HFST lexc compiler is used if lexc wrapper is not generated.
+8557d61 Updated hfst version number in the python setup file. Fixed the argument type of LexcCompiler::setVerbosity from bool to unsigned int.
+4a31565 Changed again some 'not' operators into \!.
+e1c0779 Added a missing // in the beginning of a comment line noticed during windows compilation.
+f4ecd94 Edited windows batch scripts and added a new one for creating python bindings.
+590d56c Changed declaration 'class yy_buffer_state' into 'struct yy_buffer_state'.
+1f83336 Fixed declared return type from 'void' into 'int' for functions hlexclex_destroy and pmatcherror.
+cfe7852 Xerox twolc test support in hfst-pair-test
+48dcdd7 Tentatively fixed missing paths problem in compose-intersect
+2f75bbc Moved definition of member 'static const HfstState START' of classes ComposeIntersectFst and ComposeIntersectRulePair from header to cc file.
+d4bdfb3 Add [].t() syntax for delimiting tagged (and context-checked!) regions
+5eb0069 Added new scripts for testing native windows compilation.
+982836a Added missing return values for some functions. Replaced ciso646 keywords for logical operators with standard ones.
+ad4273d Added make scripts for windows.
+e94301e Updated script.
+7fccd3a Removed unnecessary HfstUtf8.h and HfstStrings2FstTokenizer.h inclusions from libhfst/src/ files. Also moved HfstStrings2FstTokenizer into hfst namespace.
+d726d57 Now handling all stdbool definitions in foma headers.
+7137e4d Now HAVE_CONFIG_H is checked before including config.h. Removed inclusion of zlib.h that had no effect.
+b1ba306 Changed ifdef WINDOWS into _MSC_VER. Now zlib.h is included only when requested with -DZLIB.
+a16942d Using dynamic arrays instead of static ones to keep cl.exe happy. Also added definition for 'ssize_t' on windows.
+7203413 Replaced 'and' with '&&'.
+beb57e3 Replaced 'and' with '&&'. Also made a variable defining the size of an array const.
+9b26e06 Replaced ciso646 aliases and,or,not with &&,||,\!. Also changed sizeof(variable) into sizeof(variable_type) in ol transducer header because cl.exe complained about that for some reason.
+237842a Fixed a bug where operator '==' was used instead of '=' when setting the value of last element in a char array.
+dc51b2e Added missing files.
+83d7d32 Added scripts and headers for windows compilation.
+33409ad Changed operators {not,and,or} into {\!,&&,||} because cl.exe complains about them on windows.
+d3779cd Added a script for windows compilation
+1d327ca Added support for compiling openfst and foma back-ends with cl.exe on windows.
+27b6994 Include zero in signed and unsigned integers
+06517c7 Correction to handling trailing nonmatching material in locate_mode
+f03b162 Forgot to commit these files too...
+da83b10 Added xfsm support for some command line tools.
+3097ddf Now HfstTransducer functions throw a FunctionNotImplementedExeption if xfsm implementation is not available.
+4008054 Added more xfsm implementations.
+818ad51 Added more implementations for XFSM_TYPE for HfstTransducer functions.
+664573a Add ignoring
+7b7d13f Correct parsing order of PARALLEL_RULES
+40066a1 Added support for composition for xfsm transducers.
+3c11736 Added a variable to control if (xfsm) transducers that are already minimal are still minimized for profiling purposes.
+877c46f Fixed some bugs in escaping special symbols in prolog format. Added support for xfsm format in some command line tools.
+3cf0029 Fixed an error noticed when -Werror=format-security was enabled during compilation.
+d0ed632 Now xfsm conversion works in hfst-fst2fst and between prolog and binary format in hfst-fst2txt and hfst-txt2fst.
+f688567 Added XFSM initializer class.
+c803964 Added function minimize to xfsm interface
+4c4ca0b Now hfst-compose-intersect does NOT harmonize transducers by default, as harmonizing produces unexpected results with hyperminimized transducers. Option --harmonize turns on harmonization. This is a partial fix to bug #288.
+2e99ef0 Added a cross-build Windows patch given in bug report #289.
+4cd63b0 Added a missing #if HAVE_XFSM statement.
+e000b0c Fixed some bugs in xfsm stream handling.
+a478fb2 Added more functions for writing and reading xfsm transducers.
+fcc4c5d Tentatively added input and output stream functions for xfsm transducer.
+091ca1d Modified and added scripts for creating static binaries.
+8d6dd33 Fast compose intersect available using option -f
+1915dd1 Reorganized xfsm interface.
+ed7f448 Hopefully speed up compose_intersect by doing l .o. (l.2 .o. r) instead of l .o. r directly.
+4b965b7 Updated script.
+cc3632a Disable hfst-xfst's auto-complet with rl_insert instead of rl_abort, which is not found on Mac.
+c41e726 Added a script to generate static binaries.
+3a95772 Now xfsm conversion swaps the state numbers to make a more readable state numbering.
+b2348d7 Now special symbols should also work in xfsm conversion.
+b3af023 Xfsm conversion functions almost work, escaped symbols still need some attention.
+b15f184 Conversion functions between xfsm and HfstBasicTransducer formats implemented, alphabets and special symbols still need some work.
+5f79106 Autoindent entire file after removing tab characters to appease commit script
+68ffd8e Handle single-char ascii symbols shadowing multichar ones
+b1bdd27 Modified hfst to support xfsm format.
+05da3ff Fix cg quote interpolation
+38273d0 Clarify help string
+b3450b4 Add segmenting and cg mode; improve handling of special cases and weights
+5766bbf Tentatively modified hfst to handle xfsm implementation type.
+db747e7 Preserve nonmatching sequances in locate_mode and parse the appropriately downstream
+b7156e2 Tentatively added a skeleton implementation for xfsm library that can be included with configure option --with-xfsm (default is no). No linking to the library is performed, this is just a test version.
+7427081 Added a preprocessing directive that defines hfst-twols's Alphabet as TwolCAlphabet if HAVE_XFSM is on. This will prevent variable collisions.
+f579458 Changed hfst-txt2fst's read_prolog into read_prolog_format to avoid conflict with xfsm library function.
+424e9f2 Named tokens 'UPPER' and 'LOWER' in pmatch and xre parsers into 'XRE_UPPER', 'XRE_LOWER', 'PMATCH_UPPER' and 'PMATCH_LOWER' because the xfsm library (that might be added to hfst at some point) has an enumerator with the same name in C namespace.
+cc5e2fb Named foma's write_prolog into foma_write_prolog because the xfsm library (that might be added to hfst at some point) has a function with the same name in C namespace.
+b7b9a5b Took away unused token 'LOWER' from xfst parser.
+7701e12 Added an option --do-not-harmonize to hfst-compose-intersect.
+ae06cea Now hfst-compose-intersect harmonizes the rule transducers with the lexicon.
+3bfd0e8 Added option --beam to hfst-strings2fst.
+b96dd3b More accurately name set_locate_mode as set_extract_tags mode (locate vs. match is determined by function call)
+47ef7f0 Fix bug in compiling UNKNOWNs on the left side of pair separators
+b97a28c Fix bug affecting locate-mode where ?-matches were being seen as IDENTITIES in input.
+ec66bdd Added option --beam also to hfst-lookup. It is mostly untested for this tool.
+0057847 Tentatively added option --beam to hfst-optimized-lookup.
+e236dd2 Fixed a typo in warning message about missing symbols in input tapes of rule transducers ('output' changed to 'input').
+43d9948 In locate mode, zero-length hits could cause infinite loops. Commit fixes it.
+f5c1467 Now hfst-lookup checks it it is possible for an input to go through a transducer before calling is_infinitely_ambiguous. Should fix bug #278.
+b4e4655 Now reserved symbols are detected in composition if xerox-composition is ON. This will prevent symbol collisions by throwing an error message, giving at least a temporary solution to issues with reserved symbols.
+d2ef472 Fixed substitution operator in regexp, now flag diacritics are allowed both as substituting and subtituted symbols. Should fix bug #284.
+92d2bc0 Added better support for special symbols in hfst-xfst's substitute command.
+7cc650e Added two tests for hfst-xfst's substitute command. They are skipped until substitute can also handle them.
+1ff2f40 Fixed a bug in composition when xerox-composition is ON. Flag diacritics @SOMEFLAG@ were earlier transformed into $ and back into @SOMEFLAG@, but symbols of form $...$ are already reserved for lexc. Now diacritics are escaped as %SOMEFLAG% during composition. This creates a new set of reserved symbols which maybe needs more consideration though... Also added debug prints for LexcCompiler.
+ef9407e Removed xml checks from configure, since they cause unlinked xml references in hfst-edit-metadata on some platforms.
+791aeb4 Fixed flag diacritic recognition, now also flags of form e.g. '@D.FOO@' are accepted and an empty string is returned as their value. Also added full support for flag handling in hfst-xfst.
+94b723e Added some conversion functions between StringPairVectors and StringVectors. Added checks for flag diacritics in hfst-xfst non-optimized lookup.
+6df280c A small fix to hfst-summarize option handling.
+479630d Ready for release 3.8.2.
+d5c8545 Added option --print-symbol-pair-statistics(=N) to hfst-summarize.
+adff4fc Small fixes to compile-replace. Also restarting the char counter every time a new xre parsing is started. Removed the xml2 dependecy in configure.
+b8fd981 Omit unnecessary step in stringification
+adb2d91 Another slight speed improvement
+b8564f4 Some double free insurance related to previous commit
+786a502 Some more pmatch runtime speedup (around 5-10% in most cases)
+6c383b4 Remove commented-out lines (same ones I was intending in the previous commit)
+8c8be0b Remove extraenous index table fitting test
+c150b35 Further improvements to conversion to optimized lookup format
+ebb5d63 Large speedup in conversion to optimized-lookup format
+5eaf679 Added test cases for compile-replace.
+80059f5 Added test cases for merge operation.
+e8c709f Fixed an error in hfst-fst2strings --print-separator where two consecutive lines of -- were printed between non-empty transducers in some cases.
+9a30760 Now minimizing the merging automaton before merge operation so that epsilons do not cut a succesfull merge path. Also allowing epsilon-to-regexp-marker transitions in the merge filter.
+5d89aba Improvements to compile-replace function, now it should work for input and output sides of a transducer.
+372d184 Revert bungled change to precedence order
+06fa073 Now xre compiler of function merge does not increment the char counter, making it possible to have many merge operators inside one regex.
+bc32286 Added a constructor XreCompiler(XreConstructorArguments & args) to facilitate passing xre variables to merge function which needs them in its internal xre compiler.
+de47594 Now using internal starptr variables in functions hfst::xre::compile and hfst::xre::compile_first instead of global hfst::xre::startptr. This should fix the strange memory errors which occurred when calling merge operation inside a regular expression.
+e7c15a3 Now merge operation filters out non-optimal paths.
+e153281 Tentatively added a function 'tokenize_and_align_flag_diacritics' to HfstTokenizer.
+fe5cc6d Runtime speed improvements Prereserve table vectors, eliminate special_symbols map
+a62fe68 Profiling support with Counter() and --profile & a bunch of smaller changes
+09703ef Allowing 1-to-n composition of automata in archives. Fixes bug (or feature request) #277.
+035edcd Now passing verbosity to LexcCompiler as an unsigned integer via setVerbosity(uint). Also made small fixes to warning prints in lexc compiler.
+5fb6ba7 Added tests for one-sided flag diacritics for hfst-lexc.
+602ec80 Now lexc compiler warns about one-sided flag diacritics in verbose mode.
+fa95239 Added a tokenizing function that warns about symbol pairs, if needed.
+4ad8eb4 Added test case for previous lexc commit (sublexicon defined more than once treated as an error).
+4582622 Now multiple definitions of the same lexicon in lexc are treated as an error unless LexcCompiler::setAllowMultipleLexiconDefinitions(true) is called first.
+95f58f4 Now lexc parser updates the error status hlexcnerrs when hlexcerror is called. In case of warnings, the error status is nor updated.
+946bd68 Speed up list arc processing by replacing some maps and sets with vectors
+373721d Changed list to set in merge operation. Removed commented code.
+52fe564 Added option --encode-weights to hfst-lexc.
+038ebd2 Reinstate undefined symbols as valid tokens as per documentation
+212f177 Add defined lists
+25e7a02 Add Sigma()
+491d771 Added Lst() and support for list arcs in runtime
+fe95b0a Sync precedence rules
+482bad0 Switch order of precedence of concatenation and other binary operations
+93d2887 Added Lit()
+a5114b5 Modified the function merge, it now takes as an argument a map of list symbols.
+7ef0509 Fixed a bug in xre parser, now definitions and unknowns can be used together in expressions such as 'regex [def:?] ;'.
+ed742e9 Now the epsilon symbol is not added as a multichar symbol to hfst-lookup tokenizer if it is the empty string. Should fix bug #275.
+0fb0fdb Allow \U00NNNNNN syntax for code points in utf-8 but above U+FFFF
+2db8062 Allow \UNNNN as well as \uNNNN
+4954a40 Allow \uNNNN in range notation and make some fixes to utf-8 handling
+7784091 Added utf-8 character range expressions
+f2674b2 An untested implementation of the merge operation added to hfst-xfst.
+565d9bb Syntax-level completion of functions (arg placement still not completely free)
+9bb6843 Fixed a small bug in hfst tool tester.
+83312f7 Ready for release 3.8.1.
+bcae2c3 Fixed std::cout into &std::cout in stream pointer comparison.
+246258f Now using definitions USE_TR1_UNORDERED_(MAP|SET) when defining what unordered maps and sets to use.
+c7c5ee8 Fixed a typo tr2 -> tr1.
+97a3e59 Unordered maps and sets are used from std namespace if -std=gnu++11 is requested.
+a5a62cb Forgot to update version number in swig bindings.
+a578323 Various improvements and additions to function syntax, particularly empty args and string-args
+5fb9c8d Added functions for merge operation in HfstTransitionGraph.
+1df7d58 Modified weight handling in HfstTransitionGraph::intersect.
+1e5bbfc When the alphabet is constructed from a symbol table, set identity to NO_SYM this was supposed to always happen anyway but didn't matter until recently
+417bc81 Modified intersection algorithms in HfstTransitionGraph.
+67f0a92 Added functions to be used in xerox's merge operation.
+05651a4 Small fixes to list definitions in hfst-xfst.
+2e1b79d Added an implementation for compile-replace in hfst-xfst, it still needs lot of testing.
+244d6bf Yet some more functions added to compile-replace.
+e18a645 Added more functions for compile-replace.
+39800a1 Tentatively added functions in HfstTransitionGraph to be used in compile-replace.
+7b5981f Added function is_well_formed_for_compile_replace to be used in compile-replace command.
+c099596 Forgot to comment out debugging prints in tests.
+f695bb4 Added brackets around member calls 'Interval.end' and 'Interval.begin' to avoid them getting confused with std::end() and std::begin() templates in C++11.
+b0e0fe5 Rolled back earlier revision in interval-set.h
+d223f72 Made small modifications for better c++11/c++0x support.
+51ff0da Fix bug where identity wasn't being set to NO_SYMBOL when absent from alphabet
+c2ee587 Refuse to enter flag loops more than once fixes bug #250 bug - arguably this could be applied to epsilon loops too, pending discussion
+15f25c6 Fixed a typo in Makefile.
+1faecef Now hfst-xfst gives a warning (or exits) if a binary command tries to access a stack with less than 2 transducers.
+a7fe5d6 Now hfst-xfst exits if a command tries to access an empty stack if quit-on-fail is ON and hfst-xfst is not in interactive mode.
+25255de Comment explaining usage of hfst-fst2tesseract.xfst.
+ed8f040 Added script for converting morphological analyzers to Tesseract word models.
+61b43f5 Improvements to loop finding
+4d3bab0 Further corrections to loop detection slowdown back to ~10x but may be improved from here
+38bb11f Fix some cases of overdetecting infinite ambiguity, there's still some left
+f99de3f Forgot to keep adding the repeated states in the loop detection phase
+f327e83 Only try to catch infinite ambiguity at epsilon arcs This is the big speed win and presumably correct.
+aa0928d This order of comparison is a bit faster since sizes never differ
+90b4387 Speed up is_lookup_infinitely_ambiguous() somewhat
+3edea32 Try to avoid using negative indexes for arrays
+1eedad1 Optimised lookup tests
+a1eb3e1 Runtime handling of identity and unknown
+dd8a983 Forgot to remove one thing in the last commit
+e1db16f Take out our own harmonization hacks now that they're unneeded
+6b0a888 Don't use delimiters when they're not necessary, also don't insert everything to RTNs anymore and provide the is_special() function the previous commit required
+e6a35c3 Treat special pmatch symbols like flag diacritics for harmonization, also after harmonization add all symbols, including flags, to the alphabets
+40feabb Fix bug where delimiters were shadowing the named transducers' names also remove extraenous parsing path
+7432ed4 Updated pmatch functionality tests.
+6a89ad8 Add string literal syntax for standalone %-escaped chars (they used to be considered symbols which now have to be defined or cause an error)
+18b6039 Use minimization guards to keep multiple negative contexts separate in disjunctions
+817ec29 Fixed some more spelling errors noticed by lintian.
+dcb9e44 Fixed spelling errors found by lintian.
+727436d Added again hfst-train-tagger man page which is no more a symlink.
+ee79595 Added missing man pages.
+3e650c8 Now hfst-reweight-tagger --help returns EXIT_SUCCESS before trying to access uninitialized values.
+9665cdc Warn about shadowing definitions
+8608975 Alternate syntaxes regex for Define TOP and .#. for #
+1874455 Revamp LABEL parsing and introduce curly literal pairs
+7b2c44e Updated and added man pages.
+cbb4a40 Moved option checking after possible returning from program so that option --help will not generate error messages.
+7f69948 Require backslash character to be escaped as \\ in curly literals
+832d7b3 Fix bug in unescaping function
+6918fd0 Ready for release 3.8.0.
+9336e7a Added variable 'lexc-rename-flags' to hfst-xfst.
+73c2a33 Desperately fiddle with the way the minus operation expands things
+ee6d6fa Add lambda-like anonymous definitions for controlling subexpression boundaries
+9ef3676 Changed the flag handling behavior of hfst-xfst and hfst-lexc. Now both tools by default use Xerox's way when composing, i.e. flag diacritics match unknown and identity symbols. This can be controlled with variable 'xerox-composition' (the default is ON) in hfst-xfst and with option '--xerox-composition={ON,OFF}' (the default is also ON) in hfst-lexc. hfst-regexp2fst also has the option '--xerox-composition' which by default is OFF, as it was earlier.
+6a57210 Fixed a typo in hfst-regexp2fst option handling.
+a64b247 Now one-sided flag diacritics are allowed in composition when flag-is-epsilon is used.
+1dfbb23 Added option --log10 for 10-based logarithmic weights in hfst-strings2fst.
+0bcf18f Now an error is thrown if flags are not twosided in composition when xerox composition is used.
+a959c4b Added exception class FlagDiacriticsAreNotIdentitesException.
+6d8c1ab Add pmatch functionality test suite
+d5d441e Added option -X flag-is-epsilon to hfst-regexp2fst.
+33b17d7 Fix another symbol-leaking issue
+91d5ce0 Allow nested logical operations on contexts
+d4b01d2 We need to avoid symbol pollution for more than just special symbols (this doesn't completely resolve pollution issues, just some urgent ones)
+89149b0 Don't forget to pop the rtn stack when there's nothing matched
+6a3552f Minimize after adding delimiters, not before
+fdf46b1 Revert bracket-bounding behaviour
+fecbf54 Use brackets for extra delimiters to control tag and context boundaries more
+51382e2 add_delimiters was happening in the wrong place since recent syntax changes
+8467812 Fixed a too strict assertion.
+7ac7e49 Added a return value for a case that should never happen to make scan-build happy.
+09b1260 Reverted back to the buggy behaviour of function 'getMarkerNumber', since some HfstXeroxRules tests will fail if it works correctly...
+c7d12d4 Fixed an error in function 'getMarkerNumber' where istringstream was not properly initialized and returned random values. Also added a print method for class Rule.
+7b7f0fb Fixed a typo in filename in EXTRA_DIST.
+caad8cb Now alphabets are copied when encoding and decoding flags in composition. Fixes bug #267.
+ad47d32 Oops, forgot about restoring scope state afer entry arcs
+f325949 Add a scope facility for local context boundaries
+591c5b5 Fixed most scan-build issues other than dead store, memory leak and errors from foma back-end.
+d207568 Added implementation for twosided flag-diacritics in hfst-xfst.
+d3c0506 Now harmonize-flags and flag-is-epsilon are by default OFF in hfst-xfst. Also added a new, mostly untested variable xerox-composition that matches flags with unknowns and identities in composition (default is OFF). All flag-is-epsilon functionalitites are moved under HfstTransducer.
+ce348d2 Purge commented-out lines
+3752461 Major syntactic changes and additions (AND & OR) to bring in line with Karttunen's documentation - amazingly doesn't break backwards compatibility (brobably / mostly)! Function syntax still lags and is incomplete.
+79f7b42 Added missing return value to a function in openfst back-end.
+636451e Reverted back to version 3992.
+e0442ee Instead of NULL, return a new HfstTransducer in a condition that should never occur. This is for some compilers.
+0d7cdee Fixed errors reported in bug #265. Also tentatively added a switch --xfst-harmonization to hfst-xfst that treats flags as ordinary symbols in composition.
+08462a7 Resolved another rpmlint issue, hopefully the right way (A HfstTransitionGraph method returning nothing when it seemed to be meant to be returning *this)
+68ed253 Resolved some issues and nonissues revealeled by rpmlint
+0e2f676 Now xre parser compiles expressions of type foo:bar^{0,N} correctly.
+be1e33d A better way see if we have a better location than before
+ba31a12 It seems to be generally faster to defer minimization at [] boundaries
+17b833b Made 'harmonize-flags == ON' the default for hfst-xfst. Also hfst-xfst's xre parser now harmonizes flags according to variable 'harmonize-flags'.
+90cff75 Fixed some issues noticed on c+11 and reported in bug #258: a space between literal and identifier, missing cstdlib header and ostringstream conversions.
+9da1a0f hfst-fst2strings now gives an error message if option --nbest or --random is used with transducers in optimized lookup format.
+ddea524 Apparently older gcc's libstdc++ require operator< to be const
+f6df4d2 Added locate mode on the library side; support for multimatch, weight access and various internal changes
+084d1a6 Now all command line tools should give an error message and exit with >0 if they cannot process input in hfst optimized lookup format.
+1959537 Now hfst-invert prints an error message if given a transducer in optimized lookup format. This should be fixed in all command line tools.
+5a5a3e4 Function set_expand_definitions added to the python interface.
+d89d63b Updated HFST version number.
+26bad71 Updated HFST version number.
+78a7e30 Added option --renameFlags to hfst-lexc for testing purposes.
+9e7a3ff Added option --encode-weights to hfst-determinize.
+c9ae91f Now hfst-lexc has options --withFlags and --minimizeFlags and hfst-xfst variables lexc-with-flags and lexc-minimize-flags to control if hyperminimization is used when parsing lexc files. Flag minimization can be the default behaviour when it has been properly tested.
+57cc2df The Xerox output should have an empty line between each cohort.
+01928da Now flag minimization in should work in LexcCompiler. Commented the changes out until all expected results from lexc tests are changed accordingly.
+38b3724 Apparently failing to read a stream now throws HfstException so catch that instead
+c29a94e Tentatively added a piece of code that filters out multiple flags in lexc result. Currently commented out.
+8b0216c A hopefully temporary tool called proc2 for simple tokenization, to become part of something else or be renamed in the future
+ae42592 Some fixes to python wrapping of pmatch and showing original input in pmatch
+cee590b Make locate() return a simple data structure rather than a string
+3ad4e8e Convenience loader function for pmatch
+0cc41ab Fix outdated prototype of printConnectedness() and add pmatch prototypes
+125ed8a Added option --Werror to hfst-lexc that treats warnings as errors.
+2e28445 Added tests for the fixed bug #243 that will pass now.
+24e7b46 Now keyword LEXICON is allowed without a preceding newline in lexc parser. Should fix bug #243.
+a50dd1a Added a variable encode_epsilons to function priority_union whose default value (true) should fix bug #254. Function lenient composition still calls priority_union with a false value of encode_epsilons.
+94dc75b Added support for cross-products such as {foo}:[bar] and foo:[bar] in regexp parser. Tests still needed.
+d42799e .NOTPARALLEL for now
+85a69f9 Fix serious bug with epsilons in contexts - they were incorrectly moving the input tape.
+b04de37 with pipes
+941baa9 A super cool progress bar functionality \o/
+30cf7bd Fix context-related bug
+13c1904 Readability refactoring
+7f22c97 Comment fixes and some more deadwood elimination
+cf24a3b Remove more unneeded stuff
+8d58ce1 Remove some obsolete & commented out bits
+dd779dd Locatefy option
+93d00f8 Don't make noise about almost always harmless result truncation
+9abaa72 Large refactor of almost everything (mainly to better serve tokenization apps w/tape synchronisation)
+8f8d846 Undo previous commit, was confused by polluted automake cache
+df23ced It seems that newer toolchains don't like c++ classes being defined over multiple .cc files, or something..
+1958ec8 Don't count flag diacritics when locatefying
+516bf5c Remove obsolete bogus -> rule from when @-> had problems
+e5d943a Handle missing @bin files more nicely
+04cf7dd Autoconvert @bin arguments if necessary
+9ce5490 Remove obsolete dependency readme that hogs the svn trunk page
+c427c3d Add constructor option to make diacritic strings blank or not; make pmatch consider them blank
+2c2e664 Added file 'test' to EXTRA_DIST..
+b1f01a2 Fixed hfst-twolc test Makefile.am
+211935e Disabled outdated unit tests.
+6b74d9f Tentatively implemented variable 'flag-is-epsilon' in hfst-xfst.
+531acff Fixed issue with left arrow conflicts for contexts with impossible word boundaries.
+2881c9e Also added tests for regexps with different continuation lexicons in hfst-lexc.
+489474a Now regexps with different continuation lexicons are allowed in hfst-lexc. Should fix bug #247
+21db219 Fixed list center rules and conflict resolutions.
+6942188 Tests for list centers.
+cd1193b Tests for list centers.
+6e909fd Exit on parse error Once we've printed a parsing error, exit rather that print intimidating hfst exception messages
+efdd01b Pattern-locating mode
+9061298 Some changes to approach to avoiding stack overflow should fix problems with very long input lines
+2cbb071 Add harmonization
+1c1007c Add extract tags -option (this commit also includes a secret commented-out facility for profiling activity on the input tape by drawing a funky ascii histogram)
+79c629f Fix incorrect check for whether tokenization needs to respect a long symbol
+7633686 Allow epsilon-symbol pairs
+01eb211 Don't print huge data dumps when parsing fails
+2273237 Revert back to the original TropicalWeightTransducer.cc and forget splitting it..
+d7755c3 Moved minimize and push functionalities from TropicalWeightTransducer.cc to separate files. This will make compiling TropicalWeightTransducer faster and prevent 'File too big' errors on Windows.
+1c74930 While scanning for possible first symbols, don't accidentally go beyond the end of the input tape
+c50a51f Ready for release 3.7.1.
+f17327e Now removing CR characters from output of hfst-xfst so that tests will pass on windows too.
+f374022 Now an error message is thrown in HFST when reading a native SFST transducer that uses the empty symbol.
+6596539 Added option --encode-weights (-E) to hfst-minimize.
+e7d0c0e Added documentation to parallel replace and removed unnecessary marker insertions.
+1d1251a Modified conpilation of weighted parallel rules by inserting markers to keep same mappings with different weights separate. Also added a StringPair variant of insert_symbols_to_alphabet to HfstTransducer and HfstTransitionGraph. Added a test case for hfst-xfst. Updated NSIS installer.
+60b45cb Tentatively added a function for substituting weights with markers.
+fd29751 Remove spurious obsolete comment
+2925fb7 Bounds check accesses to ascii_symbols when reading input too (ascii_symbols used to have a NO_SYMBOL entry for any char, but now without a check some accesses were resulting in bogus keys)
+d23d42f Add -D_XOPEN_SOURCE=500 in order to prevent -std=c99 from preventing strdup() prototype being visible
+9f7311e Correct bounds check for ascii_symbols alterations
+988e259 Now checking that ascii_symbols vector index is not out of bounds when removing shadowing symbols. Should fix bug #235.
+7b89f3f Replace rules bug fix
+6bbf8bd Parallel rules bug solved
+4ad528d Ready for release 3.7.0.
+6fd6272 Added missing files to Makefile.
+180ebd2 Added option --encode-weights also to hfst-regexp2fst.
+04837d3 Added option --encode-weights (default false) to hfst-compose-intersect.
+ec55eab replace rules - weights are removed from calculating contexts (they were unnecessary there)
+34fcf5f Removed commented code.
+d469a2b Modified TropicalWeightTransducer::are_equivalent so that determinization is carried out in a way similar to 'intersect' and 'subtract'.
+aee1515 Updated configure.ac
+b4fbd3f Reverted hfst-ospell changes.
+edb752e Tentatively added hfst-ospell under tools/src, it is only enabled if --enable-ospell is requested.
+911b8a0 Use precision 1 in weighted tests.
+e45e2fc Reinstate special ascii tokenization while avoiding shadowing longer symbols
+5ad406c Disable ascii-lookup when tokenizing
+e45fc59 Set encode_weights off in tests to make sure that they work also if it is on.
+6f1b3de Fixed a bug in parsing regexps such as '?:{foo}'.
+95fcfa3 Make pair notations a bit more consistent; enable RIGHT_ARROW
+8b3f312 Now incompatible replace types in parallel rules yield an error.
+65884a7 Added variable 'att-epsilon' to hfst-xfst. Also added more weighted parallel replace tests.
+4f93231 Now epsilons, identities and unknowns are printed correctly.
+4e6f664 Fixed a bug in handling unknowns in hfst-xfst's 'look up'.
+b3ac973 Added more weighted parallel replace tests.
+2ca06d9 Allow runtime contexts anywhere to facilitate some efficiency strategies
+b628ccf Added rest of the replace tests.
+d28fef5 More tests...
+9cd39cb Added more hfst-xfst replace rule tests.
+77d98df Fixed weights in markup rules
+f62a2ce Added more tests.
+42c8ecb Added more replace tests.
+9ad639d Added replace tests, not all of them are yet performed.
+095ed97 Add tentatively new replace tests.
+8fb7cc9 Added tests for containment operators.
+e49b202 A couple of small fixes to containment operator.
+06ee31a Sorting arcs before subtraction in TropicalWeightTransducer::subtract.
+e2e71f5 Removed unnecessary determinization from TropicalWeightTransducer's intersection function. Added function HfstTransitionGraph::get_transition_pairs. Made some small modifications to xre parsers's containment operator.
+e46dcf9 Fix definition of curly literals
+0fa1896 More PAIR_SEPARATOR fluff (which should be completely refactored)
+8cb51e1 Build input scanner without using a stack guard; also refactor where runtime behaviour is stored
+8fb36bb Added tentatively new functions for implementing containment in xre parser. Removed determinization from intersection.
+0721534 Changed containment operators so that they also work with transducers that are not automata, i.e. '$.[a:b]'.
+c08ec08 Added documentation to TropicalWeightTransducer::intersect.
+8455c8a A simple stack guard for first-input -collection (only, for now)
+c0f23cf Now all containment operators work, at least with unweighted containment transducers.
+562e77f Fixed a bug in '$.' operator in xre parser.
+fcb43f5 Use a vector in the prescanner to make it slightly faster
+7790325 Add class-identifier to friend declarations; required by some compilers
+8623961 Remove extraneous debugging message
+be473f1 A very conservative and (for now) computed-at-runtime input prescanner
+fb8361c Added a test for empty context in replace rule.
+413741c Resorting to global variable 'encode_weights' instead of passing it around as a variable. Allowing empty contexts in replace rules, i.e. 'a -> b || _ '. Fixed a minor printing issue in hfst-xfst.
+9c6f3ab It's perhaps a little clearer if is_like_epsilon(epsilon) is false
+3c4f82e Fix bug where conversion from ol to basic transducers was missing @I.foo@ arcs in some situations
+834a129 Fix bug where weights on the insertion arc were being ignored
+0e7e0a6 Log insertions when verbose
+3cd1281 Added variables 'max-weight' and 'encode-labels' to hfst-xfst.
+981f3cb Tentatively added functions to control label and weight encoding in weighted minimization. Also added max_weight parameter to lookup_fd of HfstBasicTransducer.
+c265345 Fixed weighting in containment operators.
+ae39ecb Edited xfst tests.
+9765b5b Fixed a bug in parsing multiple parallel replace rules.
+fd0614c Fixed a bug in the contains one '$.' operator. Improvements to the xfst parser.
+700c746 Updated regexp2fst help message.
+53585c5 Use "" for special parsing and symbols, {} for tokenizable strings; also allow "define" alongside "Define" Future note: consider adding another syntax for "totally bare" symbols with no special parsing
+56d86bc Only print prompt in pipe mode if --verbose is used.
+5440fa9 Added yet more tests for weighted rules.
+f0abf04 Made xre parser ignore weights in rule contexts. A warning is given in non-silent mode.
+b481854 Added more tests for weighted replace rules.
+49fd9ba Added optional variants of replace right tests.
+17712e1 Forgot to apply weighted_rules -> weighted_replace_right renaming scheme to test.sh.
+a0566e4 Renamed weighted_rules_* to weighted_replace_right_*.
+54e62ac Addded more weighted rules tests.
+92b67e7 Added function HfstTransducer::is_infinitely_ambiguous() and command 'test infinitely-ambiguous' in hfst-xfst.
+6633e61 Copy the before-seen states so different paths to the same state don't conflict Reinstates a skipped test
+72955a8 Made hfst-summarize print whether transducer is infinitely ambiguous in verbose mode.
+946d841 Fixed a couple of typos causing errors when calling is_infinitely_ambiguous..
+ec80b66 Tentatively added function is_infinitely_ambiguous() to HfstTransitionGraph. Added variables 'lookup-cutoff', 'print-words-cutoff' and 'precision' to hfst-xfst. Added test cases for weighted rules. test_transducer_functions now returns a skip value until hfst optimized lookup transducer's function is_infinitely_ambiguous is fixed.
+9cf83ec A slight followup to the previous commit
+b26cd8f Fix stupid bug in tricky control flow part of loop checking
+2b0e3b5 Bugfix: distinguish between transitions and transition indexes when determining state equivalence when looking for epsilon loops for a given input.
+674b883 Remove extraneous debugging message
+9dba5e0 Fix bug where infinite ambiguity checking was polluting the flag diacritic state
+daad246 Reorder things so that we should usually run into max_results before running into the stack depth
+6bafb97 Respect result limits and implement a recursion depth guard so instead of blowing out the stack we discard overlong results and give a warning message
+1431848 Rip out empty main test function so there's only one in the ol compilation unit
+bec743d Add string version of is_lookup_infinitely_ambiguous() to HfstTransducer api too
+4845339 Added variant is_lookup_infinitely_ambiguous(const std::string &) in HfstTransitionGraph which is used in hfst-xfst to check infinitely ambiguous cases in lookup. Also added a variable precision in hfst-xfst to control the number of decimals shown.
+391c4c0 Add a facility for determining whether a given input produces an infinitely ambiguous lookup
+7a6fa36 Replace rules - weight now works on both sides, with context.
+e6b4af8 Insert special symbols into ?-containing transducers' alphabets right away, fixing some incorrect harmonization behaviour
+42dd77c Updated weight management in replace rules
+e903072 Finally ready for release 3.6.1.
+9db3ddd Better conflict warnings
+27a6627 Now it is possible to save and load a stack of transducers in hfst optimized lookup format.
+ae84501 Give a more informative error message if tranducer is not in hfst optimized lookup format in hfst-proc.
+eb61bef Added hand-written man page for hfst-foma.
+49e1c5f Updated man pages.
+415d8f0 Now removing symbolic links to command line tools when performing 'make uninstall'.
+eda041b A new candidate for release 3.6.1.
+6c6081a Updated installation check.
+e515805 Edited help messages of lexc and lookup tools.
+f2398e2 Made creating and checking flag results less verbose.
+dbb84a0 Changed 'return' to 'exit' in shell script.
+9dc775e Updated version numbers in NSIS and swig files. Also made lexc wrapper disabled by default.
+d76dfcd Fixed a typo.
+d2efde2 Corrected syntax error, typos.
+2f1296e Ready for release 3.6.1.
+672a2b4 Edited help message of hfst-lookup.
+86ca382 hfst-lookup now also handles a transducer archive.
+0a73c82 Added more options to print (random-)(upper-|lower-)words commands in hfst-xfst.
+9ae6bfb Fixed a bug in HfstTransitionGraph::remove_transition and added a test for it.
+1f12493 Fixed some reserved words in lexc parser. Added weights for command 'look up' in hfst-xfst.
+d98f5c2 Scaled down weights in replace rules.
+1d953fc Lex the left paren in function calls along with the function name to make a distinction between a symbol followed by an optionalized transducer and a function call
+c17b5be Added a lexc test that contains reserved words in lowercase. The test does not compile in the same way as in foma.
+247d365 Lexc weights fixed
+8e97a2f small lexc bugfix, tests enabled
+e4eb4c0 Allow underscore in symbols (couldn't discover a malignant side effect)
+2d0993d A lot more expressiveness involving DefFun()
+b251769 Fixed #227 hfst-lexc and multichars with zeros
+54bb1e4 Made hfst-xfst use foma's lexc. hfst-lexc-wrapper is enabled by default.
+06c35e9 Allow tsv input for reweights
+c2006bd Forgot to update -version-info in Makefile.am.
+cc52d4b Ready for release 3.6.0.
+c4bab38 Edited morphology tests so that they agree with changes in finnish-analyze.sh.
+cfbc028 Now checking in configure if tr1::unordered:map/set or std::unordered_map/set is available.
+a04fcb3 Replace rule longest match bug fix
+5c6d4ae Now hfst-xfst gives better error messages if a file cannot be opened. Removed h-files from SOURCES in tagger Makefile because they confuse some compilers on Mac.
+792a4af A preliminary version of DefFun(args...  and Map(fun, @txt...)
+6ed03ab Now apply up/down are done using HfstBasicTransducer if the transducer is not in optimized lookup format, which is relatively fast.
+9b8c298 Removed unnecessary comments.
+b610b50 Added prompt '>' to hfst-lookup, it can be disabled with option --pipe-mode. Added command 'convert net' to hfst-xfst to convert between optimized lookup and standard formats. Now also supporting 'apply up' for optimized lookup transducers.
+0f64569 Removed redundant declaration of SfstTransducer::harmonize that caused an error on Mac OS.
+501ef0f Added command 'load FILENAME'. Fixes bug #225. Also allowing a ';' after 'define VARNAME'.
+d8bb71d Now command 'define foo' is recognized. Fixes bug #224.
+dbcdbe9 Set permissions of flag check scripts. Fixed some typos in other tests and in flag diacritic handling (== instead of = in if condition).
+52eba53 Added hfst-xfst to the environment, help and version checks.
+8d65450 Made minor fixes to tests so that they work correctly on windows and mac too.
+0b5d709 Now HfstInputStream constructor throws an exception if file cannot be opened. This exception is also handled in the regexp parser.
+980ed3e Added experimental options --enable-no-tools and --with-openfst-log to configure.
+15c1ea2 Removed unnecessary warnings from hfst-lexc.
+f327366 Fixed a typo in configure file, extension should be 1, not 0.
+90a6953 Now creating a variable length array dynamically to avoid compilation errors.
+cb847d7 Renamed hfst-lexc2fst to hfst-lexc and hfst-lexc to hfst-lexc-wrapper.
+43f5303 Now att format is printed directly to the console in windows environment.
+11b0dcb Updated reading and printing functionalities based on tests in MinGW environment.
+a57a9b4 A more reasonable parse order for weights and special functions; fixes various bugs concerning weight placement that should be legal
+a0ee0c2 Added missing <stack> include to HfstTransitionGrap.h.
+f8fd3d1 new lexc2fst, with tests
+29d8cbe Fixed a bug in harmonization, now flag diacritics are not harmonized.
+9f5f620 Transition to weighted, prioritizing pmatch; recompilation of rulesets required at least for now
+b62bfd3 Removed a line from HfstTransitionGraph::substitute that printed debugging info to stderr..
+36699e0 Added function HfstTransitionGraph & HfstTransitionGraph::(std::map<HfstSymbol, HfstTransitionGraph> &, bool harmonize)
+08d4506 Now standard streams are defined as binary in command line tools when compiling on windows.
+03ed696 Updated batch, NSIS and swig scripts for windows.
+5b43fe8 Support \uXXXX with a codepoint -> utf-8 generator - this should probably be shared somewhere
+e325a0b Know about uppercase ẞ
+a207a50 Do not warn user about using foma type in hfst-lexc if they have explicitely requested it with --format foma.
+9c19e8f Now hfst-lexc obeys argument --format. Fixes bug #213. Also updated NSIS scripts.
+84b99fd Updated NSIS script. Added hfst-twolc and hfst-train-tagger bat files for windows compilation.
+882e7f4 Distribution package includes flex/bison-generated cc and hh files. Make check runs tests only for those command line tools that are enabled.
+66f323b Allowing tagger tools in mingw.
+caa6f26 Fixed a bug in xfst_getline, also added freeing the result from it.
+32c6b57 Fixed a memory error in hfst::xre::parse_quoted noticed during make check on MinGW.
+8d39597 Fixed some bugs noticed during MinGW compilation: added typedef 'off_t' and compiler definition '__NO_MINGW_LFS' when mings compilation is enabled, and escaped percent sign in fprintf as double percent. Also added tagger tools and hfst-xfst to NSIS installer script.
+158e8ef Allow plain input-output -replacement with tokenized quoted literals, like "this":"that"
+87a7276 Some refactoring & warn about unused definitions
+8ad5fe2 Ready for release 3.5.1.
+83d0dc0 Applied lexc patch (bug #208).
+4a95514 New lexc, but still incomplete
+b8907ea Removed directory fsmbook-examples as fsmbook-tests replaces it.
+5c0a757 Now using foma's lexc parser in hfst-xfst by default. Also using verbosity of hfst-xfst and tagger tools in lexc parsing. Also added an option --enable-all-tools in configure.
+1213bb0 Use flex's newline count as good-enough parsing error indicator
+3ab3a5d Actually fixing that bug this time
+6c720e2 Fix typo-bug in previous commit
+8a3e52c Much more verbose printing of time spent on harmonization and conversion & a speedup the the process of collecting a unified alphabet
+209a12d Small fixes to installation check.
+b2730bc Removed redundant command 'rm TMP' from pmatch test. Also removed verbose 'skipping some test cases' print from proc test, returning a skip value 77 is enough.
+d902787 Fixed a typo in test script.
+d7b4050 Changed temporary transducer name in test-hfst-xfst so that it does not conflict with any other transducers used in the tests.
+ce5564e Skipping pmatch_blanks.txt when creating binary transducers from att files. Also made check-tools.sh more verbose. Fixed a typo in make-dist.sh.
+3ebd13c Modified the call to 'nodeindexing' in SFST::Transducer::store as it seems to leave its argument unchanged sometimes. Noticed this effect when testing hfst-xfst and getting a segfault when trying to use a stored transducer.
+c41db2e Added disjunct_as_tries as a public function of TropicalWeightTransducer.
+7c3bd28 Remove ineffectual AM_LDFLAGS line
+cb52daa Try setting a toplevel LDFLAGS to standardise to the standards-compliant libstdc++
+a1d9ab8 A pmatch functionality test
+8fe00ae --flatten and make option passing a bit neater
+994689f Add DefIns and make LTR longest the default RIGHTARROW
+0b2a9f6 Added argument 'extra_link_args' to Extension constructor. By default it is empty, but when making the debian package it can be replaced by linker flags that make it use /usr/lib/ instead of /usr/local/lib/.
+432da48 Print transducer and function definitions as string pairs in the way they are defined by the user.
+7fc05b8 Made print paths observe whether obey-flags is set ON or OFF.
+0346f8c Now transducer names are saved.
+efded06 getline() doesn't return a newline-terminated string if one can't be found; in this case we mustn't erase the final character.
+000a25d Updated ChangeLog, maybe after a couple of bug fixes ready to make the actual release..
+efb77b7 Added variable 'print-foma-sigma' to the xfst parser.
+f279104 Add a pmatch2fst functionality test with a regression test
+6ebc08b Fix bug wrt unused networks were getting erased from their container during iteration, causing other networks to be skipped
+b911b35 A preliminary "true" negative context facility
+39d4db6 Transducer definitions are expanded without calling substitute in xre parser, the new way is faster and less prone to symbol/alphabet errors. Implemented 'print net NET_NAME' in xfst parser. Allowing variable names that can be parsed as numbers in xfst parser.
+7078c8f Ready for release 3.5.0.
+426e74b Added missing files in fsmbook-tests to distribution package. Edited READLINE conditional in hfst-commandline and lexc-readline-ui.
+9024224 Edited help messages of hfst-fst2txt, hfst-txt2fst and hfst-xfst. Added missing files to distribution package.
+64a536a Renamed hfst-xfst2fst to hfst-xfst and hfst-xfst to hfst-foma.
+3edfd46 Added variable harmonize-flags to xfst parser. A warning message is printed when composing transducers with flag diacritics if verbose in ON and harmonize-flags is OFF.
+ce71a8a Added missing variable 'print-weights' to the XfstCompiler constructor with impl argument. Added support for prolog format to hfst-fst2txt and a simple prolog test. Fixed a typo in configure.ac. Removed unnecessary commented text from HfstTransitionGraph.h.
+3ba662f Added support for weights when reading of writing in prolog format.
+6094847 Edited xre warning messages.
+a8a38ce Added a boolean argument 'increment' to function 'set_final_weights' which defines whether existing weights are summed with the new weight or overwritten, the default being overwritten for backwards compatibility. Also added warning messages about hfst-special symbols of form '@_.*_@' to the xre parser that are printed in verbose mode. Also added support for negative weights in xre parser.
+fe04740 Fix compilation time output at hundredth-of-a-second precision
+998f553 Make --verbose output somewhat neater
+7864401 Time individual compilations
+dc0dd3e More fine-grained information in --verbose
+b782c81 Added option --harmonize-flags to hfst-regex2fst. Also added a function 'set_harmonize_flags' to the xre parser.
+763aa83 Using result from foma in DateParser test.
+46ace60 Added angle bracket test for hfst-xfst2fst. Omitting it until we decide how symbols enclosed in alngle brackets should be handled.
+5efe9b4 Fix some problems wrt ?-expansion and symbol tables in RTN:d networks that have to be aware of each other. Also use dark, forbidden symbol magicks to prevent special markers in RTNs from being clobbered in this process.
+9493341 Make harmonize() a public member function (this changes the interface)!
+e713b45 Now lexc parser can handle epsilon '0' correctly.
+9cc8ad7 Fixed a bug in xfst parser, now semicolon is allowed after 'read lexc <filename>' command and verbosity of the xfst parser is also used when parsing a lexc file. Also added expected results for fsmbook Esperanto tests.
+9b7a8d4 Updated fsmbook tests so that they use ready-compiled xfst/foma results given in prolog format. Also fixed a typo in DateParser hfst script. Also checking that fsmbook-tests and xfst2fst are both enabled in configuration.
+e22ffb2 Fixed a bug in quoted literals, now ["foo""bar"] is parsed as in xfst: ["foo" "bar"]. Also using foma instead of xfst in fsmbook-tests when compiling Lingala because different interpretations of symbols enclosed in square brackets.
+f23f9c8 Now xre parser handles "[.#." and ".#.]", interpreting them as "[ .#." and ".#. ]".
+ef252ec Removed unnecessary zlib dependencies.
+15ac316 Updated cross product and apply boundary mark in replace rules.
+04ce2d3 Changed include of hfst-scanner.h to hfst-scanner.hh.
+fcab62f Changed include of xfst-parser.h to xfst-parser.hh
+bc5b1c4 Changed PmatchUtilityTransducers variable utils into a pointer and added a function get_utils() to avoid variable initialization issues.
+c67ec6c Reverted INTERNAL_EPSILON etc to internal_epsilon..
+5501ab9 Pop the local state stack too when exiting rtn calls
+966fd9f Changed internal_epsilon etc to INTERNAL_EPSILON also in pamtch utilities.
+22d93fa Use xfst instead of my local copy of it..
+90db8f4 Now using macro INTERNAL_EPSILON etc instead of string internal_epsilon to avoid variable initialization issues (noticed on cygwin).
+8f8f9a0 Now fsmbook and hfst-xfst2fst tests should work correctly whether they are enabled or not.
+cf28d27 Added condition WANT_XFST2FST to tools/src/Makefile.am. If it's true, directory parsers is included.
+4359279 Make parser even more messy by having bodyless tagging contexts at the toplevel - for now
+91a171c Added missing file.
+7ba73be Now using directory fsmbook-tests instead of the old fsmbook-examples. Renamed h2hh.sh script to generate-cc-files.sh.
+bdb4ca7 Roll back broken empty-bodied contexts for now
+9932c0c Removed the HH_EXTENSION_USED conditional from configure and makefiles since it didn't work. Now assuming that the flex/bison-generated header files have the extension hh. If this is not the case, the script scripts/h2hh.sh should be run between configure and make.
+ba5562b Added a script for cygwin compilation.
+f373aed Edited ifdef conditionals based on warnings when compiling on cygwin. Also added a script for handling errors in flex/bison header file naming.
+5c3fe43 HfstTransducer::cross_product should expand ?:? transitions to ?:?|?, added this but inside comments until a bug in xerox rule compilation is fixed.
+9bd6dcd Fixed a couple of typos.
+2ab61ee Added more tests to the xfst parser.
+9b4ec9b Finally full support for quoted literals in xre parser.
+8693d53 Tentatively adding quoted literals in xre parsing, this time step by step..
+6d2fcd9 Trying again to make quoted literals work better in xre parser..
+5f46435 Reverted recent changes to xre parser, noticed bugs in hfst-regexp2fst..
+26cc935 Symbols that contain quoted literals supported in xre parser.
+65f1798 Better support for quoted literals in xre parser.
+afd146a Now allowing '0' in symbol names.
+6c08400 Give verbose information about networks while parsing
+c9200d4 Merge from devbranch
+eba09c9 Added cstdio header, it isn't included in cygwin.
+15d6ecb Dynamically allocate input tapes in case of overlong input - in case of insufficient memory, truncate overlong lines.
+ea5ad01 Don't attempt to find regular arcs with symbols newly discovered from input.
+4641571 Added option --eliminate-flags to hfst-compare. Commented debug info printing from LexcCompiler that polluted its output. Edited command line tool tests accordingly.
+f4dd70e Fixed a bug in calling FomaOutputStream.
+068bd6a Added variable print-weight (default NO).
+11a3786 Added examples to hfst-regexp2fst help message. Now xre parser accepts also semicolon and one or more spaces as weight separator. Moved flag handling from FomaTransducer to HfstTransducer as it does not depend on foma backend.
+6089640 Restore tape state after processing rtns; this should fix leftmost greediness bugs wrt rtns. Also: do some checking and print errors in case of broken tags instead of hard crashing.
+db770ec Now make check passes also when some of the back-ends is disabled.
+ef59b18 Output symbol tables were missing when writing transducers in native OpenFst binary format. This is now fixed.
+626d023 Cosmetic changes to Xerox rules
+ab840e4 Removed HH_EXTENSION_USED conditional from configure as it still fails on some platforms. Added function HfstTransducer::get_first_input_symbols and using it in hfst-summarize.
+aa76b2c Ready for release 3.4.6.
+38c638e Now empty comments starting with one or more exclamation marks are also parsed right.
+ea40e35 Fixed errors noticed during hfst-xfst2fst tests.
+adfea76 One more special symbol spelling to rectify...
+3fb5812 Fixed a bug in fsmbook tests.
+1935b06 Forgot to make context markers non-special too!
+770efa4 Add a couple of useful combining accents
+1578436 Use (faster) string disjunction instead of full disjunction for word lists
+9fe2800 Make only TOP, networks with EndTag() and networks with Ins() get the special @PMATCH_ENTRY@ etc. delimiters. This should make various operations on networks that don't use these features work.
+c201bf6 Added missing file.
+3b4ae5e Now allowing several prolog networks in one file, separated by empty lines.
+e26899d Added tests to fsmbook test set.
+786baf3 Now Palindroms test works.
+7c635b5 Fsmbook test Esperanto is now divided in several script files.
+c165109 Now using prolog format to convert between transducer formats in fsmbook tests. Also added the option --prolog to hfst-txt2fst and fixed a small bug in prolog parsing in HfstTransitionGraph::read_in_prolog_format.
+864120d Remove generated files in hfst scripts.
+728b769 Correct internal endtag format in utils too
+84bccf9 Endtags look like @PMATCH_ENDTAG_foo@, not @PMATCH_ENDTAGfoo@
+c14098e Fixed a couple of bugs.
+5976146 Correct typo that was suppressing the functioning of CATENATE_N
+88455f1 Rename internal symbols not to match is_special_symbol() to let them pass through eg. composition operations
+88ae522 Added tentatively directory fsmbook-tests which will replace the directory fsmbook-examples.
+7f5ff0d Added the variant 'write att outfile isymfile osymfile' of 'write att' to the xfst parser.
+e4f2985 A hopefully working test for HH_EXTENSION_USED - unfortunately it appears that automake lines not in a make target are included regardless
+7d7a225 Eliminate else branch
+ee4e69d A better value for the HH_EXTENSION_USED variable?
+dc42b09 Eliminate references to .h targets when HH_EXTENSION_USED is unset, which was perhaps bothering automakes >=1.12
+6a89896 A (more) correct understanding of IDENTITY.
+510955c Switched the *.h - *.hh dependency around, from *.hh: *.h, to *.h: *.hh. This seems to have fixed the *.hh build issues on MacOSX. I have no idea whether this will work or break (on) other systems. Please test!
+0a1a72e Some systems need to be told that .ll files depend on .hh files so things get generated in the right order
+dc1d37e Added '@pl' operator to the xre parser. Testing it with hfst-xfst.
+9a7a132 Fixed the h/hh issue once again, now trying to copy instead of linking. Also added assertions when converting from sfst to basic transducer format.
+3b37bde Removed redundant filenames, added whitespace.
+de4fcde Changing the BUILT_SOURCES to list the cc files instead of the hh files seems to fix the header file issues for twolc.
+0d56127 Some support for identity transitions
+9bc40e0 Implemented '@txt' and '@stxt' operators in xre parser. Also testing them through the xfst parser.
+2f7e9a7 Make the alphabet know about IDENTITY
+9fc2d09 Uncomprehendingly fill in the blanks for the LEXC_BUILT target
+03cf074 When composing incompatible types, instead of throwing an exception, convert the latter type to the former for composition (as per hfst-compose's message).
+91db5fb --force symlink to .h/.hh target
+eeaf345 Add combining accents to the end of the capitalizing and lowercase-ifying utility transducers. Also more aggressive minimize utility transducers.
+bd1cd1b Character constants like \xNN are two hexadecimal numbers, not decimal
+df7f071 Allow escaped quotes on quoted literals
+479cff7 Implemented '@re' operation in xre parser. Added test cases for it in the regexp parser tests.
+b3a3c2a Fix bug with input tape initialization in certain circumstances.
+a0c966a Changed rm -f to ln -s in the Makefiles when handling the h/hh rules.
+327a83d ln instead of mv in .h/.hh rule
+1fc8b14 Check for .h/.hh yacc convention and mv accordingly
+faf3847 Made some modifications to the xfst print format, removed comments from xfst compiler.
+8b608d4 Added missing files.
+394603e Added substitute defined tests to xfst parser.
+b38ac6e Added -f to mv header files
+e441292 Fixed a bug in converting an empty foma transducer into an HfstBasicTransducer.
+3cc8efa Added more substitute tests for xfst parser and fixed some issues with alphabet in substitution functions.
+fd05f5f Fixes bug with Ins()erted transducers named "name"
+1b4b69c Add toplevel delimiters (in addition to ones associated with EndTags). Fixes a bug when endtags aren't used but insertions are.
+e91d560 ToLower, ToUpper and OptCap made (more) compatible with Karttunen's pmatch
+5613090 Fixed bug in LexcCompiler.cc, one that was causing wrong compilation of noflags in cases when there were only identities in lexicon
+9178deb Forgot to remove old test file.
+c757950 Divided xfst substitute tests to several files. Fixed a bug in printing unknowns in xfst format.
+479c64b Now allowing more variable names.
+4307079 Now substituting symbol with symbols(s) removes the original symbol from the alphabet.
+cf3fd28 Fixed a bug in xre substitution: disabled harmonization that caused unknown symbols to be expanded to temporary variables.
+9e1c4f9 Minor changes to lexc2fst and xfst rules
+9b45963 Not substituting a symbol pair with an empty set of symbols removes the transitions equivalent to the symbol pair.
+c222f0f Added tests for substitute functionalities.
+d9ba4ce Added 'substitute defined' to the xfst parser.
+afa6747 Now configure checks the version of automake and renames the header files generated by flex, if needed.
+de7b521 Now 'make clean' removes also files generated by flex/bison.
+7b6831d capitalisation modes: last on wins
+0fee2aa update
+a8383d4 Oops, forgot to exclude xfst testing from make check..
+5c2ce1b Added documentation.
+8c9f157 Now most of the keywords are interpreted as such unless they are at the beginning of the line.
+d488c08 Added substitute functionalities to xfst parser.
+cec7f36 Added function 'remove_from_alphabet' to HfstTransitionGraph.
+e4ae2b8 Added command 'assert' to xfst parser.
+f163569 Now all commands are given by tab if readline is used.
+961ff5d Added tests for writing and reading prolog files in hfst-xfst2fst. Also fixed a small typo in writing in prolog format.
+a24c10b Removed implicit readline requirements from hfst-xfst.cc and foma.c. Also edited prolog functions in HfstTransitionGraph.h.
+eab0624 Now reading and writing in prolog format works. Also addded some exceptions for prolog handling.
+1765035 Added prolog printing functions to HfstTransitionGraph.
+2cd5695 more header renaming (see commit for r3377)
+2c12e0c change header file names -- this will break compatibility with automake < 1.12 see http://lists.gnu.org/archive/html/automake/2012-09/msg00017.html
+055ff21 changes to names of generated header files --- pending testing
+77f5280 Now apropos and help messages work in xfst parser.
+d5fc1bd bump required versions of automake and libtool
+9feac55 Ready for release 3.4.5.
+c9b1cc5 Solved bug in replace rules with term complement in context, fsmbook tests are now completed.
+ea426a7 Edited help messages.
+d6b3866 Small fixes to the xfst parser.
+0286e7f Additions to apropos and help commands.
+21d49c1 Tentatively added enums and maps for xfst commands.
+cdc7f85 Now using variables outstream_ etc instead of stdout etc.
+1e43194 Tentatively added commands 'apropos' and 'help' to the xfst parser.
+ed0fe8e Backport pretty dot files from that better branch
+0fe1b1c Added more tests to xfst parser.
+8ccc79d Added new functions write_in_xfst_format(ostream/FILE*) to class HfstTransitionGraph. Using it now in the xfst parser when calling 'print net' instead of write_in_att_format.
+df3ab64 Added more documentation to the xfst parser.
+90d0462 Added documentation to xfst parser functions. Also fixed a bug in prompt handling when calling apply up/down.
+987fe0a Basic size indications in verbose mode
+b66c98d Xfst parser: now apply up and down work also in pipemode.
+dd5f2e1 Fixed some bugs in the xfst parser. Now readline/getline is used consistently in the command line tool and in the actual parser. Also the option quit-on-fail now works as it should.
+cc65d1e ToLower() and ToUpper() were missing from the rule parser
+5662445 Substituting symbol A with B on both levels now correctly removes A from the alphabet.
+4316ee7 Occasionally minimize while collecting large @txt lists (this is a significant efficiency improvement for those cases)
+de4c50d Fixed a couple of bugs in including back-end libraries noticed during cygwin compilation.
+648dd3e Tests for version and help checking as well as empty input now check only a set of listed tools instead of hfst-*.
+41f0dff Commented foma headers from hfst-file-to-mem.cc. Also fixed a bug in regex parsing in hfst-xfst2fst.
+c77d4ab Let's use malloc until we figure out where xxmalloc lives (and why we want to use it in the first place)?
+945c765 Error messages from xre parser are now handled through the function get_error_message instead of printing them directly to standard error stream. Also changed 'Transducer' to 'SFST::Transducer' in SfstTransducer tests to avoid ambiguousness.
+9898075 Some header files stil used installed back-end libraries instead of those in directory 'back-ends'. That is now fixed.
+d12c4da Now prefix xre is used when generating xre parsers. This should fix bug #185.
+19efda5 Now regex comments can contain semicolons. Partially fixes bug #177. There is still some ambiguousness in weighted mode, consider e.g. the input 'cat ; 3'.
+66ae905 Fixed a bug in function hfst_file_to_mem, when using stdin.
+1db3b53 lex joiner's format changed to special symbols which do get harmonized
+c4e5502 Moved function hfst_file_to_mem from hfst-xfst2fst.cc as a separate file.
+43006eb Fixed comment parsing in xre parser, hfst-regexp2fst still needs some fixing so that semicolons can be used in comments.
+3b8d538 Added facility for inserting undefined transducers as long as they are defined later
+78b697d stringify() can and should take a const parameter
+4c74eab If no boundary markers were used, we need to advance the input tape accordingly to where the real input starts
+a0171d9 Print newlines after printing match result
+b6798c7 Check for nonzero length before trying to omit final newlines
+f978c01 Omit final newlines from input
+be48f32 When in newline mode, no need to print final line because it's already been printed
+9ac5d42 Reworking of pmatch tool, added default of blank line as separator
+1d9d235 Tentatively added a function compile_first to the xre parser that allows compiling onely the first regex in a string.
+459a518 Now hfst-fst2strings obeys the -S flag. Also removing generated files after make check in xfst parser.
+6856a76 Added 'print defined' to xfst parser. Also temporarily commented the bison > 2.6 request in configure.ac until bison on hfst gets updated...
+ee6e8d0 Added a test for bison version 3.6+ - now it will stop if older versions are found. This seems to fix at least one of the build issues reported.
+18a9ff8 Added tests for defining functions in xfst parser. Also fixed a bug in function definition.
+acd3a94 Add diagnostic for rulesets that don't recognise anything
+a62e3f5 Avoid compiling transducers that "recognise" the empty string
+e196215 New insertion arc handling
+8301449 Move insertion arc checking out of flag diacritic handling after all
+692840f Collect and harmonize alphabets
+0e895a7 Detect inserted transducers and only pass them and TOP on from parsing
+5bcd4a2 Recognise insertion arcs as flag diacritics
+5904514 Skipping regexp tests that do not work. Also added new tests.
+62202a7 Changed regex.tab.c and regex.tab.h filenames to regex.c and regex.h because make distclean of some version of autotools removes tab.c files. Should fix bug #184.
+d829e21 Catenate functions were giving wrong results, now fixed
+0cf3e8d No flags part now seems to be working
+4155dd9 Don't treat automake warnings as errors.
+e568b99 Regexps that contained comments were skipped, now that is fixed. Fixes bug #182.
+8590e32 Reverted back to earlier version.
+c93a90c Changed bison-generated h-files to hh-files. Recent versions of bison and automake are needed for compilation.
+cbfe23e Now binary transducer operations don't modify their second argument. Fixes bug #180.
+bcbc96f Refactor ol conversion to allow giving a harmonization hint
+1219953 Fixed error messages.
+0bc38c1 Fixed error reporting in xre and xfst parsers.
+23eb58d Now reentrant parsers are used in all xre parsing.
+7ab97de Fixed replace rules with empty languages
+6f2b708 Added missing file.
+2fc9432 Added reentrant versions of all xre functionalitites.
+e1ac0fd Tentatively added reentrant versions of the xre functionalitites.
+7d683c4 Avoid extraneous copying and sorting
+707fe42 Now comment lines are correctly parsed by hfst-regexp2fst. Also added error diagnosticprints to proc test.
+8cb8ab2 Maybe fixed bison anf lfex header problem. Revert, if it doesn's work.
+9b22f58 Added more function handling to xre parser.
+31fcb4e Fix invert logic and remove debug print
+758a647 Added more function handling mechanisms to xfst and xre parsers.
+fb73e65 Now xfst parser recognizes function definitions.
+9d699fb Make the starting position of the input tape be before BOUNDARY_MARKER. This is to enable referring to the boundary in expressions, not just contexts. It should gracefully always fail to match and be ignored in the absence of boundaries in expressions.
+368efab Refactor parsing; rip out tool-specific parts (and, for the time being, some probably unnecessary control options)
+3267693 Debug printings and rearrange noflags part to first
+59bb75d xre parser now recognizes function calls. xfst parser supports command 'source'.
+185a9ea Add some noflags to parsers
+9aa9a7c Add support for selecting flagged and composed morphotaxis.
+6c6f4f0 Command 'source' implemented in xfst parser.
+65fc6de Added test case for bug https://sourceforge.net/p/hfst/bugs/177/ .
+57132d8 Added symbol substitution to xfst parser.
+f7bec38 Remove use of strndup to fix bug #175
+d63cd8c Added more functions to the xfst parser.
+c9048a3 Fix a bug caused by shifts in the input tape caused by entering left-hand contexts that weren't being undone.
+4945095 Added more functions to the xfst parser.
+16ef95d Removed WeightedString classes as they are replaced by HfstOneLevelPath etc datatypes. Also added new functions to the xfst parser.
+9962f1e Moved lookup_fd functionalities in hfst-lookup.cc to HfstTransitionGraph as member functions. Also moved HfstEpsilonHandler.cc and .h from tools/src/ to libhfst/src/. Removed is_flag_diacritic from hfst-lookup.cc and using FdOperation::is_diacritic instead.
+41c6f4e Removed extra code.
+5dfb71b Moved EpsilonHandler from hfst-lookup.cc to HfstEpsilonHandler.h and .cc.
+24c1781 Moved is_lookup_infinitely_ambiguous(HfstBasicTransducer ...) in hfst-lookup to member function of HfstTransitionGraph: is_lookup_infinitely_ambiguous(...).
+3aee716 Added flag tests for hfst-fst2strings.
+944e477 Use ANOTHER_EPSILON for tokenising
+b39c704 Now option combination --obey-flags --random works in hfst-fst2strings.
+6597da6 Insert epsilons to all lexicons
+5f8d5e2 Maybe align end flags
+66184c6 Now hfst-xfst warns about transducer type conversions. The state and arc information should also be correct.
+2ab6f01 Added missing test file.
+ff916bf Many changes to how utilities are handled, prepare to move all parsing away from the hfst-pmatch2fst tool
+6379325 Another bug in flag elimination fixed. Now flags that are not eliminated are included in the filter so that they are not blocked.
+2c0c535 'load stack' didn't print state and arc info for all transducers, this is now fixed. Should fix bug #171.
+37b640a Calling eliminate_flags for a transducer that has no flags to be filtered caused a segfault, this is now fixed.
+ecb18bc Updated eliminate flag tests.
+95c91cc Fixed a problem with default symbols and harmonization in compiling guessers.
+72040dc Ready for release 3.4.4.
+e0e9996 Now proc functionality test proceeds until compounds2.strings would be tested and instead returns a skip value 77.
+eef4bc1 Now tests for tools that are disabled by default are only carried out if the tools are enabled...
+e25f409 Fixed a couple of bugs noticed when installing HFST on Hippu.
+b7b567d hfst-xfst2fst tests are now skipped if --enable-xfst2fst is not specified. lexc-compiler-functionality-sh and proc-functionality.sh also return a skip value.
+dacc7d1 Now foma and sfst backends are enabled by default in configure.
+aea2aa0 Now hfst-lexc uses only foma. hfst-lexc2fst tests skipped as experimental. Flag tests in hfst-fst2strings are also skipped until flags are thoroughly tested.
+f0a52e9 Fixed missing parameter in fprintf in warning message in hfst-compose-intersect. It was causing a segfault on some systems.
+d374ccc At least unification flags are now handled correctly in hfst-fst2strings.
+0f5f715 Moved HfstLookupFlagDiacritics functionality from tools/src/ to libhfst/src/.
+60e6533 Tentatively added HfstTransducer::extract_random_paths_fd. Flags still need to be processed right.
+d55617c Now hfst-lookup warns about infinitely ambiguous transducers. Fixes bug #168.
+2c03ec7 Added missing files to Makefiles noticed during distcheck.
+c608af2 Added warnings to xfst compiler when using longest-string(-size) with flags.
+1fc3922 Tentatively added commands longest-string and longest-string-size to xfst parser.
+34771a9 Added function HfstTransitionGraph::longest_string_size.
+ec8a45d Tentatively added function HfstTransitionGraph::top_sort().
+3c946a6 Added option --version to hfst-pmatch.
+117677d Make sure minimization always gets done
+e93a1ca Added more test to xfst parser. Now comments are handled correctly in xfst. Edited documentation in HfstTransducer.h.
+c1e3447 Merge from pmatch dev branch, with a change related to read_lexc -> read_lexc_ptr.
+bd3e893 Now xre parser can parse expression '{foo}:{bar}' correctly. Also added variable tests to xfst parser.
+6a48024 Added a test for xfst's shortest-string. Also fixed a bug in including the epsilon string in HfstTransducer::extract_paths.
+c0d6df4 Added new xfst tests, also added function HfstTransducer::is_automaton.
+21b6858 Invert lexc flags
+2b3399e Renamed again some testfiles in xfst..
+6c55cb5 Edited xfst tests.
+fbe891e Documented flag elimination function. Fixed some bugs in using transducer definitions.
+d1a4df5 Added a new test for flag elimination.
+7e73c8e Added tests for xfst parser's function eliminate flags.
+4f1b6ed Wrote more flag elimination functionalitites.
+3ef35f3 Added x: center rules and tests for them.
+9bac4fc Restored long option name --resolve.
+2ddf6e2 Fixed problem where definitions in pair expression were caught too late which resulted in weird syntax warnings.
+dde58d7 Maybe use flags instead of joiners in legacy lexc compilation.
+855907f Started implementing flag elimination function.
+0417d5c Added new functions to xfst parser.
+37f8117 Added new test for xfst parser.
+f4117b7 Set property executable ON: test.sh.
+4f0096e Again doing flag diacritic filtering in flag diacritic harmonization, since it turned out not to be a problem after all.
+d7b530c insert_freely_missing_flags(...) no longer uses insert_freely(...) becauses successive invocations of insert_freely without intervening minimizations cause exponential state growth.
+9cc367a compose-call in hfst-compose now does flag filtering only if flag harmonization was done
+96db17f Changes that permit new filtering of illegal flag paths hopefully wothout affecting performance.
+1015c1e Added more tests for xfst.
+2626251 Added more tests for xfst parser.
+bb869de Now readline is disabled by default in xfst parser unless configure is run with --with-readline.
+e9df9dd Changed 'HFST_THROW' into 'HFST_THROW_MESSAGE' in HfstTransducer::eliminate_flag(s). Should fix bug #163.
+64baca6 Renamed some of the functions in xfst parser.
+b9fb1df Now readline history of 'inspect net' is ignored when returning from 'inspect net'.
+4e8a8d6 Commented code.
+2921e59 Now 'inspect net' should work for all cases.
+b3bda03 Tentatively added 'inspect net' to xfst parser.
+28fe040 Edited XfstCompiler
+281668c Added new tests to xfst parser and implemented interactive lookup mode.
+4d9d801 Added more tests to xfst parser.
+7461e46 Tentatively added functions HfstTransducer::eliminate_flag(s). Added function 'compose_net' to xfst parser.
+f40c185 Updated to foma version 0.9.17.
+c822503 Added test for HfstTransducer::remove_from_alphabet.
+03593c7 Changed bool static is_safe_conversion(...) to static bool is_safe_conversion(...) because syntax error.
+b708ce1 Now regex parser substitution does not add substituting symbols to the alphabet of the transducer to be substituted. It is not needed anymore since there is a parameter 'harmonize' in HfstTransducer::substitute(StringPair&, HfstTransducer&).
+ee00f6c Now HfstTransducer::n_best throws an HfstFatalException if OpenFst fails to allocate enough memory. Kind of fixes bug #159.
+2dd7fe5 Now hfst-regexp2fst and hfst-xfst2fst both give a warning message if the user writes a replace rule that contains special symbols.
+4f1842f Added more symbol harmonization tests.
+782cbb7 Commented code.
+1e7be91 Now the regex parser parses [x:?] so that it includes the transition [x:x]. This also happens in xfst and foma.
+2b62822 Now regex parser interprets ?:? in the same way as xfst or foma, i.e. as unknown-to-unknown OR identity-to-identity.
+19fddc2 Implemented substitution with an empty set in regex parser.
+5d3bcdc Fixed hfst-twolc.bug which inserted all diacritics into the first set that was declared.
+acdf5e8 Now xre parser never performs harmonization in substitution or ignoring.
+2a1e3d4 Fixed a bug in xre substitution.
+5a033b8 Added a bool parameter to control harmonization in HfstTransducer::substitute(SymbolPair, HfstTransducer). Fixed xre parser so that it doesn't harmonize when performing substitution. Also changed call to substitute function in twolc but preserved the harmonization.
+5282e25 Now binary operations never harmonize special symbols of form @_.*_ at . To make xerox rules work, the marker symbols @_SOME_MARKER_@ had to be changed to @SOME_MARKER@ so that they get harmonized as they did earlier.
+4312b8c Now insert_freely also takes a parameter that tells whether harmonization is carried out.
+e979ac2 Now there is an option --do-not-harmonize for all binary command line tools.
+72d8c60 Fixed some bugs in harmonization.
+b7ad8b6 Fixed missing bool parameter problem.
+5890a60 Added a flag -H to hfst-compare and hfst-regexp2fst that turns off unknown harmonization.
+004dfbd Added a bool argument to binary transducer functions that controls whether harmonization is carried out. Also added harmonization tests.
+12c3111 Now hfst-lexc writes all messages to stderr. Fixes bug #68.
+cdf4d16 Now FomaTransducer::define_transducer(symbol1, symbol2) works also if symbol1 == symbol2 == identity. Fixes bug #110.
+20dfb3f SfstTransducer.h no longer uses generic word 'Transducer'. Fixes bug #130.
+4aa59f6 Now hfst-sfstpl2fst finds included files in the same directory where its input file is located. Fixes bug #145.
+aea2877 Now hfst-fst2txt prints an error message instead of segfaulting when given an input stream whose transducers do not have the same type. Fixes bug #115.
+1cefd4e Implemented functions number_of_states and number_of_arcs.
+b081353 Now all xfst files are read in a buffer and parsed with XfstCompiler.parse_line.
+0c08820 Now xfst parser can parse regexps that are on several lines.
+d2f3f2e Edited xfst parser.
+9c5a616 Added tests for hfst-xfst2fst.
+721c603 Added main program from XfstCompiler.cc to hfst-xfst2fst.cc.
+21981c9 More command line options added to hfst-xfst2fst.
+f036bab Parameter handling added to hfst-xfst2fst.
+fea1693 Now hfst-xfst2fst works with readline functionalities if a temporary file is used for buffering commands.
+e2fa01a Replace rules compilation - boundary marker added to begining/end of all contexts which don't containt it
+f674390 Added more functions to the xfst interface.
+51d468d Added more functions to the xfst interface.
+d806ad2 Added variable undefinition to xfst parser.
+21d5809 Now definition expansion can be controlled in XreCompiler through a function set_expand_definitions. If they are always expanded, lexc syntax is not parsed correctly.
+48adbe9 Added definition expansion to the xre parser.
+6ee87cc Made a couple of fixes to xfst parser.
+bcc413b Tentatively added tools/src/parsers as a part of the automake build.
+87e7cf8 Updated morphology installation tests, now omorfi is included.
+0f1d6b3 Updated version number in swig setup file.
+dce9471 Now installation tests skip sfst or foma if they are not found.
+9dd6577 New apertium proc space handling test from bug [#153].
+5092648 Small fixes to swig and installation checks.
+f28cddb Added documentation.
+ad582a8 Made small fixes to swig tests.
+daeca5d Made permutate-file-params test silent. Edited check-tools.sh so that it handles --prefix parameter right.
+a34e969 Updated hfst tool checks-
+cb402e9 Fixed Lingala and MonishGuesserAnalyzer fsmbook tests, minor changes in regexp
+bec768d Updated installation checks.
+1b414e4 In substitute (symbol_pair, transducer) added harmonization with the symbol_par. Also, updated substitute in regexp
+da8b67f Ready for release 3.4.3.
+ce48e9e Prune alphabet added to regexp, also ? -> x rules fixed
+310a1e1 Added a couple of fixes to swig tests.
+9ecc837 Now tests pass on MinGW, file handling still has some problems.
+4b8f264 Disabled tagger tools if HFST is compiled on MinGW. They are also skipped in tool tests.
+fbad2ce Added tests for hfst-xfst and hfst-twolc in installation tests.
+a7a109a Added 'AUTOMAKE_OPTIONS=std-options' to foma Makefile so that foma wrapper gets installed right on Cygwin.
+6fb4082 Renamed option --enable-windows as --enable-mingw.
+6430247 Edited configure.ac so that setting executable mode on script files should finally work. Added missing windows conditional to foma Makefile.
+3e49944 Prune alphabet changed for easier use in parser
+04dbf51 Removed local versions of hfst-xfst as well as hfst-xfst tests.
+4dc1af2 Setting executable mode on scripts.
+fcd3abf Fixed a typo in Makefile.am.
+4451854 Fixed a bug in foma wrapper. Also added missing test file to EXTRA_DIST.
+6ae0cb3 Set executable mode on scripts.
+57f2152 Made a local version of hfst-xfst that is used in tests.
+9afcfd1 Ignore generated files.
+280ff8c Added a test for hfst-xfst. Modified permutate-file-params.sh so that it doesn't use curly braces which are not expanded correctly on all environments. Also modified hfst-compose-intersect.cc so that it doesn't use dollar signs when specifying how strings are printed as they don't work on Cygwin.
+ae57f52 Now swig tests use libhfst.hfst_get_exception() instead of catching HFST exception classes. This should make the tests compatible with python 3 where catching exceptions that do not inherit from BaseException is not allowed.
+6849b3e Disabled fsmbook tests from 'make check' by default (enable with --enable-fsmbook-tests) because they currently depend on foma command line tool.
+c08fbcc Added function HfstTransducer::prune_alphabet which is also used in the tool hfst-prune-alphabet.
+c23504b Added filtering to harmonize_flag_diacritics. It will filter out superfluous flag diacritic paths, which are created during harmonization.
+be0e3fd Prevented foma from harmonizing id- and unk-symbols with flag diacritics in insert_freely.
+8cecacd Removed 'words.txt' from EXTRA_DIST as it is not found in svn repository and make check passes without it.
+653b608 Added a function 'std::string hfst_get_exception()' that can be used to get the name of the latest exception thrown by HFST library. This is useful if the version of Python used does not support catching exceptions that do not inherit from BaseException.
+d4ceb69 Making sure that flag diacritics are added to the alphabets of both arguments in harmonize and harmonize_
+9e56f9f Changed id- and unk-symbols harmonization so that flag diacritics are no longer harmonized.
+2d801c6 Fixed a bug in flag diacritic harmonization yet again. This time actually using the parameter bool harmonize in freely_insert.
+b2139f2 Fixed problem which resulted from changing the insert_freely-function in the library.
+65f17f0 Re-fixed flag diacritic harmonization problem, where identity and unknown symbols were expanded by flag diacritics. To prevent expansion in this case, I added a bool parameter harmonize to the insert_freely library function.
+220b78c Now configure gives warning on missing hfst-xfst correctly.
+8499a59 Added a new tool, hfst-prune-alphabet. Also added a new bool parameter to HfstTransitionGraph::prune_alphabet.
+0de2ffe Changed variable name 'infinity' to 'infinity_' to avoid compilation error on Cygwin.
+58531f1 Added -D switch to enable reading from file in htwolcpre2 and htwolcpre3 (for debug purposes).
+aa1f445 Now tagger and twolc tools also pass version and help checks.
+edc2f45 Added a missing <cstdio> header that caused an error on cygwin (FILE was not defined).
+0e0d644 Now all back-end files are included in the distribution package.
+626ae88 Fsm-book test FinnishProsody
+40ae452 Fsm-book test Palindromes updated
+157ee16 All back-end directories are now included in the distribution package.
+bafa96d Added PlusOrMinus fsm-book test
+5534b00 Updated README. Fixed hfst-info so that it passes version and help checks.
+14b7427 Changed the order of paragraphs in README. Added a todo comment about XreCompiler.compiler conflicting with a built-in name 'compile' in python.
+b4c8b7b Updated README.
+52eff40 Ready for release 3.4.2.
+b38adb5 Now -lncurses is used in foma instead if -ltermcap is not found.
+dd13b4c Fixed a bug in foma wrapping-
+eaa693c Added regexp substitution
+55d2750 regex parser - added left replace epenthesis rule
+145ac04 Added note to remind people to also increment the HFST_LONGVERSION. This is important to ensure consistent behaviour between different types of version checks. The different types of version info returned by hfst-info --version should be consistent, the long version should just be a representational variant of the other values.
+d2ff139 Longversion.
+9d02b3e Ready for release 3.4.1.
+7741485 fsmbook examples change
+d73849e Epenthesis rules fixed
+557c7bf Updated results of morphology tests.
+251f753 Now hfst_foma is called directly from where it is installed.
+533a2d0 Bring the long version string in sync with the other version numbers.
+95f8764 hfst-xfst now uses hfst_foma instead of installed foma.
+70c60e9 Added test sentences for all morphologies.
+eb0a148 Renamed a duplicate symbol.
+7bcb083 A variable was shadowed by a another variable with the same name, renamed the previous.
+2939cf2 Made the names of the tests scripts shorter.
+4334be5 Tentatively added tests for installed HFST morphologies.
+b7a55de Added lower priority union to regex parser
+2eaa8ba Added foma script under back-ends/foma. It is now used by hfst-xfst. Fixes bug #147.
+999b9c5 Fixed a couple of typos in swig test file.
+5db5e5a Updated the installation check script.
+e754a74 Tentatively added tests for installed swig bindings.
+c6763af Now installation tests pass on Hippu.
+1bb3ebc Updated tests.
+faca499 Now installation tests should pass. Also fixed a cople of minor bugs in test/tools.
+7b55aac Added new tests.
+ecffb8d Tentatively added a test for all installed HFST functionalities.
+7844d8a Another warning-silencer flag that had to be removed to get hfst to build on MacOSX.
+8dceaad Made hfst build on MacOSX again, by removing the -Wno-unused-result GCC flag. Sorry about the additional warnings, but I really need it to build.
+3825fab Suppressed warnings caused by back-end libraries.
+b087ac1 Ignored generated files.
+ac73af7 SWIG bindings should now work with both Python version 2 and 3. As FILE* conversions are no longer supported in Python 3, added more wrapper functions that use an HfstFile argument instead.
+1a71ed7 Priority union bug fix
+52a9da3 Fsmbook tests updated
+b151760 Removed old command line tool hfst-strip-header from tests.
+d4e491c Removed old command line tool hfst-preprocess-for optimized-lookup-format from tests.
+f0fbd83 Removed old command line tool hfst-duplicate from tests.
+921e328 Revert previous unintended change to unrelated files
+bb4a001 The header from r2888 that accidentally didn't get re-committed with the most recent bugfix in this directory..
+5bcd481 Fix typo-bug wrt tape movement
+6c8fc3d Roll back previous changes pending bug fixes
+7e449db Avoid reallocations in the input tape
+55d96ea New scheme for input and output tapes to allow them to be arbitrarily large
+86942e1 Handle the case where we want to take a default transition when it's the only transition
+7a27e64 Changed all includes of type <backend-header.h> to "backend-header.h". Made small modifications to NSIS installer.
+34355d9 Added more information to swig/README.
+a29cb34 Ready for release 3.4.0.
+049de83 Fixed some bugs noticed when making distcheck-
+a66c16d Fixed a couple of bugs that occurred during installing a dist package..
+809b5e7 Fixed a small bug in HfstTransducer::read_lexc, suppressed some warnings from openfst headers.
+6daff3e Updated python tests.
+85104fb Added all python examples given in the doxygen documentation to tests.
+d41d5b3 Added more tests to the Python interface and added throw statements to functions.
+1113a6c Renamed hfst-duplicate as hfst-multiply.
+2ab080e Now tests remove extra files that they generate.
+b7d3c8c Moved Python tests to a separate directory.
+173566e Python documentation is now in a separate directory.
+48a0405 Now all functions in Python interface are documented.
+14a3048 Added documentation on rule functions of the Python interface.
+b648563 Added new internal documentation to the Python interface.
+0093e29 More documentation on the Python interface.
+dcd281c More swig documentation...
+2b97711 Added more documentation for class libhfst.HfstTransducer.
+33c493e Updated swig documentation.
+964d693 Added - as a comment - parts of my attempts at building all version info from only one definition. No success so far.
+23b3cbd Added missing directory 'openfst'.
+61e0e19 Added a new constructor to HfstTransitionGraph, also added it to swig interface.
+75891d8 Updated swig documentation.
+3624f88 Updated python documentation.
+43a3301 Added more documentation of the python interface.
+7145563 Tentatively added doxygen documentation for Python interface.
+f888bfc Now all back-ends (SFST, OpenFst and foma) are moved under HFST and statically linked to the HFST library.
+5835516 Forgot to change the directory name to opefstwin in Makefile.am.
+f617fb6 Renamed directory 'windows' as 'back-ends'.
+35cccd1 Added a variant of HfstBasicTransducer::add_symbols_to_alphabet that takes a StringSet as an argument.
+46143e2 Added all substitute functions to swig.
+1a742cf Added XreCompiler functionalities to Swig.
+009986e Now enumerators can be used normally in python, e.g. libhfst.SFST_TYPE.
+53db94f Added Lexc functions to Swig.
+417ecba Added more tests.
+0d90bbb Fixed a typo in configure file.
+3b8de30 Bring the HFST_LONGVERSION in sync with the other version strings (again - is there a way to calculate some version strings from others? I.e. change once, update everywhere?).
+dc6f3df More updates to tests.
+4146e0f Updated swig tests.
+49df758 Fixed MonishAnalysis fsmbook-examples test
+2468270 Added before and after to HfstXeroxRules
+99ce678 Added new test for tokenizer.
+0b4a0c8 Fixed restriction in HfstXeroxRules
+b375541 Updated restriction in HfstXeroxRules
+4b4e102 Small updates and added documentation to tests and swig bindings.
+eace5f2 Added new test cases and functions to the Swig interface. Also moved HfstFile to HfstTransitionGraph.h.
+c262db7 Added restriction to HfstXeroxrules
+ddf3b77 Added one more test.
+79d2758 Updated tests, added some throw statements to the interface file.
+7de5e18 Tentatively added a new test for swig bindings.
+d7e0b48 Added HfstTokenizer to the python interface.
+1676fda Added some files to _BUILT that probably should have been there all along (is this the cause of those build problems on some platforms?)
+1a14d8f Tentatively added python version of libhfst test.
+8328757 Added yet one missing lexc file.
+77eda4a Added a missing file in lexc tests.
+22ae13f Ready for release 3.3.15.
+8164899 Fixed a re-introduced bug in insert_freely(SymbolPair&), now unknown and identity symbols are expanded during the operation. Also made svn ignore some generated files in swig directory.
+f3e79ad Fix unnecessary shell call that breaks portability
+e008efd Fixed bug in flag diacritic handling. Transducers were harmonized before insertion of missing flags, which lead to undesired behavior when identity/unknown symbols mixed with flag diacritics.
+0fe8065 Updated doxygen documentation. Made svn ignore some generated files.
+9944411 Removed bashisms from scripts.
+012e4d9 Fixed some GNUisms ans bashisms in twolc and tagger scripts to make them work also on non-Linux platforms.
+4075404 Fixed some GNUisms ans bashisms in tests to make them work also on non-Linux platforms.
+7a9c6c7 Enabled hfst-tagger when compiling on Windows. Excluded the Windows versions of tagger and twolc tools from hfst-check-help.sh. Also updated Doxygen documentation.
+5b310da Added versions of hfst-twolc and hfst-train-tagger that use system calls instead of shell commands.
+a5e86c5 Made small modifications to hfst-optimized-lookup so that it works on Windows. Now the transducer file is opened in binary mode and carriage returns are removed from the input strings.
+16e7620 Just a test commit, nothing to see here
+e4f6871 Parse 0 within @ flags as if it was known multichar symbol
+d389a29 Fix escaped 0 at the end
+c22c68d Warn users about wrong case in keywords
+c1e59ec Removed hfst-strip-header from tools, use hfst-fst2fst instead.
+77c82f3 Removed hfst-preprocess-for-optimized-lookup-format tool.
+5d6f85e Updated swig bindings, edited NSIS scripts.
+126e4b8 Parse version vector with serial strtouls
+ff4d11e Bring the HFST_LONGVERSION in sync with the other version strings (?).
+1cc8a0e Changed HfstTransducer(FILE*, ...) so that epsilon symbol is an obligatory argument and added a new obligatory argument that keeps track of the line number in the AT&T file. Did the same to HfstBasicTransducer::read_in_att_format.
+92e7a51 Added a directory for NSIS installer scripts.
+685194f Now FomaTransducer::read_net accepts also files with CR+LF newlines.
+9844e68 Added wrapper class HfstFile for FILE* that can be used in Python.
+4198158 upper- and lowercase versions of convenience acceptors
+6d8f659 Added missing files to test/tools, fixed a typo in libhfst.i.
+6ed258d Ready for release 3.3.14.
+e7f7786 Added new testing scripts.
+047964b Now HfstTransitionGraph::read_in_att_format throws an EndOfFileException if the argument FILE is exhausted. Also fixed a typo in HfstOutputStream.
+791ead1 Added an alias for HfstOutputStream::operator<<, HfstOutputStream::redirect. Also added a Python test test_streams.py.
+6b162d9 Fixed a namespace issue in libhfst.i, now omor_query.py works.
+3536086 Added HFST exceptions to the Python interface. Renamed HfstBasicTransducer::at(HfstState) to transitions(HfstState).
+7918308 Added more functionalities to the swig interface.
+7300635 Fixed missing symbol table in optionalization bug for tropical weight type transducers.
+56211a1 Added wrappers for operators [], = and << so that they can be used in swig bindings.
+8610408 Added the function write_in_att_format(char * buffer, bool) to HfstTransducer. This makes it possible to call python's print() to a transducer.
+cf19853 Tentatively added HfstBasicTransducer to the swig interface.
+3fb1743 Changed Replace rules interface
+923eb25 Fallback utf-8 tokenization
+13e36ea Tokenize string literals for pmatch parsing
+f1319a3 Now hfst-lookup handles the '\r' character right when parsing input strings on Windows.
+f9b9344 HfstOlTransducer streams are now opened in binary mode.
+5380f65 Added dlfcn include path to Makefiles.
+65e903e Remove mentions of apertium and xml stuff
+89ad025 Multiline handling like regexp2fst
+ccfccde Fixed a typo in Makefile.am.
+0902aaf Tentative names for charclasses
+56e9149 Semicolon separation is default
+0166e9e Context-checking markers in pmatch2fst parsing
+29b863a Make , reserved. Fixes [#134].
+f0a7795 print yacc debug traces if hidden sekrit debug mode is on.
+6e9dbd0 Added missing file sfst/interface.h
+a359eb1 Changed ../../tools/src to  in fsmbook-examples to make tests more flexible.
+55b39ed Changed the pathname ../../tools/src to . This makes testing more flexible.
+bfba7cb Fixed a couple of typos.
+b75728a Renamed .c files to .cc so that c++-compiler is used.
+06fdbfa Fixed sfst include path.
+e30d3a0 Tentatively added SFST under directory windows.
+d300ea2 #include <stack> (seems to be necessary when compiling without openfst at least)
+0285685 Some compilers don't believe in universal characters given from the ASCII range, so instead of \u000D, have \r
+3ab2f3a Fixed format specifiers when printing long long on Windows. Also specified windows/foma as include directory in Makefiles.
+6c9ef91 Added regex test case from the GT/Divvun sources that presently does not compile with hfst-regexp2fst.
+a40bd43 Made fixes to foma compilation.
+16309e0 Add charset-defining hardcoded transducers to pmatch utilities for now
+85e6ba7 Foma's io functions are now skipped.
+7593089 Fixed left replace rule
+3270f5d Stateful context-checking mechanism; remove recursive functions for same
+8c59f9e OpenFst library check is now skipped and flag -D_MSC_VER is used when compiling on Windows.
+9bde6a2 Fixed a typo in library name.
+dfeb54c Tentatively added foma under directory windows.
+30a6942 Added generate_threshold parameter to prevent generating suboptimal forms.
+9baaaeb Generate several forms if several forms can be generated.
+67950e5 Added missing --format flag in hfst-strings2fst functionality test.
+1a53070 Modified guessify to handle gradation in omofi.
+898af0b ACX tool disabled by default, requires libxml/tree.h and -lxml2
+94a22e0 Temporary file - does not belong in svn.
+e666602 Test parallel left arrows [#132] part 2.
+9053c67 Ignore expressions that _only_ contain whitespace. Fixes [#132]?
+5d48615 Test not contains and multiline expressions with comments and emptylines, Bug [#132]
+d92fb74 Bail on parse errors
+fe31f8c No semicolons, huh
+8c7725c Allow windows or mac legacy \r's to end strings
+3e51123 Stop recording input data to headers until header support for longer data gets fixed
+5189a69 Only test fsmbook-examples if other tools actually work...
+33aedf5 Do not use AC_PACKAGE_URL or resp. parameter to support autoconf's older than 2.63 or so
+4ade921 Test that dos strings compile like unix
+635fa08 tests should pass 77 if tool is not available
+3d32324 Test that strings2fst handles M$-strings
+335c414 Fixed a bug in testing if compilation is done on Windows.
+58d3876 Disabled using hfst-lexc with multiple input files on Windows.
+2076847 Fixed some problems with automatic LF-to-CRLF conversion on Windows.
+3843896 Now hfst-twolc test uses 'uname' to find out if Windows is used.
+a0d41f4 Added excutable file extension '.exe' to tests when running them on Windows.
+1da9324 Disabled tagger tools on Windows until they work there too.
+3d2c49b hfst-substitute now recognizes '@0@' as epsilon, fixes bug #133.
+4ff55bd Noticed missing files and tests that should be skipped during distcheck.
+d7576d0 make dist revealed an extra file listed in Makefile, skipped that
+348deb6 Ready for release 3.3.13.
+970f355 Merged changes from old repository.
+5bf1aa1 Undo conditional compilation of pmatch compiling stuff
+004ee60 Limit memory consumption a bit by clearing SequenceModelComponentPair state tables between tagging sentences.
+73a589c Make pmatch parsing code conditional on WANT_PMATCH2FST
+805b765 Changed sizeof(input_symbol) and so on to sizeof(SymbolNumber) since sizeof can only be applied to static data members according to standard (though not all versions of gcc).
+c08e4ec Changed WeightedStringVectorCollection test so that it takes into account the model penalty weight line.
+e7567b3 Fixed incorrect loop condition in previous commit to this file
+0691b07 Added newline between results for different words.
+2205e95 Recommit fix to ol -> basic conversion bug (hopefully)
+634912e missing part of %0 handling
+c931c66 Option --enable-windows is passed to Makefiles.
+58812ce hfst-twolc test is currently skipped on Windows. hfst-twolc is a bash script that will be replaced by a batch file on Windows.
+60f72ef Fixed multiple defintions of SequenceModelComponent::START_STATE in make check
+8e66c75 Comment out xre-specific tests for the time being
+8c0cb26 Merge missing header file
+d8f8aca Merge changes to tools pmatch2fst and pmatch
+87cc83a Merge pmatch parser changes
+b51a7be Merge inclusion of hfst.h in HFST_HDRS
+b6d5c39 Merge pmatch library parts from devbranch
+786ec44 Improved error messages and fixed help message.
+8e887c8 Maybe fixed undefined ref. to SequenceModelComponent::START_STATE problem.
+b7caa51 Set revision for info
+ffbd4f2 Newlines are now handled correctly when testing command line tools on Windows. Version and help checks also skip the tool hfst-info.
+849f3df Further porting for info
+d65900a Missing square bracket in define
+536ebc8 Port basic info app to trunk.
+2ab0507 Fix conversion bug where when converting to BasicTransducer, we would stop looking for a particular flag diacritic when seeing symbols that aren't epsilon or this flag. This caused misses of flags when they weren't arranged in a lucky way.
+fc0dca3 Uh, actually declare hfst.hpp in headers and not files to get the meta
+cdddfe1 Port some versioning and meta from branch
+6f2af57 Replaced size_t format specifier %zu with a macro that is expanded to %zu or %Iu (Windows).
+a86675b Removed debugging prints from HfstTransitionGraph.h. Added --help information to hfst-summarize.
+d5084f0 Fixed python and utf-8 related problems.
+126e249 Added preprocessing flag -DWINDOWS to Makefiles if HFST is compiled on Windows.
+afc1e60 Streams to files in TropicalWeightInputStream and TropicalWeightOutputStream are now opened in binary mode. The global variable _CRT_fmode is also set to binary mode in file globals-common.h when compiling on Windows. This makes sure that streams are always processed in binary mode on Windows, with no extra or missing carriage return or line feed characters.
+fe9eab0 Add Mac OS X abort trap to faqs
+8218c9b Move "stuff that is next to colons" to another level to support quoted literals and some other constructs maybe
+375ee88 Provide more info about itnae's in lexc for mac users
+cba4f88 A convenience header file including HFST headers necessary for doing practically anything
+ea4342f Added OpenFst and dlfcn functionalities as a part of HFST (at least when it is compiled on Windows).
+afc1c34 Added a script for Monish guesser-analyzer test.
+81c654e Installation instructions for dependencies that are not in our control...
+223b5fb No alphas in trunk
+3c0d30d retab!
+86115d2 Add port and gentoo installation instructions
+1d50ca0 Added reweighting tool.
+e5cc768 Added config-file.
+1be6c2b Added size() function.
+0d8cfdd Added dummy-tags to guesser and lexicon entries without real tags, so that the could be parsed in the same way as regular lexicon and guesser entries.
+4813945 Fixed output file, so that output is printed to stdout, when no output file is given instead of file "<stdout>".
+93d16de Changed guesser tags.
+2826e47 Some default-transitions were missing. Added them.
+999fb85 Another #include <hfst/HfstTransducer.h> -> #include "HfstTransducer.h"
+68a396b Added case sensitivity to suffix counts.
+b9123f8 Added 'MonishGuesserAnalyzer' test for parser
+8778016 Continued adventures in unsigned short reading: cast to unsigned char, not unsigned short, before shifting and adding the bytes.
+aa6d431 (Regular) containment fixed in 'Regexp2fst'
+c975b5f Fixed kitwiki addresses in the help-messages of hfst-guess and hfst-guessify.
+c4e6d9e Fixed printouts so that they match for guesses and generated forms. Fixed printing of guesses, so that they're not printed reversed.
+2bca1a1 Fixed hfst-guess help-message and exit value.
+34be6db Implement a little-endian unsigned short stream-reader on top of the char-reader. Use it to read the header size rather than fiddle around with signed shorts.
+429f813 Initial commit of hfst-guess utility.
+bfb86fa Initial commit of the hfst-guessify utility.
+ed7b61d Complement added to the 'regexp'
+167a297 When reading header size, which on the disk is a two-byte unsigned number, we need to call stream_get(short &) because it's not implemented for unsigned short. Then cast it to unsigned short.
+73db847 header_size needs to be able to handle MAX_HEADER_LENGTH=65535 bytes, so make it an int instead of a short
+ab3de48 Excluded source files under windows directory from distribution.
+f6b281f Curly brackets added to regexp
+2e53d41 Appended $(EXEEXT) to program names in Makefile.
+18a5340 Temporarily disabled 'hfst_mkstemp' in windows compilation, because it uses 'mkstemp' that is not standard C++.
+92e33ad Fixed a typo in Makefile.
+f3eaf25 Complete purge of trap_transition in try_epsilon_transitions
+0165a14 When following epsilon index, set found_index *after* returning. Added rather verbose comment to try_epsilon_transitions to clarify when transition-taking needs to be trapped and when it doesn't.
+9090b55 if -> endif in Makefile
+6dbeb66 Now all Makefiles should be aware of windows compilation.
+838b7d9 Added include flags to Makefiles when using windows compilation.
+a1e0022 Made autotools more aware of windows compilation.
+25dae67 Edited Makefiles.
+17599d9 Added directories to windows/openfst and a script to fetch openfst.
+b870284 Added a script to retrieve dlfcn.
+216f22b Tentatively added support for windows compilation.
+79cb942 Implement PCKIMMO output mode for fst2txt
+b898898 Ready for release 3.3.12.
+519d798 Tentatively added the possibility to compile hfst in Windows to configure.ac.
+a2f1970 Maded changes in tests required by previous edit in WeightedStringVectorCollection.
+5c7f95a Changed a bool to weighted_string_type in add_sequence function.
+9dd0f5e Changed the bool lexical_model parameter in the constructor of WeightedStringVectorCollection to an enum.
+9b684a7 Fixed comments
+5f89671 Fixed initial comments
+01daf8d Fixed statistics.
+7a6ac4c Fixed statistics.
+a644eb1 Added documentation.
+d49bd99 Use convenient STL set constructor with InputIterator objects for returning alphabet sets
+9bd0833 Maybe find unit_test_aux.cc now...
+f4da277 Support StringSet get_alphabet() for hfst_ol(w) types
+e09ccf7 use am_prog_ar for automake >= 1.12
+2ef3838 include unistd for systems where it does not leak in
+38af24a Handle the "only default transitions in state" case
+39979b4 Now perhaps building unit_test_aux.o properly...
+1ba1277 Build tagger tools only if the enable-tagger flag has been used during configure.
+a3441eb Changed NewLexicalModel.h so that it includes the local header before instllation.
+1f098c5 Added unit_test_aux.h to the sources of the test for string_handling.cc
+692544e Added DataTypes.h to the sources of appropriate testa and hfst-tag.
+62b23b0 Added version of hfst-tag.cc that compiles.
+accb745 Tidied up code in use_model_src.
+655db72 Now we pass all use_model_src/ tests.
+ca283ad #include "HfstTransducer.h" instead of <hfst/HfstTransducer.h>, since often people will be building this without having headers already installed
+7c8a1d6 Remove lexc tests as long as parser is not reusable
+fc6488f Added skeleton for hfst-tag.cc and got all tests in use_model_src compiling. Some tests still fail.
+dda2e74 Removed printout from the unit test of FstBuilder.cc
+9d1942b Fixed WeightedStringVectorCollection.cc and string_handling.cc
+0dc17bc Tidied Makefile.am.
+e165644 Tests are now run using make check.
+5e922c6 Added invert parameter to compose_intersect in HfstTransducer
+b501a64 Added hfst-open-input-file-for-tagger.cc, which was missing.
+cc9b901 Use intree headers for intree build
+8f32733 Added some printouts to verbose mode.
+278e9b1 Fixed issue with exit value.
+017d653 Updated build files so that tagger tools can be built. They are not built by default.
+fc1c501 Fixed some in input handling bugs.
+c9f5a01 Changed comput_data_statistics.py to hfst_tagger_data_statistics.py
+fcf3028 Some changes that actually allow compiling and installing hfst-train-tagger
+3897533 Added test dependencies.
+ebbf67f Fixed test defines in build_model_src/.
+6cd2357 Added unit tests to hfst-tagger.
+0fa55e4 Added Makefile.am files to hfst-tagger.
+84f7434 Added src and test subdirs to hfst-tagger.
+ba485b6 Initial commit of new tagger lib architecture.
+e705d55 Copy input to output for default transitions
+268a4b9 Allow reserved chars between quotation marks, avoid one more segfault on parser error
+bae41c7 Add quotation example that breaks the legacy parser; use all tests on both lexc front-ends
+f944ea5 Emit parse error on unopenable file...
+df6fb6e Pass parse errors upwards from LexcCompiler
+b8e33d7 Remove temporary lexc concatenations on successful exit
+c948c23 Reword -q to "print only fatal errors and requested output" as it does
+30a2947 Notice @_DEFAULT_SYMBOL_@ in other Alphabet contructors than the copying one as well
+7a0372e Add an internal boolean found_index to keep track of whether an index has been successfully hit in the current iteration, and try to find a default symbol otherwise
+8cbdcfa Make alphabet know about default
+5a95634 @_DEFAULT_SYMBOL_@ and hfst::is_default()
+16d45a5 Remove warning messages and XFAIL tests that may confuse users. Fixes bug #3525179
+9e9e421 Added READMEs under BrazilianPortuguese 1 and 2 to EXTRA_DIST.
+cbd7431 Updated Doxygen documentation.
+a9e2b8a Ready for release 3.3.11.
+6cc30cf Now hfst-shuffle is disabled by default.
+4f3fcee Added the command line tool hfst-shuffle and functionality tests for that.
+b455911 Tentatively added function shuffle under HfstTransducer.
+eb6581f A nicer single production for INSERT
+c560a0f Fixed a bug in SfstTransducer::random_path that happened when indexing states of the argument transducer.
+bd37642 Introduction of semifunctional pmatch2fst
+7870bf5 No plus sign in front of tags in CG mode, not even the special carry-through tag.
+24449d5 Added experimental support for printing the raw analysis tag as part of the Xerox analysis. It is printed as a tag with a special prefix, and with the full analysis string enclosed in quotes. The idea is that vislcg, if enhanced to read the Xerox format, should carry  this "tag" through the disambiguation (and possibly analysis), and print it out on the other end. The tag can then be used as input to morphological generation.
+9646a73 Print the raw analysis string as a specially prefixed tag at the end, instead of as a sub-reading in the beginning of the analysis.
+92ee0bd Now hfst-fst2txt functionality test tests whether the program dot exists before using it.
+d4a39a7 Changed call to the installed hfst-regexp2fst to the one in tools/src/.
+22d4fcd Changed call to the installed hfst-regexp2fst to the one in tools/src/.
+ab7257c Add containments and term negation, remove nasty windows formatting markers
+f321bb3 Added the option --print-separator in hfst-fst2strings. The option will print a separating line "--" after each input transducer is processed.
+70fe665 FomaInputStream::write_transducer and SfstInputStream::write_transducer now call fflush after writing the transducer. Now the command line tools should work correctly when pipelined.
+f6c6432 The regexp [?] was parsed as [?|?:?] by FomaTransducer::define_transducer(const &string, const &string). This is now circumvented by using FomaTransducer::define_transducer(const &string) instead. This bug will be reported and fixed soon.
+e4d291d Manpages are not created unless 'make man' is executed in directory man.
+e47d8c0 Added support for inverting the composition i.e. computing intersect(rules) .o. lexicon instead of lexicon .o. intersect(rules).
+37684b7 Added possibility to invert the composition in compose_intersect i.e. to compute intersect(rules) .o. lexicon instead of lexicon .o. intersect(rules). Also added added support for indetity symbols in the lexicon to compose_intersect.
+71a2579 Removed HfstConstantTransducer as it is not used.
+a9cbc17 Removed FinnishOTProsody from tests as it does not yet work. Also added HfstXeroxRulesTest.cc to EXTRA_DIST.
+7cdf97c Temporarily excluded hfst-lookup from man page creation (due to a bug in help2man?). Also updated hfst-tail and hfst-head man pages.
+4d54a06 Heads and tails with plusses and minuses
+6b15fcf Test negative heads and positive tails
+58723c3 Added Brazilian Portuguese tests to fsmbook-examples, they now work because missing files were added.
+72d1a80 adding missing files
+9daa986 Added missing files
+31d424e Ready for release 3.3.10.
+9bc5df7 Brazilian Portuguese tests disabled in fstmbook-examples to get a working release. They probably had missing files.
+afce28b Updated man pages of binary tools as their help messages were changed.
+70d24a5 Added documentation to the binary tools about the restored feature that the first input can have several transducers while the second has only one.
+7c2399f TropicalWeightTransducer::extract_random_paths now also calculates the weight of each path. Fixes bug ID 3514912.
+67a377e All binary tools now handle the case where the first input contains several transducers and the second input exactly one transducer.
+e23d373 BrazilianPortuguese2 fmsbook example added to tests
+f941d02 BrazilianPortuguese1 test should pass now
+6ad4d9a hfst-compare now handles the case where the first input contains several transducers and the second input exactly one transducer.
+c55bc43 hfst-compose now handles the case where the first input contains several transducers and the second input exactly one transducer.
+abbff8c hfst-summarize now prints at the end how many transducers it has read in total.
+d765699 Added documentation to different cases that are gone through when checking binary parameters.
+e32b8a2 Changed the variable name stdout to stdout_ to avoid namespace conflicts.
+1bc12a0 forgotten Makefile.am
+8672375 Configure file had to be changed to compile fsm book examples
+84850a8 Fsmbook examples update
+c1f2510 Fsmbook examples update
+7eb574c In xfstRules, removed TMP marker from the result alphabet
+610da46 Updated hfst-compose-intersect help message.
+dad67cc Appended namespace std:: in front of vector and pair where avoiding it might cause compilation problems. Also changed calls to 'rindex' to 'strrchar'.
+74fe14d Doxygen for the speller and some ol internals
+c3f629e Forgot to commit ChangeLog and NEWS, now ready for release 3.3.9.
+e55c21a Ready for release 3.3.9
+34460a6 Fixed help messages of tools.
+814a1a9 Changed hfst-lexc so that the implementation format defaults to openfst-tropical.
+7b97b48 Changed expected output to reflect current cg printing
+97a0786 Integrate ospell, first commit
+2624bf6 updated so that tests don't fail
+20ab796 updated one fsmbook example, still not working properly
+9b826c1 Double greek PI met opposition in #apertium, hereby changed to double dagger instead (‡). It is still open whether the raw analysis string should end up in this position at all.
+03772d6 Fixed a bug in command-line option parsing, where -e conflicted with all case-handling options.
+c96e52e Fixed bug wrt option counting
+a708855 Added a new option to turn on printing of raw analysis string in CG format output. Default is to not print it.
+7c8830a Replaced triple ] (]]]) with double ∏ (∏∏ - capital greek PI) as the CG sub-reading separator. It turned out that inserting +]]] into the transducer was not working very well.
+f06aac3 Deleting the + char in front of GT/Divvun tags for the CG output. Also, there is no problem with printing the raw analysis string, all is fine (contrary to what I said in my previous commit). This tool is now pretty close to what we need in the Divvun work :)
+990581e Experimenting with the CG output mode. Using the -C option, the output will now include the original lemma+tags string, including all tags within compounds etc. It is printed before the CG-formatted tag list, and separated with ]]] (suggested CG sub-reading separator). For some reason, the tags have lost their initial + sign at this point, so the result is pretty ugly and unusable. I don't know why or where - feedback appreciated.
+f3c746f Make sure the outputs are sorted before filtering and printing
+4905d54 Corrected key string for getopt_long
+05fe312 Corrected condition in LookupPathW::operator< (or at least made it more understandable)
+58c61e5 Correct terminating condition
+ec52c63 Stop before end of output iterator
+ae8461f Clarified comment
+074a25e Added an option to only print analyses belonging to N equal-weight classes
+6844c9d Typo in error message
+9792641 Adding identification and processing of GT-style tags beginning with +. When formatting for CG output, this is important, otherwise the output is more or less useless. This change should probably be enhanced with tests for the requested output format, so that it does not contaminate the Apertium analyser. Please have a look.
+756d724 indentation
+3e37af1 Added a quietFlag variable, which makes the -s/-q flags actually useful. Using either -s or -q the warning "Warning: Transducer contains one or more multi-character symbols made up of ASCII characters which are also available as single-character symbols." will be suppressed. There might be other output that should also be suppressed, but that is not implemented yet.
+784bd21 Removed "e.g." to avoid ambiguity in the interpretation of the output.
+cdb80a2 Boundary mark in contexts is beeing handled now.
+e999674 Xfst rules parser should be working now
+8d53567 regexp updated, precedance seems to be fine now, but parallel rules with one comma and context still don't work.
+9359776 FomaTransducer::extract_paths bug fixed, now it does not produces duplicate paths.
+76e4f7a Ready for release 3.3.8.
+b55429b Add expected arcs per symbol statistic
+410a9ec Ready for releasing version 3.3.7.
+8292ce4 Updated tool man pages.
+939b6a9 Updated hfst-regexp2fst help message.
+3df0bcb Fixed an error in composition introduced by the newest version of OpenFst (1.3.1).
+bb6e2fd Fixed identities in regexp parser, now [?] is parsed as identity pair.
+8f950ad Updated regexp2fst parser - rules work fine for themselves, but there remains precedance issue.
+2512805 Ready for HFST release 3.3.6.
+3d290d3 Changed include directives of implementation headers (foma, sfst, openfst) so that they search for headers in default include path first. Also modified memory leak script.
+69f0619 Updated memory leak test.
+5ece7d7 Tentatively added a script for testing memory leaks.
+cb48f49 Fixed memory leaks caused by hfst_get_name in command line tools.
+679d8ca Fixed a bug in hfst-lookup man page generation, now option --no-discard-stderr is used in help2man. (However, cannot figure out why this helps..)
+942a563 Removed yet some extra code.
+b50e384 Removed commented code.
+6e87a25 Fixed some compilation warnings and removed commented code.
+bf0508d Fixed some more compilation warnings.
+1ebf3aa Fixed more compilation warnings.
+3fd5aee Fixed some compilation warnings.
+b802621 Ready for HFST release 3.3.5.
+e096676 Man pages updated.
+1aa5686 Modified Makefile.am.
+2de5917 Added some comments
+d155bca Fixed a small bug in hfst-fst2txt functionality test.
+e6560e2 Output dot/graphviz
+967a5be Maybe finally the reversion is working..
+5373734 Made yet some changes to revert to the older revision.'
+b4318de Reverted to revision 2076.
+1101e6a Forgot to add the new files for BooleanWeightTransducer.
+21b3949 Tentatively added a new HfstTransducer type, BOOLEAN_WEIGHT_TYPE.
+6e99a0b Fixed a small error in the options handling part of the help message for hfst-strings2fst.
+8514c03 Added new man pages for hfst-name and hfst-format and links to man pages for tool aliases.
+76d8934 Now the man pages also have a short description of the tool, i.e. the one given by hfst-foo --help.
+4f996f5 Added a test case for the bug fixed in revision 2016 (out_of_range thrown by substitute function).
+5e80597 De-spanishify hint string ("argumentes" -> "arguments")
+d29274e Now HfstTransitionGraph:substitute(const HfstSymbolSubstitutions & subs) adds all symbols in subs to the global alphabet before relabeling, thus avoiding the out_of_range exceptions thrown earlier by this function.
+467599e Changed hfst-compose-intersect so that it gives a warning (1) when the rule does not contain the identity symbol and the output tape of the lexicon contains a symbol not found on the input tape of the first rule, and (2) when the output tape of the lexicon contains multi character symbols not found on the input tape of the first rule.
+6bbf8e1 Removed spurious consts from optimized lookup conversion functions. Fixes bug ID 3469227.
+7315fe4 Bug on mac os caused by its sort order (bug ID: 3462485) fixed.
+e9f37ff Added function write_in_att_format_number. Also fixed hfst-optimized-lookup so that --version and --help print to standard output instead of standard error.
+2284d13 hfst-optimized-lookup softlink and some package strings for hfst-optimized-lookup.h
+4821cdf Heavy-handed bundling of the hfst-optimized-lookup standalone
+a7e3dd1 Rules parser - added epenthesis
+4f70b1d Still needed to fix some errors caused by in-place sed.. Now everything should work in commandline tools tests.
+33130ab Fixed problems in test/tools that came after updating the Makefile.
+bc413c7 Removed commas from filename suffixes (e.g. .hfst.sfst -> .sfst) in test/tools. Also replaced compilation rules using %-symbol in Makefile.am with old-fashioned suffix rules. Now commandline tool tests should work with older versions of make as well.
+43082be Ready for HFST release 3.3.4.
+5b163cb Added some documentation for HfstSymbolSubstitutions and HfstSymbolPairSubstitutions. Also updated the doxygen documentation.
+53c7b7c Now HfstTransducer supports making several substitutions at the same time. Also made a test for these functions. Adding documentation soon.
+7aa7026 Tentatively added a symbol-to-symbol substitution function to HfstTransitionGraph.
+e9db3ce newer version of the rules parser
+31446ff weighted expressions
+668878f added some xerox rules to xre_parser (hfst-regexp2fst). Also,  slightly modified xerox rules
+aed6b50 Remove some debugging printout
+45c7b45 Merge xre precedence fixes
+81ba993 Now const_cast<char*> is used instead of strdup/free in ConvertFomaTransducer::hfst_basic_transducer_to_foma. Also modified hfst-substitute so that the alphabet is not pruned after substitution.
+cff563a hfst-substitute now implements the option --in-order.
+5020e2d Fixed bug, which prevented compilation of grammars with both set constructions and : or ?.
+0aa972c Unit test for grammars which have both set constructions and : or ?
+0183928 FomaTransducer::repeat_n now takes a copy of its argument transducer to avoid double delete caused by new foma interface. Fixes bug 3468373.
+253b0fe OpenFst linking bug is fixed in 1.2.10; also gqipped some paras
+db1e066 Warn end users about disabled "important" tools
+93c0be8 Xerox rules added to the library
+a6b1982 more alphabet hacks
+2f13574 more alphabet hacks
+d41ccd2 Added new substitution functions. Now it is possible to perform many string pair-to-string pair mappings at the same time on a transducer. Also tentatively added a functions that performs many string-to-string mappings at the same time.
+b19e466 Now the test EinsteinsPuzzle uses local tools instead of the installed ones.
+f574cae Now the test FinnishNumerals uses local tools, no the installed ones.
+dfcd75d Conversions between HfstTropicalTransducer and HfstBasicTransducer also made more modular.
+e64a2eb Made conversion functions more modular by moving code to subroutines. Also removed commented code from files.
+ab8c339 Now conversions between transducer formats openfst-tropical, sfst and foma are carried out using numbers always when possible.
+4defd16 Tentatively added functions for fast conversion between transducer formats.
+90fd45f Now also conversion from foma to basic transducer uses numbers. Some commented code also removed.
+45cfa97 Some conversion functions are not carreid out using numbers directly.
+0335646 Renamed HfstTropicalTransitionData variable 'number2symbol_vector' to 'number2symbol_map' to avoid a strange linking error. Also removed transducer conversion functions that are not used.
+d964d9c Removed some extra code.
+1f9516e Tentatively added alphabet pruning to substitute functions, it still has to be removed from hfst-substitute.
+6e4838f Conversion between HfstBasicTransducer and TropicalOpenfstTransducer is now more efficient as it is done using numbers directly.
+fc65b31 Changed conversion from HfstTropicalTransducer to HfstTransitionGraph so that it uses transition numbers directly. This improves the performance greatly.
+6fe2006 Fixed bug which made tests always pass.
+7f0d49a Ready for HFST release 3.3.3. Also disabled DateParser test because it relies on hfst-calculate.
+a2b7ede Fixed speces so that the space symbol is used in the transition instead of @_SPACE_ at .
+8bceff5 Skip copying the foma transducer name to the net, leaving an empty string. Rationale: foma has a limiting 40 char ceiling on names, and we might as well use HFST3-style names for everything.
+e90d002 Removed hard tab indentation from hfst-txt2fst.cc
+5d4e1ab Replaced tabs with spaces in hfst-lexc.cc
+932a780 Fixed HfstTransitionGraph:swap_states so that the variable new_target is no longer used uninitialized.
+b85d91d DateParser test fixed, the path os hfst-calculate was not correct.
+7de913d Fixed ComposeIntersectLexicon test
+97e620d Now the escape '% ' should work everywhere.
+abebc48 Added test for rules with space symbols.
+f7341b2 Added a conversion test and made the LIBHFST_TST actually run, causing test failure for the time being
+69b7b7b Optimized HfstTropicalTransducerTransitionData::get_symbol(...)
+aabea1c Call sizeof() on type names, not variable names due to OSX compilation thinking the variables are non-static uninitialized fields. Fixes #3445592.
+5024ecd Fixed (serious) typo
+f8f2dfd (re-)added a char* constructor for tables, made it the default to only read disk once per table
+6754159 Eliminate use of non-portable strdupa(const char *). Fixes #3444950.
+43cc4e9 Removed some garbage
+5ffe969 Removed some of the unnecessary work done in tokenizing for ol-lookup
+0c09d91 Fixed a name shadowing bug
+bca34ef Added a lookup_fd(char *), reduced code duplication in interface functions
+c9ff453 Added note about current OpenFst / Ubuntu problems.
+0ce433e Fixed error message.
+c289dcd Now terminating compilation, if an empty pair is found in a defintion, rule center or rule context.
+652f927 Ready for release 3.3.2
+aefa028 Use NumArcs as a member function instead of using NumArcs from the OpenFst internal namespace.
+366a483 OpenFst has moved NumArcs into the namespace ::internal. This commit reflects that, fixing compilation with the newest version of OpenFst. NOTE: THIS BREAKS BACKWARDS COMPATIBILITY, you need the newest OFST to compile after this commit.
+67a5402 Fixed svn properties of executables in fsmbook-tests.
+128e390 Remove PKG_ macros from end user builds since they do not work nicely on all platforms.
+0deefb7 Tentatively added to fsmbook-examples tests where the results from foma and xfst are compared.
+fff58c2 Now all tests in fsmbook-examples use the tools in tools/src/ instead of installed tools.
+955e760 Tentatively fixed parts of fsmbook-tests where intalled commandline tools are used instead of tools in tools/src/.
+b6a2bd3 Ready for release 3.3.1
+3a9f7c8 Fixed memory leak in HfstTransducer::get_property
+48232c1 Remove escape sequence __HFST_TWOLC_ from symbols in rule names.
+37800e6 Changed flag diacritics handling in hfst-compose, hfst-conjunct, hfst-concatenate and hfst-subtract. Now flags are harmonized using HfstTransducer::harmonize_flag_diacritics(...).
+9313133 Added a function for querying if a transducer has flag diacritics and added a parameter in harmonize_flag_diacritics for diabling insertion of missgin flags (needed for hfst-concatenate).
+e207282 Added function bool HfstTransducer::has_flag_diacritics(void) const
+47f9d3e When looking for indexes with a particular symbol (which is used for converting to other transducer types), handle flag diacritics specially as per their indexing rules.
+8eb758b Added HfstTransducer::hamonize_flag_diacritcs(HfstTransducer &another)
+f2c0a98 1) Report the correct indexing offset for epsilon as 0 even when there aren't     any epsilons 2) Put the exception about trying to find the offset of absent symbols in     the proper scope so it actually gets thrown
+cafa28f Tentatively added to fsmbook-examples tests where results from foma and xfst are compared. Also fixed a small bug in remove-complement.sh.
+3431ec3 Extra files created during tests are no ignored by svn.
+5f9386f Added flag diacritics to the epsilon filter.
+0780530 Added missing file.
+f76ac72 Added a note on configure enable/disable switches to README. Changed fsmbook-examples so that now all examples that can be compiled with the current HFST tools are included in the tests.
+9c006b5 Forgot to commit configure.ac last time, now automake should work.
+e437010 Made some modifications to fsmbook tests.
+a651082 Same leak issue as in r1846
+b2b4ba8 free() char*'s that get strdup'd in a loop (which leaks memory if not free()'d).
+edcc8e6 Added missing file.
+f24568b Made small changes to the tests under fsmbook-examples, now make distcheck should work also when scripts in an upper-level directory are used.
+e167573 Tentatively added one subdirectory of fsmbook-examples to the tests performed in make check.
+31af546 Tentatively added some testing scripts to fstbook-examples
+23978b1 Remove spurious space character from error message
+26fac37 Give more guidance when ejecting the user for having a non-UTF-8 charset
+a4981ce Comment out fsmbook-subdir; it's broken
+47a618d fsmbook-examples are now included in tests.
+08e8edd Ready for HFST release 3.3.0.
+e3819ad missing  added to some tests so that they pass distcheck
+3b0667c lexc-functionality updated
+511b33b make distcheck should now find the missing files
+b4f2e58 remove hfst2 broken flags from main tree
+dccfa4f Remove experimental, hard to compile and dependent programs from main compilation
+1bad1e8 Added missing files to Makefiles. Also replaced HfstExceptions.h with HfstExceptionsDefs.h in include declarations.
+f29786a Option -s in hfst-lexc and hfst-substitute now suppresses warnings as it should.
+a0e51bd Made yet some tests less verbose.
+fdaba54 The option -s in hfst-lookup now suppresses warnings as they should.
+6a4461e Made tests less verbose.
+0c79b59 Testing if a library exists is now done with the command 'hfst-format --test-format'.
+a29cc4f Now all tests in test/tools should pass.
+667fb48 Fixed a bug in hfst-format. Also fixed some tests so that they don't assume that all backend libraries are available.
+9522737 Indicate whether apertium2fst is enabled
+32d7528 A spurious space was apparently preventing libhfst.la from getting built (!!)
+9fe6a3d Fixed some small bugs.
+373ab19 Added a missing file.
+87d5c05 Now all Esperanto tests work.
+311297f Now EsperantoNounsAndAdjectivesWithTags passes.
+5703bf4 Mention both forms of <SFST-1.4.6 error messages
+1ccdbf2 Fixed some bugs.
+1a85f7d EsperantoNounsAndAdjectives works now.
+dbe3858 Remove hfst-lexc and feature check that requires newer autotools from default builds
+c8bc7d0 Updated the tests.
+3dab55c New tests.
+1158256 HFST scripts for Monish tests ready.
+fd3adfe Fixed a bug in the xfst file.
+1f57439 Adding a new test.
+3cb051d Added files to MonishAnalysis
+5275de0 Adding a new test case
+f306463 Added an alternative solution to Brazilian Portuguese.
+65521fb Now unicode characters are transformed correctly from xfst att format to hfst att format.
+6f3e3f2 Added new test
+bb769eb Added a new test
+7b5175a Fixed some tests so that they work when only openfst is installed.
+e44b704 use const char * in bison's error handler
+2a8afa1 Fixed tests in test/libhfst so that they also pass when only OpenFst is installed. Also changed HfstTransducer::convert so that exceptions are handled correctly.
+4e85a00 Ultimate fix to implementation type availability checking in twolc unit-testmake check
+9df0c5f Tentatively fixed unit-test in OtherSymbolTransducer.cc
+ba60bbe Added checks for existence of implementation types to unit tests.
+3a313b0 Added support for new backend format strings in commandline arguments.
+7007722 Added check for existence of backend formats to tests.
+3465429 HfstTransducer::is_implementation_type_available changed from protected to public. HfstTransducer and HfstRules tests now work also when all backend libraries are not available.
+298d1f7 Only respond to nick + , or nick + :. Fixed flood-handling.
+d04b936 Update instructions for easier svn source
+e38782a Disable problematic backend libraries from default build
+3157352 Remove all version requirements and dependencies and tools that require versions, features, or dependencies to support older tool chains and systems
+bbb40b1 allow modifying only end state
+65e2029 Fixed character coding in Finnish examples.
+7ed6905 YaleShooting test complete, rules must be implemented in HFST commandline tools before it can be tested.
+48bc808 Changed 'Palindroms' into 'Palindromes'.
+ca49d0c Add tool for modifying weights
+e737f9d Now the test passes also for foma implementation type when revision 47 of foma is used.
+47696bd Added test files.
+5952156 A bug in HfstTransitionGraph::swap_states fixed, now final states are swapped too.
+f41b96e Added documentation
+42e26a2 alias old proc
+098f6a3 add bugs
+32eb73d Missing -r option
+1b3e724 document input format requirements in the beginning
+fc22386 few less apertiums in directories
+d01f072 s/proc/apertium-proc/g
+62c5a1f Added a test case, Lingala. The test is not included until an issue with writing transducers in AT&T format with the limited licence of xfst.
+cc616c6 Added a new test, FinnishOTProsody
+3fd80a9 Added a new test, PlusOrMinus
+a5b9ea0 Fixed a bug that occurred in binary operators when the calling transducer and the argument transducer were the same.
+ef31d2f Added more fsmbook examples. The tests have to wait until we get rules in hfst-regexp2fst.
+00da234 Terminate xre parsed quoted string, fixes 3400657
+444dffd Declare BUILT_SOURCES
+5ccdf40 We are one step closer to get the tests in test/tools/fsmbook-examples under autotools..
+33db26f Added Makefiles to fsmbook-examples. The tests in fsmbook-examples are not executed until they use autotools.
+97d473c Now the tests do not depend on the tool hfst-xfst. Instead, they use hfst-txt2fst and a transducer in att format.
+0d6b28e A bug in FomaTransducer::write_net fixed. Now the the function fsm_count is called before writing the transducer so that the number of lines is always correct.
+8d28394 A testfile added.
+cd193f6 Use basic transducer and trie disjunction
+91754de Works minus regexps
+1b73d6e dl before openfst though
+86921ca do we still need pthreads and m?
+0c4b53f Yet another missing header and using
+b5671cd Removed file training_data, which was accidentally added.
+60e4777 Initial add of hfst-tagger. A lot of stuff is still missing and the tool needs to be integrated in the build system.
+c284259 tests modified
+9799eb2 some of the tests rewritten
+01f60b6 Now the tests are performed for sfst, openfst-tropical and foma types.
+f60e580 typedef HfstTransducerPairSet removed from HfstDataTypes.h because it is not used anywhere and would cause problems because HfstTransducer::operator< is not defined
+9c47fc1 Now HfstTransducer::operator= works for the case of optimized lookup transducers and copies the name of the transducer for all cases.
+efa33f5 copy props in copy constructor (excepting type); fixes bug #3405831
+02e7be9 make compilation work without inclusions leaking from backend headers
+16b4d3c add include for std::map
+461af24 add include for std::set
+2f44bbc apertium2fst tool added
+ca39ff3 Avoid writing name, version or type twice
+8119d69 Added necessary std::qualifiers. (With --without-sfst some using-directives apparently disappear.)
+1917eee Fix UTF-8 bugs in strings: * use error_at_line instead of error when linens are known * remove bogus double try blocks * throw UTF-8 errors with messages
+9e80b3e Fix formulae for filenames and data starting with non-ASCII
+62ce06d Revert tab-containing commit r1576
+b3f24d8 fix missing paths in tests (would've used $PATH instead of newly builts)
+7e11d85 Use new metadata handling in tools * fix signedness in -grep * fix erroneous error printout in -compose-intersect * add few features to summarize
+b2b3010 * common practices headers and utils for metadata in cli tools * a simple cli tool to edit metadata
+9829fce metadata header name registry
+ab02d03 Make use of HFST3 transducer format metadata: This is basically upwards and downwards compatible change with HFST3 automata and header parsing, but be cautious that everything may break at random
+0857f80 Added Beesley and Karttunen's fsmbook examples to the tests. The fsmbook tests are not yet run when doing make check.
+5fe1844 Fixed bug that caused hfst-twolc to segfault when variable rules with keyword matched had unequal value lists. Now it will give an error message and terminate compilation.
+6fd297d Cross product added to the library
+cc5671e Universal pair update and added identity pair
+459bcaa A bug in transducer conversion fixed.
+711df75 Don't do foma-SFST conversion if we don't HAVE_SFST
+7317a58 Warning about broken foma handling
+09419fa More accurate comment
+3993996 Do foma-sfst -conversion for substitute also (not just pruning); HfstTransducer doesn't know about foma's substitute.
+c3c3dbc Typo
+687639e Swing foma substitutions through sfst to prevent horrible leaks
+24a982d Don't leak 1 (!!) byte of empty string when constructing foma transducer
+727bcd3 Fixed mismatched free/delete when freeing foma transducers.
+f199f2b Don't leak "fallback" transducer for each label
+a53ea7f Strip server junk from username reply
+f66229d Fixed wrong exception name
+3894ab1 Make composition with OL throw a Mismatch exception, which compose is looking for (it still needs to know about the second tranducer being OL)
+2029017 add 'using std::set' to fix compilation problem in hfst-affix-guessify.cc
+78a820a Standardized the transducer format options of commandline tools.
+544cc06 MAde ComposeIntersectRulePair::get_transitions virtual.
+5c6e7e4 made size_t size(void) a const method.
+de981e7 Added method ComposeIntersectFst::get_symbol_number, because HfstTropicalTransducerTransitionData::get_number is not accessible from outside the library.
+86d4582 Edited Makefile.am so that it installs compose intersect headers properly
+5330f22 Fixed bug in tokenizing string with lonely backslashes. Backslash can now escape any symbol and it is ignored when it occurs as the last symbol in the input.
+719f6db Updated Rules - left replace down karttunen + tests
+16dc6a6 Whitespace, punctuation, cleaned double conjunction.
+2c63a89 Updates on building on the Mac.
+f5d1d51 iterators can no longer be used...
+921c6ab Update SFST requirements
+00217c4 Resurrect the affix guesser maker
+6c5a5fb Flood protection for channel messages
+3cf20f7 Improved message finding and private messaging
+2518451 autoconf doesn't understand dnl without space?
+72f9a36 apparently mac os x "readline" does not support rl_completion_matches...
+c1c9e07 HfstTransitionGraph::iterator is now protected, the public HfstTransitionGraph::const_iterator should be used instead.
+894ef7b Replaced all mentions of HfstBasicTransducer::iterator with HfstBasicTransducer::const_iterator in OtherSymbolTransducer.cc.
+75f4158 Changed syntax of negative context rules.
+e7bbb19 Modified OtherSymbolTransducer::harmonize_diacritics, so HfstBasicTransducer::add_transition is used instead of adding transitions directly to the transition vector.
+5bf71cb Enabled sfst tests.
+9712ab8 untabify recent changes
+5a7c0e8 Updated HFST so that it works with the newest version of SFST, 1.4.6.
+feee342 detab hfst3 tree - feel free to revert (and report) if this causes any problems
+fb6ae1c add few trivial features to list
+1084eab Be more verbose about type mismatch
+4e99e3c check for empty strings
+53ba386 Modified test script so that it runs tests for all backend formats. Disabled tests for sfst and log-openfst formats, since sfst segaults and log-openfst gives weird results. These are errors from the library.
+495b307 Added test for negative rule contexts in rules with variables.
+251fd1d Added negative context rules.
+f6a78c2 Added tests for negative contexts in twolc rules.
+22e60a9 Now HfstTransducer::operator= throws a FunctionNotImplementedException instead of a TransducerHasWrongTypeException.
+6fe2113 Fallback to anything or nothing from settings; resolves bug #1061990
+3323325 kind reminder about importance of the README
+c7e5b9f Some logging changes
+25d4d18 end readme in nl
+25d328a Save misses to logfile
+bd2ec42 Send notice if word is unknown
+29b3b9c Don't print ugly weights
+f67e60c Just dump privmsg to console and don't do anything for now..
+3bec150 hfst-bot demo
+ba26d48 Lookup demo
+e36e700 Full api and distutils-based build & install
+453163e clarify SFST libraries relation to HFST; thanks to spectie for the suggestion
+7803cb8 * Save temporary files for foma in /tmp/ * import old readline UI from 2nd branch * deprecation warning if input = stdin * error if output = stdout
+a03e3a2 Another readline editline libedit fix maybe
+bd5472b CHECK_DECLs to support mac os X's fake cripple readline
+2ce7d2d Tests of replace functions now work for transducers of foma type as well.
+0b8ab2c A new function rules::replace_down_karttunen added. This function returns the actual downward replacement rule transducer instead of rules::replace_down that returns a downward rule transducer as defined in SFST-PL.
+b113008 New target for root makefile: valgrind
+aaf0734 >=autoconf-2.62 not 2.22
+b942a23 Remove libtool 1 support tricks, more trouble than it's worth
+86718c2 Mark version requirements in autogen
+c5094f1 Move version requirement to beginning of the line to be sure...
+95bd525 debugging tool
+063de32 A bug in function random_path fixed
+77c7bed help messages to message_out instead of stderr
+a9faa38 Do not cut unknown word forms from first non-alphabetic character in analysis, test case added
+700c106 Fixed a piece of documentation on HfstTransitionGraph and added a test case too.
+e9f9a79 Now extract_random_paths works for an empty tropical transducer. A test case also added.
+89e4743 print more than fstinfo only if verbose
+0b38d0b Fix arc-based leak in conversion
+68c0d39 Make old lexc default lexc again; fixes: 100000000 Mac OS X bugs
+637ea55 allow options to be passed via env.var. HFST_OPTIONS
+3cf23c8 works but leaks
+77a1c0d and default to glib to test if end users are ready for that in next rel
+20c88c9 Release changes
+6ccfd1c delete created test files
+ec44172 include new proc tests in dist
+25d6530 extra dist m4 macros
+ce67ad2 fix how compound words are generated
+6c78061 try generating first without compound interpretations; possible fix for bug #3290585
+b71cb2e do not pipe error messages from tests to /dev/null
+a8b0720 fix some -a tests
+267a212 add valgrind to stress test targets
+4af5dca Add a blurb about Unicode support requirements
+b2f03ac calculate spaces in length of print forms; fixes #3296854
+0bd58aa Allow use of glib for proc unicode casing (most likely breaks all Macs because of pkg-config and all that)
+0662084 Implement type mismatch error messages for all binary tools
+dec54f2 add quotation and neat printing in twolc tests
+6048824 incompatible format messages in composition
+f43dfaf document new tests in troubleshooting with examples.
+dc5c1c5 Move latin-1 string tests to XFAIL
+c30f3d3 Neat error output when incompatible formats; bug #3287458
+eb6e0ed Troubleshooting for Mac OS X's getopt
+0325c9f Check for GNU compatible getopt, try to fallback to broken getopts more aggressively on Mac OS X
+23223af Implement print-sigma and acceptor
+4a279dd include new command line option in man pages
+8e4177d Disable reserved characters and escapes in raw mode.
+3b5d30f remove roundtrip test: mac os x sed does not support new lines
+6ce1996 hfst-lexc around lexc_read
+df3b87e more alphabet hacks, i should really fix this properly as opposed to just patching the bugs i find
+83fe100 New analysis mode for finntreebank people: * no lowercase * no uppercases * no compounds * probably some ohter things
+c46b8e8 Detail all external backend libraries in troubleshooting section also...
+332fb8d here here
+0a94bbc possibly hippu-compatible alias installation
+917ae73 Now HfstTransducer::substitute(StringPair, HfstTransducer) does not modify the argument transducer. A test for this case also added.
+795926d Provide preliminary autoconf scripts for HFST
+52f0884 Replaced HfstFastTransducer with HfstBasicTransducer in conversions. This might make HFST slower, but it is needed until the bugs in alphabet handling are fixed.
+2fd9cfb When performing transducer conversion through HfstFastTransducer, symbols leaked from one alphabet to another. Now HfstBasicTransducer is used instead and a test case is added that will fail if HfstFastTransducer is used instead. The original bug is to be fixed at some point.
+9779c9b Added a test case for replace_up with FOMA_TYPE that fails. Currently it is commented so that make check will pass, but it will be fixed soon.
+12dfacf Now binary operations HfstTransducer::disjunct etc. do not modify the argument transducer.
+f933bbb HfstTransducer::insert_to_alphabet and HfstTransducer::remove_from_alphabet now pass the tests.
+25fd77f Added function HfstTransducer::remove_from_alphabet. Currently throws FunctionNotImplementedException because it does not pass all tests.
+5447d49 verbose test failures
+1085c4f Documentation updated.
+c6d0e14 Removed check for null-termination of string in the test of string_mainpultion.cc, because it fails on Mac.
+49f1dff Now distcheck passes the tests but still complains about att files..
+e884243 Reverted r1418 - these files are supposed to be here, and 'make clean' is over-cleaning.
+e7725b4 Deleted supposedly generated files - they were removed by the make clean target in test/.
+6225431 assert fopen != NULL
+cf16a6f Modified compose-intersect, so that it will treat only flg diacritics not found in the alphabet of the rules as epsilons.
+80c2c7a A small bug fixed in the newest version of foma in the foma svn. Now the FomaTransducer test works correctly.
+ea2f619 Code reorganized. There seems to be some errors in openfst's minimization, temporarily fixed the situation by pushing weights before minimization.
+5aca45b Retain root joiners while applying morphotax
+afa9e11 kill some warnings by settings
+16eabd9 New NEWS
+ae3d193 New releasenum (3.1.1) and libvector (6:0:0)
+aa7bf17 Changed the test script so that it removes temp.twolc.hfst0, when it's done
+97268c2 Fixed typo where $SRCDIR wasn't getting assigned to the file we want to test
+077da45 Changed [[ ... ]] in regular expression center rules to <[ ... ]> to avoid introducing syntax errors in previously working twolc-grammars.
+7d9a60d Added new tests in Makefile.am.
+97963cf Added support for rules which have centers that are regular expressions of pairs.
+9ebc8b9 Added tests for rules with regular expression centers.
+b583a0c Improved test script so it won't exit normally if hfst-twolc crashes.
+e358dbe The public and protected interface of HfstTransitionGraph revised. Unnecessary comments and debugging code removed from HfstTransducer.
+e1ef196 class HfstTransition moved to file 'HfstTransition.h'
+147b99d Substitute functions in HfstTransitionGraph should now be easier to read.
+add8e68 Code of HfstTransitionGraph made clearer, a bug in including HfstTransitionData.h fixed.
+dc9da7b Code simplified.
+4ad9718 Transducer conversion done through HfstTransitionGraph.
+f23ba67 Included <algorithm>...
+3856fdc Changed member const HfstBasicTransducer &t to HfstBasicTransducer t in ComposeIntersectFst
+96e5e02 Fixed bug in ComposeIntersectFst which forced all states in a transducer to have the same final weight as the initial state.
+6b74eb4 Sorting the arcs of the argument transducer in the constructor of ComposeIntersectFst, because they need not be sorted nowadays.
+0a5bcef Added arc_sort member function to HfstTransitionGraph.
+2f9d3a9 Some additional experimental container-hacking layer stuff
+e238723 left arrow rules
+f49a6e1 some more hacks to alphabet.cc
+6a3b642 Added support for rule centers which have the form 'X:a' where 'X' is a set and 'a' is a symbol.
+972561a Added tests for rules with centers 'X:a' where 'X' is a set and 'a' is a symbol.
+475b6f9 Undid some changes that stopped working after the interface of HfstBasicTransducer apparently changed. Also changed HfstTransducer OtherSymbolTransducer::get_transducer(void) to const and added the function void OtherSymbolTransducer::get_initial_transition_pairs(SymbolPairVector &pair_container) const.
+48487f2 Made max() and is_subset() static functions.
+83cfb8a hfst-twolc unit tests added.
+3bdda4e New NEWS
+d04a96b New release number, 3.1.0 release and 5:0:0 libvector
+420e273 Removed an extra debugging print
+c23e919 HfstTransducer::insert_freely(HfstTransducer&) now uses HfstFastTransducer
+1bc6962 check locale in some tools
+f063366 HfstTransducer::insert_freely now uses HfstFastTransducer for foma type. More tests also added for insert_freely.
+5490095 Conversion functions between HfstFastTransducer and backend implementations added. Now HfstTransducer::convert also converts through HfstFastTransducer. HfstFastTransducer will gradually replace HfstBasicTransducer for HfstTransducer functions that require conversion.
+79722bf HfstTransitionGraph now has a vector of states instead of a set. All programs and functions updated accordingly.
+3b908de Reword slow lookup warning
+ccad335 An apparently functional way to expose sets by copying them in order to vectors
+8708944 Fixed typo
+92ef298 Fixed includes in XreCompiler.h and LexcCompiler.h
+8fa2481 added some functions to ConversionFunctions that will be used in fast conversion between transducer types instead of HfstConstantTransducer
+0aea7c9 Fixed test script so that it should work in distcheck
+6ee3d24 Made lookdown functions consistent with lookup ones, updated docs
+1c9307d Updated doxygen to reflect changes in lookup functions
+5f28355 simple archive tool for duplicating repeats
+a43ca61 Added a faster version of lexc compiler for a transducer of foma type.
+228feee decrease stress by order of 8
+b15d21d Keep information about the parent FdTable of an FdState in the class to avoid invalid reads if it gets deleted
+153862d Changed lookup functions to return pointer to HfstOneLevelPaths, and take no argument for it. Calling functions are (still) responsible for freeing memory.
+577e62c Add more common problems
+cd64166 Added HfstTransducer::get_symbol_number, it will be used in faster conversion between transducer formats.
+5588a3b A small bug in testing the EmptyStringException fixed.
+bda6a25 EmptyStringException is now thrown if the empty string is used as a transition symbol.
+6923dc2 Universal pair function added
+92ece0d Need more inclusions and usings when they don't leak in from backend libraries
+ed3be66 Pathnames of testfiles in test/libhfst are now given as getenv("pwd") + "/tesfilename"
+a5e5bce Tests in test/libhfst now create the test files in EXTRA_DIST, so that distcheck works. This is a temporary solution.
+7c1efd3 Remove obvious memory leaks
+e8bb168 Added missing test files.
+2241e2d Prepare 3.0.3
+552dadf New NEWS
+0bf8b35 LexC and regexp functionalities moved from tools/src/parsers under the HFST interface at libhfst/src/parsers.
+f13146e Link with libhfst/src/libhfst.la (is this portable?)
+5c8d213 allow debianised names for libraries and headers
+348aaed Global wrapper - could it be this easy?
+e8d8870 Fetch headers from srcdir instead and assume libhfst is installed in the sense of ldconf
+34f8ddf Fetch headers and libraries from a (presently) hardcoded /usr/local
+81cd53b Testing a simple swig module
+9fb915e SWIG generates files with .cxx extensions
+52949a7 Removed debugging message
+a3e829a Initial framework
+f08623e stress test for proc
+99c1d62 Optional stress tests now
+09baeff Move stress tests out
+8dada87 Priority union function and unit tests
+e095ef1 Starting to implement a faster conversion, added file HfstFastTransitionData.h for that purpose. Also separated HfstTropicalTransducerTransitionData into its own file.
+50deff4 HfstTropicalTransducerTransitionData moved to a separate file from HfstTransitionGraph.h.
+0d2bda5 The pathname of HfstDataTypes.h fixed in HfstTransitionGraph.h
+13e5805 A non-existing file removed from Makefile and an include command.
+b91dcd8 Including HfstTransducer.h and HfstTransitionGraph.h into header files avoided in most cases by using HfstDataTypes.h instead.
+fbcb690 Made some changes to header files in order to avoid cyclic dependencies.
+3b54b9d A bug in TropicalWeightTransducer::determinize fixed. The weights must not be encoded, only the label pairs.
+f723fba Typo in license conflict warning
+d23279b Now the subtraction of two empty transducers works also for SfstTransducer. A test case also added for all transducer implementations.
+e6549a3 Now read_in_att_format and hfst-txt2fst also accept a single newline as an empty transducer, if that is the only transducer in a stream.
+373523d The library now uses is_epsilon, internal_epsilon etc. instead of string literals.
+ceb1942 Added pkgconfig definitions
+06fbbe0 Fixed variable LIBHFST_VERSION
+40fde0e HfstTransducer::get_alphabet declared public. Now the foma implementation returns also special symbols that are not included in the sigma of foma, but foma is still aware of them. Some unit tests also added.
+9069af7 Added some unit test for SfstTransducer that test if the alphabet is pruned in operations.
+6d7f356 Fixed possible bug in ComposeIntersectUtilities and the find member function of SpaeSavingSet.
+d3170ff Put stl sort function in stl namespace (which for unknown reasons is apparently unnecessary but it's probably clearer this way).
+2d5c8d5 Added more test cases for hfst-subtract that test if the identities and symbols are handled right. Now subtraction seems to work for SfstTransducer, too.
+430ab83 Print --version and --help to stdout in standard style
+faa9758 clean generated scripts
+c5381c7 Remove all binaries and texts after tests
+693e2d6 remove generated files on expected failures
+ded09b1 remove generated files after testing
+dd1143e Skip broken aliases
+da774c3 exempt scripts and tools with broken option parsing from distcheck
+014ad55 Use $srcdir in tests and include all sources
+26aeef9 Missing text file reconstructed by guessing
+6aedb92 Now input and output projections keep all symbols in the alphabet and have unknowns replaced with identities. Subtraction of tropical transducers handles weights correctly, all paths in the second transducer are subtracted from the first one.
+41d2454 Comment out failing test prereq for now (it broke make dist).
+9e69826 Unit tests reinstated for .cc files under implementations, compose_intersect forced under same regimen (whether MAIN_TEST is #defined).
+6d8743b Dummy unit tests for every .cc file in libhfst/src except HfstExceptionDefs.cc
+693540f Tests added for hfst-lookup with transducers that contain identitites.
+0dc5bd2 Document openfst version requirements in troubleshooting also
+c7a37f1 An error in harmonization fixed: now flags are excluded when expanding unknowns. A test also added that checks this case.
+b5c65bd Missing lexc test cases
+b9c7075 Reinstate final weights (they've apparently been absent since the missing state -relabeling code was added...)
+7677a39 Added overloaded lookup functions passing untokenized strings
+f354be5 print verbosely tokenization and blocked flags unless ol
+faeb874 use GNU getopt if available
+3248829 declare more built sources
+008db77 More weight tests
+e772be3 More sanity checks for escaped colons
+c68e38b Give weighted example
+38440f9 partial fix for 3269636
+0cc3569 remove debug printout
+70af6e0 filenames and line numbers in error reporting again
+339413e Build obsolete lexc compiler by default: * remove handbuilt lexicon combinatorics and revert to sfcm2009 algo * use pretty name for lexicons * more verbose printing instead of xerox style again
+a75d492 Now hfst-twolc rule names are unquoted.
+72ca575 Add missing files with likely sources
+5f924ab Now composition should work correctly
+2b052f5 Changed population of symbols sets in HarmonizeUnknownAndIdentitySymbols.cc so that it relies on the get_alphabet method in HfstTransitionGraph. get_alphabet sometimes returns an empty set, so that needs to be fixed in order for unknown and identity symbols harmonization to be reliable.
+492ddf3 Added HarmonizeUnknownAndIdentitySymbols.{cc,h} to Makefile.am
+08d99b5 Unknown and identity symbols should now work correctly in composition. Still some errors in other tools in test/tools, trying to get them pass all.
+ec358ec HarmonizeUnknownAndIdentitySymbols.{h,cc}: A model for how identity and unknown symbol harmonization can be done...
+8ab38b4 New NEWS for 3.0.2 rerelease
+0bcd861 Added missing ComposeIntersectUtilities.cc
+d5d1a14 Added missing ComposeIntersectUtilities.h to Makefile.am
+e8c4fd6 Prepare 3.0.2 release
+2e151c7 s/warning: Warning/warning: /
+d108e8d Moved the #ifdef HAVE_SFST a bit higher..
+a9645b3 Fix ; separated regexps: * add compatibility function for mac OS X missing getdelim * use delim for all cases in regexp2fst
+bdc8a29 Converting to and from SFST format is now faster because function 'check_visited' is used instead of a set of visited states.
+32a3161 Conversions between tropical, sfst and foma transducers are now carried out through HfstConstantTransducer, which is faster than using HfstBasicTransducer.
+893c4eb Make fallback dependent on fnie
+25b8f73 Removed some unused code..
+8711cbc Reduced hfst-compose-intersect memory consumption a bit.
+0d9c166 Added hfst-pair-test for testing hfst-twolc rule files.
+7594c1a HfstConversionTransducer renamed to HfstConstantTransducer, most functions in ConvertTransducerFormat.cc splitted to separate files
+bcc537f Some optimizations done on conversion functions. Class HfstConversionTransducer added, it will be soon used in a more efficient conversion.
+4e74b65 Note that we have licence exception for foma and warn if foma is missing
+3fd96ed Epsilon filter compose intersect
+77f9748 Only ascii-tokenize a-zA-Z to avoid breaking eg. generating transducers
+3155440 3.0.1 release news
+24b0883 Prepare bugfix release 3.0.1
+4d7a04d Use library function to check for epsilon in to_ol
+78f7e60 Pass strings to internal representation checking functions by reference
+6a5608c More control over floor lift behaviour
+aeee89f Clean up conflict resolution mess
+47f3823 Better floor jumping + relabel non-contiguous states (could slowdown in extreme cases, possibly revisit)
+eaa606b Alias hfst-optimized-lookup -> hfst-lookup for compatibility
+04d7b57 use default names to trace hfst operations neatly
+f6fecd5 Allow name truncation for neater names
+af00906 describe input/output formats in man pages
+2b9fa09 Extend example to contain all sections and stuff --Denn och nedanstående rader kommer inte med i loggmeddelandet--
+da36afc New tool for preprocessing automata before optimizing
+8bcd08b A state in an HfstTransitionGraph now has a vector of transitions intead of a set of transitions.
+eeb7acc ...I meant HfstException
+0a73c66 Catch HfstFatalException in convertion
+e6a8e3d HFST_CATCH macro
+456a02e hfst-lookup now handles flag diacritics correctly
+35ea903 Added functions to check for equality to internal reserved strings
+9f4d70b a bug in printing epsilons in hfst-fst2strings for sfst transducers fixed
+ab54f89 Add custom error message and README blurb for ::malloc errors
+618d064 When the floor sticks for (even) a single round, jump up to most recent successful allocation. This makes things a lot faster, at the cost of some waste of space. --quick should not be necessary for most purposes now.
+ff86e49 hfst-fst2strings now implements option --random for sfst and openfst transducers
+bcc68cd Misc. speed improvements, in particular removed the need to separately track which indices begin states
+17007d8 Actually write the index table finality markers
+f436f9a see previous commit message
+9d863c2 Fixed oopsie wrt removed profiling variables
+51049ce Run twolc tests in numerical order.
+b9bdc86 Fixed problem with word boundries breaking the alphabet.
+5234e0e Added tests for ensuring that word boundary conversions wonät break the alphabet.
+b532c93 Changed word boundaries so that they perhaps emulate what xerox does. A "#" in a rule file is always compiled to both an absolute word boundary (which is an internal symbol in hfst-twolc) and a relative word boundary "#". The absolute word boundary will always correspond to zero in output strings and the relative one will correspond to whatever it corresponded to in the rule file.
+f9788b0 Word bounadry tests added.
+d797484 Major improvements to --quick and some speed cases
+0062cd4 option --random added to hfst-fst2strings, not yet implemented
+724121b Removed trailing whitespace that broke make
+c45ba6b Fix lexc tests: * make script in build dir +x * put script dir in beginning of PATH in tests
+6621d1c git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@1181 941e2c2b-deac-454f-805a-451daa25f33c
+b4d68df Missing files added to Makefiles, make distcheck still fails.
+fface6c Turned option passing back on for convert function
+a31e269 test-script fixed. Previously it required installed hfst-compare, hfst-txt2fst and hfst-fst2txt
+94b2b83 fix partial commit of portability c xfunctions
+71b3bcd remove unnecessary read
+3091271 use pretty names by default
+c122b04 Fix name tool installation
+45f3fda Use automata names from metadata instead of filenames
+a3e6bcd Fixed a bug with %-escaped variable values, which weren't properly unescaped previously.
+39651a4 Added tests for %-escaped variable values.
+f59a7e9 hfst-fst2strings help message and special character printing fixed
+584c57c hfst-fst2strings fixed
+3c0acb5 filter flags should've defaulted true
+7e4b6cd Typo in usage message
+8f464a9 Added some files for a transducer testing environment.
+c53f605 fix spacing in examples and describe
+28680a9 update version
+38108b8 "environment" variables fed to configure get saved
+c35977b Added note about local libraries
+8077e3e Fixed a bug in compiling <=>-rules with list centers.
+97dd6fc Added test for compiling <=>-rules with list centers.
+c748ca3 Changed target to first release version
+35fb221 hfst-lookup should now work correctly
+5d4421d Added deprecated (and undocumented) -w switch to hfst-calculate for backwards compatibility
+d8842d4 Update substitute documentation
+d4c7e58 hfst-lookup should now work, still some problems in printing strings
+d7773da A more organized version of lookup function added to hfst-lookup. It will soon replace the original function.
+f850e58 Don't expect hfst-lexc-compiler to have a proper help and version string because it's just a humble wrapper.
+09adc46 Added a way for ol-conversion to be done really lazily (for when you want it done quickly - should still be faster, honestly). Also to pass a string parameter to conversion functions if they ever want a hint about something.
+d4f4c94 Don't run obsolete tests that break when run after make clean
+252e225 more distcheck fixes
+53d54a4 small changes made to hfst-lookup
+200b383 Added single quotes around and space after the filename for file-not-found errors. Makes it easier to read the filename (earlier the cause of the error was printed flush after the filename, with no space between).
+63b19be be explicit explicit about foma requirement for lexc and xfst
+9b1f9c2 Only claim to convert files that test -f
+df545ae Small changes made to helps and arguments in tools that convert between text, string and binary formats.
+65bebfd Maybe INFINITY will be defined more portably this way
+a9183a2 INFINTY in hfst-lookup was not defined properly. fixed it.
+b97ed62 string::npos changed to std::string::npos
+105b4b3 Generate binaries needed to test hfst-proc correctly
+65b4602 More utf-8 checks added. Command line tool helps also updated.
+2342e28 Fixed Makefile.am so that make dist works.
+59e6347 Initialise weight
+3f70a6d Missing std qualifier
+49eaf2b Added HfstTokenizer utf-8 validation tests.
+4991081 Enlightened hfst-proc as to the true nature of HFST3 headers
+de50e34 made HfstTokenizer::check_utf8_correctness a public static
+1850f9f Added utf-8 validation to the tokenizer and added the exception IncorrectUtf8CodingException.
+6361b29 Fix brokentests
+3a4ce96 remove coding style requirements and unit tests since they aren't followed anyways
+7752960 Do not print all multicharacter symbols unless in verbose mode
+206bef0 Update man pages
+92a9924 mark 3.0_rc1
+3d3e70b Fixed a bug in compiling rules with word boundaries and added test45.
+7ff8200 Don't use sed in scripts since it's broken on MacOS
+cb7b1ee Fixed bug in compose_intersect which discarded the second rule systematically.
+948b372 @_SPACE_@, @_TAB_@ and @_COLON_@ added to HfstStrings2FstTokenizer.cc
+7ad47d7 hfst-lookup now uses HfstFst2StringsTokenizer to tokenize the input strings.
+9ab6592 Don't convert same stack more than once
+b9dbb3a fisx some warnings
+fa5dd09 workaround mac''s missing strndup
+6870c09 Allow pair substitutions...
+01d746d Fix test for Mac OS
+677ddde Replace tabs with random number of spaces
+0990ea4 More tests limited to available formats
+8ee702b Only test available automata formats
+96af3b2 Test all string formats in strings2fst
+834cf29 Fixed hfst-string2fst parsing of input strings and reading of multichar symbols.
+e188081 hfst-strings2fst should now be able to handle all kind of string formats.
+ecc96f2 # is no longer a special symbol, because it is not a special symbol in xerox twolc.
+2ca9026 Fixed print in left arrow rule conflict warnings.
+3d41fc2 Fixed word boundaries in compose-intersect, again...
+b4270dd Special symbol handling changed in the commandline tools.
+0e1bea8 Fixed word boundaries in compose_intersect. When HfstBasicTransducer substitute starts working correctly, this can be done more efficiently.
+161d903 Fixed word boundaries in compose_intersect.
+f507cee Added printing the conflicting context in left a row rule conflict warnings.
+2851f19 Unknown and identity symbols are now correctly handled in composition. AT&T format now allows spaces in symbols if they are ascaped as '@_SPACE_@'
+caaf109 Tests for ? symbols
+a57fcaa Use unknowns and identities in regexp2fst
+a6c9834 Documentation added. Exceptions now throw a message.
+dfceeee Modified test so that the script does not have to be changed when new tests are added.
+71f1022 Removed a unnecessary newline printed when not reporting left arrow conflicts.
+6b311ec Added a rule for compiling a local version of hfst-twolc used in tests.
+d08533d Added hfst-twolc tests.
+e032ace Added hfst-twolc tsts.
+98a5402 Added hfst-twolc tests.
+aacbe75 Cahnged order of arguments so that 'cat fst1 | hfst-binary-tool fst2' will treat fst1 as the first and fst2 as the second argument.
+262d19e Fixed compose-intersect
+1bb5dec Handle the empty transducer in ->ol
+34d3577 Now hfst-compare does not print anything in silent mode. More tests added to test/libhfst.
+ea10912 Fixed definitions
+232b892 Fixed d:0 where d is a diacritic.
+58836d2 Fixed symbol offset calculation in certain flag diacritic-concerning cases
+d2a766d Fixed problem with diacritic pair syntax. Now d d: and d:0 are equivalent for the diacritic d and d:x will give a warning.
+a5505dc Remove debugging strings
+0590acd Properly copy flag state vector on stack
+25a5b9e Fixed a bug with definitions
+32e01ec Add tests for UTF-8 and latin-1 encoded strings
+ef669e3 follow print-epsilons in all formats
+9331c51 format options like other tools have them
+5b8b2b1 More documentation added.
+6197f2f More careful quotation and informative error messages for foma scripts
+5d6a2ff Use "HfstTransducer.hh" instead of <hfst/HfstTransducer.hh> for in tree builds
+49db47a hfst-strings2fst fixed
+6bf1608 Now hfst-strings2fst should handle escaping correctly.
+2825f8d A bug in hfst-strings2fst fixed: now the backslash is reserved for escaping characters. Now the library also throws more informative exceptions.
+54aaa9e Fixed operation retrieval
+1a0485a Fixed problem wrt subtracting from an end() iterator of an empty state_placeholder index placeholder map
+85d0602 Removed some more debug prints.
+fe95ee7 Removed some debugging prints
+28844b5 Fixed bug in defining lista using other lists and another bug which prevented variable rules unless there was a Definitions section.
+613d39f Fixed diacritics handling.
+86c8335 Fixed output file handling.
+103d9b2 Gave up on making }, ] and ) literal if they are not preceeded by opening {, [ and [, since this is too difficult in flex when brackets get nested. Fixed commandline argument handling properly and separated { and } from [ and ] i.e. they get their own bison symbols.
+52ebbb7 Fixed handling of commandline paramters so that the input filename can be given as a free argument without -i or --input.
+d630caf Fixed syntax so that a lonely }, ] or ) is not interpreted as abracket, parenthesis and so on. Fixed numbers so that they need not be quoted unless preceeded by ^
+ade6ed8 nore quotation and script guessing
+60c8023 Added hfst-compose-intersect.cc
+2b7a964 Changes needed for libhfst/src/implementations/compose_intersect
+5718b7b Added fiels needed in compose_intersect
+803e57e configure.ac changed because hfst-twolc was added.
+51b9cd2 Removed file hfst-twolc/.txt_fst which was added by mistake.
+cfa3c5c Removed geerated dir hfst-twolc/src/.deps which was added by mistake
+38ec61e Added hfst-twolc.
+e195be6 Miscellaneous packing tricks & fixed a typo
+7815222 Correction to flag indexing
+51cdc7a Corrected alphabet ordering (eps-input-flag-other)
+a07a6e4 Small changes done in documentation.
+f8658bb More refactoring
+20e8d36 Miscellaneous improvements and refactoring
+4e9475f Fixed bug wrt finding the largest used index
+859a1b2 missing test file added
+b4ecec5 Parametrized packing aggression. Packing is still a little slow for decent levels of aggression. Consider adding a mechanism to ask conversion to be maximally aggressive (eg. for binary distribution).
+fcaea64 Redo flag handling in ol-conversion
+dfb2690 A bug in hfst-lookup fixed: reading input strings in spaced format now works.
+7856fc9 Fix stupid mistake in previous fix to optimized-lookup internals
+2f32111 More coding style conformism
+bc68f4c Coding style conformism
+7d828ce Fixes to optimized-lookup internals and conversion
+d53894f Exception classes refined
+844d881 All exceptions changed to HFST_THROW(HfstException).
+66ebc7d Renamed TWROW HFST_THROW in HfstExceptionDefs.h
+661b615 Added some macro definitions, which make it easy to declare, define and throw informative exceptions.
+829953a Free memory earlier and do some less work in ol-conversion
+3c70901 The order of weight and string/string pair changed in HfstOneLevelPath and HfstTwoLevelPath. Now the elements of a set are sorted in ascending weight order.
+44f919c HfstLookupPath(s) is now replaced with HfstOneLevelPath(s)
+ae4f393 Flag diacritics should now be handled right in functions lookup and extract_strings
+95eca27 HfstTransducer::lookup now takes a StringVector as argument and HfstTransducer::extract_strings stores its results in an 'HfstTwoLevelPaths'
+38c5e2b Now coding-style.sh should pass.
+7470a48 Overlong lines separated on several lines.
+525715b More more more OFST->OPENFST renaming
+bd8523a More more OFST->OPENFST renaming
+1a56267 more OFST -> OPENFST name renaming
+645f7af HfstTransducer::read_in_att_format is now protected
+4b37099 A bug in tests fixed.
+b106796 test.cc renamed to test_rules.cc and only tests for functions in namespace hfst::rules preserved
+708daa6 TROPICAL_OFST_TYPE and LOG_OFST_TYPE changed to TROPICAL_OPENFST_TYPE and LOG_OPENFST_TYPE.
+4a1fd2f Fixed a bug in reading binary SFST and FOMA transducers.
+80e53b4 update requirements and reorganise
+44a7d7a Fixed bug in reading and writing transducer binary headers.
+d9ac6ec AT&T format now accepts all whitespace characters as field separators.
+6fd24d8 Added a const-version of HfstTransitionGraph::operator[], so that it is possible to access the transitions of a const HfstTransitionGraph.
+3cae2e6 Added appropriate type checks in a HfstTransducer constructor - probably many more needed...
+af09e6f Fixed typo and clarified help message
+ce45fb5 Represent epsilon as blank string when returning representations from ol-library
+13f7061 More tests added. Substitute bugs fixed in TropicalWeightTransducer.
+5632573 New tests added. Substitution functions cause a segfault in TropicalWeightTransducer, debugging under way.
+2c7c03e More tests added.
+91ab109 Fixed some problems (due to epsilon symbol) in SfstTransducer functions that take a String or StringPair as argument. FomaTransducer::is_cyclic now works correctly, function 'fsm_topsort' must be called before 'is_loop_free'.
+2ea6659 More tests added.
+ebfd3f9 File test_transducer_functions fixed.
+47066b2 Extra debugging messages removed.
+e48223d Test for tokenizer added.
+8ff3b25 FomaTransducer::define_transducer(char*) now calls fsm_count(struct *fsm) on its return value. In this way the number of fsm lines is correct when the transducer is written to file.
+8485a6d More tests added.
+10901e1 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@925 941e2c2b-deac-454f-805a-451daa25f33c
+a68b3e3 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@924 941e2c2b-deac-454f-805a-451daa25f33c
+0df13e9 File test_constructors.cc added
+e1e8ffe Documentation added.
+7e81b7b Documentation updated. Tool hfst-name added.
+ab09fac Now conversion from OpenFst and SFST to HFST handles special symbols correctly. How special symbols should be handled in the reverse case is still an open question.
+aaa59d3 remove deprecated conversions and unused parameters
+8cbe4a2 ol-basic -conversion
+b3a201a Function HfstTransducer::insert_freely(const HfstTransducer &tr) added.
+63eb030 Now the output symbol table of a tropical or log HFST transducer is assigned a copy of the input symbol table when the transducer is written. This should make conversions between OpenFst and HFST transducers easier.
+473157e Fixed two typedefs in trunk/hfst3/tools/src/hfst-summarize.cc
+c8c1af8 Fixed an #include in trunk/hfst3/libhfst/src/implementations/ConvertTransducerFormat.h and a typedef in trunk/hfst3/libhfst/src/implementations/convert.h
+25fc8e1 Fix verbose messages about HFST3 headers
+e856b97 epsilon tests
+0e91640 hfst-lookup now prints the results in the FILE requested instead of stderr
+758a956 hfst-lookup has two options more. It is possible to print results in pairstring format (not implemented for optimized lookup format) and defined how the epsilon is printed.
+76acf98 extract_strings and WeightedPath changed so that it is possible to include a StringPairVector representation of the extracted paths
+d17c308 implement flags and epsilons and xfst options print-space print-flag obey-flags etc.
+290b861 Avoid testing missing backends if possible
+843e8d6 Documentation added. Thrown exception types changed for some functions.
+ed4c9af Documentation improved and added. Keyword 'const' added to functions and their arguments when appropriate.
+532d9e9 Documentation added.
+026a095 Documentation changed.
+a76fccf HfstFileException changed to HfstStreamException
+740219f Missing flag diacritics now yield a warning in hfst-compose, hfst-conjunct and hfst-subtract, unless freely inserted by option -F.
+fbd97a1 One more portability fix... could be the last one!
+200fae1 Yet another without-openfst portability fix
+da6dfc8 Another without-openfst portability fix
+beae820 Another without-openfst portability fix
+b8f670a Added using-directives to hfst-lookup.cc - apparently they don't get included from somewhere else when not HAVE_OPENFST, so this is necessary for portability
+e9a2fa5 More optimized-lookup conversion fixes... produces correct results at least for trivial cases now.
+37717b2 Various bits of format correctness for optimized-lookup conversion (lookup still doesn't give correct results)
+1e51ff9 Documentation added.
+c929f0b HfstAlphabet, HfstBasic and HfstUtf8 cc and h files moved to tools/src. Some functions in HfstTransducer decalred as protected.
+3e5198b #if HAVE_HFST_OL perhaps not working correctly - in any case HFST_OL-writing is now enabled, although the results still don't appear to be quite correct
+70441e4 Oops, forgot to remove some debugging messages
+c930115 Fixed hanging hfst-ol conversion, still doesn't get written
+4b3123b Ol-conversion (untested as yet)
+7f0965a Added parsers/xre_utils.h to noist_HEADERS in tools/src/Makefile.am
+52ba7b8 Added parsers/XreCompiler.h to noinst_HEADERS in tools/src/Makefile.am
+0382dde Documentation added.
+3210012 Documentation added.
+94820cd Intersecting composition functionalities removed, they will be implemented using HfstBasicTransducer format in the future.
+90253d69 Updated configure.ac to reflect dropping of tools/src/parsers/Makefile.am
+081c986 Deleted unneeded Makefile.am in tools/src/parsers
+aa3fcaa Substituting unknowns and identities now works correctly in composition.
+3e96e8f A bug in reading transducers in AT&T format fixed. Also an alphabet bug in converting HfstBasicTransducers into SFST transducers fixed.
+7c9ed80 Corrected documentation link.
+7bd61df Documentation added.
+b03365d Redundant code removed from class HfstTransitionGraph.
+ee7689a HfstNet renamed to HfstTransitionGraph, HfstFsm to HfstBasicTransducer and HfstArc to HfstBasicTransition
+9c3b6a6 extra_dist all scripts
+b930429 fix VPATH _build_
+324cd91 Substitute functions of HfstNet updated.
+366b783 HfstCompiler.h in noinst_HEADERS
+d545f77 Added items to noinst_HEADERS in tools/src/parsers/Makefile.am, evidently needed for building
+150715f Remove intermediate files and be selectively verbose to avoid confusion
+e2e9e79 YAUH: HfstUtf8.h
+4c75eab YAUH: HfstBasic.h
+f0e1f0c Another unshipped header (HfstGrammar.h)
+c9d913a oops
+b258f1f HAVE_OPENFST guards
+ab00fb4 A bug in transducer conversion functions fixed.
+ab4c840 Missing \ in another header shipping directive in libhfst/src/implementations/Makefile.am
+8bb83a4 Another missing header, TropicalWeightComposeIntersect.h included for shipping (this is probably temporary and the header shouldn't be needed anymore, but for now building fails without it on clean machines)
+558f4f3 The alpha testing instructions
+cc748cc skip all tests that might fail
+1ac0e16 * some new autoconfiscate features (silent make!) * misc. stylistic changes
+e8b5ac0 Made HfstNet::get_final_weight(...) a const member function.
+eafc2e8 Added missing headers to Makefile
+2427785 changed void HfstNet::add_state(HfstState s) so that it returns s and added HfstState HfstNet::add_state(void), which adds a new state.
+51d9a4a HfstNet.cc added
+6468e7f Conversions between transducer formats updated so that they use HfstFsm
+236c20d Fix the missing includes and linkage
+5a74f1f Remove hfst's lexc, xfst and xre parsers and use foma's instead of reinventing wheel and doubling update burden
+f569bf3 New transducer conversion functions added.
+b1b2c7c git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@841 941e2c2b-deac-454f-805a-451daa25f33c
+569ec24 A bug in FomaTransducer::define_transducer fixed.
+bb4aa6b A bug fixed in HfstNet::substitute(StringPair, HfstNet)
+7b4516e More functions added to HfstNet
+c80a341 More functions added to HfstNet
+59c60c3 Use local compare for all tests
+4babf62 don't fclose infile too early
+f4ecf79 * Separate bug report from further info by newline * remove old and deprecated tools
+7db67bb * intersect has been called conjunct since forever * move external links in SEE ALSO
+c49c6c7 enforce coding style in make check :-)
+a5774a9 File new-ConvertTransducerFormat.cc added, it will soon replace ConvertTransducerFormat.cc
+3c75438 testing results of parameter vcombinations
+1c76cc0 add hfst-lexc script
+1fe743b Update xfst/foma scripts
+9259bbe Added a substitute function to class HfstNet.
+ea06012 HfstNet.h has now a function write_in_att_format
+a0e38e2 HfstNet.h updated and tested.
+692777c Added file HfstNet.h that will soon replace file HfstInternalTransducer.h.
+8bd8247 Fix internal tests
+a988bf9 HfstInternalTransducer_ updated.
+d511822 A new HfstInternalTransducer class HfstInternalTransducer_ added.
+5105bb2 class HfstTransition changed to struct HfstTransition
+de7d5ce A bug in converting empty transducers between internal and OpenFst's formats fixed.
+b2b1ee8 use #if's on backend specific code
+75bc715 LogFstTrieFunctions .cc and .h removed and their functions moved to LogWeightTransducer .cc and .h and copied also to TropicalWeightTransducer .cc and .h
+e5cacc1 Files renamed and deleted.
+19e3b71 Including headers should now work correctly. Doxygen documentation also added.
+871e1e0 The minimal lexc compiler functionality tests and minor fixes to compilation formula
+4d00374 implementations unit tests
+4233b9d Add unit tests for extensions
+e7213c6 don't test default input stream since it requires stdin
+135c50f EXIT_* needs cstdlib on newere gcc's/glibc's
+f008438 main interface unit tests 3/6
+7923d45 It's a verbose test suite
+3fdf3ea hfst-strings2fst now tokenizes multicharacter symbols
+4280623 A bug in hfst-strings2fst with (not pairstrings && not spaces) fixed.
+dc4b60b hfst-strings2fst now uses the internal trie transducer format and converts to the format requested before writing the output. This should make hfst-strings2fst faster.
+178b960 Documentation added.
+39f6553 Added a simple example transducer library, MFSTL,  that can be included by command './configure --with-mfstl=true'
+37fa173 An implementation type FOO_TYPE added for testing, by default it is not included in HFST.
+779e27e Fix lookup_printf and test it
+91cbdca Reading hfst version 2 transducers whose implementation type is OpenFst should work now.
+7248131 Documentation added. A bug in hfst version 2 transducer handling detected, fixing started.
+8a0f692 Full-ish HfstTransducer unit test
+f65f228 A bug in hfst-strings2fst fixed, now the newline character is discarded before converting the weight string into a float. More Doxygen documentation also added.
+76ebbd1 Lookup implemented for optimized-lookup API with new style headers, though hfst-lookup doesn't print anything due to commented-out printing function (it seems to break when I uncomment it..?)
+606ddf6 This could be unit test
+8887df6 hfst-lookup should now work correctly for transducers having epsilon input cycles. Also added some documentation.
+da33a15 fix more of mac os x getline substitute
+b88d9ff skip hfst-proc dir for empty input tst
+b41e574 Revert man bootstrapping stuff and add stubs for rest of the tools
+539ef76 add set and use zu for size_t prints
+100123f hfst-lookup fixed, still allows too many cycles although limits the results to a finite number
+0aeebd2 A bug in hfst-lexc-compiler fixed, still some errors in help2man and tool tests.
+1e97875 File added.
+b185125 Outputs of help commands of commandline tools fixed.
+12ff3ef A bug in HfstTransducer(StringPairVector&, type==FOMA_TYPE) fixed.
+edbb55d A version of infinitely_ambiguous (necessary for at least lookup)
+d7f8ba0 Removed conditional compilation guards from non-template lookup-performing function (which way do we want it to be?)
+d9efbee enable lexc, missing ) added
+64c686b Some additional HFST_OL functionality
+75934b3 Update man pages for release :-)
+2dc49a3 Tests added.
+209fd04 Some fixes to make the right names defined down the line, plus a first attempt at the lookup API
+39692d3 Lookup for hfst_ol in hfst3
+4887fe9 More documentation added.
+07b4838 Files documented, a skeleton file added for adding a new backend implementation
+2831646 Files renamed
+cc61692 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@769 941e2c2b-deac-454f-805a-451daa25f33c
+185380b Now libhfst/src/implementations contains files that modify backend transducers directly and libhfst/src other files
+a98715a Files moved
+636599b Files moved
+a373e2d Set executable bit + line endings.
+fcf17ac Fake hfst-xfst using foma-wrapper hacks
+2158187 HfstCompiler.cc and HfstCompiler.h added to tools/src/
+485406c Files moved.
+b7d01a8 hfst-lookup updated, handling flag diacritics and multiple paths with the same weights not yet implemented
+bccb155 hfst-lookup no works on unweighted acyclic transducers
+565d990 set type after exiting error for mac compiler
+4cba1aa Fix -o handling
+a62adc6 hfst-lookup implementation continued, works not yet
+edd084b beginning to implement hfst-lookup
+cb1cd03 Recover from make-breaking stupid mistake
+2b402e5 Standardization of HfstOlTransducer's iostreams
+b10fc11 just testing that everything works
+d20527d Clean up few minor details
+d1968d9 Documentation added.
+0fd33bd More documentation added, exceptions divided into subclasses.
+f55820f Documentation added.
+bac207d Catch stuff to provide meaningful error messages, provide better error replacement
+7bec3d4 Small changes done, documentation added.
+ddaf962 Lookup and related functions
+94bb62d Update string_to_format and some polishing
+3067f9f A bug in reading transducers with old header format fixed.
+8bde7d5 harmonization function optimized
+29c3abc don't use bsd err functions
+19df4c8 return paths even if !HAVE_SFST
+cba810b using std::map, have SFST stuff ifdef'd
+218faa6 A name field added to hfst header. Doxygen documentation updated.
+7a3b473 HfstInputStream changed
+c7509d0 Missing restriction rule operators added.
+fd80271 A bug in HfstRules fixed. FEXPORT must be added in front of foma functions 'sigma_create', 'xxmalloc' and 'sigma_max' in file fomalibconf.h until new version of foma is released.
+1a306b5 A bug in HFST header handling fixed. Todo: update HFST code to work with the newest version of SFST.
+42e2594 Fix lexc compiler
+8739b07 Detail GNU bison version and feature requirements
+801ad20 Use obsolete syntax for name-prefix to support slightly older bisons
+2d9b05b More checks for backend installation sanity§
+da681d1 Make compiler tools dependent on relevant features in library
+a6f4b68 Also include current foma diffs
+322b7f8 Function open() removed from HfstInputStream and HfstOutputStream. HFST transducer header structure changed.
+5d197d0 Added MacOS X notes.
+6532861 Remove bundled foma and SFST
+bf5053e Mergefail→delete duplicate lines
+cba481f Add preliminary xfst compiler for offline compilation of static files
+ea740e3 Add autogen.sh for problematic oses and systems
+2ce19e8 Document library backend requirements
+d911ae3 add replacement strndup and error_at_line for mac again
+dbcfbf1 commandline tool hfst-compose-intersect and test added
+45290c5 more tests added to tools, SFST_TYPE transducer header now has an optional field that tells if the transducer is minimal
+0db6a0b more tests added to test/tools and small bugs fixed in commandline programs
+ce7f006 HfstInputStream and HfstOutputStream now work correctly with tropical and log weight transducers if their file argument is an empty string
+b36fd19 Alphabet definition in HfstCompiler is now not done through internal format when using SfstTransducers. This optimization makes hfst-calculate slightly faster.
+aaa2eae tropical transducer harmonization code optimized
+5421e3d Moved the #endif to the actual correct place...
+3a950b7 Moved #endif to correct place. Suggestion: when there's a lot of distance between #if and #endif, consider placing a comment after #endif to indicate what it's ending (emacs can't figure it out).
+8ab00a7 Removed obsolete definitions
+15369a7 transducer harmonization code optimized
+bf6dfa1 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@692 941e2c2b-deac-454f-805a-451daa25f33c
+7eb10ec missing files added
+3d244cb git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@690 941e2c2b-deac-454f-805a-451daa25f33c
+3bc4705 HfstCompiler's code optimized
+0a590ff git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@685 941e2c2b-deac-454f-805a-451daa25f33c
+dfd5143 replace_in_context's code optimized
+0ba8366 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@683 941e2c2b-deac-454f-805a-451daa25f33c
+2cad021 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@682 941e2c2b-deac-454f-805a-451daa25f33c
+e1f264b Class 'HfstTrie' added for quick disjunction of words in hfst-calculate
+41328b3 reading words from a file should now be faster in hfst-calculate
+c973556 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@679 941e2c2b-deac-454f-805a-451daa25f33c
+c075ba7 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@678 941e2c2b-deac-454f-805a-451daa25f33c
+256cd2d a bug in hfst-calculate's 'make_mapping' fixed
+f46a184 now hfst-calculate does not unnecessarily handle unknown symbols in composition
+f2a5359 A bug in alphabet definition in hfst-calculate fixed. It seems that handling unknown and identity symbols in composition is very slow for some reason.
+d194e80 A bug in HfstCompiler::complement_range fixed
+a489950 HfstCompiler::new_transducer is now faster
+e74f90f some bugs in command line programs fixed
+d78c45a some bugs fixed in tests and hfst library
+2a64259 4cats.txt now contains a transducer accepting 4 consecutive 'cat's, and 4_cats.txt contains 4 consecutive transducers that each accept 'cat'.
+acd96ec a bug in function 'harmonize' fixed
+553674c Commit missing inputNamed
+d9f9551 hfst now compiles with all combinations of available backend libraries
+c5e0973 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@661 941e2c2b-deac-454f-805a-451daa25f33c
+68b326b Make --without-foma work
+71d08c4 optimized-lookup bigfix wrt weights in flagged transducers
+41a235e Function HfstTransducer::push_weights added. Foma is now dynamically linked to hfst, option -fvisibility must not be used when compiling foma, because then some of foma's functions will not be visible to hfst.
+fbe2969 Tentatively implement HFST 2 format
+9d4aeed move things around
+917827d Add space separated strings2fst; parse - as filename in hfst_fopen
+6c69309 hfst now works without making any changes in sfst files
+11f5420 Configuring out broken parts
+17cd8d3 Add preliminary lexc compiler
+ab50a96 HfstMutableTransducer defined in namespace hfst, small bugs fixed in TropicalWeightTransducer
+226ae4c unknown and identity symbols are now handled correctly in composition
+c016a92 HfstMutableTransducer replaced with HfstInternalTransducer
+792dfb3 Document the XRE compiler
+a2d0367 functions that read and write in AT&T format now use HfstInternalFormat
+6f0770d some modifications made to HfstInternalTransducer
+0d5c47d freely_insert and substitute functions now do not depend on any specific library. They must still be tested.
+2bf97cb some functions added to HfstInternalTransducer
+f26af42 invert XRE autoconf logic
+1a8a586 missing files added
+b2da1a4 conversions between internal transducers and sfst, tropical and foma transducers implemented
+9b896d2 Enable XRE parser
+058a409 conversions between SFST and internal transducers added
+66cdf07 summarize more statistics
+3260a0a Wrap backends around autoconf have_
+2c140fa Enable basic compose-intersect again; no flags, no #'s
+ef39e84 HFST code updated so that it works with OpenFst version 1.2. New internal transducer format added.
+47cdd70 fix signs when wno-sign-compare fails
+00e079b Delete generated files
+4590274 Now hfst-calculate does not depend on SFST.
+1a56a05 hfst-calculate now does not depend on SFST, function implementations not yet written
+ea974ba a bug in substitute(StringPair, HfstTransducer) fixed, agreement variables added to hfst-calculate
+90d6275 Add some functionality tests for hfst-proc
+a884b27 Remove obsolete source files of hfst-proc predecessors
+4ebe348 Fix bug causing final weights not to be included in weight calculations
+32abdec Remove obsolete flag diacritics code from hfst-proc
+b5a8fe8 Add license information to hfst-proc and optimized-lookup files
+eeedf41 Modify the extract_strings algorithm to avoid the non-standard std::vector::data() for older GCCs
+2cad922 Perform initial migration of hfst-proc into its new home in the proper HFST tools directory, while refactoring to share as much code as possible with the optimized-lookup library backend
+0fc222e Add 'exclude' option to hfst-fst2strings
+af172ca git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@616 941e2c2b-deac-454f-805a-451daa25f33c
+c457724 Fixed memory leaks in harmonize
+fb3fab5 Added libhfst/src/implementations/TropicalWeightComposeIntersect.h and libhfst/src/implementations/TropicalWeightComposeIntersect.cc
+ebef427 Composition can soon handle identity and unknown symbols correctly. Substitute can now also modify symbol pairs through a function pointer.
+0207962 Refactor extract_strings to invoke a callback on paths, allowing neat features in hfst-fst2strings
+25b747a Credit self in AUTHORS
+fddd8b2 SFST updated to new test version, some modifications still needed to HFST library so that it will work with the new version
+17125a4 error_at_line for parsing errors
+5df88b5 Allow empty lines and comment lines starting with # except when followed by a tab.
+b8da331 Add the basic summarize functionality and the test
+5ff805e rule operators added to hfst-calculate
+3618b20 More functionlaity tests
+1daa938 Reimplement extract_strings in all backends with cycle-limiting functionality
+8ebdabe substitute and test
+4c2697a Add test for fst2stings
+3c0db1e more functions added to hfst-calculate
+527b7cf Ubuntu (dash?) workaround
+07c8832 Make string pair implementation work
+5a1646a Add lexc compiler's old skeleton
+768cc07 Reverse how the upper and lower strings are stored during string extraction in the SFST backend
+d822832 Implement string extraction in the optimized-lookup backend
+3901e85 Fix a compiler warning about missing a return statement
+e55cdab Remove debug output that should never have been committed
+5238401 Fix calculation of several header properties during conversion
+7130a07 more functions added to hfst-calculate
+35c3e57 Start a document on formats
+dbf650c test strings2fst and fail
+bc5f85d Rollback bogus repeat throw
+23f95bc comment out broken repeats
+84d6b26 Fix bug in binary op parameter handling and add test for it
+5f3b317 Invert upper and lower to follow upside-down terminology of HFST
+8cb2196 Fix no parameters parsing for unary tools and project
+72cb416 Test basic algebra
+8ce8483 functionality test for concatenate
+cbecff2 Add text based transducers for functionality tests
+124df37 Fix fst2strings to use set_program_name and rest of the basic tools
+893186f small changes done in functions that are needed for hfst-calculate
+8e30ba1 Check handling of empty input file for all tools
+11692b2 Default to -Wall -Wextra -Werror for developers
+041c510 Convert txt2fst; * use const for global char-* * default stdin, stdout for global FILE*
+58dff6e Add initial support for evaluating and filtering flag diacritics when extracting transducer paths
+90f49d9 Add a class for dealing with flag diacritics in string extraction
+7f8204c Port and enable fst2strings
+44154e0 Hook up is_cyclic for the optimized-lookup backend
+74dcdfc Use warn and err if warnc, errc, error are not available
+a425f2b Instead of gnulib-tool, handle gnulib manually
+aaa4a7f Missing file
+34e3ecb Gnulib weirdness?
+075e63c Convert some simpler command line tools to HFST3 (preliminary)
+e535c05 Perhaps gnulib for portability problems? Temp. disabled few tools.
+c49af70 Few sample tests for tools in automated tests
+02a08ed Include licensing blurb in every single file since it's very important
+721ee49 Update docs a bit
+56b426a First steps towards unbundling backend libraries
+caa7704 Remove debug output inadvertently left enabled
+6296b07 Fix sign-problem causing format-guessing for OFST transducers to fail
+9444698 Add support for converting to the HFST optimized-lookup format
+39bc89e Add support for the HFST-optimized-lookup implementation in the tool for format conversion
+134c6ea Add support for the new implementation in the interface files
+0fd24ab Modify the semantics of the InputStream function is_good in the OFST implementations to match those in the SFST and foma implementations
+4883d03 Update makefile for building the new backend
+ec67b18 Add conversion HFST-optimized-lookup -> OFST Tropical Weight
+41d7301 Initial commit of bridge classes for the HFST-optimized-lookup backend
+f8b849b Initial commit of an HFST-optimized-lookup backend
+3532dca Add is_cyclic to the transducer API and implementations
+532c668 Add hfst-strip-header tool for removing any HFST3 headers from a file
+c7a64f3 Port hfst-compare to the new library
+96b6ca7 Pass the correct output type when creating the output stream
+29dc489 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@471 941e2c2b-deac-454f-805a-451daa25f33c
+5834ac0 Port hfst-fst2txt
+9d0ade8 Fix the already-ported tools to properly handle IO using the standard streams
+5cc5100 Add ability to read the type of the first transducer in an HfstInputStream without first having created a transducer from it
+ab1d96c git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@465 941e2c2b-deac-454f-805a-451daa25f33c
+714fc13 HfstCompiler class added
+7580d1d Fix fst2fst to correctly handle inputs with multiple transducers
+e34e30c Teach HfstInputStream how to deal with inputs containing multiple transducers, of which none have HFST3 headers
+50d5686 Port hfst-invert to HFST3
+1a86ae3 Port hfst-fst2fst to work with HFST3
+de1feba Add support in HfstInputStream for loading transducers lacking the HFST3 header
+a5e7ec0 Make foma transducer type guesser able to detect non-gzipped transducers as well
+7f785cf Add call to open the output stream so the tool doesn't crash
+dc85825 Add static methods to the InputStream implementations allowing to check whether a FILE* or istream contains a transducer of a give type
+1e6b6cd Remove HFST2 include from file with helper functions for tools
+0ab49ed hfst-calculate files updated to hfst version 3. At the moment, hfst-calculate only parses single transition expressions and produces a dummy transducer as a result.
+fbe8acb anonymous transducer constructors added
+ef4f1c5 Added HfstTransducer &operator=(const HfstTransducer &)
+e352b9a hfst-compiler.yy added
+544c418 more rule operator functions implemented
+6886485 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@409 941e2c2b-deac-454f-805a-451daa25f33c
+13ec682 'HfstRules.cc' added.
+d72acf3 rule functions added
+cfe73d0 stub for flag diacritic support doc
+916c12d documentation added
+dbd6d6e more Doxygen documentation added
+9759312 Convert binary integers to decimal for old gcc support (OS X)
+0067fa6 Tried to make the autoreconf text a bit clearer.
+7ded1cc ImplementationType parameters removed from most functions
+91ac6d0 Require fst/fstlib.h as <fst/fstlib.h> and include as such.
+55b3eb5 * Remove openfst from source directory because bundling Apache licenced    software with GNU GPL softare is a bad thing * Add licence disclaimers to auxiliary files because FSF suggests so
+c695e9a documentation added
+4905303 Documentation and type handling added, some problems in type conversion.
+7d5dbb0 add ofst include dir for compilation
+f76eb45 sgi.h is visible outside libhfst
+7bf66dd Work around problems with missing hash
+c618bd7 Add extra doc stuff to build tree
+df2f412 more doxygen documentation added
+8804a38 some typedefs in SymbolDefs.h and ExtractStrings.h renamed
+a05ba5d copy hfst-proc verbatim to 3
+ce06b13 Swap stable old trunk to branches and proposition to trunk
diff --git a/ChangeLog.old b/ChangeLog.old
index 79d4943..eef6319 100644
--- a/ChangeLog.old
+++ b/ChangeLog.old
@@ -1,21289 +1,2748 @@
-2015-06-11 10:24  eaxelson
-
-	* scripts/README_eight_tools.txt, scripts/copy-for-windows.sh:
-	  Updated windows scripts.
-
-2015-06-11 10:24  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Now a warning message gets
-	  printed if stack contains transducers whose types differ (can
-	  happen if lookup-optimize is called before pushing another
-	  transducer onto stack).
-
-2015-06-10 10:49  eaxelson
-
-	* scripts/README_eight_tools.txt: Added a windows README file for
-	  the package that contains eight command line tools.
-
-2015-06-10 09:54  eaxelson
-
-	* scripts/README_xfst.txt: Added a Windows README file for
-	  hfst-xfst.
-
-2015-06-09 13:09  eaxelson
-
-	* back-ends/openfst/src/include/fst/rmfinalepsilon.h,
-	  back-ends/openfst/src/include/fst/symbol-table-ops.h,
-	  back-ends/openfst/src/include/fst/synchronize.h,
-	  scripts/copy-for-windows.sh, scripts/test-hfst-tools.bat,
-	  scripts/windows_tests, scripts/windows_tests/test.lexc,
-	  scripts/windows_tests/test.pmatch,
-	  scripts/windows_tests/test.twolc,
-	  scripts/windows_tests/test.xfst,
-	  scripts/windows_tests/test_lexc_result.txt,
-	  scripts/windows_tests/test_pmatch_result.txt,
-	  scripts/windows_tests/test_twolc_result.txt,
-	  scripts/windows_tests/test_xfst_result.txt,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h,
-	  tools/src/hfst-twolc/src/hfst-twolc.bat: Added tests for windows.
-	  Made small fixes to hfst-proc and hfst-twolc for windows.
-
-2015-06-08 12:31  eaxelson
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.cc,
-	  tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc,
-	  tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.cc,
-	  tools/src/hfst-twolc/src/variable_src/ConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/MixedConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/RuleSymbolVector.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleVariables.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleVariablesConstIterator.cc,
-	  tools/src/hfst-twolc/src/variable_src/VariableValueIterator.h:
-	  Replaced alternative tokens for logical operators with the
-	  standard ones.
-
-2015-06-08 12:22  eaxelson
-
-	* tools/src/hfst-twolc/src/commandline_src/CommandLine.h: Checking
-	  for existence of config.h and getopt.h.
-
-2015-06-08 12:19  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-hfst-tools.bat,
-	  scripts/make-htwolcpre2.bat: Updated scripts.
-
-2015-06-08 10:02  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-htwolcpre1.bat,
-	  scripts/make-htwolcpre2.bat, scripts/make-htwolcpre3.bat: Added
-	  make scripts for twolc.
-
-2015-06-08 08:26  eaxelson
-
-	* scripts/copy-for-windows.sh: Added twolc to windows compilation
-	  scripts.
-
-2015-06-05 13:46  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-hfst-proc.bat,
-	  scripts/make-hfst-xfst.bat: Updated windows scripts.
-
-2015-06-05 13:43  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-optimized-lookup.cc, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-pmatch2fst.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h: Fixing again reading and
-	  writing to/from console on windows.
-
-2015-06-04 12:58  eaxelson
-
-	* libhfst/src/parsers/pmatch_utils.h: Using hex values for unicode
-	  characters when compiling with msvc to get rid of warnings (and
-	  possible segfaults).
-
-2015-06-04 08:24  jezral
-
-	* test/tools/proc-functionality.sh,
-	  tools/src/hfst-proc/tokenizer.cc: Terminator needs reading, and
-	  yes there are partial reads
-
-2015-06-03 14:34  jezral
-
-	* tools/src/hfst-proc/tokenizer.cc: std::string all the way
-
-2015-06-03 10:29  eaxelson
-
-	* tools/src/hfst-proc/alphabet.cc,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/tokenizer.cc: Added missing HAVE_CONFIG_H
-	  ifdef. Added globals-common.h header as some compilers complain
-	  about missing extern variables. Now creating variable size array
-	  'next_u8' dynamically with operator 'new'.
-
-2015-06-03 10:04  eaxelson
-
-	* tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/help_message.cc,
-	  tools/src/parsers/xfst_help_message.cc,
-	  tools/src/parsers/xfst_help_message.h: Renamed help_message.cc
-	  into xfst_help_message.cc and added a header file
-	  xfst_help_message.h. Now XfstCompiler includes only the header
-	  file.
-
-2015-06-03 07:53  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Fixed a typo and added
-	  explicit braces to an else statement.
-
-2015-06-02 12:54  eaxelson
-
-	* tools/src/hfst-getopt.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst.cc, tools/src/parsers/test/test.sh:
-	  Now option --pipe-mode takes an optional argument { input,
-	  output, both }, 'both' being the default.
-
-2015-05-29 12:25  mpsilfve
-
-	* libhfst/src/Makefile.am: Install hfstdll.h
-
-2015-05-29 11:24  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h,
-	  tools/src/parsers/hfst-xfst.cc: Now hfst-lookup and
-	  hfst-optimized-lookup read from console and print to console by
-	  default on windows.
-
-2015-05-28 12:21  eaxelson
-
-	* tools/src/hfst-optimized-lookup.cc: Commented out one debug
-	  print...
-
-2015-05-28 12:20  eaxelson
-
-	* tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst.cc: More improvements to utf-8
-	  handling on windows.
-
-2015-05-27 13:09  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Small modifications for better
-	  utf-8 support on windows.
-
-2015-05-26 12:06  eaxelson
-
-	* scripts/copy-for-windows.sh, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-optimized-lookup.h, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-pmatch2fst.cc: Small modifications for some
-	  command line tools for windows.
-
-2015-05-25 13:08  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-hfst-lexc.bat,
-	  scripts/make-hfst-tool.bat, tools/src/hfst-compare.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-txt2fst.cc,
-	  tools/src/parsers/test/test.sh: Added tool compilation scripts
-	  for windows. Argument handling on windows is also supported for
-	  some tools needed for hfst-xfst testing.
-
-2015-05-25 12:56  eaxelson
-
-	* tools/src/hfst-getopt.cc: Fixed a bug in argument handling.
-
-2015-05-22 11:14  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-hfst-xfst.bat,
-	  tools/src/hfst-lexc-compiler.cc, tools/src/parsers/hfst-xfst.cc:
-	  Edited help messages and warnings of hfst-xfst and hfst-lexc on
-	  windows about character encodings.
-
-2015-05-21 13:06  eaxelson
-
-	* tools/src/hfst-getopt.cc, tools/src/hfst-getopt.h,
-	  tools/src/hfst-lexc-compiler.cc, tools/src/parsers/hfst-xfst.cc:
-	  Moved getopt implementation to a separate file.
-
-2015-05-20 14:01  eaxelson
-
-	* scripts/copy-for-windows.sh, tools/src/parsers/hfst-xfst.cc:
-	  Added an implementation for long options for windows.
-
-2015-05-19 11:50  eaxelson
-
-	* back-ends/foma/lex.cmatrix.c, back-ends/foma/sigma.c,
-	  back-ends/foma/spelling.c, back-ends/foma/structures.c,
-	  scripts/copy-for-windows.sh, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst.cc: Fixed some issues noticed during
-	  msvc compilation. Renamed function 'min' to 'min_' to avoid
-	  collision with a macro with the same name. Changed arguments of
-	  comparison function given to qsort to (const void *, const void
-	  *). Added support for commandline arguments of type
-	  '--option=argument' to hfst-xfst for windows. Also changed
-	  hfst-xfst's option --print-to-console (default false) into
-	  --no-console (default false) on windows.
-
-2015-05-18 13:41  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-hfst-xfst.bat,
-	  tools/src/getopt_long.cc, tools/src/getopt_long.h: Updated
-	  windows script files.
-
-2015-05-18 13:40  eaxelson
-
-	* tools/src/parsers/hfst-xfst.cc: Deleted getopt_long cc and h
-	  files. Processing command line arguments manually in hfst-xfst.cc
-	  on windows.
-
-2015-05-18 13:39  eaxelson
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/hfst-commandline.cc: Added some ifdef _MSC_VER
-	  directives.
-
-2015-05-18 10:36  eaxelson
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Applied patch for musl libc compilation.
-
-2015-05-11 12:04  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  scripts/make-hfst-xfst.bat, tools/src/hfst-commandline.cc,
-	  tools/src/parsers/XfstCompiler.cc: Fixed some bugs noticed when
-	  compiling on windows.
-
-2015-05-08 20:21  hardwick
-
-	* tools/src/hfst-proc2.cc: Blank line between outputs in --finnpos
-	  mode
-
-2015-05-08 14:05  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/libhfst_win.i,
-	  scripts/make-hfst-xfst.bat,
-	  tools/src/HfstStrings2FstTokenizer.cc, tools/src/getopt_long.cc,
-	  tools/src/getopt_long.h, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-commandline.h, tools/src/parsers/hfst-xfst.cc,
-	  tools/src/parsers/xfst-lexer.ll, tools/src/parsers/xfst-utils.h:
-	  Updated windows scripts. Added ifdefs for msvc compilation.
-
-2015-05-05 12:15  eaxelson
-
-	* scripts/libhfst_win.i, scripts/make-python-bindings.bat,
-	  scripts/test_libhfst_win.py: Updated swig scripts for windows.
-
-2015-04-29 12:32  hardwick
-
-	* tools/src/hfst-proc2.cc: Add FinnPos mode and reorganise
-
-2015-04-27 13:34  eaxelson
-
-	* back-ends/openfstwin/src/include/fst/flags.h,
-	  scripts/copy-for-windows.sh, scripts/make-foma.bat,
-	  scripts/make-libhfst.bat, scripts/make-openfstwin.bat,
-	  scripts/make-python-bindings.bat, scripts/test-libhfst.bat,
-	  scripts/test-openfstwin.bat, scripts/test_libhfst_win.py: Updated
-	  and added scripts for compiling python bindings on windows.
-
-2015-04-23 11:30  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc,
-	  tools/src/hfst-pmatch2fst.cc: Fix harmonization issue and speed
-	  up the common case of only on top-level matcher
-
-2015-04-23 06:24  moshagen
-
-	* tools/src/hfst-reweight.cc: Documented the tsv file format, added
-	  some linebreaks to make the helpt text easier to read.
-
-2015-04-21 09:22  moshagen
-
-	* tools/src/hfst-reweight.cc: Always skip comment lines. Added
-	  verbose output for TSV file reweighting.
-
-2015-04-21 07:21  moshagen
-
-	* tools/src/hfst-reweight.cc: Fixed bug #293 by initialising the
-	  line variable before using it.
-
-2015-04-20 13:52  moshagen
-
-	* tools/src/hfst-reweight.cc: Whitespace only.
-
-2015-04-17 18:54  eaxelson
-
-	* libhfst/src/hfstdll.h: Added missing file 'hfstdll.h'.
-
-2015-04-17 12:43  eaxelson
-
-	* scripts/copy-for-windows.sh,
-	  scripts/generate-python-bindings.bat, scripts/libhfst_win.i,
-	  scripts/make-libhfst.bat, scripts/make-openfstwin.bat,
-	  scripts/test-libhfst.bat, scripts/test-openfstwin.bat: Edited and
-	  added scripts for windows compilation.
-
-2015-04-17 12:10  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.h,
-	  libhfst/src/HfstExceptionDefs.h,
-	  libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTokenizer.h, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Added HFSTDLL's for some functions for windows compilation.
-
-2015-04-15 11:48  eaxelson
-
-	* tools/src/hfst-reweight.cc: Added option --arcs-only to
-	  hfst-reweight. Now weights of all arcs and end states are
-	  modified unless --arcs-only or --end-states-only is used. Also
-	  fixed '--end-state-only' as '--end-states-only'.
-
-2015-04-13 10:26  eaxelson
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Added
-	  some explicit type conversions.
-
-2015-04-09 13:28  moshagen
-
-	* tools/src/hfst-pair-test.cc: Changed the short form of the xerox
-	  mode from -x to -X (upper case), to be more consistent with the
-	  other options, and to match the test on line 195.
-
-2015-04-08 13:12  eaxelson
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/Makefile.am, tools/src/Makefile.am:
-	  Now it is checked if foma back-end and zlib are available before
-	  hfst-lexc-wrapper is generated. This also affects the way
-	  HfstTransducer::read_lexc_ptr is implemented for FOMA_TYPE:
-	  native HFST lexc compiler is used if lexc wrapper is not
-	  generated.
-
-2015-04-08 13:09  eaxelson
-
-	* swig/libhfst.i, swig/setup.py: Updated hfst version number in the
-	  python setup file. Fixed the argument type of
-	  LexcCompiler::setVerbosity from bool to unsigned int.
-
-2015-04-08 13:06  eaxelson
-
-	* libhfst/src/HfstInputStream.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc:
-	  Changed again some 'not' operators into \!.
-
-2015-04-08 13:01  eaxelson
-
-	* libhfst/src/implementations/optimized-lookup/convert.cc: Added a
-	  missing // in the beginning of a comment line noticed during
-	  windows compilation.
-
-2015-04-08 13:00  eaxelson
-
-	* scripts/copy-for-windows.sh,
-	  scripts/generate-python-bindings.bat, scripts/make-libhfst.bat:
-	  Edited windows batch scripts and added a new one for creating
-	  python bindings.
-
-2015-04-08 09:48  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc: Changed declaration 'class
-	  yy_buffer_state' into 'struct yy_buffer_state'.
-
-2015-04-07 14:23  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Fixed declared return type
-	  from 'void' into 'int' for functions hlexclex_destroy and
-	  pmatcherror.
-
-2015-04-07 13:24  mpsilfve
-
-	* tools/src/hfst-pair-test.cc: Xerox twolc test support in
-	  hfst-pair-test
-
-2015-04-02 14:37  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.h:
-	  Tentatively fixed missing paths problem in compose-intersect
-
-2015-04-01 12:21  eaxelson
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.h:
-	  Moved definition of member 'static const HfstState START' of
-	  classes ComposeIntersectFst and ComposeIntersectRulePair from
-	  header to cc file.
-
-2015-04-01 11:39  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Add [].t() syntax for
-	  delimiting tagged (and context-checked!) regions
-
-2015-03-31 14:47  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/make-implementations.bat,
-	  scripts/make-libhfst.bat: Added new scripts for testing native
-	  windows compilation.
-
-2015-03-31 14:46  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HfstEpsilonHandler.cc,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc: Added missing
-	  return values for some functions. Replaced ciso646 keywords for
-	  logical operators with standard ones.
-
-2015-03-26 22:14  eaxelson
-
-	* scripts/make-implementations.bat, scripts/make-parsers.bat: Added
-	  make scripts for windows.
-
-2015-03-26 22:13  eaxelson
-
-	* scripts/copy-for-windows.sh: Updated script.
-
-2015-03-26 21:36  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  tools/src/HfstStrings2FstTokenizer.cc,
-	  tools/src/HfstStrings2FstTokenizer.h, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-pair-test.cc, tools/src/hfst-strings2fst.cc:
-	  Removed unnecessary HfstUtf8.h and HfstStrings2FstTokenizer.h
-	  inclusions from libhfst/src/ files. Also moved
-	  HfstStrings2FstTokenizer into hfst namespace.
-
-2015-03-26 20:44  eaxelson
-
-	* back-ends/foma/fomalib.h, back-ends/foma/fomalibconf.h,
-	  libhfst/src/FormatSpecifiers.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.h: Now handling
-	  all stdbool definitions in foma headers.
-
-2015-03-26 15:05  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Now
-	  HAVE_CONFIG_H is checked before including config.h. Removed
-	  inclusion of zlib.h that had no effect.
-
-2015-03-26 15:02  eaxelson
-
-	* back-ends/foma/Makefile.am, back-ends/foma/iface.c,
-	  back-ends/foma/io.c, back-ends/foma/lex.lexc.c,
-	  back-ends/foma/lex.yy.c: Changed ifdef WINDOWS into _MSC_VER. Now
-	  zlib.h is included only when requested with -DZLIB.
-
-2015-03-26 12:20  eaxelson
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Using
-	  dynamic arrays instead of static ones to keep cl.exe happy. Also
-	  added definition for 'ssize_t' on windows.
-
-2015-03-26 12:18  eaxelson
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc:
-	  Replaced 'and' with '&&'.
-
-2015-03-26 12:17  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc: Replaced 'and'
-	  with '&&'. Also made a variable defining the size of an array
-	  const.
-
-2015-03-25 13:34  eaxelson
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Replaced ciso646 aliases and,or,not with &&,||,\!. Also changed
-	  sizeof(variable) into sizeof(variable_type) in ol transducer
-	  header because cl.exe complained about that for some reason.
-
-2015-03-25 12:47  eaxelson
-
-	* libhfst/src/parsers/xre_utils.cc: Fixed a bug where operator '=='
-	  was used instead of '=' when setting the value of last element in
-	  a char array.
-
-2015-03-23 14:58  eaxelson
-
-	* scripts/copy-for-windows.sh: Added missing files.
-
-2015-03-20 15:11  eaxelson
-
-	* scripts/copy-for-windows.sh, scripts/inttypes.h,
-	  scripts/make-foma.bat, scripts/make-openfstwin.bat,
-	  scripts/stdint.h: Added scripts and headers for windows
-	  compilation.
-
-2015-03-20 15:10  eaxelson
-
-	* libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstLookupFlagDiacritics.cc,
-	  libhfst/src/HfstSymbolDefs.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Changed
-	  operators {not,and,or} into {\!,&&,||} because cl.exe complains
-	  about them on windows.
-
-2015-03-20 14:20  eaxelson
-
-	* scripts/copy-for-windows.sh: Added a script for windows
-	  compilation
-
-2015-03-20 08:44  eaxelson
-
-	* back-ends/foma/apply.c, back-ends/foma/constructions.c,
-	  back-ends/foma/determinize.c, back-ends/foma/fomalib.h,
-	  back-ends/foma/fomalibconf.h, back-ends/foma/lex.cmatrix.c,
-	  back-ends/foma/lex.yy.c, back-ends/foma/mem.c,
-	  back-ends/foma/minimize.c, back-ends/foma/structures.c,
-	  back-ends/openfstwin/src/include/fst/compat.h,
-	  back-ends/openfstwin/src/include/fst/properties.h: Added support
-	  for compiling openfst and foma back-ends with cl.exe on windows.
-
-2015-03-15 17:45  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll: Include zero in signed and
-	  unsigned integers
-
-2015-03-15 16:16  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc:
-	  Correction to handling trailing nonmatching material in
-	  locate_mode
-
-2015-03-11 14:22  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc: Forgot
-	  to commit these files too...
-
-2015-03-11 14:21  eaxelson
-
-	* tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-head.cc,
-	  tools/src/hfst-info.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-split.cc, tools/src/hfst-subtract.cc,
-	  tools/src/hfst-tail.cc: Added xfsm support for some command line
-	  tools.
-
-2015-03-11 10:28  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Now HfstTransducer
-	  functions throw a FunctionNotImplementedExeption if xfsm
-	  implementation is not available.
-
-2015-03-10 15:47  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Added more xfsm
-	  implementations.
-
-2015-03-10 14:54  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Added more
-	  implementations for XFSM_TYPE for HfstTransducer functions.
-
-2015-03-09 12:41  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Add ignoring
-
-2015-03-09 11:20  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Correct parsing order of
-	  PARALLEL_RULES
-
-2015-03-04 15:18  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h,
-	  tools/src/hfst-compose.cc: Added support for composition for xfsm
-	  transducers.
-
-2015-03-03 14:48  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h,
-	  tools/src/hfst-minimize.cc: Added a variable to control if (xfsm)
-	  transducers that are already minimal are still minimized for
-	  profiling purposes.
-
-2015-03-02 15:13  eaxelson
-
-	* libhfst/src/HfstApply.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-txt2fst.cc: Fixed some bugs in escaping special
-	  symbols in prolog format. Added support for xfsm format in some
-	  command line tools.
-
-2015-03-02 11:29  eaxelson
-
-	* tools/src/hfst-fst2txt.cc: Fixed an error noticed when
-	  -Werror=format-security was enabled during compilation.
-
-2015-02-27 15:00  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-fst2fst.cc,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-txt2fst.cc: Now xfsm
-	  conversion works in hfst-fst2fst and between prolog and binary
-	  format in hfst-fst2txt and hfst-txt2fst.
-
-2015-02-27 09:55  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Added XFSM initializer class.
-
-2015-02-27 09:52  eaxelson
-
-	* libhfst/src/HfstApply.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Added function
-	  minimize to xfsm interface
-
-2015-02-26 10:56  eaxelson
-
-	* tools/src/hfst-commandline.cc,
-	  tools/src/hfst-compose-intersect.cc, tools/src/hfst-fst2fst.cc:
-	  Now hfst-compose-intersect does NOT harmonize transducers by
-	  default, as harmonizing produces unexpected results with
-	  hyperminimized transducers. Option --harmonize turns on
-	  harmonization. This is a partial fix to bug #288.
-
-2015-02-25 11:22  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am,
-	  tools/src/hfst-commandline.cc, tools/src/parsers/XfstCompiler.cc:
-	  Added a cross-build Windows patch given in bug report #289.
-
-2015-02-24 21:29  eaxelson
-
-	* libhfst/src/HfstOutputStream.cc: Added a missing #if HAVE_XFSM
-	  statement.
-
-2015-02-24 18:43  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc: Fixed some bugs in
-	  xfsm stream handling.
-
-2015-02-24 17:15  eaxelson
-
-	* libhfst/src/HfstOutputStream.cc, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Added more
-	  functions for writing and reading xfsm transducers.
-
-2015-02-23 14:33  eaxelson
-
-	* libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstOutputStream.h,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Tentatively added
-	  input and output stream functions for xfsm transducer.
-
-2015-02-20 15:12  eaxelson
-
-	* scripts/generate-static-binaries.sh, scripts/hfst-twolc-bin,
-	  scripts/package-static-binaries.sh: Modified and added scripts
-	  for creating static binaries.
-
-2015-02-18 17:13  mpsilfve
-
-	* tools/src/hfst-compose-intersect.cc: Fast compose intersect
-	  available using option -f
-
-2015-02-18 14:52  eaxelson
-
-	* libhfst/src/implementations/ConvertXfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Reorganized xfsm
-	  interface.
-
-2015-02-18 14:14  mpsilfve
-
-	* tools/src/hfst-compose-intersect.cc: Hopefully speed up
-	  compose_intersect by doing l .o. (l.2 .o. r) instead of l .o. r
-	  directly.
-
-2015-02-16 12:47  eaxelson
-
-	* scripts/generate-static-binaries.sh: Updated script.
-
-2015-02-16 12:45  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Disable hfst-xfst's
-	  auto-complet with rl_insert instead of rl_abort, which is not
-	  found on Mac.
-
-2015-02-16 11:54  eaxelson
-
-	* scripts/generate-static-binaries.sh: Added a script to generate
-	  static binaries.
-
-2015-02-16 08:06  eaxelson
-
-	* libhfst/src/implementations/ConvertXfsmTransducer.cc: Now xfsm
-	  conversion swaps the state numbers to make a more readable state
-	  numbering.
-
-2015-02-13 14:08  eaxelson
-
-	* libhfst/src/implementations/ConvertXfsmTransducer.cc: Now special
-	  symbols should also work in xfsm conversion.
-
-2015-02-13 13:01  eaxelson
-
-	* libhfst/src/implementations/ConvertXfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Xfsm conversion
-	  functions almost work, escaped symbols still need some attention.
-
-2015-02-12 12:05  eaxelson
-
-	* libhfst/src/implementations/ConvertXfsmTransducer.cc: Conversion
-	  functions between xfsm and HfstBasicTransducer formats
-	  implemented, alphabets and special symbols still need some work.
-
-2015-02-11 08:36  hardwick
-
-	* tools/src/hfst-optimized-lookup.h: Autoindent entire file after
-	  removing tab characters to appease commit script
-
-2015-02-11 08:26  hardwick
-
-	* tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-optimized-lookup.h: Handle single-char ascii
-	  symbols shadowing multichar ones
-
-2015-02-10 14:14  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/ConvertXfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Modified hfst to
-	  support xfsm format.
-
-2015-02-10 09:15  hardwick
-
-	* tools/src/hfst-proc2.cc: Fix cg quote interpolation
-
-2015-02-10 08:57  hardwick
-
-	* tools/src/hfst-proc2.cc: Clarify help string
-
-2015-02-10 08:55  hardwick
-
-	* tools/src/hfst-proc2.cc: Add segmenting and cg mode; improve
-	  handling of special cases and weights
-
-2015-02-09 13:43  eaxelson
-
-	* libhfst/src/HfstDataTypes.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertXfsmTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/XfsmTransducer.h: Tentatively
-	  modified hfst to handle xfsm implementation type.
-
-2015-02-09 13:02  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  tools/src/hfst-pmatch.cc, tools/src/hfst-proc2.cc: Preserve
-	  nonmatching sequances in locate_mode and parse the appropriately
-	  downstream
-
-2015-02-06 16:51  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/ConvertXfsmTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/XfsmTransducer.cc,
-	  libhfst/src/implementations/XfsmTransducer.h: Tentatively added a
-	  skeleton implementation for xfsm library that can be included
-	  with configure option --with-xfsm (default is no). No linking to
-	  the library is performed, this is just a test version.
-
-2015-02-06 16:34  eaxelson
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.h,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc: Added a
-	  preprocessing directive that defines hfst-twols's Alphabet as
-	  TwolCAlphabet if HAVE_XFSM is on. This will prevent variable
-	  collisions.
-
-2015-02-06 13:15  eaxelson
-
-	* tools/src/hfst-txt2fst.cc: Changed hfst-txt2fst's read_prolog
-	  into read_prolog_format to avoid conflict with xfsm library
-	  function.
-
-2015-02-05 16:07  eaxelson
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  Named tokens 'UPPER' and 'LOWER' in pmatch and xre parsers into
-	  'XRE_UPPER', 'XRE_LOWER', 'PMATCH_UPPER' and 'PMATCH_LOWER'
-	  because the xfsm library (that might be added to hfst at some
-	  point) has an enumerator with the same name in C namespace.
-
-2015-02-05 15:58  eaxelson
-
-	* back-ends/foma/fomalib.h, back-ends/foma/iface.c,
-	  back-ends/foma/io.c: Named foma's write_prolog into
-	  foma_write_prolog because the xfsm library (that might be added
-	  to hfst at some point) has a function with the same name in C
-	  namespace.
-
-2015-02-05 15:50  eaxelson
-
-	* tools/src/parsers/xfst-parser.yy: Took away unused token 'LOWER'
-	  from xfst parser.
-
-2015-02-03 17:37  eaxelson
-
-	* tools/src/hfst-compose-intersect.cc: Added an option
-	  --do-not-harmonize to hfst-compose-intersect.
-
-2015-02-03 16:51  eaxelson
-
-	* tools/src/hfst-compose-intersect.cc: Now hfst-compose-intersect
-	  harmonizes the rule transducers with the lexicon.
-
-2015-02-03 15:42  eaxelson
-
-	* tools/src/hfst-fst2strings.cc: Added option --beam to
-	  hfst-strings2fst.
-
-2015-02-03 09:39  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  tools/src/hfst-pmatch.cc: More accurately name set_locate_mode as
-	  set_extract_tags mode
-	  (locate vs. match is determined by function call)
-
-2015-02-02 14:29  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Fix bug in compiling
-	  UNKNOWNs on the left side of pair separators
-
-2015-02-02 13:58  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Fix bug
-	  affecting locate-mode where ?-matches were being seen as
-	  IDENTITIES in input.
-
-2015-02-02 10:34  eaxelson
-
-	* tools/src/hfst-lookup.cc: Added option --beam also to
-	  hfst-lookup. It is mostly untested for this tool.
-
-2015-01-30 13:35  eaxelson
-
-	* tools/src/hfst-optimized-lookup.cc: Tentatively added option
-	  --beam to hfst-optimized-lookup.
-
-2015-01-30 11:30  eaxelson
-
-	* tools/src/hfst-compose-intersect.cc: Fixed a typo in warning
-	  message about missing symbols in input tapes of rule transducers
-	  ('output' changed to 'input').
-
-2015-01-28 10:19  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: In locate
-	  mode, zero-length hits could cause infinite loops. Commit fixes
-	  it.
-
-2015-01-23 15:31  eaxelson
-
-	* tools/src/hfst-lookup.cc: Now hfst-lookup checks it it is
-	  possible for an input to go through a transducer before calling
-	  is_infinitely_ambiguous. Should fix bug #278.
-
-2015-01-22 11:40  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: Now reserved symbols are detected
-	  in composition if xerox-composition is ON. This will prevent
-	  symbol collisions by throwing an error message, giving at least a
-	  temporary solution to issues with reserved symbols.
-
-2015-01-22 09:52  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: Fixed substitution operator in
-	  regexp, now flag diacritics are allowed both as substituting and
-	  subtituted symbols. Should fix bug #284.
-
-2015-01-21 21:31  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-parser.yy: Added better support for
-	  special symbols in hfst-xfst's substitute command.
-
-2015-01-21 15:25  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/substitute_symbol_7.att,
-	  tools/src/parsers/test/substitute_symbol_7.xfst,
-	  tools/src/parsers/test/substitute_symbol_8.att,
-	  tools/src/parsers/test/substitute_symbol_8.xfst,
-	  tools/src/parsers/test/test.sh: Added two tests for hfst-xfst's
-	  substitute command. They are skipped until substitute can also
-	  handle them.
-
-2015-01-21 12:48  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/parsers/LexcCompiler.cc: Fixed a bug in composition
-	  when xerox-composition is ON. Flag diacritics @SOMEFLAG@ were
-	  earlier transformed into $ and back into @SOMEFLAG@, but symbols
-	  of form $...$ are already reserved for lexc. Now diacritics are
-	  escaped as %SOMEFLAG% during composition. This creates a new set
-	  of reserved symbols which maybe needs more consideration
-	  though... Also added debug prints for LexcCompiler.
-
-2015-01-16 14:13  eaxelson
-
-	* configure.ac: Removed xml checks from configure, since they cause
-	  unlinked xml references in hfst-edit-metadata on some platforms.
-
-2015-01-16 13:13  eaxelson
-
-	* libhfst/src/HfstFlagDiacritics.cc,
-	  tools/src/parsers/XfstCompiler.cc: Fixed flag diacritic
-	  recognition, now also flags of form e.g. '@D.FOO@' are accepted
-	  and an empty string is returned as their value. Also added full
-	  support for flag handling in hfst-xfst.
-
-2015-01-15 15:55  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Added some conversion functions
-	  between StringPairVectors and StringVectors. Added checks for
-	  flag diacritics in hfst-xfst non-optimized lookup.
-
-2015-01-08 14:33  eaxelson
-
-	* tools/src/hfst-summarize.cc: A small fix to hfst-summarize option
-	  handling.
-
-2014-12-19 15:34  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.8.2.
-
-2014-12-19 14:41  eaxelson
-
-	* tools/src/hfst-summarize.cc: Added option
-	  --print-symbol-pair-statistics(=N) to hfst-summarize.
-
-2014-12-17 13:28  eaxelson
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_lex.ll,
-	  tools/src/parsers/XfstCompiler.cc: Small fixes to
-	  compile-replace. Also restarting the char counter every time a
-	  new xre parsing is started. Removed the xml2 dependecy in
-	  configure.
-
-2014-12-12 10:49  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Omit
-	  unnecessary step in stringification
-
-2014-12-12 10:22  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Another
-	  slight speed improvement
-
-2014-12-12 09:56  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Some
-	  double free insurance related to previous commit
-
-2014-12-12 09:53  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Some more
-	  pmatch runtime speedup (around 5-10% in most cases)
-
-2014-12-11 21:54  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc: Remove
-	  commented-out lines (same ones I was intending in the previous
-	  commit)
-
-2014-12-11 21:08  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc: Remove
-	  extraenous index table fitting test
-
-2014-12-11 20:33  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Further
-	  improvements to conversion to optimized lookup format
-	  
-	  This speeds up conversion a bit more, and also improves packing
-	  in one case by around 25% (implying that this commit *does*
-	  change the
-	  output of the conversion, but in a functionally equivalent way).
-	  
-	  The space gain was mainly accomplished by changing what happens
-	  when we fail
-	  to find a suitable index table location several times a row
-	  starting in the
-	  same place. We used to jump up to the previous successful
-	  location and its
-	  indices, now we keep trying to fill in the gaps between those
-	  first.
-	  
-	  This commit also removes the state-relabeling facility, because
-	  it didn't seem
-	  to be doing anything (perhaps something in HfstBasicTransducer
-	  has changed;
-	  it seems state numbers can no longer be non-contiguous). So we
-	  now assume
-	  states are contiguous and iterated in order. If this assumption
-	  is broken,
-	  this needs to be changes. But as I said earlier, looks like
-	  relabeling wasn't
-	  doing anything now anyway.
-
-2014-12-11 13:25  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Large
-	  speedup in conversion to optimized-lookup format
-	  
-	  In some cases this speeds up conversion by up to 80%. This
-	  involved
-	  a) making the code a bit more convoluted by using multiple data
-	  structures
-	  where there used to be just one
-	  b) omitting some space-oriented optimizations that appear to be
-	  usually
-	  very minor and occasionally even harmful
-	  
-	  While I've tested this with the major transducers I've found,
-	  it's not
-	  unthinkable that refactoring such hairy code as this has
-	  introduced bugs.
-	  No new functionality is introduced so it's ok to roll this back
-	  if it causes
-	  problems.
-
-2014-12-05 16:03  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/compile_replace_1.output,
-	  tools/src/parsers/test/compile_replace_1.xfst,
-	  tools/src/parsers/test/compile_replace_2.output,
-	  tools/src/parsers/test/compile_replace_2.xfst,
-	  tools/src/parsers/test/compile_replace_3.output,
-	  tools/src/parsers/test/compile_replace_3.xfst,
-	  tools/src/parsers/test/test.sh: Added test cases for
-	  compile-replace.
-
-2014-12-05 14:49  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/merge.att,
-	  tools/src/parsers/test/merge.xfst,
-	  tools/src/parsers/test/merge_weighted.att,
-	  tools/src/parsers/test/merge_weighted.xfst,
-	  tools/src/parsers/test/test.sh: Added test cases for merge
-	  operation.
-
-2014-12-05 12:22  eaxelson
-
-	* tools/src/hfst-fst2strings.cc: Fixed an error in hfst-fst2strings
-	  --print-separator where two consecutive lines of -- were printed
-	  between non-empty transducers in some cases.
-
-2014-12-04 13:04  eaxelson
-
-	* libhfst/src/parsers/xre_utils.cc,
-	  tools/src/parsers/XfstCompiler.cc: Now minimizing the merging
-	  automaton before merge operation so that epsilons do not cut a
-	  succesfull merge path. Also allowing epsilon-to-regexp-marker
-	  transitions in the merge filter.
-
-2014-12-03 15:35  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Improvements to
-	  compile-replace function, now it should work for input and output
-	  sides of a transducer.
-
-2014-12-03 09:36  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Revert bungled change to
-	  precedence order
-
-2014-12-02 20:34  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_lex.ll, tools/src/parsers/hfst-xfst.cc:
-	  Now xre compiler of function merge does not increment the char
-	  counter, making it possible to have many merge operators inside
-	  one regex.
-
-2014-12-02 16:07  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_utils.cc: Added a constructor
-	  XreCompiler(XreConstructorArguments & args) to facilitate passing
-	  xre variables to merge function which needs them in its internal
-	  xre compiler.
-
-2014-12-02 14:06  eaxelson
-
-	* libhfst/src/parsers/xre_utils.cc: Now using internal starptr
-	  variables in functions hfst::xre::compile and
-	  hfst::xre::compile_first instead of global hfst::xre::startptr.
-	  This should fix the strange memory errors which occurred when
-	  calling merge operation inside a regular expression.
-
-2014-12-02 12:33  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Now merge
-	  operation filters out non-optimal paths.
-
-2014-11-27 14:49  eaxelson
-
-	* libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTokenizer.h:
-	  Tentatively added a function 'tokenize_and_align_flag_diacritics'
-	  to HfstTokenizer.
-
-2014-11-26 16:50  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Runtime
-	  speed improvements
-	  Prereserve table vectors, eliminate special_symbols map
-
-2014-11-26 13:00  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-proc2.cc: Profiling support with Counter() and
-	  --profile & a bunch of smaller changes
-	  
-	  Counter(arg) in a ruleset inserts a profiling point, hfst-pmatch
-	  --profile
-	  prints profiling info.
-	  
-	  When --verbose, warn about undefined symbols being interpreted as
-	  labels.
-	  When --flatten, flatten Lst() definitions too.
-
-2014-11-25 14:14  eaxelson
-
-	* tools/src/hfst-compose.cc: Allowing 1-to-n composition of
-	  automata in archives. Fixes bug (or feature request) #277.
-
-2014-11-25 10:54  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-parser.yy,
-	  tools/src/hfst-lexc-compiler.cc: Now passing verbosity to
-	  LexcCompiler as an unsigned integer via setVerbosity(uint). Also
-	  made small fixes to warning prints in lexc compiler.
-
-2014-11-24 13:51  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/warn.one-sided-flags.lexc,
-	  test/tools/warn.one-sided-flags.lexc.flag.result,
-	  test/tools/warn.one-sided-flags.lexc.result: Added tests for
-	  one-sided flag diacritics for hfst-lexc.
-
-2014-11-24 13:50  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-parser.yy: Now lexc compiler warns about
-	  one-sided flag diacritics in verbose mode.
-
-2014-11-24 13:49  eaxelson
-
-	* libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTokenizer.h: Added
-	  a tokenizing function that warns about symbol pairs, if needed.
-
-2014-11-24 11:07  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/xfail.sublexicon-defined-more-than-once.lexc: Added
-	  test case for previous lexc commit (sublexicon defined more than
-	  once treated as an error).
-
-2014-11-24 10:33  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/lexc-parser.yy: Now multiple definitions of
-	  the same lexicon in lexc are treated as an error unless
-	  LexcCompiler::setAllowMultipleLexiconDefinitions(true) is called
-	  first.
-
-2014-11-24 09:04  eaxelson
-
-	* libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-parser.yy: Now lexc parser updates the
-	  error status hlexcnerrs when hlexcerror is called. In case of
-	  warnings, the error status is nor updated.
-
-2014-11-20 12:15  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Speed
-	  up list arc processing by replacing some maps and sets with
-	  vectors
-
-2014-11-19 09:17  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Changed list to set in merge
-	  operation. Removed commented code.
-
-2014-11-18 17:00  eaxelson
-
-	* tools/src/hfst-lexc-compiler.cc: Added option --encode-weights to
-	  hfst-lexc.
-
-2014-11-17 13:55  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Reinstate undefined symbols
-	  as valid tokens as per documentation
-
-2014-11-17 13:53  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: Add defined lists
-
-2014-11-17 13:14  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Add Sigma()
-
-2014-11-17 11:48  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Added Lst() and support for
-	  list arcs in runtime
-
-2014-11-17 11:21  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Sync precedence rules
-
-2014-11-17 11:17  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Switch order of precedence
-	  of concatenation and other binary operations
-
-2014-11-17 07:47  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Added Lit()
-
-2014-11-13 07:21  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Modified the
-	  function merge, it now takes as an argument a map of list
-	  symbols.
-
-2014-11-13 07:16  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/one_transition_regex.att,
-	  tools/src/parsers/test/one_transition_regex.xfst,
-	  tools/src/parsers/test/test.sh: Fixed a bug in xre parser, now
-	  definitions and unknowns can be used together in expressions such
-	  as 'regex [def:?] ;'.
-
-2014-11-11 14:06  eaxelson
-
-	* libhfst/src/HfstTokenizer.cc,
-	  tools/src/HfstStrings2FstTokenizer.cc: Now the epsilon symbol is
-	  not added as a multichar symbol to hfst-lookup tokenizer if it is
-	  the empty string. Should fix bug #275.
-
-2014-11-10 21:26  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_utils.cc: Allow \U00NNNNNN syntax for
-	  code points in utf-8 but above U+FFFF
-
-2014-11-10 20:55  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_utils.cc: Allow \UNNNN as well as
-	  \uNNNN
-
-2014-11-10 20:41  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_utils.cc: Allow \uNNNN in range
-	  notation and make some fixes to utf-8 handling
-
-2014-11-10 18:58  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Added utf-8 character range
-	  expressions
-
-2014-11-10 14:57  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  An untested implementation of the merge operation added to
-	  hfst-xfst.
-
-2014-11-10 13:23  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Syntax-level completion of
-	  functions (arg placement still not completely free)
-
-2014-11-04 16:35  eaxelson
-
-	* check_installation/copy-tool-tests.sh: Fixed a small bug in hfst
-	  tool tester.
-
-2014-11-04 10:23  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am, swig/setup.py: Ready for release 3.8.1.
-
-2014-10-31 16:44  eaxelson
-
-	* tools/src/hfst-guess.cc: Fixed std::cout into &std::cout in
-	  stream pointer comparison.
-
-2014-10-31 14:36  eaxelson
-
-	* back-ends/openfst/src/include/fst/accumulator.h,
-	  back-ends/openfst/src/include/fst/arc-map.h,
-	  back-ends/openfst/src/include/fst/determinize.h,
-	  back-ends/openfst/src/include/fst/encode.h,
-	  back-ends/openfst/src/include/fst/epsnormalize.h,
-	  back-ends/openfst/src/include/fst/equivalent.h,
-	  back-ends/openfst/src/include/fst/factor-weight.h,
-	  back-ends/openfst/src/include/fst/label-reachable.h,
-	  back-ends/openfst/src/include/fst/relabel.h,
-	  back-ends/openfst/src/include/fst/replace-util.h,
-	  back-ends/openfst/src/include/fst/replace.h,
-	  back-ends/openfst/src/include/fst/rmepsilon.h,
-	  back-ends/openfst/src/include/fst/rmfinalepsilon.h,
-	  back-ends/openfst/src/include/fst/sparse-tuple-weight.h,
-	  back-ends/openfst/src/include/fst/state-map.h,
-	  back-ends/openfst/src/include/fst/symbol-table-ops.h,
-	  back-ends/openfst/src/include/fst/synchronize.h,
-	  back-ends/openfst/src/include/fst/test-properties.h,
-	  back-ends/openfst/src/include/fst/util.h, configure.ac,
-	  tools/src/hfst-tagger/src/use_model_src/DataTypes.h,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.h: Now
-	  using definitions USE_TR1_UNORDERED_(MAP|SET) when defining what
-	  unordered maps and sets to use.
-
-2014-10-30 15:29  eaxelson
-
-	* configure.ac: Fixed a typo tr2 -> tr1.
-
-2014-10-29 13:50  eaxelson
-
-	* configure.ac, tools/src/HfstAlphabet.h,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.h:
-	  Unordered maps and sets are used from std namespace if
-	  -std=gnu++11 is requested.
-
-2014-10-28 11:40  eaxelson
-
-	* swig/setup.py: Forgot to update version number in swig bindings.
-
-2014-10-27 16:40  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Various improvements and
-	  additions to function syntax,
-	  particularly empty args and string-args
-
-2014-10-27 14:48  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Added functions for merge
-	  operation in HfstTransitionGraph.
-
-2014-10-24 11:03  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Modified weight handling in HfstTransitionGraph::intersect.
-
-2014-10-24 08:38  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: When
-	  the alphabet is constructed from a symbol table, set identity to
-	  NO_SYM
-	  this was supposed to always happen anyway but didn't matter until
-	  recently
-
-2014-10-22 13:16  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Modified intersection algorithms in HfstTransitionGraph.
-
-2014-10-22 10:21  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Added
-	  functions to be used in xerox's merge operation.
-
-2014-10-22 10:20  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-parser.yy: Small fixes to list definitions
-	  in hfst-xfst.
-
-2014-10-17 15:59  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Added an implementation for
-	  compile-replace in hfst-xfst, it still needs lot of testing.
-
-2014-10-16 14:36  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Yet some more functions added
-	  to compile-replace.
-
-2014-10-16 11:48  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Added more functions for
-	  compile-replace.
-
-2014-10-15 14:23  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Tentatively
-	  added functions in HfstTransitionGraph to be used in
-	  compile-replace.
-
-2014-10-15 13:26  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Added function
-	  is_well_formed_for_compile_replace to be used in compile-replace
-	  command.
-
-2014-10-15 11:30  eaxelson
-
-	* test/libhfst/test_transducer_functions.cc: Forgot to comment out
-	  debugging prints in tests.
-
-2014-10-15 11:28  eaxelson
-
-	* back-ends/openfst/src/include/fst/interval-set.h,
-	  test/libhfst/test_transducer_functions.cc: Added brackets around
-	  member calls 'Interval.end' and 'Interval.begin' to avoid them
-	  getting confused with std::end() and std::begin() templates in
-	  C++11.
-
-2014-10-15 10:21  eaxelson
-
-	* back-ends/openfst/src/include/fst/interval-set.h: Rolled back
-	  earlier revision in interval-set.h
-
-2014-10-15 09:56  eaxelson
-
-	* back-ends/openfst/src/include/fst/interval-set.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h: Made small
-	  modifications for better c++11/c++0x support.
-
-2014-10-15 09:32  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Fix
-	  bug where identity wasn't being set to NO_SYMBOL when absent from
-	  alphabet
-
-2014-10-15 08:46  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Refuse
-	  to enter flag loops more than once
-	  fixes bug #250 bug - arguably this could be applied to epsilon
-	  loops too,
-	  pending discussion
-
-2014-10-15 08:09  eaxelson
-
-	* man/Makefile.am: Fixed a typo in Makefile.
-
-2014-10-14 15:01  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Now hfst-xfst gives a warning
-	  (or exits) if a binary command tries to access a stack with less
-	  than 2 transducers.
-
-2014-10-14 14:51  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Now hfst-xfst exits if a
-	  command tries to access an empty stack if quit-on-fail is ON and
-	  hfst-xfst is not in interactive mode.
-
-2014-10-14 13:44  mpsilfve
-
-	* scripts/hfst-fst2tesseract.xfst: Comment explaining usage of
-	  hfst-fst2tesseract.xfst.
-
-2014-10-14 13:40  mpsilfve
-
-	* scripts/hfst-fst2tesseract.xfst: Added script for converting
-	  morphological analyzers to Tesseract word models.
-
-2014-10-14 12:27  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Improvements to loop finding
-
-2014-10-14 12:08  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Further corrections to loop detection
-	  slowdown back to ~10x but may be improved from here
-
-2014-10-14 11:51  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Fix
-	  some cases of overdetecting infinite ambiguity, there's still
-	  some left
-
-2014-10-14 10:51  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc:
-	  Forgot to keep adding the repeated states in the loop detection
-	  phase
-
-2014-10-13 18:15  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Only
-	  try to catch infinite ambiguity at epsilon arcs
-	  This is the big speed win and presumably correct.
-
-2014-10-13 17:22  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc:
-	  This order of comparison is a bit faster since sizes never differ
-
-2014-10-13 16:34  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Speed
-	  up is_lookup_infinitely_ambiguous() somewhat
-
-2014-10-11 04:10  mie
-
-	* tools/src/hfst-optimized-lookup.cc: Try to avoid using negative
-	  indexes for arrays
-
-2014-10-11 03:59  mie
-
-	* test/tools/Makefile.am,
-	  test/tools/optimized-lookup-functionality.sh: Optimised lookup
-	  tests
-
-2014-10-09 17:22  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Runtime handling of identity and unknown
-
-2014-10-09 12:30  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.h: Forgot to remove one thing in
-	  the last commit
-
-2014-10-09 12:22  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: Take out our own
-	  harmonization hacks now that they're unneeded
-
-2014-10-08 12:45  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Don't use delimiters when
-	  they're not necessary,
-	  also don't insert everything to RTNs anymore and provide the
-	  is_special()
-	  function the previous commit required
-
-2014-10-08 12:29  hardwick
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc: Treat special
-	  pmatch symbols like flag diacritics for harmonization,
-	  also after harmonization add all symbols, including flags, to the
-	  alphabets
-
-2014-10-08 11:51  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Fix bug where delimiters
-	  were shadowing the named transducers' names
-	  also remove extraenous parsing path
-
-2014-10-06 21:33  janiemi
-
-	* test/tools/pmatch-tester.sh, test/tools/pmatch-tests.sh: Updated
-	  pmatch functionality tests.
-	  
-	  Current pmatch syntax: string literals in {...}, symbols in
-	  double quotes.
-	  Added tests: Ins maximizing globally; Difference and character
-	  sets in
-	  named expressions; Named expressions in OptCap, ToUpper; Named
-	  expressions
-	  in replace; Long input lines; Ins should not throw
-	  std::out_of_range;
-	  Disjunction of two Ins expressions.
-	  Added options: --include-tests, --exclude-tests,
-	  --no-number-tests,
-	  --truncate-lines, --truncate-log-lines. Minor new features in
-	  test runner.
-
-2014-10-06 17:27  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll: Add string literal syntax for
-	  standalone %-escaped chars
-	  (they used to be considered symbols which now have to be
-	  defined or cause an error)
-
-2014-10-06 16:44  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Use minimization guards to
-	  keep multiple negative contexts separate in disjunctions
-
-2014-10-06 15:36  eaxelson
-
-	* libhfst/src/HfstInputStream.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/XreCompiler.h, swig/doc/libhfst.py,
-	  swig/hfstBot.py, swig/test/test_examples.py: Fixed some more
-	  spelling errors noticed by lintian.
-
-2014-10-06 14:45  eaxelson
-
-	* tools/src/hfst-lexc-wrapper.cc,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.cc: Fixed
-	  spelling errors found by lintian.
-
-2014-10-06 14:33  eaxelson
-
-	* man/hfst-train-tagger.1: Added again hfst-train-tagger man page
-	  which is no more a symlink.
-
-2014-10-06 14:31  eaxelson
-
-	* man/Makefile.am, man/hfst-build-tagger.1,
-	  man/hfst-foma-wrapper.1, man/hfst-open-input-file-for-tagger.1,
-	  man/hfst-reweight-tagger.1, man/hfst-train-tagger.1,
-	  man/hfst-twolc-loc.1, man/hfst-twolc-system.1, man/hfst-twolc.1,
-	  man/hfst_tagger_compute_data_statistics.py.1, man/htwolcpre1.1,
-	  man/htwolcpre2.1, man/htwolcpre3.1: Added missing man pages.
-
-2014-10-06 14:00  eaxelson
-
-	* tools/src/hfst-tagger/src/hfst-reweight-tagger.cc: Now
-	  hfst-reweight-tagger --help returns EXIT_SUCCESS before trying to
-	  access uninitialized values.
-
-2014-10-06 13:24  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Warn about shadowing
-	  definitions
-
-2014-10-06 13:05  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Alternate syntaxes regex for
-	  Define TOP and .#. for #
-
-2014-10-06 12:47  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Revamp LABEL parsing and
-	  introduce curly literal pairs
-
-2014-10-06 11:08  eaxelson
-
-	* man/Makefile.am, man/hfst-affix-guessify.1,
-	  man/hfst-apertium-proc.1, man/hfst-calculate.1,
-	  man/hfst-compare.1, man/hfst-compose-intersect.1,
-	  man/hfst-compose.1, man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinise.1, man/hfst-determinize.1,
-	  man/hfst-disjunct.1, man/hfst-edit-metadata.1,
-	  man/hfst-expand-equivalences.1, man/hfst-expand.1,
-	  man/hfst-format.1, man/hfst-fst2fst.1, man/hfst-fst2strings.1,
-	  man/hfst-fst2txt.1, man/hfst-grep.1, man/hfst-guess.1,
-	  man/hfst-guessify.1, man/hfst-head.1, man/hfst-info.1,
-	  man/hfst-intersect.1, man/hfst-invert.1, man/hfst-lexc-wrapper.1,
-	  man/hfst-lexc.1, man/hfst-lookup.1, man/hfst-minimise.1,
-	  man/hfst-minimize.1, man/hfst-minus.1, man/hfst-multiply.1,
-	  man/hfst-name.1, man/hfst-open-input-file-for-tagger.1,
-	  man/hfst-optimised-lookup.1, man/hfst-optimized-lookup.1,
-	  man/hfst-pair-test.1, man/hfst-pmatch.1, man/hfst-pmatch2fst.1,
-	  man/hfst-proc2.1, man/hfst-project.1, man/hfst-prune-alphabet.1,
-	  man/hfst-push-weights.1, man/hfst-regexp2fst.1,
-	  man/hfst-remove-epsilons.1, man/hfst-repeat.1,
-	  man/hfst-reverse.1, man/hfst-reweight.1, man/hfst-sfstpl2fst.1,
-	  man/hfst-shuffle.1, man/hfst-split.1, man/hfst-strings2fst.1,
-	  man/hfst-substitute.1, man/hfst-subtract.1, man/hfst-summarise.1,
-	  man/hfst-summarize.1, man/hfst-tag.1, man/hfst-tail.1,
-	  man/hfst-train-tagger-loc.1, man/hfst-train-tagger-system.1,
-	  man/hfst-train-tagger.1, man/hfst-traverse.1, man/hfst-txt2fst.1,
-	  man/hfst-union.1, man/hfst-xfst.1: Updated and added man pages.
-
-2014-10-06 11:06  eaxelson
-
-	* tools/src/hfst-expand-equivalences.cc: Moved option checking
-	  after possible returning from program so that option --help will
-	  not generate error messages.
-
-2014-10-05 11:06  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Require backslash character
-	  to be escaped as \\ in curly literals
-
-2014-10-05 10:53  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Fix bug in unescaping
-	  function
-
-2014-10-03 12:28  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.8.0.
-
-2014-10-03 11:55  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Added variable
-	  'lexc-rename-flags' to hfst-xfst.
-
-2014-10-03 11:48  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Desperately fiddle with the
-	  way the minus operation expands things
-
-2014-10-01 16:29  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Add lambda-like anonymous
-	  definitions for controlling subexpression boundaries
-
-2014-10-01 12:46  eaxelson
-
-	* tools/src/hfst-lexc-compiler.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/parsers/XfstCompiler.cc: Changed the flag handling
-	  behavior of hfst-xfst and hfst-lexc. Now both tools by default
-	  use Xerox's way when composing, i.e. flag diacritics match
-	  unknown and identity symbols. This can be controlled with
-	  variable 'xerox-composition' (the default is ON) in hfst-xfst and
-	  with option '--xerox-composition={ON,OFF}' (the default is also
-	  ON) in hfst-lexc. hfst-regexp2fst also has the option
-	  '--xerox-composition' which by default is OFF, as it was earlier.
-
-2014-10-01 11:28  eaxelson
-
-	* tools/src/hfst-regexp2fst.cc: Fixed a typo in hfst-regexp2fst
-	  option handling.
-
-2014-09-30 15:38  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: Now one-sided flag diacritics are
-	  allowed in composition when flag-is-epsilon is used.
-
-2014-09-30 13:54  eaxelson
-
-	* tools/src/hfst-strings2fst.cc: Added option --log10 for 10-based
-	  logarithmic weights in hfst-strings2fst.
-
-2014-09-30 13:18  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/XfstCompiler.cc: Now an error is thrown if
-	  flags are not twosided in composition when xerox composition is
-	  used.
-
-2014-09-30 13:05  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h: Added exception class
-	  FlagDiacriticsAreNotIdentitesException.
-
-2014-09-29 11:22  hardwick
-
-	* test/tools/Makefile.am, test/tools/pmatch-functionality.sh,
-	  test/tools/pmatch-tester.sh, test/tools/pmatch-tests.sh: Add
-	  pmatch functionality test suite
-
-2014-09-29 10:49  eaxelson
-
-	* tools/src/hfst-regexp2fst.cc: Added option -X flag-is-epsilon to
-	  hfst-regexp2fst.
-
-2014-09-25 10:38  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Fix another symbol-leaking
-	  issue
-
-2014-09-25 10:17  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Allow nested logical
-	  operations on contexts
-
-2014-09-23 07:15  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: We need to avoid symbol
-	  pollution for more than just special symbols
-	  (this doesn't completely resolve pollution issues, just some
-	  urgent ones)
-
-2014-09-23 06:47  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Don't
-	  forget to pop the rtn stack when there's nothing matched
-
-2014-09-23 06:36  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Minimize after adding
-	  delimiters, not before
-
-2014-09-23 05:14  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Revert bracket-bounding
-	  behaviour
-
-2014-09-22 15:47  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Use brackets for extra
-	  delimiters to control tag and context boundaries more
-
-2014-09-22 15:28  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: add_delimiters was happening
-	  in the wrong place since recent syntax changes
-
-2014-09-22 12:57  eaxelson
-
-	* libhfst/src/implementations/HfstOlTransducer.cc: Fixed a too
-	  strict assertion.
-
-2014-09-17 08:05  eaxelson
-
-	* libhfst/src/parsers/pmatch_utils.cc: Added a return value for a
-	  case that should never happen to make scan-build happy.
-
-2014-09-16 15:03  eaxelson
-
-	* libhfst/src/HfstXeroxRules.cc: Reverted back to the buggy
-	  behaviour of function 'getMarkerNumber', since some
-	  HfstXeroxRules tests will fail if it works correctly...
-
-2014-09-16 13:50  eaxelson
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h:
-	  Fixed an error in function 'getMarkerNumber' where istringstream
-	  was not properly initialized and returned random values. Also
-	  added a print method for class Rule.
-
-2014-09-16 13:43  eaxelson
-
-	* test/tools/Makefile.am: Fixed a typo in filename in EXTRA_DIST.
-
-2014-09-15 09:13  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/xerox_composition.output,
-	  tools/src/parsers/test/xerox_composition.xfst: Now alphabets are
-	  copied when encoding and decoding flags in composition. Fixes bug
-	  #267.
-
-2014-09-11 12:31  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Oops,
-	  forgot about restoring scope state afer entry arcs
-
-2014-09-11 12:24  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Add a
-	  scope facility for local context boundaries
-
-2014-09-11 09:18  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/parsers/lexc-utils.cc, tools/src/hfst-compare.cc,
-	  tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-expand-equivalences.cc, tools/src/hfst-guess.cc,
-	  tools/src/hfst-lexc-wrapper.cc, tools/src/hfst-shuffle.cc,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-subtract.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SentenceTagger.cc,
-	  tools/src/parsers/xfst-utils.cc: Fixed most scan-build issues
-	  other than dead store, memory leak and errors from foma back-end.
-
-2014-09-10 13:52  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  tools/src/parsers/XfstCompiler.cc: Added implementation for
-	  twosided flag-diacritics in hfst-xfst.
-
-2014-09-10 12:04  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-parser.yy: Now harmonize-flags and
-	  flag-is-epsilon are by default OFF in hfst-xfst. Also added a
-	  new, mostly untested variable xerox-composition that matches
-	  flags with unknowns and identities in composition (default is
-	  OFF). All flag-is-epsilon functionalitites are moved under
-	  HfstTransducer.
-
-2014-09-09 15:45  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Purge commented-out lines
-
-2014-09-09 15:38  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Major syntactic changes and
-	  additions (AND & OR) to bring in line with
-	  Karttunen's documentation - amazingly doesn't break backwards
-	  compatibility (brobably / mostly)! Function syntax still lags and
-	  is incomplete.
-
-2014-09-09 07:57  eaxelson
-
-	* back-ends/openfst/src/include/fst/encode.h: Added missing return
-	  value to a function in openfst back-end.
-
-2014-09-09 07:32  eaxelson
-
-	* back-ends/openfst/src/include/fst/encode.h,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  tools/src/parsers/XfstCompiler.cc: Reverted back to version 3992.
-
-2014-09-08 11:50  eaxelson
-
-	* libhfst/src/parsers/pmatch_utils.cc: Instead of NULL, return a
-	  new HfstTransducer in a condition that should never occur. This
-	  is for some compilers.
-
-2014-09-08 11:41  eaxelson
-
-	* back-ends/openfst/src/include/fst/encode.h,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  tools/src/parsers/XfstCompiler.cc: Fixed errors reported in bug
-	  #265. Also tentatively added a switch --xfst-harmonization to
-	  hfst-xfst that treats flags as ordinary symbols in composition.
-
-2014-09-08 11:29  hardwick
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Resolved
-	  another rpmlint issue, hopefully the right way
-	  (A HfstTransitionGraph method returning nothing when it seemed to
-	  be meant
-	  to be returning *this)
-
-2014-09-08 11:24  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Resolved some issues and
-	  nonissues revealeled by rpmlint
-
-2014-09-08 09:49  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll: Now xre parser compiles
-	  expressions of type foo:bar^{0,N} correctly.
-
-2014-08-29 12:20  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: A better
-	  way see if we have a better location than before
-
-2014-08-29 11:36  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: It seems to be generally
-	  faster to defer minimization at [] boundaries
-
-2014-08-28 12:05  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Made 'harmonize-flags == ON'
-	  the default for hfst-xfst. Also hfst-xfst's xre parser now
-	  harmonizes flags according to variable 'harmonize-flags'.
-
-2014-08-28 10:06  eaxelson
-
-	* libhfst/src/parsers/xre_utils.cc, tools/src/HfstAlphabet.cc,
-	  tools/src/hfst-guessify.cc, tools/src/parsers/XfstCompiler.cc:
-	  Fixed some issues noticed on c+11 and reported in bug #258: a
-	  space between literal and identifier, missing cstdlib header and
-	  ostringstream conversions.
-
-2014-08-28 09:12  eaxelson
-
-	* tools/src/hfst-fst2strings.cc: hfst-fst2strings now gives an
-	  error message if option --nbest or --random is used with
-	  transducers in optimized lookup format.
-
-2014-08-28 07:11  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h: Apparently
-	  older gcc's libstdc++ require operator< to be const
-
-2014-08-27 16:31  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  tools/src/hfst-pmatch.cc, tools/src/hfst-proc2.cc: Added locate
-	  mode on the library side; support for multimatch, weight
-	  access and various internal changes
-
-2014-08-27 12:05  eaxelson
-
-	* tools/src/hfst-affix-guessify.cc, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-commandline.h, tools/src/hfst-compare.cc,
-	  tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-determinize.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-edit-metadata.cc,
-	  tools/src/hfst-expand-equivalences.cc, tools/src/hfst-invert.cc,
-	  tools/src/hfst-minimize.cc, tools/src/hfst-project.cc,
-	  tools/src/hfst-prune-alphabet.cc,
-	  tools/src/hfst-remove-epsilons.cc, tools/src/hfst-repeat.cc,
-	  tools/src/hfst-reverse.cc, tools/src/hfst-reweight.cc,
-	  tools/src/hfst-shuffle.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-subtract.cc: Now all command line tools should
-	  give an error message and exit with >0 if they cannot process
-	  input in hfst optimized lookup format.
-
-2014-08-27 10:11  eaxelson
-
-	* tools/src/hfst-invert.cc: Now hfst-invert prints an error message
-	  if given a transducer in optimized lookup format. This should be
-	  fixed in all command line tools.
-
-2014-08-27 08:24  eaxelson
-
-	* NSIS/AddHfstLibrary.nsi, NSIS/README, NSIS/copy_files.sh,
-	  NSIS/hfst_python_installer.nsi: Updated NSIS files.
-
-2014-08-27 08:22  eaxelson
-
-	* swig/libhfst.i: Function set_expand_definitions added to the
-	  python interface.
-
-2014-08-27 08:21  eaxelson
-
-	* swig/doc/Doxyfile: Updated HFST version number.
-
-2014-08-27 08:17  eaxelson
-
-	* Doxyfile: Updated HFST version number.
-
-2014-08-26 09:14  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  tools/src/hfst-lexc-compiler.cc: Added option --renameFlags to
-	  hfst-lexc for testing purposes.
-
-2014-08-25 13:00  eaxelson
-
-	* tools/src/hfst-determinize.cc: Added option --encode-weights to
-	  hfst-determinize.
-
-2014-08-20 09:52  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  tools/src/hfst-lexc-compiler.cc,
-	  tools/src/parsers/XfstCompiler.cc: Now hfst-lexc has options
-	  --withFlags and --minimizeFlags and hfst-xfst variables
-	  lexc-with-flags and lexc-minimize-flags to control if
-	  hyperminimization is used when parsing lexc files. Flag
-	  minimization can be the default behaviour when it has been
-	  properly tested.
-
-2014-08-20 06:39  moshagen
-
-	* tools/src/hfst-proc2.cc: The Xerox output should have an empty
-	  line between each cohort.
-
-2014-08-19 14:45  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc: Now flag minimization in
-	  should work in LexcCompiler. Commented the changes out until all
-	  expected results from lexc tests are changed accordingly.
-
-2014-08-19 08:39  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Apparently failing to read a
-	  stream now throws HfstException so catch that instead
-
-2014-08-19 06:51  moshagen
-
-	* tools/src: Ignore generated binaries.
-
-2014-08-18 13:53  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc: Tentatively added a piece of
-	  code that filters out multiple flags in lexc result. Currently
-	  commented out.
-
-2014-08-18 12:39  hardwick
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-proc2.cc: A
-	  hopefully temporary tool called proc2 for simple tokenization,
-	  to become part of something else or be renamed in the future
-
-2014-08-18 12:35  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  swig/hfst_swig_extensions.h, swig/libhfst.i: Some fixes to python
-	  wrapping of pmatch and showing original input in pmatch
-
-2014-08-18 11:15  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  tools/src/hfst-pmatch.cc: Make locate() return a simple data
-	  structure rather than a string
-
-2014-08-18 08:19  hardwick
-
-	* swig/hfst_swig_extensions.h, swig/libhfst.i: Convenience loader
-	  function for pmatch
-
-2014-08-18 08:09  hardwick
-
-	* swig/libhfst.i: Fix outdated prototype of printConnectedness()
-	  and add pmatch prototypes
-
-2014-08-14 12:51  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h, test/tools/Makefile.am,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/warn.sublexicon-mentioned-but-not-defined.lexc,
-	  test/tools/warn.sublexicon-mentioned-but-not-defined.lexc.flag.result,
-	  test/tools/warn.sublexicon-mentioned-but-not-defined.lexc.result,
-	  tools/src/hfst-lexc-compiler.cc: Added option --Werror to
-	  hfst-lexc that treats warnings as errors.
-
-2014-08-14 10:06  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/no-newline-before-sublexicon.lexc,
-	  test/tools/no-newline-before-sublexicon.lexc.flag.result,
-	  test/tools/no-newline-before-sublexicon.lexc.result: Added tests
-	  for the fixed bug #243 that will pass now.
-
-2014-08-14 10:05  eaxelson
-
-	* libhfst/src/parsers/lexc-lexer.ll: Now keyword LEXICON is allowed
-	  without a preceding newline in lexc parser. Should fix bug #243.
-
-2014-08-13 14:07  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Added a variable encode_epsilons to function priority_union whose
-	  default value (true) should fix bug #254. Function lenient
-	  composition still calls priority_union with a false value of
-	  encode_epsilons.
-
-2014-08-06 13:43  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: Added support for
-	  cross-products such as {foo}:[bar] and foo:[bar] in regexp
-	  parser. Tests still needed.
-
-2014-07-30 20:33  mie
-
-	* back-ends/foma/Makefile.am: .NOTPARALLEL for now
-
-2014-07-30 10:48  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Fix
-	  serious bug with epsilons in contexts - they were incorrectly
-	  moving the
-	  input tape.
-
-2014-07-19 13:15  mie
-
-	* tools/src/hfst-lookup.cc: with pipes
-
-2014-07-19 12:59  mie
-
-	* tools/src/hfst-lookup.cc: A super cool progress bar functionality
-	  \o/
-
-2014-07-15 15:42  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Fix
-	  context-related bug
-
-2014-07-05 08:22  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h:
-	  Readability refactoring
-
-2014-07-04 21:18  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Comment
-	  fixes and some more deadwood elimination
-
-2014-07-04 21:12  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h: Remove
-	  more unneeded stuff
-
-2014-07-04 21:07  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h: Remove
-	  some obsolete & commented out bits
-
-2014-07-04 21:04  hardwick
-
-	* tools/src/hfst-pmatch.cc: Locatefy option
-
-2014-07-04 21:04  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Don't
-	  make noise about almost always harmless result truncation
-
-2014-07-04 21:03  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Large
-	  refactor of almost everything
-	  (mainly to better serve tokenization apps w/tape synchronisation)
-
-2014-06-25 07:14  hardwick
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc: Undo
-	  previous commit, was confused by polluted automake cache
-
-2014-06-25 06:59  hardwick
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc: It
-	  seems that newer toolchains don't like c++ classes being defined
-	  over
-	  multiple .cc files, or something..
-
-2014-06-18 09:10  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Don't
-	  count flag diacritics when locatefying
-
-2014-06-17 21:11  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll: Remove obsolete bogus -> rule
-	  from when @-> had problems
-
-2014-06-17 21:10  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Handle missing @bin files
-	  more nicely
-
-2014-06-17 20:03  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Autoconvert @bin arguments
-	  if necessary
-
-2014-06-16 18:00  hardwick
-
-	* README.deps: Remove obsolete dependency readme that hogs the svn
-	  trunk page
-
-2014-06-13 20:47  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Add
-	  constructor option to make diacritic strings blank or not;
-	  make pmatch consider them blank
-
-2014-06-13 12:38  eaxelson
-
-	* tools/src/hfst-twolc/test/Makefile.am: Added file 'test' to
-	  EXTRA_DIST..
-
-2014-06-13 12:15  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am: Fixed hfst-twolc test
-	  Makefile.am
-
-2014-06-13 10:49  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc: Disabled
-	  outdated unit tests.
-
-2014-06-12 12:15  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Tentatively implemented
-	  variable 'flag-is-epsilon' in hfst-xfst.
-
-2014-06-10 14:34  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.cc:
-	  Fixed issue with left arrow conflicts for contexts with
-	  impossible word boundaries.
-
-2014-06-10 13:51  eaxelson
-
-	* test/tools/Makefile.am, test/tools/basic.regexps.lexc,
-	  test/tools/basic.regexps.lexc.flag.result,
-	  test/tools/basic.regexps.lexc.result,
-	  test/tools/lexc-compiler-functionality.sh: Also added tests for
-	  regexps with different continuation lexicons in hfst-lexc.
-
-2014-06-10 13:50  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc: Now regexps with different
-	  continuation lexicons are allowed in hfst-lexc. Should fix bug
-	  #247
-
-2014-06-10 13:45  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleSymbolVector.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleSymbolVector.h: Fixed
-	  list center rules and conflict resolutions.
-
-2014-06-10 13:41  mpsilfve
-
-	* tools/src/hfst-twolc/test/test62~: Tests for list centers.
-
-2014-06-10 13:40  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test46.txt_fst,
-	  tools/src/hfst-twolc/test/test61.txt_fst,
-	  tools/src/hfst-twolc/test/test62,
-	  tools/src/hfst-twolc/test/test62.txt_fst,
-	  tools/src/hfst-twolc/test/test62~: Tests for list centers.
-
-2014-06-08 12:32  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Exit on parse error
-	  Once we've printed a parsing error, exit rather that print
-	  intimidating hfst
-	  exception messages
-
-2014-06-05 13:13  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h:
-	  Pattern-locating mode
-
-2014-06-03 15:37  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Some
-	  changes to approach to avoiding stack overflow
-	  should fix problems with very long input lines
-
-2014-06-03 15:27  mie
-
-	* tools/src/hfst-affix-guessify.cc: Add harmonization
-
-2014-06-03 10:20  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  tools/src/hfst-pmatch.cc: Add extract tags -option
-	  (this commit also includes a secret commented-out facility for
-	  profiling
-	  activity on the input tape by drawing a funky ascii histogram)
-
-2014-06-02 11:40  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Fix
-	  incorrect check for whether tokenization needs to respect a long
-	  symbol
-
-2014-06-02 09:32  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Allow epsilon-symbol pairs
-
-2014-06-02 09:31  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Don't print huge data dumps
-	  when parsing fails
-
-2014-05-27 12:15  eaxelson
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducerMinimize.cc,
-	  libhfst/src/implementations/TropicalWeightTransducerPushWeights.cc:
-	  Revert back to the original TropicalWeightTransducer.cc and
-	  forget splitting it..
-
-2014-05-23 14:42  eaxelson
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducerMinimize.cc,
-	  libhfst/src/implementations/TropicalWeightTransducerPushWeights.cc:
-	  Moved minimize and push functionalities from
-	  TropicalWeightTransducer.cc to separate files. This will make
-	  compiling TropicalWeightTransducer faster and prevent 'File too
-	  big' errors on Windows.
-
-2014-05-21 11:27  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: While
-	  scanning for possible first symbols, don't accidentally go beyond
-	  the
-	  end of the input tape
-
-2014-05-20 10:26  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am, swig/setup.py: Ready for release 3.7.1.
-
-2014-05-20 09:43  eaxelson
-
-	* tools/src/parsers/test/test.sh: Now removing CR characters from
-	  output of hfst-xfst so that tests will pass on windows too.
-
-2014-05-16 11:14  eaxelson
-
-	* back-ends/sfst/alphabet.cc: Now an error message is thrown in
-	  HFST when reading a native SFST transducer that uses the empty
-	  symbol.
-
-2014-05-15 13:11  eaxelson
-
-	* tools/src/hfst-minimize.cc: Added option --encode-weights (-E) to
-	  hfst-minimize.
-
-2014-05-14 12:51  eaxelson
-
-	* libhfst/src/HfstXeroxRules.cc: Added documentation to parallel
-	  replace and removed unnecessary marker insertions.
-
-2014-05-14 11:07  eaxelson
-
-	* NSIS/hfst_installer.nsi, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_parallel_rules_11.output,
-	  tools/src/parsers/test/weighted_parallel_rules_11.xfst: Modified
-	  conpilation of weighted parallel rules by inserting markers to
-	  keep same mappings with different weights separate. Also added a
-	  StringPair variant of insert_symbols_to_alphabet to
-	  HfstTransducer and HfstTransitionGraph. Added a test case for
-	  hfst-xfst. Updated NSIS installer.
-
-2014-05-09 10:30  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Tentatively
-	  added a function for substituting weights with markers.
-
-2014-05-07 12:36  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Remove spurious obsolete
-	  comment
-
-2014-04-28 10:40  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Bounds check accesses to ascii_symbols when reading input too
-	  (ascii_symbols used to have a NO_SYMBOL entry for any char, but
-	  now without
-	  a check some accesses were resulting in bogus keys)
-
-2014-04-26 11:32  hardwick
-
-	* back-ends/foma/Makefile.am: Add -D_XOPEN_SOURCE=500
-	  in order to prevent -std=c99 from preventing strdup() prototype
-	  being visible
-
-2014-04-26 10:31  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Correct bounds check for ascii_symbols alterations
-
-2014-04-23 09:12  eaxelson
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Now
-	  checking that ascii_symbols vector index is not out of bounds
-	  when removing shadowing symbols. Should fix bug #235.
-
-2014-04-15 12:03  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc: Replace rules bug fix
-
-2014-04-15 07:11  eaxelson
-
-	* NSIS/AddHfstLibrary.nsi, NSIS/CheckLibraries.nsi,
-	  NSIS/copy_files.sh: Updated NSIS files for current release.
-
-2014-04-10 14:41  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc: Parallel rules bug solved
-
-2014-04-10 12:58  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.7.0.
-
-2014-04-10 10:17  eaxelson
-
-	* tools/src/parsers/test/Makefile.am: Added missing files to
-	  Makefile.
-
-2014-04-10 09:48  eaxelson
-
-	* tools/src/hfst-regexp2fst.cc: Added option --encode-weights also
-	  to hfst-regexp2fst.
-
-2014-04-10 09:30  eaxelson
-
-	* tools/src/hfst-compose-intersect.cc: Added option
-	  --encode-weights (default false) to hfst-compose-intersect.
-
-2014-04-09 11:12  eaxelson
-
-	* NSIS/README.ospell.txt, NSIS/copy_files.sh,
-	  NSIS/ospell_installer.nsi: Tentatively added NSIS installer for
-	  hfst-ospell.
-
-2014-03-31 12:59  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc: replace rules - weights are
-	  removed from calculating contexts (they were unnecessary there)
-
-2014-03-31 10:31  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Removed
-	  commented code.
-
-2014-03-28 07:18  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Modified
-	  TropicalWeightTransducer::are_equivalent so that determinization
-	  is carried out in a way similar to 'intersect' and 'subtract'.
-
-2014-03-25 10:01  eaxelson
-
-	* configure.ac: Updated configure.ac
-
-2014-03-25 10:00  eaxelson
-
-	* tools/src/hfst-ospell: Deleted hfst-ospell file.
-
-2014-03-25 09:58  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-ospell/Makefile.am,
-	  tools/src/hfst-ospell/get-ospell.sh, tools/src/hfst-ospell/src,
-	  tools/src/hfst-ospell/src_Makefile.am: Reverted hfst-ospell
-	  changes.
-
-2014-03-25 09:43  eaxelson
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-ospell,
-	  tools/src/hfst-ospell/Makefile.am,
-	  tools/src/hfst-ospell/get-ospell.sh, tools/src/hfst-ospell/src,
-	  tools/src/hfst-ospell/src/Makefile.am,
-	  tools/src/hfst-ospell/src_Makefile.am: Tentatively added
-	  hfst-ospell under tools/src, it is only enabled if
-	  --enable-ospell is requested.
-
-2014-03-24 13:41  eaxelson
-
-	* tools/src/parsers/test/contains.output,
-	  tools/src/parsers/test/contains.xfst,
-	  tools/src/parsers/test/contains_once.output,
-	  tools/src/parsers/test/contains_once.xfst,
-	  tools/src/parsers/test/contains_once_optional.output,
-	  tools/src/parsers/test/contains_once_optional.xfst,
-	  tools/src/parsers/test/contains_with_weight.output,
-	  tools/src/parsers/test/contains_with_weight.xfst,
-	  tools/src/parsers/test/replace_test_.xfst,
-	  tools/src/parsers/test/replace_test_1.output,
-	  tools/src/parsers/test/replace_test_1.xfst,
-	  tools/src/parsers/test/replace_test_10.output,
-	  tools/src/parsers/test/replace_test_10.xfst,
-	  tools/src/parsers/test/replace_test_11.output,
-	  tools/src/parsers/test/replace_test_11.xfst,
-	  tools/src/parsers/test/replace_test_12.output,
-	  tools/src/parsers/test/replace_test_12.xfst,
-	  tools/src/parsers/test/replace_test_13.output,
-	  tools/src/parsers/test/replace_test_13.xfst,
-	  tools/src/parsers/test/replace_test_14.output,
-	  tools/src/parsers/test/replace_test_14.xfst,
-	  tools/src/parsers/test/replace_test_15.output,
-	  tools/src/parsers/test/replace_test_15.xfst,
-	  tools/src/parsers/test/replace_test_16.output,
-	  tools/src/parsers/test/replace_test_16.xfst,
-	  tools/src/parsers/test/replace_test_17.output,
-	  tools/src/parsers/test/replace_test_17.xfst,
-	  tools/src/parsers/test/replace_test_18.output,
-	  tools/src/parsers/test/replace_test_18.xfst,
-	  tools/src/parsers/test/replace_test_19.output,
-	  tools/src/parsers/test/replace_test_19.xfst,
-	  tools/src/parsers/test/replace_test_2.xfst,
-	  tools/src/parsers/test/replace_test_20.output,
-	  tools/src/parsers/test/replace_test_20.xfst,
-	  tools/src/parsers/test/replace_test_21.output,
-	  tools/src/parsers/test/replace_test_21.xfst,
-	  tools/src/parsers/test/replace_test_22.output,
-	  tools/src/parsers/test/replace_test_22.xfst,
-	  tools/src/parsers/test/replace_test_23.output,
-	  tools/src/parsers/test/replace_test_23.xfst,
-	  tools/src/parsers/test/replace_test_24.output,
-	  tools/src/parsers/test/replace_test_24.xfst,
-	  tools/src/parsers/test/replace_test_25.output,
-	  tools/src/parsers/test/replace_test_25.xfst,
-	  tools/src/parsers/test/replace_test_26.output,
-	  tools/src/parsers/test/replace_test_26.xfst,
-	  tools/src/parsers/test/replace_test_27.output,
-	  tools/src/parsers/test/replace_test_27.xfst,
-	  tools/src/parsers/test/replace_test_28.output,
-	  tools/src/parsers/test/replace_test_28.xfst,
-	  tools/src/parsers/test/replace_test_29.output,
-	  tools/src/parsers/test/replace_test_29.xfst,
-	  tools/src/parsers/test/replace_test_3.xfst,
-	  tools/src/parsers/test/replace_test_30.output,
-	  tools/src/parsers/test/replace_test_30.xfst,
-	  tools/src/parsers/test/replace_test_31.output,
-	  tools/src/parsers/test/replace_test_31.xfst,
-	  tools/src/parsers/test/replace_test_32.output,
-	  tools/src/parsers/test/replace_test_32.xfst,
-	  tools/src/parsers/test/replace_test_33.output,
-	  tools/src/parsers/test/replace_test_33.xfst,
-	  tools/src/parsers/test/replace_test_34.output,
-	  tools/src/parsers/test/replace_test_34.xfst,
-	  tools/src/parsers/test/replace_test_35.output,
-	  tools/src/parsers/test/replace_test_35.xfst,
-	  tools/src/parsers/test/replace_test_36.output,
-	  tools/src/parsers/test/replace_test_36.xfst,
-	  tools/src/parsers/test/replace_test_37.output,
-	  tools/src/parsers/test/replace_test_37.xfst,
-	  tools/src/parsers/test/replace_test_38.output,
-	  tools/src/parsers/test/replace_test_38.xfst,
-	  tools/src/parsers/test/replace_test_39.output,
-	  tools/src/parsers/test/replace_test_39.xfst,
-	  tools/src/parsers/test/replace_test_4.output,
-	  tools/src/parsers/test/replace_test_4.xfst,
-	  tools/src/parsers/test/replace_test_40.output,
-	  tools/src/parsers/test/replace_test_40.xfst,
-	  tools/src/parsers/test/replace_test_41.output,
-	  tools/src/parsers/test/replace_test_41.xfst,
-	  tools/src/parsers/test/replace_test_42.output,
-	  tools/src/parsers/test/replace_test_42.xfst,
-	  tools/src/parsers/test/replace_test_43.output,
-	  tools/src/parsers/test/replace_test_43.xfst,
-	  tools/src/parsers/test/replace_test_44.output,
-	  tools/src/parsers/test/replace_test_44.xfst,
-	  tools/src/parsers/test/replace_test_45.output,
-	  tools/src/parsers/test/replace_test_45.xfst,
-	  tools/src/parsers/test/replace_test_46.output,
-	  tools/src/parsers/test/replace_test_46.xfst,
-	  tools/src/parsers/test/replace_test_47.output,
-	  tools/src/parsers/test/replace_test_47.xfst,
-	  tools/src/parsers/test/replace_test_48.output,
-	  tools/src/parsers/test/replace_test_48.xfst,
-	  tools/src/parsers/test/replace_test_49.output,
-	  tools/src/parsers/test/replace_test_49.xfst,
-	  tools/src/parsers/test/replace_test_5.output,
-	  tools/src/parsers/test/replace_test_5.xfst,
-	  tools/src/parsers/test/replace_test_50.output,
-	  tools/src/parsers/test/replace_test_50.xfst,
-	  tools/src/parsers/test/replace_test_51.output,
-	  tools/src/parsers/test/replace_test_51.xfst,
-	  tools/src/parsers/test/replace_test_52.output,
-	  tools/src/parsers/test/replace_test_52.xfst,
-	  tools/src/parsers/test/replace_test_53.output,
-	  tools/src/parsers/test/replace_test_53.xfst,
-	  tools/src/parsers/test/replace_test_6.output,
-	  tools/src/parsers/test/replace_test_6.xfst,
-	  tools/src/parsers/test/replace_test_7.output,
-	  tools/src/parsers/test/replace_test_7.xfst,
-	  tools/src/parsers/test/replace_test_8.output,
-	  tools/src/parsers/test/replace_test_8.xfst,
-	  tools/src/parsers/test/replace_test_9.output,
-	  tools/src/parsers/test/replace_test_9.xfst: Use precision 1 in
-	  weighted tests.
-
-2014-03-20 07:16  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Reinstate special ascii tokenization while avoiding shadowing
-	  longer symbols
-
-2014-03-19 16:42  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Disable ascii-lookup when tokenizing
-
-2014-03-19 12:38  eaxelson
-
-	* tools/src/hfst-tagger/src/use_model_src/SequenceModelComponentPair.cc,
-	  tools/src/parsers/test/weighted_optional_replace_right_3.xfst,
-	  tools/src/parsers/test/weighted_replace_right_3.xfst: Set
-	  encode_weights off in tests to make sure that they work also if
-	  it is on.
-
-2014-03-19 10:18  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Fixed a bug in parsing regexps
-	  such as '?:{foo}'.
-
-2014-03-18 18:01  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Make pair notations a bit
-	  more consistent; enable RIGHT_ARROW
-
-2014-03-18 12:20  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy, tools/src/parsers/test/test.sh:
-	  Now incompatible replace types in parallel rules yield an error.
-
-2014-03-18 11:51  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_parallel_rules_10.output,
-	  tools/src/parsers/test/weighted_parallel_rules_10.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_6.output,
-	  tools/src/parsers/test/weighted_parallel_rules_6.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_7.output,
-	  tools/src/parsers/test/weighted_parallel_rules_7.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_8.output,
-	  tools/src/parsers/test/weighted_parallel_rules_8.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_9.output,
-	  tools/src/parsers/test/weighted_parallel_rules_9.xfst: Added
-	  variable 'att-epsilon' to hfst-xfst. Also added more weighted
-	  parallel replace tests.
-
-2014-03-18 06:01  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Now epsilons, identities and
-	  unknowns are printed correctly.
-
-2014-03-17 14:38  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/replace_test_12.output: Fixed a bug in
-	  handling unknowns in hfst-xfst's 'look up'.
-
-2014-03-17 12:29  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_parallel_rules_1.output,
-	  tools/src/parsers/test/weighted_parallel_rules_1.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_2.output,
-	  tools/src/parsers/test/weighted_parallel_rules_2.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_3.output,
-	  tools/src/parsers/test/weighted_parallel_rules_3.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_4.output,
-	  tools/src/parsers/test/weighted_parallel_rules_4.xfst,
-	  tools/src/parsers/test/weighted_parallel_rules_5.output,
-	  tools/src/parsers/test/weighted_parallel_rules_5.xfst: Added more
-	  weighted parallel replace tests.
-
-2014-03-17 12:20  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Allow runtime contexts
-	  anywhere to facilitate some efficiency strategies
-
-2014-03-17 08:07  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/replace_test_46.output,
-	  tools/src/parsers/test/replace_test_46.xfst,
-	  tools/src/parsers/test/replace_test_47.output,
-	  tools/src/parsers/test/replace_test_47.xfst,
-	  tools/src/parsers/test/replace_test_48.output,
-	  tools/src/parsers/test/replace_test_48.xfst,
-	  tools/src/parsers/test/replace_test_49.output,
-	  tools/src/parsers/test/replace_test_49.xfst,
-	  tools/src/parsers/test/replace_test_50.output,
-	  tools/src/parsers/test/replace_test_50.xfst,
-	  tools/src/parsers/test/replace_test_51.output,
-	  tools/src/parsers/test/replace_test_51.xfst,
-	  tools/src/parsers/test/replace_test_52.output,
-	  tools/src/parsers/test/replace_test_52.xfst,
-	  tools/src/parsers/test/replace_test_53.output,
-	  tools/src/parsers/test/replace_test_53.xfst,
-	  tools/src/parsers/test/test.sh: Added rest of the replace tests.
-
-2014-03-14 15:35  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/replace_test_41.output,
-	  tools/src/parsers/test/replace_test_41.xfst,
-	  tools/src/parsers/test/replace_test_42.output,
-	  tools/src/parsers/test/replace_test_42.xfst,
-	  tools/src/parsers/test/replace_test_43.output,
-	  tools/src/parsers/test/replace_test_43.xfst,
-	  tools/src/parsers/test/replace_test_44.output,
-	  tools/src/parsers/test/replace_test_44.xfst,
-	  tools/src/parsers/test/replace_test_45.output,
-	  tools/src/parsers/test/replace_test_45.xfst,
-	  tools/src/parsers/test/replace_test_46.xfst,
-	  tools/src/parsers/test/test.sh: More tests...
-
-2014-03-14 15:19  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/replace_test_27.output,
-	  tools/src/parsers/test/replace_test_27.xfst,
-	  tools/src/parsers/test/replace_test_28.output,
-	  tools/src/parsers/test/replace_test_28.xfst,
-	  tools/src/parsers/test/replace_test_29.output,
-	  tools/src/parsers/test/replace_test_29.xfst,
-	  tools/src/parsers/test/replace_test_30.output,
-	  tools/src/parsers/test/replace_test_30.xfst,
-	  tools/src/parsers/test/replace_test_31.output,
-	  tools/src/parsers/test/replace_test_31.xfst,
-	  tools/src/parsers/test/replace_test_32.output,
-	  tools/src/parsers/test/replace_test_32.xfst,
-	  tools/src/parsers/test/replace_test_33.output,
-	  tools/src/parsers/test/replace_test_33.xfst,
-	  tools/src/parsers/test/replace_test_34.output,
-	  tools/src/parsers/test/replace_test_34.xfst,
-	  tools/src/parsers/test/replace_test_35.output,
-	  tools/src/parsers/test/replace_test_35.xfst,
-	  tools/src/parsers/test/replace_test_36.output,
-	  tools/src/parsers/test/replace_test_36.xfst,
-	  tools/src/parsers/test/replace_test_37.output,
-	  tools/src/parsers/test/replace_test_37.xfst,
-	  tools/src/parsers/test/replace_test_38.output,
-	  tools/src/parsers/test/replace_test_38.xfst,
-	  tools/src/parsers/test/replace_test_39.output,
-	  tools/src/parsers/test/replace_test_39.xfst,
-	  tools/src/parsers/test/replace_test_40.output,
-	  tools/src/parsers/test/replace_test_40.xfst,
-	  tools/src/parsers/test/test.sh: Added more hfst-xfst replace rule
-	  tests.
-
-2014-03-14 13:41  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc: Fixed weights in markup rules
-
-2014-03-14 12:04  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/replace_test_20.output,
-	  tools/src/parsers/test/replace_test_20.xfst,
-	  tools/src/parsers/test/replace_test_21.output,
-	  tools/src/parsers/test/replace_test_21.xfst,
-	  tools/src/parsers/test/replace_test_22.output,
-	  tools/src/parsers/test/replace_test_22.xfst,
-	  tools/src/parsers/test/replace_test_23.output,
-	  tools/src/parsers/test/replace_test_23.xfst,
-	  tools/src/parsers/test/replace_test_24.output,
-	  tools/src/parsers/test/replace_test_24.xfst,
-	  tools/src/parsers/test/replace_test_25.output,
-	  tools/src/parsers/test/replace_test_25.xfst,
-	  tools/src/parsers/test/replace_test_26.output,
-	  tools/src/parsers/test/replace_test_26.xfst,
-	  tools/src/parsers/test/test.sh: Added more tests.
-
-2014-03-14 09:44  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/replace_test_10.output,
-	  tools/src/parsers/test/replace_test_10.xfst,
-	  tools/src/parsers/test/replace_test_11.output,
-	  tools/src/parsers/test/replace_test_11.xfst,
-	  tools/src/parsers/test/replace_test_12.output,
-	  tools/src/parsers/test/replace_test_12.xfst,
-	  tools/src/parsers/test/replace_test_13.output,
-	  tools/src/parsers/test/replace_test_13.xfst,
-	  tools/src/parsers/test/replace_test_14.output,
-	  tools/src/parsers/test/replace_test_14.xfst,
-	  tools/src/parsers/test/replace_test_15.output,
-	  tools/src/parsers/test/replace_test_15.xfst,
-	  tools/src/parsers/test/replace_test_16.output,
-	  tools/src/parsers/test/replace_test_16.xfst,
-	  tools/src/parsers/test/replace_test_17.output,
-	  tools/src/parsers/test/replace_test_17.xfst,
-	  tools/src/parsers/test/replace_test_18.output,
-	  tools/src/parsers/test/replace_test_18.xfst,
-	  tools/src/parsers/test/replace_test_19.output,
-	  tools/src/parsers/test/replace_test_19.xfst,
-	  tools/src/parsers/test/test.sh: Added more replace tests.
-
-2014-03-14 09:18  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/replace_test_.xfst,
-	  tools/src/parsers/test/replace_test_1.output,
-	  tools/src/parsers/test/replace_test_1.xfst,
-	  tools/src/parsers/test/replace_test_10.xfst,
-	  tools/src/parsers/test/replace_test_11.xfst,
-	  tools/src/parsers/test/replace_test_12.xfst,
-	  tools/src/parsers/test/replace_test_13.xfst,
-	  tools/src/parsers/test/replace_test_14.xfst,
-	  tools/src/parsers/test/replace_test_15.xfst,
-	  tools/src/parsers/test/replace_test_16.xfst,
-	  tools/src/parsers/test/replace_test_17.xfst,
-	  tools/src/parsers/test/replace_test_18.xfst,
-	  tools/src/parsers/test/replace_test_19.xfst,
-	  tools/src/parsers/test/replace_test_2.output,
-	  tools/src/parsers/test/replace_test_2.xfst,
-	  tools/src/parsers/test/replace_test_20.xfst,
-	  tools/src/parsers/test/replace_test_21.xfst,
-	  tools/src/parsers/test/replace_test_22.xfst,
-	  tools/src/parsers/test/replace_test_23.xfst,
-	  tools/src/parsers/test/replace_test_24.xfst,
-	  tools/src/parsers/test/replace_test_25.xfst,
-	  tools/src/parsers/test/replace_test_26.xfst,
-	  tools/src/parsers/test/replace_test_27.xfst,
-	  tools/src/parsers/test/replace_test_28.xfst,
-	  tools/src/parsers/test/replace_test_29.xfst,
-	  tools/src/parsers/test/replace_test_3.output,
-	  tools/src/parsers/test/replace_test_3.xfst,
-	  tools/src/parsers/test/replace_test_30.xfst,
-	  tools/src/parsers/test/replace_test_31.xfst,
-	  tools/src/parsers/test/replace_test_32.xfst,
-	  tools/src/parsers/test/replace_test_33.xfst,
-	  tools/src/parsers/test/replace_test_34.xfst,
-	  tools/src/parsers/test/replace_test_35.xfst,
-	  tools/src/parsers/test/replace_test_36.xfst,
-	  tools/src/parsers/test/replace_test_37.xfst,
-	  tools/src/parsers/test/replace_test_38.xfst,
-	  tools/src/parsers/test/replace_test_39.xfst,
-	  tools/src/parsers/test/replace_test_4.output,
-	  tools/src/parsers/test/replace_test_4.xfst,
-	  tools/src/parsers/test/replace_test_40.xfst,
-	  tools/src/parsers/test/replace_test_41.xfst,
-	  tools/src/parsers/test/replace_test_42.xfst,
-	  tools/src/parsers/test/replace_test_43.xfst,
-	  tools/src/parsers/test/replace_test_44.xfst,
-	  tools/src/parsers/test/replace_test_45.xfst,
-	  tools/src/parsers/test/replace_test_46.xfst,
-	  tools/src/parsers/test/replace_test_47.xfst,
-	  tools/src/parsers/test/replace_test_48.xfst,
-	  tools/src/parsers/test/replace_test_49.xfst,
-	  tools/src/parsers/test/replace_test_5.output,
-	  tools/src/parsers/test/replace_test_5.xfst,
-	  tools/src/parsers/test/replace_test_50.xfst,
-	  tools/src/parsers/test/replace_test_51.xfst,
-	  tools/src/parsers/test/replace_test_52.xfst,
-	  tools/src/parsers/test/replace_test_53.xfst,
-	  tools/src/parsers/test/replace_test_6.output,
-	  tools/src/parsers/test/replace_test_6.xfst,
-	  tools/src/parsers/test/replace_test_7.output,
-	  tools/src/parsers/test/replace_test_7.xfst,
-	  tools/src/parsers/test/replace_test_8.output,
-	  tools/src/parsers/test/replace_test_8.xfst,
-	  tools/src/parsers/test/replace_test_9.output,
-	  tools/src/parsers/test/replace_test_9.xfst,
-	  tools/src/parsers/test/replace_tests,
-	  tools/src/parsers/test/test.sh: Added replace tests, not all of
-	  them are yet performed.
-
-2014-03-14 07:50  eaxelson
-
-	* tools/src/parsers/test/replace_tests: Add tentatively new replace
-	  tests.
-
-2014-03-14 07:26  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/contains.output,
-	  tools/src/parsers/test/contains.xfst,
-	  tools/src/parsers/test/contains_once.output,
-	  tools/src/parsers/test/contains_once.xfst,
-	  tools/src/parsers/test/contains_once_optional.output,
-	  tools/src/parsers/test/contains_once_optional.xfst,
-	  tools/src/parsers/test/contains_with_weight.output,
-	  tools/src/parsers/test/contains_with_weight.xfst,
-	  tools/src/parsers/test/test.sh: Added tests for containment
-	  operators.
-
-2014-03-13 14:51  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: A couple of small fixes to
-	  containment operator.
-
-2014-03-13 08:42  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Sorting
-	  arcs before subtraction in TropicalWeightTransducer::subtract.
-
-2014-03-13 08:08  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/parsers/xre_utils.cc: Removed unnecessary
-	  determinization from TropicalWeightTransducer's intersection
-	  function. Added function
-	  HfstTransitionGraph::get_transition_pairs. Made some small
-	  modifications to xre parsers's containment operator.
-
-2014-03-12 15:01  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll: Fix definition of curly
-	  literals
-
-2014-03-12 11:35  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: More PAIR_SEPARATOR fluff
-	  (which should be completely refactored)
-
-2014-03-12 11:24  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  tools/src/hfst-pmatch.cc: Build input scanner without using a
-	  stack guard;
-	  also refactor where runtime behaviour is stored
-
-2014-03-12 10:39  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Added tentatively new functions
-	  for implementing containment in xre parser. Removed
-	  determinization from intersection.
-
-2014-03-07 13:14  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Changed containment operators so
-	  that they also work with transducers that are not automata, i.e.
-	  '$.[a:b]'.
-
-2014-03-07 09:38  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Added
-	  documentation to TropicalWeightTransducer::intersect.
-
-2014-03-06 14:18  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: A simple
-	  stack guard for first-input -collection (only, for now)
-
-2014-03-06 13:08  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Now all containment operators
-	  work, at least with unweighted containment transducers.
-
-2014-03-06 12:26  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Fixed a bug in '$.' operator in
-	  xre parser.
-
-2014-03-06 11:19  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Use a
-	  vector in the prescanner to make it slightly faster
-
-2014-03-06 10:05  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h: Add
-	  class-identifier to friend declarations; required by some
-	  compilers
-
-2014-03-05 14:35  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Remove
-	  extraneous debugging message
-
-2014-03-05 14:23  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: A very
-	  conservative and (for now) computed-at-runtime input prescanner
-
-2014-03-05 13:30  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/empty_context.output,
-	  tools/src/parsers/test/empty_context.xfst,
-	  tools/src/parsers/test/test.sh: Added a test for empty context in
-	  replace rule.
-
-2014-03-05 13:11  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/parsers/xre_parse.yy, tools/src/parsers/hfst-xfst.cc:
-	  Resorting to global variable 'encode_weights' instead of passing
-	  it around as a variable. Allowing empty contexts in replace
-	  rules, i.e. 'a -> b || _ '. Fixed a minor printing issue in
-	  hfst-xfst.
-
-2014-03-04 18:15  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: It's
-	  perhaps a little clearer if is_like_epsilon(epsilon) is false
-
-2014-03-04 16:15  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Fix
-	  bug where conversion from ol to basic transducers was missing
-	  @I.foo@ arcs in some situations
-
-2014-03-04 16:13  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Fix bug
-	  where weights on the insertion arc were being ignored
-
-2014-03-04 16:13  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Log insertions when verbose
-
-2014-03-03 19:50  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/parsers/XfstCompiler.cc: Added variables 'max-weight'
-	  and 'encode-labels' to hfst-xfst.
-
-2014-03-03 18:18  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-	  Tentatively added functions to control label and weight encoding
-	  in weighted minimization. Also added max_weight parameter to
-	  lookup_fd of HfstBasicTransducer.
-
-2014-02-28 09:13  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: Fixed weighting in containment
-	  operators.
-
-2014-02-27 13:42  eaxelson
-
-	* tools/src/parsers/test/weighted_ltr_longest_match_1.xfst,
-	  tools/src/parsers/test/weighted_ltr_longest_match_2.xfst,
-	  tools/src/parsers/test/weighted_ltr_longest_match_3.xfst,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_1.xfst,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_2.xfst,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_3.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_1.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_2.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_3.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_4.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_5.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_6.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_7.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_8.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_9.xfst,
-	  tools/src/parsers/test/weighted_replace_right_1.xfst,
-	  tools/src/parsers/test/weighted_replace_right_2.xfst,
-	  tools/src/parsers/test/weighted_replace_right_3.xfst,
-	  tools/src/parsers/test/weighted_replace_right_4.xfst,
-	  tools/src/parsers/test/weighted_replace_right_5.xfst,
-	  tools/src/parsers/test/weighted_replace_right_6.xfst,
-	  tools/src/parsers/test/weighted_replace_right_7.xfst,
-	  tools/src/parsers/test/weighted_replace_right_8.xfst,
-	  tools/src/parsers/test/weighted_replace_right_9.xfst: Edited xfst
-	  tests.
-
-2014-02-27 13:19  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: Fixed a bug in parsing multiple
-	  parallel replace rules.
-
-2014-02-27 09:34  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/XfstCompiler.cc: Fixed a bug in the contains
-	  one '$.' operator. Improvements to the xfst parser.
-
-2014-02-25 15:10  eaxelson
-
-	* tools/src/hfst-regexp2fst.cc: Updated regexp2fst help message.
-
-2014-02-25 13:49  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Use "" for special parsing
-	  and symbols, {} for tokenizable strings;
-	  also allow "define" alongside "Define"
-	  Future note: consider adding another syntax for "totally bare"
-	  symbols
-	  with no special parsing
-
-2014-02-25 11:49  eaxelson
-
-	* tools/src/parsers/hfst-xfst.cc: Only print prompt in pipe mode if
-	  --verbose is used.
-
-2014-02-21 11:08  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_ltr_longest_match_1.result,
-	  tools/src/parsers/test/weighted_ltr_longest_match_1.xfst,
-	  tools/src/parsers/test/weighted_ltr_longest_match_2.result,
-	  tools/src/parsers/test/weighted_ltr_longest_match_2.xfst,
-	  tools/src/parsers/test/weighted_ltr_longest_match_3.result,
-	  tools/src/parsers/test/weighted_ltr_longest_match_3.xfst,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_1.result,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_1.xfst,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_2.result,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_2.xfst,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_3.result,
-	  tools/src/parsers/test/weighted_ltr_shortest_match_3.xfst: Added
-	  yet more tests for weighted rules.
-
-2014-02-21 10:52  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: Made xre parser ignore weights
-	  in rule contexts. A warning is given in non-silent mode.
-
-2014-02-21 09:45  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_optional_replace_right_8.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_8.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_9.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_9.xfst,
-	  tools/src/parsers/test/weighted_replace_right_8.result,
-	  tools/src/parsers/test/weighted_replace_right_8.xfst,
-	  tools/src/parsers/test/weighted_replace_right_9.result,
-	  tools/src/parsers/test/weighted_replace_right_9.xfst: Added more
-	  tests for weighted replace rules.
-
-2014-02-21 08:38  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_optional_replace_right_1.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_1.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_2.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_2.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_3.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_3.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_4.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_4.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_5.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_5.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_6.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_6.xfst,
-	  tools/src/parsers/test/weighted_optional_replace_right_7.result,
-	  tools/src/parsers/test/weighted_optional_replace_right_7.xfst:
-	  Added optional variants of replace right tests.
-
-2014-02-21 08:15  eaxelson
-
-	* tools/src/parsers/test/test.sh: Forgot to apply weighted_rules ->
-	  weighted_replace_right renaming scheme to test.sh.
-
-2014-02-21 08:14  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/weighted_replace_right_1.result,
-	  tools/src/parsers/test/weighted_replace_right_1.xfst,
-	  tools/src/parsers/test/weighted_replace_right_2.result,
-	  tools/src/parsers/test/weighted_replace_right_2.xfst,
-	  tools/src/parsers/test/weighted_replace_right_3.result,
-	  tools/src/parsers/test/weighted_replace_right_3.xfst,
-	  tools/src/parsers/test/weighted_replace_right_4.result,
-	  tools/src/parsers/test/weighted_replace_right_4.xfst,
-	  tools/src/parsers/test/weighted_replace_right_5.result,
-	  tools/src/parsers/test/weighted_replace_right_5.xfst,
-	  tools/src/parsers/test/weighted_replace_right_6.result,
-	  tools/src/parsers/test/weighted_replace_right_6.xfst,
-	  tools/src/parsers/test/weighted_replace_right_7.result,
-	  tools/src/parsers/test/weighted_replace_right_7.xfst,
-	  tools/src/parsers/test/weighted_rules_1.result,
-	  tools/src/parsers/test/weighted_rules_1.xfst,
-	  tools/src/parsers/test/weighted_rules_2.result,
-	  tools/src/parsers/test/weighted_rules_2.xfst,
-	  tools/src/parsers/test/weighted_rules_3.result,
-	  tools/src/parsers/test/weighted_rules_3.xfst,
-	  tools/src/parsers/test/weighted_rules_4.result,
-	  tools/src/parsers/test/weighted_rules_4.xfst,
-	  tools/src/parsers/test/weighted_rules_5.result,
-	  tools/src/parsers/test/weighted_rules_5.xfst,
-	  tools/src/parsers/test/weighted_rules_6.result,
-	  tools/src/parsers/test/weighted_rules_6.xfst,
-	  tools/src/parsers/test/weighted_rules_7.result,
-	  tools/src/parsers/test/weighted_rules_7.xfst: Renamed
-	  weighted_rules_* to weighted_replace_right_*.
-
-2014-02-21 08:09  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_rules_6.result,
-	  tools/src/parsers/test/weighted_rules_6.xfst,
-	  tools/src/parsers/test/weighted_rules_7.result,
-	  tools/src/parsers/test/weighted_rules_7.xfst: Addded more
-	  weighted rules tests.
-
-2014-02-20 16:47  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/help_message.cc,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Added function
-	  HfstTransducer::is_infinitely_ambiguous() and command 'test
-	  infinitely-ambiguous' in hfst-xfst.
-
-2014-02-20 15:50  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  test/libhfst/test_transducer_functions.cc: Copy the before-seen
-	  states so different paths to the same state don't conflict
-	  Reinstates a skipped test
-
-2014-02-20 15:23  eaxelson
-
-	* tools/src/hfst-summarize.cc: Made hfst-summarize print whether
-	  transducer is infinitely ambiguous in verbose mode.
-
-2014-02-20 14:55  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Fixed a couple
-	  of typos causing errors when calling is_infinitely_ambiguous..
-
-2014-02-20 14:36  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/weighted_rules_1.result,
-	  tools/src/parsers/test/weighted_rules_1.xfst,
-	  tools/src/parsers/test/weighted_rules_2.result,
-	  tools/src/parsers/test/weighted_rules_2.xfst,
-	  tools/src/parsers/test/weighted_rules_3.result,
-	  tools/src/parsers/test/weighted_rules_3.xfst,
-	  tools/src/parsers/test/weighted_rules_4.result,
-	  tools/src/parsers/test/weighted_rules_4.xfst,
-	  tools/src/parsers/test/weighted_rules_5.result,
-	  tools/src/parsers/test/weighted_rules_5.xfst,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Tentatively added function
-	  is_infinitely_ambiguous() to HfstTransitionGraph. Added variables
-	  'lookup-cutoff', 'print-words-cutoff' and 'precision' to
-	  hfst-xfst. Added test cases for weighted rules.
-	  test_transducer_functions now returns a skip value until hfst
-	  optimized lookup transducer's function is_infinitely_ambiguous is
-	  fixed.
-
-2014-02-20 13:42  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc:
-	  A slight followup to the previous commit
-
-2014-02-20 13:06  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc:
-	  Fix stupid bug in tricky control flow part of loop checking
-
-2014-02-20 12:49  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc:
-	  Bugfix: distinguish between transitions and transition indexes
-	  when determining
-	  state equivalence when looking for epsilon loops for a given
-	  input.
-
-2014-02-20 12:30  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Remove extraneous debugging message
-
-2014-02-20 12:22  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Fix
-	  bug where infinite ambiguity checking was polluting the flag
-	  diacritic state
-
-2014-02-20 11:28  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Reorder things so that we should usually run into max_results
-	  before
-	  running into the stack depth
-
-2014-02-20 11:02  hardwick
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Respect result limits and implement a recursion depth guard
-	  so instead of blowing out the stack we discard overlong results
-	  and give a warning message
-
-2014-02-20 10:10  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc:
-	  Rip out empty main test function so there's only one in the ol
-	  compilation unit
-
-2014-02-20 09:42  hardwick
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h: Add
-	  string version of is_lookup_infinitely_ambiguous() to
-	  HfstTransducer api too
-
-2014-02-20 09:34  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/hfst-xfst.cc,
-	  tools/src/parsers/xfst-parser.yy: Added variant
-	  is_lookup_infinitely_ambiguous(const std::string &) in
-	  HfstTransitionGraph which is used in hfst-xfst to check
-	  infinitely ambiguous cases in lookup. Also added a variable
-	  precision in hfst-xfst to control the number of decimals shown.
-
-2014-02-20 09:34  hardwick
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Add a
-	  facility for determining whether a given input produces an
-	  infinitely ambiguous lookup
-
-2014-02-19 10:09  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/xre_parse.yy: Replace rules - weight now
-	  works on both sides, with context.
-
-2014-02-19 07:22  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: Insert special symbols into
-	  ?-containing transducers' alphabets right away,
-	  fixing some incorrect harmonization behaviour
-
-2014-02-18 11:53  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc: Updated weight management in
-	  replace rules
-
-2014-02-17 16:42  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS: Finally ready for release 3.6.1.
-
-2014-02-17 12:52  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  tools/src/hfst-pmatch.cc: Better conflict warnings
-
-2014-02-17 12:47  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Now it is possible to save and
-	  load a stack of transducers in hfst optimized lookup format.
-
-2014-02-17 11:09  eaxelson
-
-	* tools/src/hfst-proc/hfst-proc.cc: Give a more informative error
-	  message if tranducer is not in hfst optimized lookup format in
-	  hfst-proc.
-
-2014-02-14 16:43  eaxelson
-
-	* man/Makefile.am, man/hfst-foma.1: Added hand-written man page for
-	  hfst-foma.
-
-2014-02-14 16:12  eaxelson
-
-	* man/Makefile.am, man/hfst-apertium-proc.1, man/hfst-calculate.1,
-	  man/hfst-compare.1, man/hfst-compose-intersect.1,
-	  man/hfst-compose.1, man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinize.1, man/hfst-disjunct.1,
-	  man/hfst-foma-wrapper.1, man/hfst-format.1, man/hfst-fst2fst.1,
-	  man/hfst-fst2strings.1, man/hfst-fst2txt.1, man/hfst-head.1,
-	  man/hfst-invert.1, man/hfst-lexc-wrapper.1, man/hfst-lexc.1,
-	  man/hfst-lookup.1, man/hfst-minimize.1, man/hfst-name.1,
-	  man/hfst-proc.1, man/hfst-project.1, man/hfst-push-weights.1,
-	  man/hfst-regexp2fst.1, man/hfst-remove-epsilons.1,
-	  man/hfst-repeat.1, man/hfst-reverse.1, man/hfst-split.1,
-	  man/hfst-strings2fst.1, man/hfst-substitute.1,
-	  man/hfst-subtract.1, man/hfst-summarize.1, man/hfst-tail.1,
-	  man/hfst-txt2fst.1, man/hfst-xfst-compiler.1, man/hfst-xfst.1:
-	  Updated man pages.
-
-2014-02-14 13:39  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-proc/Makefile.am: Now
-	  removing symbolic links to command line tools when performing
-	  'make uninstall'.
-
-2014-02-14 11:41  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS: A new candidate for release
-	  3.6.1.
-
-2014-02-14 11:31  eaxelson
-
-	* check_installation/copy-tool-tests.sh: Updated installation
-	  check.
-
-2014-02-14 11:30  eaxelson
-
-	* NSIS/README, NSIS/README.proc.txt, NSIS/copy_files.sh,
-	  NSIS/proc_installer.nsi: Added an installer file for hfst-proc.
-
-2014-02-14 11:26  eaxelson
-
-	* tools/src/hfst-lexc-compiler.cc, tools/src/hfst-lexc-wrapper.cc,
-	  tools/src/hfst-lookup.cc: Edited help messages of lexc and lookup
-	  tools.
-
-2014-02-13 14:47  eaxelson
-
-	* test/tools/basic.zeros-epsilons.lexc.flag.result,
-	  test/tools/check-flag-results.sh,
-	  test/tools/create-flag-results.sh: Made creating and checking
-	  flag results less verbose.
-
-2014-02-13 13:50  eaxelson
-
-	* test/tools/lexc-compiler-functionality.sh: Changed 'return' to
-	  'exit' in shell script.
-
-2014-02-13 13:07  moshagen
-
-	* libhfst/src/parsers, test/libhfst, test/tools,
-	  tools/src/hfst-tagger/src, tools/src/hfst-twolc/test,
-	  tools/src/parsers/test: Ignore generated files.
-
-2014-02-13 13:04  eaxelson
-
-	* NSIS/AddHfstLibrary.nsi, NSIS/copy_files.sh, configure.ac,
-	  swig/setup.py: Updated version numbers in NSIS and swig files.
-	  Also made lexc wrapper disabled by default.
-
-2014-02-13 12:40  eaxelson
-
-	* test/tools/Makefile.am: Fixed a typo.
-
-2014-02-13 12:37  moshagen
-
-	* tools/src/hfst-lookup.cc: Corrected syntax error, typos.
-
-2014-02-13 12:20  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.6.1.
-
-2014-02-13 10:59  eaxelson
-
-	* tools/src/hfst-lookup.cc: Edited help message of hfst-lookup.
-
-2014-02-13 10:32  eaxelson
-
-	* tools/src/hfst-lookup.cc: hfst-lookup now also handles a
-	  transducer archive.
-
-2014-02-13 10:08  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-parser.yy: Added more options to print
-	  (random-)(upper-|lower-)words commands in hfst-xfst.
-
-2014-02-12 09:29  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Fixed a bug in
-	  HfstTransitionGraph::remove_transition and added a test for it.
-
-2014-02-11 15:58  eaxelson
-
-	* libhfst/src/parsers/lexc-lexer.ll, test/tools/Makefile.am,
-	  test/tools/basic.almost-reserved-words.lexc,
-	  test/tools/basic.almost-reserved-words.lexc.flag.result,
-	  test/tools/basic.almost-reserved-words.lexc.result,
-	  test/tools/basic.reserved-words-lowercase.lexc,
-	  test/tools/basic.reserved-words-lowercase.lexc.result,
-	  test/tools/lexc-compiler-functionality.sh,
-	  tools/src/parsers/XfstCompiler.cc: Fixed some reserved words in
-	  lexc parser. Added weights for command 'look up' in hfst-xfst.
-
-2014-02-11 14:16  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h:
-	  Scaled down weights in replace rules.
-
-2014-02-10 11:58  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Lex the left paren in
-	  function calls along with the function name
-	  to make a distinction between a symbol followed by an
-	  optionalized
-	  transducer and a function call
-
-2014-02-10 10:42  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/basic.reserved-words-lowercase.lexc,
-	  test/tools/basic.reserved-words-lowercase.lexc.result,
-	  test/tools/lexc-compiler-functionality.sh: Added a lexc test that
-	  contains reserved words in lowercase. The test does not compile
-	  in the same way as in foma.
-
-2014-02-10 10:28  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  test/tools/hfst.weights.lexc.flag.result,
-	  test/tools/hfst.weights.lexc.result: Lexc weights fixed
-
-2014-02-07 20:53  moshagen
-
-	* tools/src: Ignore generated tool.
-
-2014-02-06 19:05  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/lexc-utils.h, test/tools/Makefile.am,
-	  test/tools/basic.multichar-escaped-zero.lexc.flag.result,
-	  test/tools/basic.multichar-escaped-zero.lexc.result,
-	  test/tools/lexc-compiler-flags-functionality.sh,
-	  test/tools/lexc-compiler-functionality.sh: small lexc bugfix,
-	  tests enabled
-
-2014-02-06 15:28  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: Allow underscore in symbols
-	  (couldn't discover a malignant side effect)
-
-2014-02-06 15:03  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: A lot more expressiveness
-	  involving DefFun()
-
-2014-02-06 11:58  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/lexc-parser.yy,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/lexc-utils.h,
-	  test/tools/basic.multichar-escaped-zero.lexc,
-	  test/tools/lexc-compiler-functionality.sh: Fixed #227 hfst-lexc
-	  and multichars with zeros
-
-2014-02-05 14:21  eaxelson
-
-	* configure.ac, test/tools/lexc-compiler-functionality.sh,
-	  tools/src/hfst-lexc-compiler.cc,
-	  tools/src/parsers/XfstCompiler.cc: Made hfst-xfst use foma's
-	  lexc. hfst-lexc-wrapper is enabled by default.
-
-2014-02-05 10:42  eaxelson
-
-	* NSIS/hfst_installer.nsi: Forgot a couple of includes in hfst
-	  installer.
-
-2014-02-05 02:12  mie
-
-	* tools/src/hfst-reweight.cc: Allow tsv input for reweights
-
-2014-02-04 15:11  eaxelson
-
-	* NSIS/AddHfstLibrary.nsi, NSIS/copy_files.sh: Updated NSIS scripts
-	  to revision 3.6.0.
-
-2014-02-04 10:08  eaxelson
-
-	* libhfst/src/Makefile.am: Forgot to update -version-info in
-	  Makefile.am.
-
-2014-01-31 09:32  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.6.0.
-
-2014-01-30 13:22  eaxelson
-
-	* check_installation/morphology_tests/finnish-analyze.output,
-	  check_installation/morphology_tests/finnish-analyze.output.old:
-	  Edited morphology tests so that they agree with changes in
-	  finnish-analyze.sh.
-
-2014-01-30 12:36  eaxelson
-
-	* back-ends/openfst/src/include/fst/accumulator.h,
-	  back-ends/openfst/src/include/fst/arc-map.h,
-	  back-ends/openfst/src/include/fst/compat.h,
-	  back-ends/openfst/src/include/fst/config.h,
-	  back-ends/openfst/src/include/fst/determinize.h,
-	  back-ends/openfst/src/include/fst/encode.h,
-	  back-ends/openfst/src/include/fst/epsnormalize.h,
-	  back-ends/openfst/src/include/fst/equivalent.h,
-	  back-ends/openfst/src/include/fst/factor-weight.h,
-	  back-ends/openfst/src/include/fst/label-reachable.h,
-	  back-ends/openfst/src/include/fst/relabel.h,
-	  back-ends/openfst/src/include/fst/replace-util.h,
-	  back-ends/openfst/src/include/fst/replace.h,
-	  back-ends/openfst/src/include/fst/rmepsilon.h,
-	  back-ends/openfst/src/include/fst/rmfinalepsilon.h,
-	  back-ends/openfst/src/include/fst/slist.h,
-	  back-ends/openfst/src/include/fst/sparse-tuple-weight.h,
-	  back-ends/openfst/src/include/fst/state-map.h,
-	  back-ends/openfst/src/include/fst/symbol-table-ops.h,
-	  back-ends/openfst/src/include/fst/synchronize.h,
-	  back-ends/openfst/src/include/fst/test-properties.h,
-	  back-ends/openfst/src/include/fst/util.h,
-	  back-ends/openfst/src/lib/compat.cc,
-	  back-ends/openfst/src/lib/flags.cc,
-	  back-ends/openfst/src/lib/fst.cc,
-	  back-ends/openfst/src/lib/properties.cc,
-	  back-ends/openfst/src/lib/symbol-table-ops.cc,
-	  back-ends/openfst/src/lib/symbol-table.cc,
-	  back-ends/openfst/src/lib/util.cc, configure.ac,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Now
-	  checking in configure if tr1::unordered:map/set or
-	  std::unordered_map/set is available.
-
-2014-01-29 12:19  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/HfstXeroxRulesTest.cc: Replace rule longest match bug
-	  fix
-
-2014-01-29 11:23  eaxelson
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/help_message.cc, tools/src/parsers/name2cmd.h,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Now hfst-xfst gives better
-	  error messages if a file cannot be opened. Removed h-files from
-	  SOURCES in tagger Makefile because they confuse some compilers on
-	  Mac.
-
-2014-01-28 17:30  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: A preliminary version of
-	  DefFun(args... and Map(fun, @txt...)
-
-2014-01-28 17:06  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/apply_up.output,
-	  tools/src/parsers/xfst-parser.yy: Now apply up/down are done
-	  using HfstBasicTransducer if the transducer is not in optimized
-	  lookup format, which is relatively fast.
-
-2014-01-28 17:04  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: Removed unnecessary comments.
-
-2014-01-28 15:42  eaxelson
-
-	* tools/src/hfst-lookup.cc, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/abbrcmd.h,
-	  tools/src/parsers/help_message.cc, tools/src/parsers/name2cmd.h,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Added prompt '>' to
-	  hfst-lookup, it can be disabled with option --pipe-mode. Added
-	  command 'convert net' to hfst-xfst to convert between optimized
-	  lookup and standard formats. Now also supporting 'apply up' for
-	  optimized lookup transducers.
-
-2014-01-28 10:10  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc: Removed redundant
-	  declaration of SfstTransducer::harmonize that caused an error on
-	  Mac OS.
-
-2014-01-27 13:39  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/define.xfst,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Added command 'load FILENAME'.
-	  Fixes bug #225. Also allowing a ';' after 'define VARNAME'.
-
-2014-01-27 11:01  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/hfst-xfst.cc,
-	  tools/src/parsers/test/define.att,
-	  tools/src/parsers/test/define.xfst,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Now command 'define foo' is
-	  recognized. Fixes bug #224.
-
-2014-01-24 14:49  eaxelson
-
-	* NSIS/AddHfstLibrary.nsi, NSIS/README, NSIS/README.lexc.txt,
-	  NSIS/README.twolc.txt, NSIS/README.xfst.txt, NSIS/copy_files.sh,
-	  NSIS/hfst.bat, NSIS/hfst_installer.nsi,
-	  NSIS/hfst_python_installer.nsi, NSIS/lexc_installer.nsi,
-	  NSIS/twolc_installer.nsi, NSIS/xfst_installer.nsi: Updated NSIS
-	  files.
-
-2014-01-24 08:54  eaxelson
-
-	* check_installation/test-empty-input.sh,
-	  libhfst/src/HfstFlagDiacritics.h,
-	  test/tools/check-flag-results.sh,
-	  test/tools/create-flag-results.sh, test/tools/empty-input.sh,
-	  tools/src/parsers/test/test.sh: Set permissions of flag check
-	  scripts. Fixed some typos in other tests and in flag diacritic
-	  handling (== instead of = in if condition).
-
-2014-01-23 08:19  eaxelson
-
-	* test/tools/hfst-check-environment.sh,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Added hfst-xfst to the environment, help and version checks.
-
-2014-01-22 14:46  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  tools/src/parsers/test/test.sh: Made minor fixes to tests so that
-	  they work correctly on windows and mac too.
-
-2014-01-17 12:57  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/parsers/xre_parse.yy:
-	  Now HfstInputStream constructor throws an exception if file
-	  cannot be opened. This exception is also handled in the regexp
-	  parser.
-
-2014-01-17 10:06  eaxelson
-
-	* NSIS/lexc_installer.nsi, NSIS/xfst_installer.nsi: Fixed program
-	  naming in NSIS installer.
-
-2014-01-16 16:06  eaxelson
-
-	* configure.ac, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/Makefile.am: Added experimental
-	  options --enable-no-tools and --with-openfst-log to configure.
-
-2014-01-16 12:42  eaxelson
-
-	* tools/src/hfst-lexc-compiler.cc: Removed unnecessary warnings
-	  from hfst-lexc.
-
-2014-01-16 10:33  eaxelson
-
-	* configure.ac: Fixed a typo in configure file, extension should be
-	  1, not 0.
-
-2014-01-15 13:55  eaxelson
-
-	* NSIS/MoveFileFolder.nsh, NSIS/hfst_installer.nsi,
-	  NSIS/lexc_installer.nsi, NSIS/twolc_installer.nsi,
-	  NSIS/xfst_installer.nsi: Fixed a couple of bugs in NSIS
-	  installers.
-
-2014-01-15 11:14  eaxelson
-
-	* back-ends/sfst/compact.cc: Now creating a variable length array
-	  dynamically to avoid compilation errors.
-
-2014-01-14 14:34  eaxelson
-
-	* NSIS/AddHfstLibrary.nsi, NSIS/CheckLibraries.nsi,
-	  NSIS/README.hfst.txt, NSIS/README.lexc.txt,
-	  NSIS/README.twolc.txt, NSIS/README.txt, NSIS/README.xfst.txt,
-	  NSIS/hfst.bat, NSIS/hfst_installer.nsi,
-	  NSIS/hfst_python_installer.nsi, NSIS/lexc_installer.nsi,
-	  NSIS/twolc_installer.nsi, NSIS/xfst_installer.nsi: Added more
-	  NSIS files for xfst, lexc and twolc distributions.
-
-2014-01-14 11:53  eaxelson
-
-	* configure.ac, test/tools/Makefile.am,
-	  test/tools/create-flag-results.sh, test/tools/empty-input.sh,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh,
-	  test/tools/lexc-wrapper-functionality.sh, tools/src/Makefile.am,
-	  tools/src/hfst-lexc-wrapper.cc, tools/src/hfst-lexc.cc,
-	  tools/src/parsers/XfstCompiler.cc: Renamed hfst-lexc2fst to
-	  hfst-lexc and hfst-lexc to hfst-lexc-wrapper.
-
-2014-01-13 14:30  eaxelson
-
-	* NSIS/README.txt, NSIS/ReplaceInFile.nsh, NSIS/hfst_installer.nsi:
-	  Updated a couple of NSIS files.
-
-2014-01-10 15:27  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst.cc: Now att format is printed
-	  directly to the console in windows environment.
-
-2014-01-09 14:11  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-file-to-mem.cc,
-	  tools/src/hfst-string-conversions.cc,
-	  tools/src/hfst-string-conversions.h,
-	  tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/hfst-xfst.cc,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Updated reading and printing
-	  functionalities based on tests in MinGW environment.
-
-2014-01-08 14:17  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: A more reasonable parse
-	  order for weights and special functions;
-	  fixes various bugs concerning weight placement that should be
-	  legal
-
-2013-12-20 14:16  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Added missing
-	  <stack> include to HfstTransitionGrap.h.
-
-2013-12-18 13:45  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/lexc-utils.h, test/tools/Makefile.am,
-	  test/tools/basic.UTF-8.lexc.flag.result,
-	  test/tools/basic.UTF-8.lexc.result,
-	  test/tools/basic.cat-dog-bird.lexc.flag.result,
-	  test/tools/basic.cat-dog-bird.lexc.result,
-	  test/tools/basic.colons.lexc.flag.result,
-	  test/tools/basic.colons.lexc.result,
-	  test/tools/basic.comments.lexc.flag.result,
-	  test/tools/basic.comments.lexc.result,
-	  test/tools/basic.empty-sides.lexc.flag.result,
-	  test/tools/basic.empty-sides.lexc.result,
-	  test/tools/basic.escapes.lexc.flag.result,
-	  test/tools/basic.escapes.lexc.result,
-	  test/tools/basic.infostrings.lexc.flag.result,
-	  test/tools/basic.infostrings.lexc.result,
-	  test/tools/basic.initial-lexicon-empty.lexc.flag.result,
-	  test/tools/basic.initial-lexicon-empty.lexc.result,
-	  test/tools/basic.lowercase-lexicon-end.lexc.flag.result,
-	  test/tools/basic.lowercase-lexicon-end.lexc.result,
-	  test/tools/basic.multi-entry-lines.lexc.flag.result,
-	  test/tools/basic.multi-entry-lines.lexc.result,
-	  test/tools/basic.multichar-symbols.lexc.flag.result,
-	  test/tools/basic.multichar-symbols.lexc.result,
-	  test/tools/basic.no-Root.lexc.flag.result,
-	  test/tools/basic.no-Root.lexc.result,
-	  test/tools/basic.no-newline-at-end.lexc.flag.result,
-	  test/tools/basic.no-newline-at-end.lexc.result,
-	  test/tools/basic.punctuation.lexc.flag.result,
-	  test/tools/basic.punctuation.lexc.result,
-	  test/tools/basic.root-loop.lexc.flag.result,
-	  test/tools/basic.root-loop.lexc.result,
-	  test/tools/basic.spurious-lexicon.lexc.flag.result,
-	  test/tools/basic.spurious-lexicon.lexc.result,
-	  test/tools/basic.string-pairs.lexc.flag.result,
-	  test/tools/basic.string-pairs.lexc.result,
-	  test/tools/basic.two-lexicons.lexc.flag.result,
-	  test/tools/basic.two-lexicons.lexc.result,
-	  test/tools/basic.zeros-epsilons.lexc.flag.result,
-	  test/tools/basic.zeros-epsilons.lexc.result,
-	  test/tools/check-flag-results.sh,
-	  test/tools/create-flag-results.sh,
-	  test/tools/hfst.weights.lexc.flag.result,
-	  test/tools/hfst.weights.lexc.result,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/pmatch-functionality.sh,
-	  test/tools/xre.any-variations.lexc.flag.result,
-	  test/tools/xre.any-variations.lexc.result,
-	  test/tools/xre.automatic-multichar-symbols.lexc.flag.result,
-	  test/tools/xre.automatic-multichar-symbols.lexc.result,
-	  test/tools/xre.basic.lexc.flag.result,
-	  test/tools/xre.basic.lexc.result,
-	  test/tools/xre.definitions.lexc.flag.result,
-	  test/tools/xre.definitions.lexc.result,
-	  test/tools/xre.months.lexc.flag.result,
-	  test/tools/xre.months.lexc.result,
-	  test/tools/xre.nested-definitions.lexc.flag.result,
-	  test/tools/xre.nested-definitions.lexc.result,
-	  test/tools/xre.numeric-star.lexc.flag.result,
-	  test/tools/xre.numeric-star.lexc.result,
-	  test/tools/xre.quotations.lexc.flag.result,
-	  test/tools/xre.quotations.lexc.result,
-	  test/tools/xre.sharp.lexc.flag.result,
-	  test/tools/xre.sharp.lexc.result,
-	  test/tools/xre.star-plus-optional.lexc.flag.result,
-	  test/tools/xre.star-plus-optional.lexc.result: new lexc2fst, with
-	  tests
-
-2013-12-17 14:52  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc: Fixed a bug in
-	  harmonization, now flag diacritics are not harmonized.
-
-2013-12-16 14:19  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_lex.ll, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-pmatch2fst.cc: Transition to weighted,
-	  prioritizing pmatch; recompilation of rulesets
-	  required at least for now
-
-2013-12-16 13:16  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Removed a line
-	  from HfstTransitionGraph::substitute that printed debugging info
-	  to stderr..
-
-2013-12-13 17:19  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Added function
-	  HfstTransitionGraph & HfstTransitionGraph::(std::map<HfstSymbol,
-	  HfstTransitionGraph> &, bool harmonize)
-
-2013-12-09 11:56  eaxelson
-
-	* test/tools/empty-input.sh, tools/src/hfst-affix-guessify.cc,
-	  tools/src/hfst-compare.cc, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-determinize.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-edit-metadata.cc,
-	  tools/src/hfst-expand-equivalences.cc, tools/src/hfst-format.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-grep.cc,
-	  tools/src/hfst-guess.cc, tools/src/hfst-guessify.cc,
-	  tools/src/hfst-head.cc, tools/src/hfst-info.cc,
-	  tools/src/hfst-invert.cc, tools/src/hfst-lexc-compiler.cc,
-	  tools/src/hfst-lexc.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-minimize.cc, tools/src/hfst-multiply.cc,
-	  tools/src/hfst-name.cc, tools/src/hfst-pair-test.cc,
-	  tools/src/hfst-pmatch2fst.cc, tools/src/hfst-project.cc,
-	  tools/src/hfst-prune-alphabet.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-remove-epsilons.cc,
-	  tools/src/hfst-repeat.cc, tools/src/hfst-reverse.cc,
-	  tools/src/hfst-reweight.cc, tools/src/hfst-shuffle.cc,
-	  tools/src/hfst-split.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-subtract.cc,
-	  tools/src/hfst-summarize.cc,
-	  tools/src/hfst-tagger/src/hfst-build-tagger.cc,
-	  tools/src/hfst-tail.cc, tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-txt2fst.cc: Now standard streams are defined as
-	  binary in command line tools when compiling on windows.
-
-2013-12-04 13:13  eaxelson
-
-	* NSIS/README, NSIS/README.txt, NSIS/copy_files.sh,
-	  NSIS/hfst_installer.nsi, swig/README, swig/setup.py,
-	  tools/src/hfst-tagger/src/hfst-train-tagger.bat,
-	  tools/src/hfst-twolc/src/hfst-twolc.bat: Updated batch, NSIS and
-	  swig scripts for windows.
-
-2013-12-02 09:59  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Support \uXXXX with a
-	  codepoint -> utf-8 generator - this should
-	  probably be shared somewhere
-
-2013-12-02 09:58  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.h: Know about uppercase ẞ
-
-2013-11-27 09:01  eaxelson
-
-	* tools/src/hfst-lexc.cc: Do not warn user about using foma type in
-	  hfst-lexc if they have explicitely requested it with --format
-	  foma.
-
-2013-11-27 08:45  eaxelson
-
-	* NSIS/ReplaceInFile.nsh, NSIS/StrRep.nsh, NSIS/hfst_installer.nsi,
-	  test/tools/lexc-functionality.sh, tools/src/hfst-lexc.cc: Now
-	  hfst-lexc obeys argument --format. Fixes bug #213. Also updated
-	  NSIS scripts.
-
-2013-11-21 14:36  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/hfst-train-tagger.bat,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/hfst-twolc/src/hfst-twolc.bat: Updated NSIS script.
-	  Added hfst-twolc and hfst-train-tagger bat files for windows
-	  compilation.
-
-2013-11-20 12:53  eaxelson
-
-	* libhfst/src/parsers/Makefile.am, test/tools/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Distribution package includes
-	  flex/bison-generated cc and hh files. Make check runs tests only
-	  for those command line tools that are enabled.
-
-2013-11-18 13:52  eaxelson
-
-	* configure.ac: Allowing tagger tools in mingw.
-
-2013-11-18 12:29  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Fixed a bug in xfst_getline,
-	  also added freeing the result from it.
-
-2013-11-14 12:08  eaxelson
-
-	* libhfst/src/parsers/xre_utils.cc: Fixed a memory error in
-	  hfst::xre::parse_quoted noticed during make check on MinGW.
-
-2013-11-13 16:30  moshagen
-
-	* NSIS/copy_files.sh: Corrected something that looks like an
-	  accidental omission.
-
-2013-11-13 13:15  eaxelson
-
-	* NSIS/copy_files.sh, back-ends/foma/Makefile.am,
-	  back-ends/foma/lex.lexc.c, back-ends/foma/lex.yy.c,
-	  libhfst/src/parsers/LexcCompiler.cc: Fixed some bugs noticed
-	  during MinGW compilation: added typedef 'off_t' and compiler
-	  definition '__NO_MINGW_LFS' when mings compilation is enabled,
-	  and escaped percent sign in fprintf as double percent. Also added
-	  tagger tools and hfst-xfst to NSIS installer script.
-
-2013-11-11 13:50  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Allow plain input-output
-	  -replacement with tokenized quoted literals,
-	  like "this":"that"
-
-2013-11-11 13:38  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Some refactoring & warn about
-	  unused definitions
-
-2013-11-11 13:00  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am, swig/libhfst.i: Ready for release 3.5.1.
-
-2013-11-11 09:26  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/lexc-lexer.ll, test/libhfst/test_lexc.lexc:
-	  Applied lexc patch (bug #208).
-
-2013-11-11 08:58  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  tools/src/hfst-lexc-compiler.cc: New lexc, but still incomplete
-
-2013-11-08 14:49  eaxelson
-
-	* test/tools/fsmbook-examples: Removed directory fsmbook-examples
-	  as fsmbook-tests replaces it.
-
-2013-11-08 13:50  eaxelson
-
-	* back-ends/foma/fomalib.h, back-ends/foma/lex.interface.c,
-	  back-ends/foma/lex.lexc.c, back-ends/foma/lexc.l,
-	  back-ends/foma/lexcread.c, configure.ac,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/parsers/pmatch_parse.yy, tools/src/hfst-lexc.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-parser.yy: Now using foma's lexc parser in
-	  hfst-xfst by default. Also using verbosity of hfst-xfst and
-	  tagger tools in lexc parsing. Also added an option
-	  --enable-all-tools in configure.
-
-2013-11-04 18:09  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_utils.cc: Use flex's newline count as
-	  good-enough parsing error indicator
-
-2013-11-04 12:21  hardwick
-
-	* tools/src/hfst-pmatch2fst.cc: Actually fixing that bug this time
-
-2013-11-04 12:03  hardwick
-
-	* tools/src/hfst-pmatch2fst.cc: Fix typo-bug in previous commit
-
-2013-11-04 11:57  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc,
-	  tools/src/hfst-pmatch2fst.cc: Much more verbose printing of time
-	  spent on harmonization and conversion &
-	  a speedup the the process of collecting a unified alphabet
-
-2013-11-01 14:26  eaxelson
-
-	* check_installation/check-morphologies.sh,
-	  check_installation/check-tools.sh,
-	  check_installation/copy-tool-tests.sh: Small fixes to
-	  installation check.
-
-2013-10-31 10:33  eaxelson
-
-	* test/tools/pmatch-functionality.sh,
-	  test/tools/proc-functionality.sh: Removed redundant command 'rm
-	  TMP' from pmatch test. Also removed verbose 'skipping some test
-	  cases' print from proc test, returning a skip value 77 is enough.
-
-2013-10-31 08:38  eaxelson
-
-	* check_installation/test-hfst-xfst.sh: Fixed a typo in test
-	  script.
-
-2013-10-30 11:44  eaxelson
-
-	* check_installation/test-hfst-xfst.sh: Changed temporary
-	  transducer name in test-hfst-xfst so that it does not conflict
-	  with any other transducers used in the tests.
-
-2013-10-30 11:18  eaxelson
-
-	* check_installation/check-tools.sh,
-	  check_installation/make-dist.sh: Skipping pmatch_blanks.txt when
-	  creating binary transducers from att files. Also made
-	  check-tools.sh more verbose. Fixed a typo in make-dist.sh.
-
-2013-10-30 11:16  eaxelson
-
-	* back-ends/sfst/fst.cc: Modified the call to 'nodeindexing' in
-	  SFST::Transducer::store as it seems to leave its argument
-	  unchanged sometimes. Noticed this effect when testing hfst-xfst
-	  and getting a segfault when trying to use a stored transducer.
-
-2013-10-30 11:09  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Added
-	  disjunct_as_tries as a public function of
-	  TropicalWeightTransducer.
-
-2013-10-29 11:26  hardwick
-
-	* Makefile.am: Remove ineffectual AM_LDFLAGS line
-
-2013-10-29 10:09  hardwick
-
-	* Makefile.am: Try setting a toplevel LDFLAGS to standardise to the
-	  standards-compliant
-	  libstdc++
-
-2013-10-29 09:46  hardwick
-
-	* test/tools/Makefile.am, test/tools/pmatch-functionality.sh,
-	  test/tools/pmatch_endtag.txt: A pmatch functionality test
-
-2013-10-29 07:16  hardwick
-
-	* libhfst/src/parsers/PmatchCompiler.cc,
-	  libhfst/src/parsers/PmatchCompiler.h,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h, tools/src/hfst-pmatch2fst.cc:
-	  --flatten and make option passing a bit neater
-
-2013-10-29 06:58  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Add DefIns and make LTR
-	  longest the default RIGHTARROW
-
-2013-10-25 10:40  eaxelson
-
-	* swig/setup.py: Added argument 'extra_link_args' to Extension
-	  constructor. By default it is empty, but when making the debian
-	  package it can be replaced by linker flags that make it use
-	  /usr/lib/ instead of /usr/local/lib/.
-
-2013-10-23 20:48  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Print transducer and function
-	  definitions as string pairs in the way they are defined by the
-	  user.
-
-2013-10-23 20:10  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Made print paths observe
-	  whether obey-flags is set ON or OFF.
-
-2013-10-23 14:04  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-parser.yy: Now transducer names are saved.
-
-2013-10-22 20:42  hardwick
-
-	* tools/src/hfst-pmatch.cc: getline() doesn't return a
-	  newline-terminated string if one can't be found;
-	  in this case we mustn't erase the final character.
-
-2013-10-22 09:54  eaxelson
-
-	* ChangeLog: Updated ChangeLog, maybe after a couple of bug fixes
-	  ready to make the actual release..
-
-2013-10-22 09:25  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Added variable
-	  'print-foma-sigma' to the xfst parser.
-
-2013-10-22 06:11  hardwick
-
-	* test/tools/Makefile.am, test/tools/pmatch2fst-functionality.sh,
-	  test/tools/pmatch_blanks.txt: Add a pmatch2fst functionality test
-	  with a regression test
-
-2013-10-22 05:39  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Fix bug wrt unused networks
-	  were getting erased from their container during
-	  iteration, causing other networks to be skipped
-
-2013-10-21 15:46  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.h: A preliminary "true" negative
-	  context facility
-
-2013-10-21 12:54  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/parsers/XfstCompiler.cc: Transducer definitions are
-	  expanded without calling substitute in xre parser, the new way is
-	  faster and less prone to symbol/alphabet errors. Implemented
-	  'print net NET_NAME' in xfst parser. Allowing variable names that
-	  can be parsed as numbers in xfst parser.
-
-2013-10-18 15:12  moshagen
-
-	* tools/src/parsers: Ignore generated files.
-
-2013-10-18 13:28  moshagen
-
-	* scripts: Ignore generated files.
-
-2013-10-18 10:39  eaxelson
-
-	* ChangeLog, NEWS, configure.ac, libhfst/src/Makefile.am: Ready for
-	  release 3.5.0.
-
-2013-10-17 13:56  eaxelson
-
-	* test/tools/fsmbook-tests/Makefile.am,
-	  tools/src/hfst-commandline.cc, tools/src/lexc-readline-ui.cc:
-	  Added missing files in fsmbook-tests to distribution package.
-	  Edited READLINE conditional in hfst-commandline and
-	  lexc-readline-ui.
-
-2013-10-16 14:50  eaxelson
-
-	* scripts/Makefile.am, test/tools/Makefile.am,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-txt2fst.cc,
-	  tools/src/parsers/Makefile.am, tools/src/parsers/hfst-xfst.cc,
-	  tools/src/parsers/test/Makefile.am: Edited help messages of
-	  hfst-fst2txt, hfst-txt2fst and hfst-xfst. Added missing files to
-	  distribution package.
-
-2013-10-16 08:27  eaxelson
-
-	* back-ends/Makefile.am, configure.ac, scripts/Makefile.am,
-	  scripts/hfst-foma.in, scripts/hfst-xfst.in,
-	  test/tools/fsmbook-tests/test.sh, tools/src/parsers/Makefile.am,
-	  tools/src/parsers/hfst-xfst.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh: Renamed hfst-xfst2fst to
-	  hfst-xfst and hfst-xfst to hfst-foma.
-
-2013-10-15 13:36  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Added variable harmonize-flags
-	  to xfst parser. A warning message is printed when composing
-	  transducers with flag diacritics if verbose in ON and
-	  harmonize-flags is OFF.
-
-2013-10-15 12:40  eaxelson
-
-	* configure.ac, libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/tools/Makefile.am, test/tools/cat.prolog,
-	  test/tools/fst2txt-functionality.sh,
-	  test/tools/txt2fst-functionality.sh, tools/src/hfst-fst2txt.cc,
-	  tools/src/parsers/XfstCompiler.cc: Added missing variable
-	  'print-weights' to the XfstCompiler constructor with impl
-	  argument. Added support for prolog format to hfst-fst2txt and a
-	  simple prolog test. Fixed a typo in configure.ac. Removed
-	  unnecessary commented text from HfstTransitionGraph.h.
-
-2013-10-14 15:12  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Added support
-	  for weights when reading of writing in prolog format.
-
-2013-10-14 10:47  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Edited xre warning messages.
-
-2013-10-14 10:16  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Added a boolean argument
-	  'increment' to function 'set_final_weights' which defines whether
-	  existing weights are summed with the new weight or overwritten,
-	  the default being overwritten for backwards compatibility. Also
-	  added warning messages about hfst-special symbols of form
-	  '@_.*_@' to the xre parser that are printed in verbose mode. Also
-	  added support for negative weights in xre parser.
-
-2013-10-10 12:56  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Fix compilation time output
-	  at hundredth-of-a-second precision
-
-2013-10-10 12:49  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Make --verbose output
-	  somewhat neater
-
-2013-10-10 12:33  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Time individual compilations
-
-2013-10-10 10:34  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: More fine-grained
-	  information in --verbose
-
-2013-10-10 10:03  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h, tools/src/hfst-regexp2fst.cc:
-	  Added option --harmonize-flags to hfst-regex2fst. Also added a
-	  function 'set_harmonize_flags' to the xre parser.
-
-2013-10-10 10:01  eaxelson
-
-	* test/tools/fsmbook-tests/expected-results/DateParser.prolog,
-	  test/tools/fsmbook-tests/test.sh: Using result from foma in
-	  DateParser test.
-
-2013-10-10 10:00  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/angle_brackets.att,
-	  tools/src/parsers/test/angle_brackets.xfst,
-	  tools/src/parsers/test/test.sh: Added angle bracket test for
-	  hfst-xfst2fst. Omitting it until we decide how symbols enclosed
-	  in alngle brackets should be handled.
-
-2013-10-10 08:58  moshagen
-
-	* test/tools/fsmbook-tests: Ignore generated files.
-
-2013-10-09 18:50  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Fix some problems wrt
-	  ?-expansion and symbol tables in RTN:d networks
-	  that have to be aware of each other. Also use dark, forbidden
-	  symbol
-	  magicks to prevent special markers in RTNs from being clobbered
-	  in this process.
-
-2013-10-09 18:48  hardwick
-
-	* libhfst/src/HfstTransducer.h: Make harmonize() a public member
-	  function (this changes the interface)!
-	  
-	  It has transpired that application programming in some situations
-	  requires
-	  awareness of symbols at this level, so it seems necessary to make
-	  harmonize() public. If this is considered to be a bad thing,
-	  it could perhaps be wrapped in some other way.
-
-2013-10-08 13:54  eaxelson
-
-	* libhfst/src/parsers/lexc-parser.yy,
-	  test/tools/fsmbook-tests/test.sh: Now lexc parser can handle
-	  epsilon '0' correctly.
-
-2013-10-08 13:12  eaxelson
-
-	* test/tools/fsmbook-tests/expected-results/EsperantoAdjectives.prolog,
-	  test/tools/fsmbook-tests/expected-results/EsperantoNouns.prolog,
-	  test/tools/fsmbook-tests/expected-results/EsperantoNounsAdjectivesAndVerbs.prolog,
-	  test/tools/fsmbook-tests/expected-results/EsperantoNounsAndAdjectives.prolog,
-	  test/tools/fsmbook-tests/expected-results/EsperantoNounsAndAdjectivesWithTags.prolog,
-	  test/tools/fsmbook-tests/test.sh,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-parser.yy: Fixed a bug in xfst parser, now
-	  semicolon is allowed after 'read lexc <filename>' command and
-	  verbosity of the xfst parser is also used when parsing a lexc
-	  file. Also added expected results for fsmbook Esperanto tests.
-
-2013-10-08 10:16  eaxelson
-
-	* configure.ac, test/tools/fsmbook-tests/expected-results,
-	  test/tools/fsmbook-tests/expected-results/BetterColaMachine.prolog,
-	  test/tools/fsmbook-tests/expected-results/BrazilianPortuguese1.prolog,
-	  test/tools/fsmbook-tests/expected-results/BrazilianPortuguese2.prolog,
-	  test/tools/fsmbook-tests/expected-results/DateParser.prolog,
-	  test/tools/fsmbook-tests/expected-results/EinsteinsPuzzle.prolog,
-	  test/tools/fsmbook-tests/expected-results/EnglishNumerals.prolog,
-	  test/tools/fsmbook-tests/expected-results/FinnishOTProsody.prolog,
-	  test/tools/fsmbook-tests/expected-results/Lingala.prolog,
-	  test/tools/fsmbook-tests/expected-results/MonishAnalysis.prolog,
-	  test/tools/fsmbook-tests/expected-results/MonishGuesserAnalyzer.prolog,
-	  test/tools/fsmbook-tests/expected-results/NumbersToNumerals.prolog,
-	  test/tools/fsmbook-tests/expected-results/PlusOrMinus.prolog,
-	  test/tools/fsmbook-tests/expected-results/YaleShooting.prolog,
-	  test/tools/fsmbook-tests/hfst-scripts/DateParser.hfst.script,
-	  test/tools/fsmbook-tests/test.sh: Updated fsmbook tests so that
-	  they use ready-compiled xfst/foma results given in prolog format.
-	  Also fixed a typo in DateParser hfst script. Also checking that
-	  fsmbook-tests and xfst2fst are both enabled in configuration.
-
-2013-10-08 08:50  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  test/tools/fsmbook-tests/test.sh,
-	  tools/src/parsers/test/quoted_literals.att: Fixed a bug in quoted
-	  literals, now ["foo""bar"] is parsed as in xfst: ["foo" "bar"].
-	  Also using foma instead of xfst in fsmbook-tests when compiling
-	  Lingala because different interpretations of symbols enclosed in
-	  square brackets.
-
-2013-10-07 08:43  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  Now xre parser handles "[.#." and ".#.]", interpreting them as "[
-	  .#." and ".#. ]".
-
-2013-10-01 13:16  eaxelson
-
-	* back-ends/foma/Makefile.am, back-ends/foma/fomalib.h,
-	  back-ends/foma/iface.c, back-ends/foma/io.c, configure.ac,
-	  scripts/Makefile.am: Removed unnecessary zlib dependencies.
-
-2013-10-01 11:28  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/HfstXeroxRulesTest.cc: Updated cross product and
-	  apply boundary mark in replace rules.
-
-2013-10-01 10:58  eaxelson
-
-	* tools/src/hfst-scanner.ll: Changed include of hfst-scanner.h to
-	  hfst-scanner.hh.
-
-2013-10-01 10:35  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-lexer.ll, tools/src/parsers/xfst-utils.cc:
-	  Changed include of xfst-parser.h to xfst-parser.hh
-
-2013-09-27 17:58  eaxelson
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Changed
-	  PmatchUtilityTransducers variable utils into a pointer and added
-	  a function get_utils() to avoid variable initialization issues.
-
-2013-09-27 08:03  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstSymbolDefs.cc,
-	  libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: Reverted INTERNAL_EPSILON
-	  etc to internal_epsilon..
-
-2013-09-26 18:27  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Pop the
-	  local state stack too when exiting rtn calls
-
-2013-09-26 14:42  eaxelson
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: Changed internal_epsilon etc
-	  to INTERNAL_EPSILON also in pamtch utilities.
-
-2013-09-26 14:18  eaxelson
-
-	* test/tools/fsmbook-tests/test.sh: Use xfst instead of my local
-	  copy of it..
-
-2013-09-26 14:02  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstSymbolDefs.cc,
-	  libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Now
-	  using macro INTERNAL_EPSILON etc instead of string
-	  internal_epsilon to avoid variable initialization issues (noticed
-	  on cygwin).
-
-2013-09-25 13:53  eaxelson
-
-	* configure.ac, test/tools/Makefile.am,
-	  test/tools/fsmbook-tests/Makefile.am,
-	  test/tools/fsmbook-tests/test.sh, tools/src/Makefile.am,
-	  tools/src/parsers/test/Makefile.am: Now fsmbook and hfst-xfst2fst
-	  tests should work correctly whether they are enabled or not.
-
-2013-09-25 13:20  eaxelson
-
-	* tools/src/Makefile.am: Added condition WANT_XFST2FST to
-	  tools/src/Makefile.am. If it's true, directory parsers is
-	  included.
-
-2013-09-24 16:15  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Make parser even more messy
-	  by having bodyless tagging contexts at the
-	  toplevel - for now
-
-2013-09-24 14:23  eaxelson
-
-	* test/tools/fsmbook-tests/Makefile.am: Added missing file.
-
-2013-09-24 14:06  eaxelson
-
-	* README, configure.ac, scripts/generate-cc-files.sh,
-	  scripts/h2hh.sh, test/tools/Makefile.am,
-	  test/tools/fsmbook-tests/test.sh: Now using directory
-	  fsmbook-tests instead of the old fsmbook-examples. Renamed
-	  h2hh.sh script to generate-cc-files.sh.
-
-2013-09-24 14:02  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Roll back broken
-	  empty-bodied contexts for now
-
-2013-09-24 13:16  eaxelson
-
-	* README, configure.ac, libhfst/src/parsers/Makefile.am,
-	  scripts/h2hh.sh, scripts/multiple_targets.sh,
-	  tools/src/Makefile.am, tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Removed the HH_EXTENSION_USED
-	  conditional from configure and makefiles since it didn't work.
-	  Now assuming that the flex/bison-generated header files have the
-	  extension hh. If this is not the case, the script scripts/h2hh.sh
-	  should be run between configure and make.
-
-2013-09-23 14:25  eaxelson
-
-	* scripts/multiple_targets.sh: Added a script for cygwin
-	  compilation.
-
-2013-09-23 12:45  eaxelson
-
-	* back-ends/foma/iface.c, back-ends/foma/io.c, scripts/h2hh.sh:
-	  Edited ifdef conditionals based on warnings when compiling on
-	  cygwin. Also added a script for handling errors in flex/bison
-	  header file naming.
-
-2013-09-20 07:46  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: HfstTransducer::cross_product
-	  should expand ?:? transitions to ?:?|?, added this but inside
-	  comments until a bug in xerox rule compilation is fixed.
-
-2013-09-20 07:41  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/Lingala.hfst.script,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-scripts/BrazilianPortuguese2.xfst.script:
-	  Fixed a couple of typos.
-
-2013-09-20 07:29  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/quoted_literals.att,
-	  tools/src/parsers/test/quoted_literals.xfst,
-	  tools/src/parsers/test/replace_identity.att,
-	  tools/src/parsers/test/replace_identity.xfst,
-	  tools/src/parsers/test/test.sh: Added more tests to the xfst
-	  parser.
-
-2013-09-19 15:43  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc: Finally full support for quoted
-	  literals in xre parser.
-
-2013-09-19 11:42  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  Tentatively adding quoted literals in xre parsing, this time step
-	  by step..
-
-2013-09-19 10:55  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll: Trying again to make quoted
-	  literals work better in xre parser..
-
-2013-09-19 09:23  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Reverted recent changes to xre
-	  parser, noticed bugs in hfst-regexp2fst..
-
-2013-09-19 08:33  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Symbols that contain quoted
-	  literals supported in xre parser.
-
-2013-09-18 15:19  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Better support for quoted
-	  literals in xre parser.
-
-2013-09-18 12:24  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll: Now allowing '0' in symbol names.
-
-2013-09-18 09:07  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Give verbose information
-	  about networks while parsing
-
-2013-09-17 18:27  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h, tools/src/hfst-pmatch.cc:
-	  Merge from devbranch
-
-2013-09-17 11:53  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.h: Added cstdio header, it isn't
-	  included in cygwin.
-
-2013-09-13 10:47  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h:
-	  Dynamically allocate input tapes in case of overlong input -
-	  in case of insufficient memory, truncate overlong lines.
-
-2013-09-13 10:12  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Don't
-	  attempt to find regular arcs with symbols newly discovered from
-	  input.
-
-2013-09-12 09:11  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh,
-	  test/tools/proc-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh,
-	  tools/src/hfst-compare.cc: Added option --eliminate-flags to
-	  hfst-compare. Commented debug info printing from LexcCompiler
-	  that polluted its output. Edited command line tool tests
-	  accordingly.
-
-2013-09-11 14:42  eaxelson
-
-	* libhfst/src/HfstOutputStream.cc: Fixed a bug in calling
-	  FomaOutputStream.
-
-2013-09-11 12:15  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Added variable print-weight
-	  (default NO).
-
-2013-09-11 10:09  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/parsers/xre_lex.ll, tools/src/hfst-regexp2fst.cc,
-	  tools/src/parsers/test/test.sh: Added examples to hfst-regexp2fst
-	  help message. Now xre parser accepts also semicolon and one or
-	  more spaces as weight separator. Moved flag handling from
-	  FomaTransducer to HfstTransducer as it does not depend on foma
-	  backend.
-
-2013-09-11 07:48  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Restore
-	  tape state after processing rtns; this should fix leftmost
-	  greediness bugs wrt rtns.
-	  Also: do some checking and print errors in case of broken tags
-	  instead of
-	  hard crashing.
-
-2013-09-10 12:29  eaxelson
-
-	* test/tools/compare-functionality.sh,
-	  test/tools/compose-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/fst2txt-functionality.sh,
-	  test/tools/head-functionality.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/lookup-functionality.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/prune-alphabet-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/strings2fst-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/summarize-functionality.sh,
-	  test/tools/tail-functionality.sh,
-	  test/tools/txt2fst-functionality.sh: Now make check passes also
-	  when some of the back-ends is disabled.
-
-2013-09-10 10:21  eaxelson
-
-	* libhfst/src/HfstOutputStream.cc: Output symbol tables were
-	  missing when writing transducers in native OpenFst binary format.
-	  This is now fixed.
-
-2013-09-09 12:41  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc: Cosmetic changes to Xerox rules
-
-2013-09-09 09:58  eaxelson
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-summarize.cc: Removed HH_EXTENSION_USED
-	  conditional from configure as it still fails on some platforms.
-	  Added function HfstTransducer::get_first_input_symbols and using
-	  it in hfst-summarize.
-
-2013-09-06 08:18  eaxelson
-
-	* ChangeLog, NEWS, configure.ac, libhfst/src/Makefile.am,
-	  tools/src/Makefile.am: Ready for release 3.4.6.
-
-2013-09-05 13:57  eaxelson
-
-	* tools/src/parsers/xfst-lexer.ll: Now empty comments starting with
-	  one or more exclamation marks are also parsed right.
-
-2013-09-05 11:58  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-scripts/BrazilianPortuguese2.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/NumbersToNumerals.xfst.script,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-lexer.ll: Fixed errors noticed during
-	  hfst-xfst2fst tests.
-
-2013-09-04 19:13  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: One more special symbol
-	  spelling to rectify...
-
-2013-09-04 12:53  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-scripts/DateParser.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/PlusOrMinus.xfst.script:
-	  Fixed a bug in fsmbook tests.
-
-2013-09-04 12:03  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.h: Forgot to make context
-	  markers non-special too!
-
-2013-09-04 10:40  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.h: Add a couple of useful
-	  combining accents
-
-2013-09-04 10:39  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Use (faster) string
-	  disjunction instead of full disjunction for word lists
-
-2013-09-04 10:07  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: Make only TOP, networks with
-	  EndTag() and networks with Ins() get the special
-	  @PMATCH_ENTRY@ etc. delimiters. This should make various
-	  operations on
-	  networks that don't use these features work.
-
-2013-08-30 13:26  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/Palindromes.hfst.script,
-	  test/tools/fsmbook-tests/lexicon,
-	  test/tools/fsmbook-tests/lexicon/english_lexicon.txt: Added
-	  missing file.
-
-2013-08-30 13:05  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Now allowing
-	  several prolog networks in one file, separated by empty lines.
-
-2013-08-30 10:38  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/DateParser.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-scripts/DateParser.xfst.script:
-	  Added tests to fsmbook test set.
-
-2013-08-29 13:37  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/EinsteinsPuzzle.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/Palindromes.hfst.script,
-	  test/tools/fsmbook-tests/test.sh: Now Palindroms test works.
-
-2013-08-29 11:55  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/EsperantoAdjectives.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNouns.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAdjectivesAndVerbs.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAndAdjectivesWithTags.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-scripts/EsperantoAdjectives.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EsperantoNouns.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EsperantoNounsAdjectivesAndVerbs.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EsperantoNounsAndAdjectives.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EsperantoNounsAndAdjectivesWithTags.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/PlusOrMinus.xfst.script:
-	  Fsmbook test Esperanto is now divided in several script files.
-
-2013-08-28 14:01  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/tools/fsmbook-tests/hfst-scripts/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/Palindromes.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/YaleShooting.hfst.script,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-prolog-to-hfst-att.sh,
-	  test/tools/fsmbook-tests/xfst-scripts/BetterColaMachine.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/BrazilianPortuguese1.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/BrazilianPortuguese2.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/DateParser.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EinsteinsPuzzle.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EnglishNumerals.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/FinnishOTProsody.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/Lingala.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/MonishAnalysis.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/MonishGuesserAnalyzer.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/NumbersToNumerals.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/YaleShooting.xfst.script,
-	  tools/src/hfst-txt2fst.cc: Now using prolog format to convert
-	  between transducer formats in fsmbook tests. Also added the
-	  option --prolog to hfst-txt2fst and fixed a small bug in prolog
-	  parsing in HfstTransitionGraph::read_in_prolog_format.
-
-2013-08-28 08:15  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/BrazilianPortuguese1.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/BrazilianPortuguese2.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EinsteinsPuzzle.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoAdjectives.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNouns.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAdjectivesAndVerbs.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAndAdjectivesWithTags.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/Lingala.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/MonishAnalysis.hfst.script:
-	  Remove generated files in hfst scripts.
-
-2013-08-28 07:22  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Correct internal endtag
-	  format in utils too
-
-2013-08-28 06:50  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Endtags
-	  look like @PMATCH_ENDTAG_foo@, not @PMATCH_ENDTAGfoo@
-
-2013-08-27 13:49  eaxelson
-
-	* test/tools/fsmbook-tests/hfst-scripts/BrazilianPortuguese1.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/BrazilianPortuguese2.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/DateParser.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/Lingala.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/YaleShooting.hfst.script,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-att-to-hfst-att.sh,
-	  test/tools/fsmbook-tests/xfst-prolog-to-hfst-att.sh,
-	  test/tools/fsmbook-tests/xfst-scripts/DateParser.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/FinnishOTProsody.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/Lingala.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/YaleShooting.xfst.script:
-	  Fixed a couple of bugs.
-
-2013-08-27 11:25  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Correct typo that was
-	  suppressing the functioning of CATENATE_N
-
-2013-08-27 10:59  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc: Rename internal symbols not
-	  to match is_special_symbol() to let them
-	  pass through eg. composition operations
-
-2013-08-27 10:52  eaxelson
-
-	* test/tools/fsmbook-examples/test-foma.sh,
-	  test/tools/fsmbook-tests, test/tools/fsmbook-tests/hfst-scripts,
-	  test/tools/fsmbook-tests/hfst-scripts/BetterColaMachine.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/BrazilianPortuguese1.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/BrazilianPortuguese2.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/DateParser.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EinsteinsPuzzle.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoAdjectives.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNouns.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAdjectivesAndVerbs.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/EsperantoNounsAndAdjectivesWithTags.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/Lingala.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/Palindromes.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-tests/hfst-scripts/YaleShooting.hfst.script,
-	  test/tools/fsmbook-tests/lexc-files,
-	  test/tools/fsmbook-tests/lexc-files/EsperantoAdjectives.lexc,
-	  test/tools/fsmbook-tests/lexc-files/EsperantoNouns.lexc,
-	  test/tools/fsmbook-tests/lexc-files/EsperantoNounsAdjectivesAndVerbs.lexc,
-	  test/tools/fsmbook-tests/lexc-files/EsperantoNounsAndAdjectives.lexc,
-	  test/tools/fsmbook-tests/lexc-files/EsperantoNounsAndAdjectivesWithTags.lexc,
-	  test/tools/fsmbook-tests/test.sh,
-	  test/tools/fsmbook-tests/xfst-scripts,
-	  test/tools/fsmbook-tests/xfst-scripts/BetterColaMachine.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/BrazilianPortuguese1.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/BrazilianPortuguese2.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/DateParser.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EinsteinsPuzzle.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/EnglishNumerals.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/FinnishOTProsody.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/Lingala.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/MonishAnalysis.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/MonishGuesserAnalyzer.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/NumbersToNumerals.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/PlusOrMinus.xfst.script,
-	  test/tools/fsmbook-tests/xfst-scripts/YaleShooting.xfst.script:
-	  Added tentatively directory fsmbook-tests which will replace the
-	  directory fsmbook-examples.
-
-2013-08-27 10:45  eaxelson
-
-	* tools/src/parsers/xfst-parser.yy: Added the variant 'write att
-	  outfile isymfile osymfile' of 'write att' to the xfst parser.
-
-2013-08-26 19:13  hardwick
-
-	* configure.ac: A hopefully working test for HH_EXTENSION_USED -
-	  unfortunately it appears
-	  that automake lines not in a make target are included regardless
-
-2013-08-26 18:54  hardwick
-
-	* libhfst/src/parsers/Makefile.am: Eliminate else branch
-
-2013-08-26 18:41  hardwick
-
-	* configure.ac: A better value for the HH_EXTENSION_USED variable?
-
-2013-08-26 14:19  hardwick
-
-	* libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Eliminate references to .h targets
-	  when HH_EXTENSION_USED is unset,
-	  which was perhaps bothering automakes >=1.12
-
-2013-08-26 11:23  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: A (more)
-	  correct understanding of IDENTITY.
-
-2013-08-26 09:57  moshagen
-
-	* libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Switched the *.h - *.hh dependency
-	  around, from *.hh: *.h, to *.h: *.hh. This seems to have fixed
-	  the *.hh build issues on MacOSX. I have no idea whether this will
-	  work or break (on) other systems. Please test!
-
-2013-08-24 11:43  hardwick
-
-	* libhfst/src/parsers/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am: Some systems need to be
-	  told that .ll files depend on .hh files so things get
-	  generated in the right order
-
-2013-08-22 11:01  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/at_pl.att,
-	  tools/src/parsers/test/at_pl.xfst,
-	  tools/src/parsers/test/network.prolog,
-	  tools/src/parsers/test/test.sh: Added '@pl' operator to the xre
-	  parser. Testing it with hfst-xfst.
-
-2013-08-22 07:04  eaxelson
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Fixed the h/hh issue once again,
-	  now trying to copy instead of linking. Also added assertions when
-	  converting from sfst to basic transducer format.
-
-2013-08-21 21:48  moshagen
-
-	* libhfst/src/parsers/Makefile.am: Removed redundant filenames,
-	  added whitespace.
-
-2013-08-21 21:13  moshagen
-
-	* tools/src/hfst-twolc/src/Makefile.am: Changing the BUILT_SOURCES
-	  to list the cc files instead of the hh files seems to fix the
-	  header file issues for twolc.
-
-2013-08-21 09:53  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Some
-	  support for identity transitions
-
-2013-08-21 09:46  eaxelson
-
-	* libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTokenizer.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/HfstStrings2FstTokenizer.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/at_stxt.att,
-	  tools/src/parsers/test/at_stxt.xfst,
-	  tools/src/parsers/test/at_txt.att,
-	  tools/src/parsers/test/at_txt.xfst,
-	  tools/src/parsers/test/at_txt_and_stxt.att,
-	  tools/src/parsers/test/at_txt_and_stxt.xfst,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/words.stxt,
-	  tools/src/parsers/test/words.txt: Implemented '@txt' and '@stxt'
-	  operators in xre parser. Also testing them through the xfst
-	  parser.
-
-2013-08-21 08:50  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Make
-	  the alphabet know about IDENTITY
-
-2013-08-21 08:30  hardwick
-
-	* libhfst/src/parsers/Makefile.am: Uncomprehendingly fill in the
-	  blanks for the LEXC_BUILT target
-
-2013-08-21 05:24  hardwick
-
-	* libhfst/src/HfstTransducer.cc: When composing incompatible types,
-	  instead of throwing an exception,
-	  convert the latter type to the former for composition (as per
-	  hfst-compose's message).
-
-2013-08-21 05:22  hardwick
-
-	* tools/src/Makefile.am: --force symlink to .h/.hh target
-
-2013-08-20 13:16  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Add combining accents to the
-	  end of the capitalizing and lowercase-ifying
-	  utility transducers.
-	  Also more aggressive minimize utility transducers.
-
-2013-08-20 09:47  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Character constants like
-	  \xNN are two hexadecimal numbers, not decimal
-
-2013-08-20 09:39  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll: Allow escaped quotes on quoted
-	  literals
-
-2013-08-20 08:55  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/a2b.re,
-	  tools/src/parsers/test/at_re_1.att,
-	  tools/src/parsers/test/at_re_1.xfst,
-	  tools/src/parsers/test/at_re_2.att,
-	  tools/src/parsers/test/at_re_2.xfst,
-	  tools/src/parsers/test/at_re_3.att,
-	  tools/src/parsers/test/at_re_3.xfst,
-	  tools/src/parsers/test/at_re_a2b.re,
-	  tools/src/parsers/test/test.sh: Implemented '@re' operation in
-	  xre parser. Added test cases for it in the regexp parser tests.
-
-2013-08-19 18:10  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Fix bug
-	  with input tape initialization in certain circumstances.
-	  
-	  When boundary is NO_SYMBOL and input has length 0, we can't use
-	  a loop for finding the true beginning of the tape. This was
-	  causing
-	  segfaults and nasty garbled state for the input tape.
-
-2013-08-16 13:13  eaxelson
-
-	* libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Changed rm -f to ln -s in the
-	  Makefiles when handling the h/hh rules.
-
-2013-08-16 10:19  hardwick
-
-	* tools/src/parsers/Makefile.am: ln instead of mv in .h/.hh rule
-
-2013-08-16 10:09  hardwick
-
-	* tools/src/parsers/Makefile.am: Check for .h/.hh yacc convention
-	  and mv accordingly
-
-2013-08-14 14:08  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Made some modifications to the
-	  xfst print format, removed comments from xfst compiler.
-
-2013-08-14 09:53  eaxelson
-
-	* tools/src/parsers/test/substitute_label_1.att,
-	  tools/src/parsers/test/substitute_label_1.xfst,
-	  tools/src/parsers/test/substitute_label_2.att,
-	  tools/src/parsers/test/substitute_label_2.xfst,
-	  tools/src/parsers/test/substitute_label_3.att,
-	  tools/src/parsers/test/substitute_label_3.xfst,
-	  tools/src/parsers/test/substitute_label_4.att,
-	  tools/src/parsers/test/substitute_label_4.xfst,
-	  tools/src/parsers/test/substitute_label_5.att,
-	  tools/src/parsers/test/substitute_label_5.xfst,
-	  tools/src/parsers/test/substitute_label_6.att,
-	  tools/src/parsers/test/substitute_label_6.xfst,
-	  tools/src/parsers/test/substitute_label_7.att,
-	  tools/src/parsers/test/substitute_label_7.xfst: Added missing
-	  files.
-
-2013-08-13 13:33  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/substitute_defined_1.att,
-	  tools/src/parsers/test/substitute_defined_1.xfst,
-	  tools/src/parsers/test/substitute_defined_2.att,
-	  tools/src/parsers/test/substitute_defined_2.xfst,
-	  tools/src/parsers/test/substitute_defined_3.att,
-	  tools/src/parsers/test/substitute_defined_3.xfst,
-	  tools/src/parsers/test/substitute_defined_4.att,
-	  tools/src/parsers/test/substitute_defined_4.xfst,
-	  tools/src/parsers/test/substitute_defined_5.att,
-	  tools/src/parsers/test/substitute_defined_5.xfst,
-	  tools/src/parsers/test/substitute_defined_6.att,
-	  tools/src/parsers/test/substitute_defined_6.xfst,
-	  tools/src/parsers/test/test.sh: Added substitute defined tests to
-	  xfst parser.
-
-2013-08-13 12:22  sdrobac
-
-	* libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am: Added -f to mv header files
-
-2013-08-13 09:36  eaxelson
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/test.sh: Fixed a bug in converting an
-	  empty foma transducer into an HfstBasicTransducer.
-
-2013-08-12 15:10  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/substitute_label.att,
-	  tools/src/parsers/test/substitute_label.xfst,
-	  tools/src/parsers/test/substitute_label_8.att,
-	  tools/src/parsers/test/substitute_label_8.xfst,
-	  tools/src/parsers/test/test.sh: Added more substitute tests for
-	  xfst parser and fixed some issues with alphabet in substitution
-	  functions.
-
-2013-08-12 13:19  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Fixes bug
-	  with Ins()erted transducers named "name"
-
-2013-08-12 13:12  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Add toplevel delimiters (in
-	  addition to ones associated with EndTags).
-	  Fixes a bug when endtags aren't used but insertions are.
-
-2013-08-12 12:27  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: ToLower, ToUpper and OptCap
-	  made (more) compatible with Karttunen's pmatch
-
-2013-08-12 11:41  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc: Fixed bug in
-	  LexcCompiler.cc, one that was causing wrong compilation of
-	  noflags in cases when there were only identities in lexicon
-
-2013-08-12 10:16  eaxelson
-
-	* tools/src/parsers/test/substitute_symbol.att: Forgot to remove
-	  old test file.
-
-2013-08-12 10:15  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/substitute_symbol.xfst,
-	  tools/src/parsers/test/substitute_symbol_1.att,
-	  tools/src/parsers/test/substitute_symbol_1.xfst,
-	  tools/src/parsers/test/substitute_symbol_2.att,
-	  tools/src/parsers/test/substitute_symbol_2.xfst,
-	  tools/src/parsers/test/substitute_symbol_3.att,
-	  tools/src/parsers/test/substitute_symbol_3.xfst,
-	  tools/src/parsers/test/substitute_symbol_4.att,
-	  tools/src/parsers/test/substitute_symbol_4.xfst,
-	  tools/src/parsers/test/substitute_symbol_5.att,
-	  tools/src/parsers/test/substitute_symbol_5.xfst,
-	  tools/src/parsers/test/substitute_symbol_6.att,
-	  tools/src/parsers/test/substitute_symbol_6.xfst,
-	  tools/src/parsers/test/test.sh: Divided xfst substitute tests to
-	  several files. Fixed a bug in printing unknowns in xfst format.
-
-2013-08-12 08:45  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/substitute_symbol.xfst,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy,
-	  tools/src/parsers/xfst-utils.cc, tools/src/parsers/xfst-utils.h:
-	  Now allowing more variable names.
-
-2013-08-08 14:32  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/substitute_defined.xfst,
-	  tools/src/parsers/test/substitute_label.att,
-	  tools/src/parsers/test/substitute_label.xfst,
-	  tools/src/parsers/test/substitute_symbol.xfst,
-	  tools/src/parsers/test/test.sh: Now substituting symbol with
-	  symbols(s) removes the original symbol from the alphabet.
-
-2013-08-08 09:25  eaxelson
-
-	* libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/substitute_symbol.att,
-	  tools/src/parsers/test/substitute_symbol.xfst: Fixed a bug in xre
-	  substitution: disabled harmonization that caused unknown symbols
-	  to be expanded to temporary variables.
-
-2013-08-07 09:11  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/LexcCompiler.cc: Minor changes to lexc2fst
-	  and xfst rules
-
-2013-08-06 13:35  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Not substituting a symbol pair
-	  with an empty set of symbols removes the transitions equivalent
-	  to the symbol pair.
-
-2013-08-06 11:36  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/substitute_label.att,
-	  tools/src/parsers/test/substitute_label.xfst,
-	  tools/src/parsers/test/substitute_symbol.att,
-	  tools/src/parsers/test/substitute_symbol.xfst,
-	  tools/src/parsers/test/test.sh: Added tests for substitute
-	  functionalities.
-
-2013-08-06 09:29  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/substitute_defined.att,
-	  tools/src/parsers/test/substitute_defined.xfst,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-parser.yy:
-	  Added 'substitute defined' to the xfst parser.
-
-2013-08-05 12:55  eaxelson
-
-	* configure.ac, libhfst/src/parsers/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-twolc/src/Makefile.am: Now
-	  configure checks the version of automake and renames the header
-	  files generated by flex, if needed.
-
-2013-08-05 10:19  eaxelson
-
-	* libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am: Now 'make clean' removes
-	  also files generated by flex/bison.
-
-2013-07-22 17:18  spectre360
-
-	* tools/src/hfst-proc/hfst-proc.cc: capitalisation modes: last on
-	  wins
-
-2013-07-22 13:44  spectre360
-
-	* tools/src/hfst-proc/hfst-proc.cc: update
-
-2013-06-20 11:41  eaxelson
-
-	* tools/src/parsers/test/test.sh: Oops, forgot to exclude xfst
-	  testing from make check..
-
-2013-06-20 11:40  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Added documentation.
-
-2013-06-20 10:23  eaxelson
-
-	* tools/src/parsers/xfst-lexer.ll: Now most of the keywords are
-	  interpreted as such unless they are at the beginning of the line.
-
-2013-06-19 11:29  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/test/test.sh,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Added substitute
-	  functionalities to xfst parser.
-
-2013-06-18 13:47  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Added function
-	  'remove_from_alphabet' to HfstTransitionGraph.
-
-2013-06-17 14:18  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/cmd.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/assert.xfst,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Added command 'assert' to xfst
-	  parser.
-
-2013-06-17 13:15  eaxelson
-
-	* tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/abbrcmd.h, tools/src/parsers/cmd.h,
-	  tools/src/parsers/hfst-xfst2fst.cc: Now all commands are given by
-	  tab if readline is used.
-
-2013-06-17 10:55  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/prolog.att,
-	  tools/src/parsers/test/prolog.xfst,
-	  tools/src/parsers/test/test.sh: Added tests for writing and
-	  reading prolog files in hfst-xfst2fst. Also fixed a small typo in
-	  writing in prolog format.
-
-2013-06-14 13:56  eaxelson
-
-	* back-ends/foma/Makefile.am, back-ends/foma/foma.c,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/hfst-xfst2fst.cc: Removed implicit readline
-	  requirements from hfst-xfst.cc and foma.c. Also edited prolog
-	  functions in HfstTransitionGraph.h.
-
-2013-06-13 13:58  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-parser.yy,
-	  tools/src/parsers/xfst-utils.cc, tools/src/parsers/xfst-utils.h:
-	  Now reading and writing in prolog format works. Also addded some
-	  exceptions for prolog handling.
-
-2013-06-12 13:30  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/help_message.cc,
-	  tools/src/parsers/xfst-parser.yy: Added prolog printing functions
-	  to HfstTransitionGraph.
-
-2013-06-12 13:04  spectre360
-
-	* tools/src/Makefile.am, tools/src/parsers/Makefile.am: more header
-	  renaming (see commit for r3377)
-
-2013-06-12 12:55  spectre360
-
-	* tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/src/scanner2.ll,
-	  tools/src/hfst-twolc/src/scanner3.ll: change header file names --
-	  this will break compatibility with automake < 1.12 see
-	  http://lists.gnu.org/archive/html/automake/2012-09/msg00017.html
-
-2013-06-12 12:34  spectre360
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/xre_lex.ll: changes to names of generated
-	  header files --- pending testing
-
-2013-06-11 13:27  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/help_message.cc: Now apropos and help messages
-	  work in xfst parser.
-
-2013-06-10 13:13  spectre360
-
-	* autogen.sh: bump required versions of automake and libtool
-
-2013-06-10 10:57  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/help_message.cc,
-	  tools/src/parsers/test/test.sh: Ready for release 3.4.5.
-
-2013-06-07 10:49  sdrobac
-
-	* configure.ac, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-utils.h,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/finnish-ot-prosody-test.sh: Solved
-	  bug in replace rules with term complement in context, fsmbook
-	  tests are now completed.
-
-2013-06-07 10:00  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/init_help.cc, tools/src/parsers/name2cmd.h,
-	  tools/src/parsers/xfst_commands.h: Edited help messages.
-
-2013-06-05 11:44  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/init_help.cc: Small fixes to the xfst parser.
-
-2013-06-05 10:45  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/init_help.cc, tools/src/parsers/name2cmd.h,
-	  tools/src/parsers/xfst_commands.h: Additions to apropos and help
-	  commands.
-
-2013-06-04 12:26  eaxelson
-
-	* tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/init_help.cc, tools/src/parsers/name2cmd.h,
-	  tools/src/parsers/xfst_commands.h: Tentatively added enums and
-	  maps for xfst commands.
-
-2013-06-03 12:11  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc: Now using variables
-	  outstream_ etc instead of stdout etc.
-
-2013-06-03 10:46  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Tentatively added commands
-	  'apropos' and 'help' to the xfst parser.
-
-2013-05-31 15:53  mie
-
-	* libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Backport pretty dot files from
-	  that better branch
-
-2013-05-31 12:25  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/inspect_net.alternative_output,
-	  tools/src/parsers/test/inspect_net.output,
-	  tools/src/parsers/test/inspect_net.xfst,
-	  tools/src/parsers/test/test.sh: Added more tests to xfst parser.
-
-2013-05-31 10:19  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/compose_net.xfst,
-	  tools/src/parsers/test/concatenate_net.xfst,
-	  tools/src/parsers/test/define.xfst,
-	  tools/src/parsers/test/define_fail.xfst,
-	  tools/src/parsers/test/define_function.xfst,
-	  tools/src/parsers/test/determinize_net.xfst,
-	  tools/src/parsers/test/epsilon_remove_net.xfst,
-	  tools/src/parsers/test/ignore_net.xfst,
-	  tools/src/parsers/test/intersect_net.xfst,
-	  tools/src/parsers/test/invert_net.xfst,
-	  tools/src/parsers/test/lower_side_net.xfst,
-	  tools/src/parsers/test/minimize_net.xfst,
-	  tools/src/parsers/test/minus_net.xfst,
-	  tools/src/parsers/test/negate_net.xfst,
-	  tools/src/parsers/test/one_plus_net.xfst,
-	  tools/src/parsers/test/print_net.alternative_output,
-	  tools/src/parsers/test/print_net.output,
-	  tools/src/parsers/test/print_net.xfst,
-	  tools/src/parsers/test/reverse_net.xfst,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/union_net.xfst,
-	  tools/src/parsers/test/upper_side_net.xfst,
-	  tools/src/parsers/test/zero_plus_net.xfst: Added new functions
-	  write_in_xfst_format(ostream/FILE*) to class HfstTransitionGraph.
-	  Using it now in the xfst parser when calling 'print net' instead
-	  of write_in_att_format.
-
-2013-05-30 13:11  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/test/test.sh,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Added more documentation to the
-	  xfst parser.
-
-2013-05-30 10:44  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h, tools/src/parsers/test/test.sh:
-	  Added documentation to xfst parser functions. Also fixed a bug in
-	  prompt handling when calling apply up/down.
-
-2013-05-30 09:46  hardwick
-
-	* libhfst/src/parsers/PmatchCompiler.cc,
-	  libhfst/src/parsers/PmatchCompiler.h,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h, tools/src/hfst-pmatch2fst.cc:
-	  Basic size indications in verbose mode
-
-2013-05-29 13:46  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Xfst parser: now apply up and
-	  down work also in pipemode.
-
-2013-05-29 10:14  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/quit-on-fail.xfst,
-	  tools/src/parsers/test/test.sh: Fixed some bugs in the xfst
-	  parser. Now readline/getline is used consistently in the command
-	  line tool and in the actual parser. Also the option quit-on-fail
-	  now works as it should.
-
-2013-05-29 08:57  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy: ToLower() and ToUpper() were
-	  missing from the rule parser
-
-2013-05-28 12:58  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, test/tools/Makefile.am,
-	  test/tools/another_epsilon.txt,
-	  test/tools/substitute-functionality.sh: Substituting symbol A
-	  with B on both levels now correctly removes A from the alphabet.
-
-2013-05-27 21:24  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Occasionally minimize while
-	  collecting large @txt lists (this is a significant
-	  efficiency improvement for those cases)
-
-2013-05-23 13:40  eaxelson
-
-	* configure.ac, tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-lexer.ll:
-	  Fixed a couple of bugs in including back-end libraries noticed
-	  during cygwin compilation.
-
-2013-05-22 12:40  eaxelson
-
-	* test/tools/empty-input.sh, test/tools/hfst-check-help.sh,
-	  test/tools/hfst-check-version.sh: Tests for version and help
-	  checking as well as empty input now check only a set of listed
-	  tools instead of hfst-*.
-
-2013-05-22 11:08  eaxelson
-
-	* tools/src/hfst-file-to-mem.cc, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Commented foma headers from
-	  hfst-file-to-mem.cc. Also fixed a bug in regex parsing in
-	  hfst-xfst2fst.
-
-2013-05-22 09:24  hardwick
-
-	* tools/src/hfst-file-to-mem.cc: Let's use malloc until we figure
-	  out where xxmalloc lives
-	  (and why we want to use it in the first place)?
-
-2013-05-21 08:59  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/xre_utils.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/xfst-parser.yy: Error messages from xre parser
-	  are now handled through the function get_error_message instead of
-	  printing them directly to standard error stream. Also changed
-	  'Transducer' to 'SFST::Transducer' in SfstTransducer tests to
-	  avoid ambiguousness.
-
-2013-05-21 08:00  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Some
-	  header files stil used installed back-end libraries instead of
-	  those in directory 'back-ends'. That is now fixed.
-
-2013-05-20 11:32  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc: Now prefix xre is used when
-	  generating xre parsers. This should fix bug #185.
-
-2013-05-20 10:55  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  test/tools/regexp2fst-functionality.sh,
-	  tools/src/hfst-regexp2fst.cc: Now regex comments can contain
-	  semicolons. Partially fixes bug #177. There is still some
-	  ambiguousness in weighted mode, consider e.g. the input 'cat ;
-	  3'.
-
-2013-05-20 09:25  eaxelson
-
-	* test/tools/regexp2fst-functionality.sh,
-	  tools/src/hfst-file-to-mem.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc: Fixed a bug in function
-	  hfst_file_to_mem, when using stdin.
-
-2013-05-16 13:05  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-utils.h: lex joiner's format changed to
-	  special symbols which do get harmonized
-
-2013-05-16 12:26  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-file-to-mem.cc,
-	  tools/src/hfst-file-to-mem.h, tools/src/hfst-regexp2fst.cc,
-	  tools/src/parsers/Makefile.am,
-	  tools/src/parsers/hfst-xfst2fst.cc: Moved function
-	  hfst_file_to_mem from hfst-xfst2fst.cc as a separate file.
-
-2013-05-16 10:51  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Fixed comment parsing in xre
-	  parser, hfst-regexp2fst still needs some fixing so that
-	  semicolons can be used in comments.
-
-2013-05-15 14:15  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Added facility for inserting
-	  undefined transducers
-	  as long as they are defined later
-
-2013-05-15 13:57  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h:
-	  stringify() can and should take a const parameter
-
-2013-05-15 13:57  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: If no
-	  boundary markers were used, we need to advance the input tape
-	  accordingly to where the real input starts
-
-2013-05-15 13:33  hardwick
-
-	* tools/src/hfst-pmatch.cc: Print newlines after printing match
-	  result
-
-2013-05-15 13:08  hardwick
-
-	* tools/src/hfst-pmatch.cc: Check for nonzero length before trying
-	  to omit final newlines
-
-2013-05-15 13:03  hardwick
-
-	* tools/src/hfst-pmatch.cc: Omit final newlines from input
-
-2013-05-15 11:53  hardwick
-
-	* tools/src/hfst-pmatch.cc: When in newline mode, no need to print
-	  final line because
-	  it's already been printed
-
-2013-05-15 11:48  hardwick
-
-	* tools/src/Makefile.am, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-pmatch.h: Reworking of pmatch tool, added default
-	  of blank line as separator
-
-2013-05-15 11:29  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Tentatively added a function
-	  compile_first to the xre parser that allows compiling onely the
-	  first regex in a string.
-
-2013-05-15 07:45  eaxelson
-
-	* test/tools/symbol-harmonization-functionality.sh,
-	  tools/src/hfst-fst2strings.cc, tools/src/parsers/test/test.sh:
-	  Now hfst-fst2strings obeys the -S flag. Also removing generated
-	  files after make check in xfst parser.
-
-2013-05-14 13:24  eaxelson
-
-	* configure.ac, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Added 'print defined' to xfst
-	  parser. Also temporarily commented the bison > 2.6 request in
-	  configure.ac until bison on hfst gets updated...
-
-2013-05-14 10:03  moshagen
-
-	* configure.ac: Added a test for bison version 3.6+ - now it will
-	  stop if older versions are found. This seems to fix at least one
-	  of the build issues reported.
-
-2013-05-14 09:59  moshagen
-
-	* libhfst/src/parsers: Ignore generated files.
-
-2013-05-14 09:54  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/define_function.att,
-	  tools/src/parsers/test/define_function.xfst,
-	  tools/src/parsers/test/test.sh: Added tests for defining
-	  functions in xfst parser. Also fixed a bug in function
-	  definition.
-
-2013-05-14 06:57  hardwick
-
-	* tools/src/hfst-pmatch2fst.cc: Add diagnostic for rulesets that
-	  don't recognise anything
-
-2013-05-14 06:56  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Avoid compiling transducers
-	  that "recognise" the empty string
-
-2013-05-13 17:30  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: New
-	  insertion arc handling
-
-2013-05-13 17:29  hardwick
-
-	* libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Move
-	  insertion arc checking out of flag diacritic handling after all
-
-2013-05-13 16:13  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  tools/src/hfst-pmatch2fst.cc: Collect and harmonize alphabets
-
-2013-05-13 16:12  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Detect inserted transducers
-	  and only pass them and TOP on from parsing
-
-2013-05-13 16:11  hardwick
-
-	* libhfst/src/HfstFlagDiacritics.cc: Recognise insertion arcs as
-	  flag diacritics
-
-2013-05-13 12:45  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/left-arrow-with-semicolon-many-comments.xre,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/proc-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh: Skipping regexp tests
-	  that do not work. Also added new tests.
-
-2013-05-13 11:14  eaxelson
-
-	* back-ends/foma/Makefile.am, back-ends/foma/lex.yy.c,
-	  back-ends/foma/regex.c, back-ends/foma/regex.h,
-	  back-ends/foma/regex.l, back-ends/foma/regex.tab.c,
-	  back-ends/foma/regex.tab.h: Changed regex.tab.c and regex.tab.h
-	  filenames to regex.c and regex.h because make distclean of some
-	  version of autotools removes tab.c files. Should fix bug #184.
-
-2013-05-13 11:11  sdrobac
-
-	* libhfst/src/parsers/xre_parse.yy: Catenate functions were giving
-	  wrong results, now fixed
-
-2013-05-13 09:38  sdrobac
-
-	* libhfst/src/parsers/LexcCompiler.cc: No flags part now seems to
-	  be working
-
-2013-05-13 08:10  mpsilfve
-
-	* configure.ac: Don't treat automake warnings as errors.
-
-2013-05-13 07:47  eaxelson
-
-	* tools/src/hfst-regexp2fst.cc: Regexps that contained comments
-	  were skipped, now that is fixed. Fixes bug #182.
-
-2013-05-08 14:41  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/xre_lex.ll, tools/src/Makefile.am,
-	  tools/src/hfst-scanner.ll, tools/src/parsers/Makefile.am,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-lexer.ll, tools/src/parsers/xfst-utils.cc:
-	  Reverted back to earlier version.
-
-2013-05-08 14:11  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/xre_lex.ll, tools/src/Makefile.am,
-	  tools/src/hfst-scanner.ll, tools/src/parsers/Makefile.am,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-lexer.ll, tools/src/parsers/xfst-utils.cc:
-	  Changed bison-generated h-files to hh-files. Recent versions of
-	  bison and automake are needed for compilation.
-
-2013-05-08 12:31  eaxelson
-
-	* libhfst/src/HfstApply.cc: Now binary transducer operations don't
-	  modify their second argument. Fixes bug #180.
-
-2013-05-07 14:12  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h: Refactor
-	  ol conversion to allow giving a harmonization hint
-
-2013-05-07 14:09  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/XfstCompiler.cc: Fixed error messages.
-
-2013-05-07 09:46  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_utils.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Fixed error reporting in xre
-	  and xfst parsers.
-
-2013-05-06 13:50  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  libhfst/src/parsers/xre_utils_reentrant.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/test.sh: Now reentrant parsers are used in
-	  all xre parsing.
-
-2013-05-06 13:24  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRulesTest.cc,
-	  test/tools/fsmbook-examples/Makefile.am: Fixed replace rules with
-	  empty languages
-
-2013-05-06 12:45  eaxelson
-
-	* test/tools/id_star_a_b_c.txt: Added missing file.
-
-2013-05-06 11:20  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.reentrant.cc,
-	  libhfst/src/parsers/XreCompiler.reentrant.h,
-	  libhfst/src/parsers/xre_lex.reentrant.ll,
-	  libhfst/src/parsers/xre_lex_reentrant.ll,
-	  libhfst/src/parsers/xre_parse.reentrant.yy,
-	  libhfst/src/parsers/xre_parse_reentrant.yy,
-	  libhfst/src/parsers/xre_utils.reentrant.cc,
-	  libhfst/src/parsers/xre_utils.reentrant.h: Added reentrant
-	  versions of all xre functionalitites.
-
-2013-05-06 09:16  eaxelson
-
-	* libhfst/src/parsers/xre_lex_reentrant.ll,
-	  libhfst/src/parsers/xre_parse_reentrant.yy,
-	  libhfst/src/parsers/xre_utils_reentrant.cc: Tentatively added
-	  reentrant versions of the xre functionalitites.
-
-2013-05-03 14:16  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h: Avoid extraneous copying and
-	  sorting
-
-2013-05-02 18:40  eaxelson
-
-	* test/tools/proc-functionality.sh, tools/src/hfst-regexp2fst.cc:
-	  Now comment lines are correctly parsed by hfst-regexp2fst. Also
-	  added error diagnosticprints to proc test.
-
-2013-05-02 14:27  mpsilfve
-
-	* libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Maybe fixed bison anf lfex header
-	  problem. Revert, if it doesn's work.
-
-2013-05-02 10:54  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_lex.ll,
-	  tools/src/parsers/XfstCompiler.cc: Added more function handling
-	  to xre parser.
-
-2013-04-29 22:39  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc: Fix invert logic and remove
-	  debug print
-
-2013-04-29 15:39  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/test.sh: Added more function handling
-	  mechanisms to xfst and xre parsers.
-
-2013-04-29 11:10  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-parser.yy: Now xfst parser recognizes
-	  function definitions.
-
-2013-04-29 08:08  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Make the
-	  starting position of the input tape be before BOUNDARY_MARKER.
-	  This is to enable referring to the boundary in expressions,
-	  not just contexts. It should gracefully always fail to match and
-	  be ignored in the absence of boundaries in expressions.
-
-2013-04-29 07:19  hardwick
-
-	* libhfst/src/parsers/PmatchCompiler.cc,
-	  libhfst/src/parsers/PmatchCompiler.h,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h, tools/src/hfst-pmatch2fst.cc:
-	  Refactor parsing; rip out tool-specific parts
-	  (and, for the time being, some probably unnecessary control
-	  options)
-
-2013-04-26 12:14  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-parser.yy: Debug printings and rearrange
-	  noflags part to first
-
-2013-04-25 14:45  eaxelson
-
-	* libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/xfst-lexer.ll: xre parser now recognizes
-	  function calls. xfst parser supports command 'source'.
-
-2013-04-25 13:31  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-parser.yy: Add some noflags to parsers
-
-2013-04-25 12:24  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h: Add support for selecting
-	  flagged and composed morphotaxis.
-
-2013-04-25 11:45  eaxelson
-
-	* tools/src/parsers/xfst-lexer.ll: Command 'source' implemented in
-	  xfst parser.
-
-2013-04-25 09:14  moshagen
-
-	* libhfst/src, libhfst/src/implementations,
-	  libhfst/src/implementations/compose_intersect,
-	  libhfst/src/implementations/optimized-lookup,
-	  libhfst/src/parsers, tools/src/hfst-twolc/src: Ignore generated
-	  test logs and reports.
-
-2013-04-25 08:17  moshagen
-
-	* test/tools/left-arrow-with-semicolon-comment.xre,
-	  test/tools/regexp2fst-functionality.sh: Added test case for bug
-	  https://sourceforge.net/p/hfst/bugs/177/ .
-
-2013-04-24 13:33  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-parser.yy: Added symbol substitution to
-	  xfst parser.
-
-2013-04-24 07:29  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Remove use of strndup to fix
-	  bug #175
-
-2013-04-23 14:24  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Added more functions to the
-	  xfst parser.
-
-2013-04-23 09:25  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc: Fix a bug
-	  caused by shifts in the input tape caused by entering left-hand
-	  contexts that weren't being undone.
-	  
-	  The shifting is fundamentally inelegant and should be handled in
-	  a nicer way..
-
-2013-04-22 15:28  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Added more functions to the
-	  xfst parser.
-
-2013-04-22 13:28  eaxelson
-
-	* libhfst/src/HfstExtractStrings.h, libhfst/src/HfstTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-parser.yy: Removed WeightedString classes
-	  as they are replaced by HfstOneLevelPath etc datatypes. Also
-	  added new functions to the xfst parser.
-
-2013-04-19 11:22  eaxelson
-
-	* libhfst/src/HfstEpsilonHandler.cc,
-	  libhfst/src/HfstEpsilonHandler.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/HfstEpsilonHandler.cc, tools/src/HfstEpsilonHandler.h,
-	  tools/src/Makefile.am, tools/src/hfst-lookup.cc: Moved lookup_fd
-	  functionalities in hfst-lookup.cc to HfstTransitionGraph as
-	  member functions. Also moved HfstEpsilonHandler.cc and .h from
-	  tools/src/ to libhfst/src/. Removed is_flag_diacritic from
-	  hfst-lookup.cc and using FdOperation::is_diacritic instead.
-
-2013-04-18 12:54  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Removed
-	  extra code.
-
-2013-04-18 12:46  eaxelson
-
-	* tools/src/HfstEpsilonHandler.cc, tools/src/HfstEpsilonHandler.h,
-	  tools/src/Makefile.am, tools/src/hfst-lookup.cc: Moved
-	  EpsilonHandler from hfst-lookup.cc to HfstEpsilonHandler.h and
-	  .cc.
-
-2013-04-18 10:44  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-lookup.cc: Moved
-	  is_lookup_infinitely_ambiguous(HfstBasicTransducer ...) in
-	  hfst-lookup to member function of HfstTransitionGraph:
-	  is_lookup_infinitely_ambiguous(...).
-
-2013-04-17 12:35  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/Makefile.am, test/tools/fst2strings-functionality.sh,
-	  test/tools/unification_flags_fail.txt: Added flag tests for
-	  hfst-fst2strings.
-
-2013-04-17 12:27  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc: Use ANOTHER_EPSILON for
-	  tokenising
-
-2013-04-17 12:15  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/Makefile.am, test/tools/fst2strings-functionality.sh:
-	  Now option combination --obey-flags --random works in
-	  hfst-fst2strings.
-
-2013-04-17 11:16  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc: Insert epsilons to all
-	  lexicons
-
-2013-04-16 14:18  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc: Maybe align end flags
-
-2013-04-16 12:47  eaxelson
-
-	* libhfst/src/HfstDataTypes.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/parsers/Makefile.am,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/test.sh: Now hfst-xfst warns about
-	  transducer type conversions. The state and arc information should
-	  also be correct.
-
-2013-04-16 09:38  eaxelson
-
-	* tools/src/parsers/test/eliminate_flag.output: Added missing test
-	  file.
-
-2013-04-16 07:01  hardwick
-
-	* libhfst/src/parsers/PmatchCompiler.cc,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Many changes to how utilities
-	  are handled, prepare to move all parsing away
-	  from the hfst-pmatch2fst tool
-
-2013-04-15 12:36  eaxelson
-
-	* back-ends/foma/flags.c, libhfst/src/HfstTransducer.cc,
-	  tools/src/parsers/test/eliminate_flag.xfst: Another bug in flag
-	  elimination fixed. Now flags that are not eliminated are included
-	  in the filter so that they are not blocked.
-
-2013-04-15 11:03  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: 'load stack' didn't print
-	  state and arc info for all transducers, this is now fixed. Should
-	  fix bug #171.
-
-2013-04-15 10:52  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  tools/src/parsers/test/eliminate_flag.xfst: Calling
-	  eliminate_flags for a transducer that has no flags to be filtered
-	  caused a segfault, this is now fixed.
-
-2013-04-15 10:25  eaxelson
-
-	* tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/eliminate_flag.att,
-	  tools/src/parsers/test/eliminate_flag.xfst,
-	  tools/src/parsers/test/eliminate_flags.att,
-	  tools/src/parsers/test/eliminate_flags.xfst,
-	  tools/src/parsers/test/test.sh: Updated eliminate flag tests.
-
-2013-04-11 17:09  mpsilfve
-
-	* tools/src/generate_model_forms.cc, tools/src/guessify_fst.cc:
-	  Fixed a problem with default symbols and harmonization in
-	  compiling guessers.
-
-2013-04-10 12:13  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.4.4.
-
-2013-04-10 09:40  eaxelson
-
-	* test/tools/proc-functionality.sh: Now proc functionality test
-	  proceeds until compounds2.strings would be tested and instead
-	  returns a skip value 77.
-
-2013-04-09 09:17  eaxelson
-
-	* test/tools/Makefile.am: Now tests for tools that are disabled by
-	  default are only carried out if the tools are enabled...
-
-2013-04-09 06:09  eaxelson
-
-	* check_installation/check-tools.sh,
-	  check_installation/copy-tool-tests.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc2fst-stress.sh, test/tools/proc-functionality.sh:
-	  Fixed a couple of bugs noticed when installing HFST on Hippu.
-
-2013-04-09 03:57  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/proc-functionality.sh,
-	  tools/src/parsers/test/Makefile.am: hfst-xfst2fst tests are now
-	  skipped if --enable-xfst2fst is not specified.
-	  lexc-compiler-functionality-sh and proc-functionality.sh also
-	  return a skip value.
-
-2013-04-08 12:41  eaxelson
-
-	* configure.ac, test/tools/proc-functionality.sh,
-	  tools/src/hfst-lexc.cc: Now foma and sfst backends are enabled by
-	  default in configure.
-
-2013-04-08 11:57  eaxelson
-
-	* test/tools/Makefile.am, test/tools/fst2strings-functionality.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh,
-	  test/tools/proc-functionality.sh,
-	  tools/src/hfst-lexc-compiler.cc, tools/src/hfst-lexc.cc: Now
-	  hfst-lexc uses only foma. hfst-lexc2fst tests skipped as
-	  experimental. Flag tests in hfst-fst2strings are also skipped
-	  until flags are thoroughly tested.
-
-2013-04-07 19:02  mpsilfve
-
-	* tools/src/hfst-compose-intersect.cc: Fixed missing parameter in
-	  fprintf in warning message in hfst-compose-intersect. It was
-	  causing a segfault on some systems.
-
-2013-04-05 13:33  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/Makefile.am, test/tools/fst2strings-functionality.sh,
-	  test/tools/unification_flags.txt: At least unification flags are
-	  now handled correctly in hfst-fst2strings.
-
-2013-04-05 11:08  eaxelson
-
-	* libhfst/src/HfstLookupFlagDiacritics.cc,
-	  libhfst/src/HfstLookupFlagDiacritics.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  tools/src/HfstLookupFlagDiacritics.cc,
-	  tools/src/HfstLookupFlagDiacritics.h, tools/src/Makefile.am:
-	  Moved HfstLookupFlagDiacritics functionality from tools/src/ to
-	  libhfst/src/.
-
-2013-04-05 10:28  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-	  Tentatively added HfstTransducer::extract_random_paths_fd. Flags
-	  still need to be processed right.
-
-2013-04-04 08:26  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/infinitely_ambiguous_with_flags.txt,
-	  test/tools/lookup-functionality.sh, tools/src/hfst-lookup.cc: Now
-	  hfst-lookup warns about infinitely ambiguous transducers. Fixes
-	  bug #168.
-
-2013-04-03 14:44  eaxelson
-
-	* test/tools/Makefile.am, tools/src/parsers/test/Makefile.am: Added
-	  missing files to Makefiles noticed during distcheck.
-
-2013-04-03 13:07  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Added warnings to xfst
-	  compiler when using longest-string(-size) with flags.
-
-2013-04-02 16:43  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Tentatively added commands
-	  longest-string and longest-string-size to xfst parser.
-
-2013-04-02 15:32  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Added function
-	  HfstTransitionGraph::longest_string_size.
-
-2013-03-28 13:05  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Tentatively added function
-	  HfstTransitionGraph::top_sort().
-
-2013-03-28 08:56  eaxelson
-
-	* tools/src/hfst-pmatch.cc: Added option --version to hfst-pmatch.
-
-2013-03-27 13:20  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Make sure minimization
-	  always gets done
-
-2013-03-27 12:10  eaxelson
-
-	* libhfst/src/HfstTransducer.h, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/apply_down.output,
-	  tools/src/parsers/test/apply_up.output,
-	  tools/src/parsers/test/apply_up.xfst: Added more test to xfst
-	  parser. Now comments are handled correctly in xfst. Edited
-	  documentation in HfstTransducer.h.
-
-2013-03-27 10:05  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-pmatch2fst.cc: Merge from pmatch dev branch, with
-	  a change related to read_lexc -> read_lexc_ptr.
-
-2013-03-26 14:14  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/apply_down.output,
-	  tools/src/parsers/test/apply_down.xfst,
-	  tools/src/parsers/test/apply_up.output,
-	  tools/src/parsers/test/apply_up.xfst,
-	  tools/src/parsers/test/set_variable.output,
-	  tools/src/parsers/test/set_variable.xfst,
-	  tools/src/parsers/test/test.sh: Now xre parser can parse
-	  expression '{foo}:{bar}' correctly. Also added variable tests to
-	  xfst parser.
-
-2013-03-26 09:33  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/shortest_string.output,
-	  tools/src/parsers/test/shortest_string.xfst,
-	  tools/src/parsers/test/test.sh: Added a test for xfst's
-	  shortest-string. Also fixed a bug in including the epsilon string
-	  in HfstTransducer::extract_paths.
-
-2013-03-25 15:22  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/define.att,
-	  tools/src/parsers/test/define.xfst,
-	  tools/src/parsers/test/define_fail.xfst,
-	  tools/src/parsers/test/test.sh: Added new xfst tests, also added
-	  function HfstTransducer::is_automaton.
-
-2013-03-25 13:33  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-utils.h: Invert lexc flags
-
-2013-03-25 11:49  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/compose_net.xfst,
-	  tools/src/parsers/test/concatenate_net.xfst,
-	  tools/src/parsers/test/determinize_net.xfst,
-	  tools/src/parsers/test/eliminate_flag.xfst,
-	  tools/src/parsers/test/eliminate_flags.xfst,
-	  tools/src/parsers/test/epsilon_remove_net.xfst,
-	  tools/src/parsers/test/ignore_net.xfst,
-	  tools/src/parsers/test/intersect_net.xfst,
-	  tools/src/parsers/test/invert_net.xfst,
-	  tools/src/parsers/test/lower_side_net.xfst,
-	  tools/src/parsers/test/minimize_net.xfst,
-	  tools/src/parsers/test/minus_net.xfst,
-	  tools/src/parsers/test/negate_net.xfst,
-	  tools/src/parsers/test/one_plus_net.xfst,
-	  tools/src/parsers/test/reverse_net.xfst,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/union_net.xfst,
-	  tools/src/parsers/test/upper_side_net.xfst,
-	  tools/src/parsers/test/zero_plus_net.xfst: Renamed again some
-	  testfiles in xfst..
-
-2013-03-25 10:28  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/apply_down.grep,
-	  tools/src/parsers/test/apply_down.output,
-	  tools/src/parsers/test/apply_up.grep,
-	  tools/src/parsers/test/apply_up.output,
-	  tools/src/parsers/test/print_label_tally.grep,
-	  tools/src/parsers/test/print_label_tally.output,
-	  tools/src/parsers/test/print_labels.grep,
-	  tools/src/parsers/test/print_labels.output,
-	  tools/src/parsers/test/print_stack.grep,
-	  tools/src/parsers/test/print_stack.output,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/test_false.grep,
-	  tools/src/parsers/test/test_false.output,
-	  tools/src/parsers/test/test_true.grep,
-	  tools/src/parsers/test/test_true.output: Edited xfst tests.
-
-2013-03-22 15:22  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/parsers/XfstCompiler.cc: Documented flag elimination
-	  function. Fixed some bugs in using transducer definitions.
-
-2013-03-22 10:16  eaxelson
-
-	* tools/src/hfst-lexc-compiler.cc,
-	  tools/src/parsers/test/eliminate_flag.xfst,
-	  tools/src/parsers/test/eliminate_flags.att,
-	  tools/src/parsers/test/eliminate_flags.xfst,
-	  tools/src/parsers/test/test.sh: Added a new test for flag
-	  elimination.
-
-2013-03-21 14:28  eaxelson
-
-	* libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstTransducer.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/eliminate_flag.att,
-	  tools/src/parsers/test/eliminate_flag.xfst,
-	  tools/src/parsers/test/eliminate_flags.att,
-	  tools/src/parsers/test/eliminate_flags.xfst,
-	  tools/src/parsers/test/test.sh: Added tests for xfst parser's
-	  function eliminate flags.
-
-2013-03-21 13:51  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  tools/src/parsers/XfstCompiler.cc: Wrote more flag elimination
-	  functionalitites.
-
-2013-03-21 09:48  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test61,
-	  tools/src/hfst-twolc/test/test61.txt_fst: Added x: center rules
-	  and tests for them.
-
-2013-03-21 09:21  mpsilfve
-
-	* tools/src/hfst-twolc/src/commandline_src/CommandLine.cc,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.h,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRuleContainer.h,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.h: Restored long
-	  option name --resolve.
-
-2013-03-21 08:36  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy: Fixed problem where
-	  definitions in pair expression were caught too late which
-	  resulted in weird syntax warnings.
-
-2013-03-20 15:25  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/lexc-utils.h: Maybe use flags instead of
-	  joiners in legacy lexc compilation.
-
-2013-03-20 15:03  eaxelson
-
-	* back-ends/foma/flags.c, back-ends/foma/fomalib.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/parsers/XfstCompiler.cc: Started implementing flag
-	  elimination function.
-
-2013-03-18 14:47  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/print_label_tally.grep,
-	  tools/src/parsers/test/print_label_tally.xfst,
-	  tools/src/parsers/test/test.sh: Added new functions to xfst
-	  parser.
-
-2013-03-18 10:37  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/print_labels.grep,
-	  tools/src/parsers/test/print_labels.xfst,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/test_false.grep,
-	  tools/src/parsers/test/test_overlap_false.xfst,
-	  tools/src/parsers/test/test_overlap_true.xfst,
-	  tools/src/parsers/test/test_sublanguage_false.xfst,
-	  tools/src/parsers/test/test_sublanguage_true.xfst,
-	  tools/src/parsers/test/test_true.grep,
-	  tools/src/parsers/xfst-lexer.ll: Added new test for xfst parser.
-
-2013-03-15 12:01  eaxelson
-
-	* tools/src/parsers/test/test.sh: Set property executable ON:
-	  test.sh.
-
-2013-03-15 09:02  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Again doing flag diacritic filtering in flag diacritic
-	  harmonization, since it turned out not to be a problem after all.
-
-2013-03-14 21:36  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: insert_freely_missing_flags(...)
-	  no longer uses insert_freely(...) becauses successive invocations
-	  of insert_freely without intervening minimizations cause
-	  exponential state growth.
-
-2013-03-14 19:57  mpsilfve
-
-	* tools/src/hfst-compose.cc: compose-call in hfst-compose now does
-	  flag filtering only if flag harmonization was done
-
-2013-03-14 15:04  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  tools/src/hfst-compose.cc: Changes that permit new filtering of
-	  illegal flag paths hopefully wothout affecting performance.
-
-2013-03-14 15:03  eaxelson
-
-	* tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/apply_down.grep,
-	  tools/src/parsers/test/apply_down.xfst,
-	  tools/src/parsers/test/apply_up.grep,
-	  tools/src/parsers/test/apply_up.xfst,
-	  tools/src/parsers/test/print_stack.grep,
-	  tools/src/parsers/test/print_stack.xfst,
-	  tools/src/parsers/test/test.sh: Added more tests for xfst.
-
-2013-03-14 14:14  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/determinize_net.att,
-	  tools/src/parsers/test/determinize_net.xfst,
-	  tools/src/parsers/test/epsilon_remove_net.att,
-	  tools/src/parsers/test/epsilon_remove_net.xfst,
-	  tools/src/parsers/test/lower_side_net.att,
-	  tools/src/parsers/test/lower_side_net.xfst,
-	  tools/src/parsers/test/minimize_net.att,
-	  tools/src/parsers/test/minimize_net.xfst,
-	  tools/src/parsers/test/negate_net.att,
-	  tools/src/parsers/test/negate_net.xfst,
-	  tools/src/parsers/test/one_plus_net.att,
-	  tools/src/parsers/test/one_plus_net.xfst,
-	  tools/src/parsers/test/reverse_net.att,
-	  tools/src/parsers/test/reverse_net.xfst,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/upper_side_net.att,
-	  tools/src/parsers/test/upper_side_net.xfst,
-	  tools/src/parsers/test/zero_plus_net.att,
-	  tools/src/parsers/test/zero_plus_net.xfst,
-	  tools/src/parsers/xfst-parser.yy: Added more tests for xfst
-	  parser.
-
-2013-03-14 11:29  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc: Now readline is disabled by
-	  default in xfst parser unless configure is run with
-	  --with-readline.
-
-2013-03-14 09:53  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, tools/src/parsers/XfstCompiler.cc:
-	  Changed 'HFST_THROW' into 'HFST_THROW_MESSAGE' in
-	  HfstTransducer::eliminate_flag(s). Should fix bug #163.
-
-2013-03-13 13:36  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Renamed some of the functions
-	  in xfst parser.
-
-2013-03-13 11:22  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Now readline history of
-	  'inspect net' is ignored when returning from 'inspect net'.
-
-2013-03-12 15:45  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Commented code.
-
-2013-03-12 14:55  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: Now 'inspect net' should work
-	  for all cases.
-
-2013-03-12 13:09  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Tentatively added 'inspect net'
-	  to xfst parser.
-
-2013-03-11 14:10  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Edited XfstCompiler
-
-2013-03-11 11:58  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/intersect_net.att,
-	  tools/src/parsers/test/intersect_net.xfst,
-	  tools/src/parsers/test/minus_net.att,
-	  tools/src/parsers/test/minus_net.xfst,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-parser.yy:
-	  Added new tests to xfst parser and implemented interactive lookup
-	  mode.
-
-2013-03-11 09:28  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/compose_net.att,
-	  tools/src/parsers/test/compose_net.xfst,
-	  tools/src/parsers/test/concatenate_net.att,
-	  tools/src/parsers/test/concatenate_net.xfst,
-	  tools/src/parsers/test/ignore_net.att,
-	  tools/src/parsers/test/ignore_net.xfst,
-	  tools/src/parsers/test/invert_net.att,
-	  tools/src/parsers/test/invert_net.xfst,
-	  tools/src/parsers/test/test.sh,
-	  tools/src/parsers/test/union_net.att,
-	  tools/src/parsers/test/union_net.xfst,
-	  tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy,
-	  tools/src/parsers/xfst_commands: Added more tests to xfst parser.
-
-2013-03-07 12:44  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/compose_net.att,
-	  tools/src/parsers/test/compose_net.xfst,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst_commands:
-	  Tentatively added functions HfstTransducer::eliminate_flag(s).
-	  Added function 'compose_net' to xfst parser.
-
-2013-03-06 20:17  eaxelson
-
-	* back-ends/foma/apply.c, back-ends/foma/constructions.c,
-	  back-ends/foma/foma.c, back-ends/foma/foma.h,
-	  back-ends/foma/fomalib.h, back-ends/foma/fomalibconf.h,
-	  back-ends/foma/iface.c, back-ends/foma/lex.cmatrix.c,
-	  back-ends/foma/lex.interface.c, back-ends/foma/lex.lexc.c,
-	  back-ends/foma/lex.yy.c, back-ends/foma/lexc.l,
-	  back-ends/foma/regex.l, back-ends/foma/regex.tab.c,
-	  back-ends/foma/regex.y, back-ends/foma/rewrite.c,
-	  back-ends/foma/sigma.c, back-ends/foma/spelling.c,
-	  test/tools/symbol-harmonization-functionality.sh: Updated to foma
-	  version 0.9.17.
-
-2013-03-06 12:51  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: Added test for
-	  HfstTransducer::remove_from_alphabet.
-
-2013-03-05 15:49  mpsilfve
-
-	* libhfst/src/HfstTransducer.h: Changed bool static
-	  is_safe_conversion(...) to static bool is_safe_conversion(...)
-	  because syntax error.
-
-2013-03-05 10:55  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: Now regex parser substitution
-	  does not add substituting symbols to the alphabet of the
-	  transducer to be substituted. It is not needed anymore since
-	  there is a parameter 'harmonize' in
-	  HfstTransducer::substitute(StringPair&, HfstTransducer&).
-
-2013-03-04 11:25  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-fst2strings.cc: Now HfstTransducer::n_best throws
-	  an HfstFatalException if OpenFst fails to allocate enough memory.
-	  Kind of fixes bug #159.
-
-2013-03-04 10:22  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  test/tools/symbol-harmonization-functionality.sh,
-	  tools/src/hfst-regexp2fst.cc, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/test/test.sh: Now hfst-regexp2fst and
-	  hfst-xfst2fst both give a warning message if the user writes a
-	  replace rule that contains special symbols.
-
-2013-03-03 21:45  eaxelson
-
-	* test/tools/symbol-harmonization-functionality.sh: Added more
-	  symbol harmonization tests.
-
-2013-03-03 13:46  eaxelson
-
-	* libhfst/src/parsers/xre_utils.cc,
-	  test/tools/symbol-harmonization-functionality.sh: Commented code.
-
-2013-03-03 13:19  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  test/tools/symbol-harmonization-functionality.sh: Now the regex
-	  parser parses [x:?] so that it includes the transition [x:x].
-	  This also happens in xfst and foma.
-
-2013-03-03 11:41  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/symbol-harmonization-functionality.sh: Now regex
-	  parser interprets ?:? in the same way as xfst or foma, i.e. as
-	  unknown-to-unknown OR identity-to-identity.
-
-2013-03-02 13:02  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  test/tools/compare-functionality.sh,
-	  test/tools/symbol-harmonization-functionality.sh,
-	  tools/src/parsers/commands.help, tools/src/parsers/foma_commands,
-	  tools/src/parsers/foma_commands.help,
-	  tools/src/parsers/xfst_commands,
-	  tools/src/parsers/xfst_commands.help: Implemented substitution
-	  with an empty set in regex parser.
-
-2013-03-01 14:54  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy: Fixed hfst-twolc.bug
-	  which inserted all diacritics into the first set that was
-	  declared.
-
-2013-03-01 10:17  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  test/tools/symbol-harmonization-functionality.sh: Now xre parser
-	  never performs harmonization in substitution or ignoring.
-
-2013-03-01 10:02  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  test/tools/symbol-harmonization-functionality.sh: Fixed a bug in
-	  xre substitution.
-
-2013-02-28 22:59  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  test/tools/symbol-harmonization-functionality.sh,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h: Added
-	  a bool parameter to control harmonization in
-	  HfstTransducer::substitute(SymbolPair, HfstTransducer). Fixed xre
-	  parser so that it doesn't harmonize when performing substitution.
-	  Also changed call to substitute function in twolc but preserved
-	  the harmonization.
-
-2013-02-28 21:18  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/HfstXeroxRulesTest.cc,
-	  test/tools/symbol-harmonization-functionality.sh: Now binary
-	  operations never harmonize special symbols of form @_.*_ at . To
-	  make xerox rules work, the marker symbols @_SOME_MARKER_@ had to
-	  be changed to @SOME_MARKER@ so that they get harmonized as they
-	  did earlier.
-
-2013-02-28 12:30  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/parsers/xre_parse.yy:
-	  Now insert_freely also takes a parameter that tells whether
-	  harmonization is carried out.
-
-2013-02-28 11:55  eaxelson
-
-	* test/tools/symbol-harmonization-functionality.sh,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-subtract.cc: Now there
-	  is an option --do-not-harmonize for all binary command line
-	  tools.
-
-2013-02-28 11:32  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  test/tools/symbol-harmonization-functionality.sh,
-	  tools/src/hfst-concatenate.cc: Fixed some bugs in harmonization.
-
-2013-02-27 17:02  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h: Fixed
-	  missing bool parameter problem.
-
-2013-02-27 16:14  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc, test/tools/Makefile.am,
-	  test/tools/a_or_id.txt, test/tools/compare-functionality.sh,
-	  test/tools/symbol-harmonization-functionality.sh,
-	  tools/src/hfst-compare.cc, tools/src/hfst-regexp2fst.cc: Added a
-	  flag -H to hfst-compare and hfst-regexp2fst that turns off
-	  unknown harmonization.
-
-2013-02-27 13:37  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  test/tools/Makefile.am, test/tools/a2a_or_a2b_or_a2unk.txt,
-	  test/tools/a2b_or_b2b_or_unk2b.txt,
-	  test/tools/symbol-harmonization-functionality.sh,
-	  test/tools/unk2unk_or_id.txt, tools/src/hfst-compose.cc: Added a
-	  bool argument to binary transducer functions that controls
-	  whether harmonization is carried out. Also added harmonization
-	  tests.
-
-2013-02-26 14:06  eaxelson
-
-	* back-ends/foma/lex.lexc.c, back-ends/foma/lexc.l,
-	  back-ends/foma/lexcread.c,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh, tools/src/hfst-lexc.cc: Now
-	  hfst-lexc writes all messages to stderr. Fixes bug #68.
-
-2013-02-26 10:25  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc: Now
-	  FomaTransducer::define_transducer(symbol1, symbol2) works also if
-	  symbol1 == symbol2 == identity. Fixes bug #110.
-
-2013-02-26 09:42  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h: SfstTransducer.h no
-	  longer uses generic word 'Transducer'. Fixes bug #130.
-
-2013-02-26 09:19  eaxelson
-
-	* tools/src/HfstCompiler.cc, tools/src/HfstCompiler.h,
-	  tools/src/hfst-compiler.yy: Now hfst-sfstpl2fst finds included
-	  files in the same directory where its input file is located.
-	  Fixes bug #145.
-
-2013-02-26 08:25  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, tools/src/hfst-fst2txt.cc: Now
-	  hfst-fst2txt prints an error message instead of segfaulting when
-	  given an input stream whose transducers do not have the same
-	  type. Fixes bug #115.
-
-2013-02-25 15:58  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc: Implemented functions
-	  number_of_states and number_of_arcs.
-
-2013-02-25 13:52  moshagen
-
-	* test/tools/fsmbook-examples/Lingala, tools/src/parsers: Ignore
-	  generated files.
-
-2013-02-25 13:24  eaxelson
-
-	* tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/test.sh: Now all xfst files are read in a
-	  buffer and parsed with XfstCompiler.parse_line.
-
-2013-02-22 16:51  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/test.sh: Now xfst parser can parse regexps
-	  that are on several lines.
-
-2013-02-22 16:17  eaxelson
-
-	* tools/src/parsers/hfst-xfst2fst.cc,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-lexer.ll,
-	  tools/src/parsers/xfst-parser.yy: Edited xfst parser.
-
-2013-02-22 10:48  eaxelson
-
-	* configure.ac, tools/src/parsers, tools/src/parsers/Makefile.am,
-	  tools/src/parsers/test, tools/src/parsers/test/Makefile.am,
-	  tools/src/parsers/test/test.sh, tools/src/parsers/xfst-parser.yy:
-	  Added tests for hfst-xfst2fst.
-
-2013-02-19 16:39  eaxelson
-
-	* tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/hfst-xfst2fst.cc: Added main program from
-	  XfstCompiler.cc to hfst-xfst2fst.cc.
-
-2013-02-19 13:45  eaxelson
-
-	* tools/src/parsers/XfstCompiler.cc: More command line options
-	  added to hfst-xfst2fst.
-
-2013-02-19 12:32  eaxelson
-
-	* tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Parameter handling added to
-	  hfst-xfst2fst.
-
-2013-02-18 20:58  eaxelson
-
-	* tools/src/parsers/Makefile.am, tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/commands.help,
-	  tools/src/parsers/xfst-parser.yy: Now hfst-xfst2fst works with
-	  readline functionalities if a temporary file is used for
-	  buffering commands.
-
-2013-02-18 11:37  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script:
-	  Replace rules compilation - boundary marker added to begining/end
-	  of all contexts which don't containt it
-
-2013-02-15 16:51  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/xfst-parser.yy: Added more functions to the
-	  xfst interface.
-
-2013-02-15 15:01  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Added more functions to the
-	  xfst interface.
-
-2013-02-14 19:43  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h: Added variable undefinition to
-	  xfst parser.
-
-2013-02-14 19:30  eaxelson
-
-	* libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h,
-	  tools/src/parsers/XfstCompiler.cc: Now definition expansion can
-	  be controlled in XreCompiler through a function
-	  set_expand_definitions. If they are always expanded, lexc syntax
-	  is not parsed correctly.
-
-2013-02-14 10:27  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Added definition expansion to
-	  the xre parser.
-
-2013-02-13 14:10  eaxelson
-
-	* libhfst/src/Makefile.am, tools/src/parsers/Makefile.am,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h: Made a couple of fixes to xfst
-	  parser.
-
-2013-02-13 11:26  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am, tools/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: Tentatively added
-	  tools/src/parsers as a part of the automake build.
-
-2013-02-08 09:56  eaxelson
-
-	* check_installation/check-morphologies.sh,
-	  check_installation/morphology_tests/finnish-analyze.output,
-	  check_installation/morphology_tests/omorfi-analyze.input,
-	  check_installation/morphology_tests/omorfi-analyze.output,
-	  check_installation/morphology_tests/omorfi-generate.input,
-	  check_installation/morphology_tests/omorfi-generate.output:
-	  Updated morphology installation tests, now omorfi is included.
-
-2013-02-07 08:06  eaxelson
-
-	* swig/setup.py: Updated version number in swig setup file.
-
-2013-02-05 09:03  eaxelson
-
-	* check_installation/check-tools.sh, swig/test/test_std_streams.sh:
-	  Now installation tests skip sfst or foma if they are not found.
-
-2013-02-04 13:30  eaxelson
-
-	* NSIS/README: Edited NSIS README.
-
-2013-02-04 11:56  eaxelson
-
-	* NSIS/README, NSIS/copy_files.sh, NSIS/hfst_installer.nsi: Updated
-	  NSIS files.
-
-2013-02-02 12:09  mie
-
-	* test/tools/Makefile.am, test/tools/compounds2.txt,
-	  test/tools/proc-compounds2-out.strings,
-	  test/tools/proc-compounds2.strings,
-	  test/tools/proc-functionality.sh: New apertium proc space
-	  handling test from bug [#153].
-
-2013-02-01 11:03  eaxelson
-
-	* check_installation/check-tools.sh,
-	  check_installation/dist-README, swig/test/test_std_streams.sh:
-	  Small fixes to swig and installation checks.
-
-2013-02-01 10:18  eaxelson
-
-	* check_installation/check-swig.sh, check_installation/dist-README,
-	  swig/README, swig/test/test_std_streams.sh: Added documentation.
-
-2013-02-01 09:11  eaxelson
-
-	* swig/test/test.sh, swig/test/test_std_streams.sh: Made small
-	  fixes to swig tests.
-
-2013-02-01 08:08  eaxelson
-
-	* check_installation/check-tools.sh,
-	  test/tools/permutate-file-params.sh: Made permutate-file-params
-	  test silent. Edited check-tools.sh so that it handles --prefix
-	  parameter right.
-
-2013-02-01 07:45  eaxelson
-
-	* check_installation/check-tools.sh,
-	  check_installation/copy-tool-tests.sh,
-	  check_installation/test-empty-input.sh,
-	  check_installation/test-help.sh,
-	  check_installation/test-hfst-twolc.sh,
-	  check_installation/test-hfst-xfst.sh,
-	  check_installation/test-version.sh: Updated hfst tool checks-
-
-2013-01-31 13:22  sdrobac
-
-	* configure.ac, libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.xfst.script,
-	  test/tools/fsmbook-examples/Makefile.am: Fixed Lingala and
-	  MonishGuesserAnalyzer fsmbook tests, minor changes in regexp
-
-2013-01-31 10:05  eaxelson
-
-	* check_installation/copy-tool-tests.sh,
-	  check_installation/test-empty-input.sh: Updated installation
-	  checks.
-
-2013-01-30 17:20  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.xfst.script: In
-	  substitute (symbol_pair, transducer) added harmonization with the
-	  symbol_par. Also, updated substitute in regexp
-
-2013-01-30 12:42  eaxelson
-
-	* ChangeLog, NEWS, configure.ac, libhfst/src/Makefile.am: Ready for
-	  release 3.4.3.
-
-2013-01-30 12:26  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/Makefile.am,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script: Prune
-	  alphabet added to regexp, also ? -> x rules fixed
-
-2013-01-30 11:34  eaxelson
-
-	* swig/test/test_examples.py,
-	  swig/test/test_hfst_basic_transducer.py,
-	  swig/test/test_streams.py: Added a couple of fixes to swig tests.
-
-2013-01-30 08:29  eaxelson
-
-	* swig/test/test_examples.py,
-	  swig/test/test_hfst_basic_transducer.py,
-	  swig/test/test_streams.py: Now tests pass on MinGW, file handling
-	  still has some problems.
-
-2013-01-28 15:23  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi: Updated NSIS
-	  installer files.
-
-2013-01-28 14:27  eaxelson
-
-	* configure.ac, test/tools/hfst-check-help.sh,
-	  test/tools/hfst-check-version.sh: Disabled tagger tools if HFST
-	  is compiled on MinGW. They are also skipped in tool tests.
-
-2013-01-28 11:06  eaxelson
-
-	* check_installation/copy-tool-tests.sh,
-	  check_installation/test-hfst-twolc.sh,
-	  check_installation/test-hfst-xfst.sh: Added tests for hfst-xfst
-	  and hfst-twolc in installation tests.
-
-2013-01-28 10:07  eaxelson
-
-	* back-ends/foma/Makefile.am: Added 'AUTOMAKE_OPTIONS=std-options'
-	  to foma Makefile so that foma wrapper gets installed right on
-	  Cygwin.
-
-2013-01-26 10:47  moshagen
-
-	* scripts: Ignore generated files.
-
-2013-01-25 12:56  eaxelson
-
-	* README, back-ends/Makefile.am, back-ends/foma/Makefile.am,
-	  configure.ac, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am, test/libhfst/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am: Renamed option
-	  --enable-windows as --enable-mingw.
-
-2013-01-25 09:05  eaxelson
-
-	* back-ends/foma/Makefile.am, configure.ac: Edited configure.ac so
-	  that setting executable mode on script files should finally work.
-	  Added missing windows conditional to foma Makefile.
-
-2013-01-24 12:49  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/FinnishOTProsody/Makefile.am,
-	  tools/src/hfst-prune-alphabet.cc: Prune alphabet changed for
-	  easier use in parser
-
-2013-01-24 11:35  eaxelson
-
-	* scripts/Makefile.am, scripts/hfst-foma-wrapper-loc.sh,
-	  scripts/hfst-xfst-loc, test/tools/Makefile.am,
-	  test/tools/xfst-functionality.sh: Removed local versions of
-	  hfst-xfst as well as hfst-xfst tests.
-
-2013-01-24 11:09  eaxelson
-
-	* configure.ac, scripts/Makefile.am: Setting executable mode on
-	  scripts.
-
-2013-01-24 10:07  eaxelson
-
-	* test/tools/Makefile.am: Fixed a typo in Makefile.am.
-
-2013-01-23 16:02  eaxelson
-
-	* check_installation/copy-tool-tests.sh,
-	  scripts/hfst-foma-wrapper-loc.sh, test/tools/Makefile.am: Fixed a
-	  bug in foma wrapper. Also added missing test file to EXTRA_DIST.
-
-2013-01-23 14:15  eaxelson
-
-	* configure.ac: Set executable mode on scripts.
-
-2013-01-23 13:35  eaxelson
-
-	* configure.ac, scripts/Makefile.am,
-	  scripts/hfst-foma-wrapper-loc.sh, scripts/hfst-xfst,
-	  scripts/hfst-xfst-loc, scripts/hfst-xfst.in,
-	  test/tools/xfst-functionality.sh: Made a local version of
-	  hfst-xfst that is used in tests.
-
-2013-01-23 12:31  eaxelson
-
-	* tools/src: Ignored *.exe files.
-
-2013-01-23 11:41  eaxelson
-
-	* test/tools/fsmbook-examples/BetterColaMachine,
-	  test/tools/fsmbook-examples/FinnishOTProsody,
-	  test/tools/fsmbook-examples/FinnishProsody,
-	  test/tools/fsmbook-examples/Palindromes,
-	  test/tools/fsmbook-examples/Palindromes/Makefile.am,
-	  test/tools/fsmbook-examples/PlusOrMinus: Ignore generated files.
-
-2013-01-23 11:04  eaxelson
-
-	* test/tools/Makefile.am, test/tools/permutate-file-params.sh,
-	  test/tools/script.xfst, test/tools/xfst-functionality.sh,
-	  tools/src/hfst-compose-intersect.cc: Added a test for hfst-xfst.
-	  Modified permutate-file-params.sh so that it doesn't use curly
-	  braces which are not expanded correctly on all environments. Also
-	  modified hfst-compose-intersect.cc so that it doesn't use dollar
-	  signs when specifying how strings are printed as they don't work
-	  on Cygwin.
-
-2013-01-23 09:12  eaxelson
-
-	* swig/test/test_constructors.py, swig/test/test_examples.py,
-	  swig/test/test_hfst_basic_transducer.py,
-	  swig/test/test_std_streams.py, swig/test/test_streams.py,
-	  swig/test/test_tokenizer.py,
-	  swig/test/test_transducer_functions.py: Now swig tests use
-	  libhfst.hfst_get_exception() instead of catching HFST exception
-	  classes. This should make the tests compatible with python 3
-	  where catching exceptions that do not inherit from BaseException
-	  is not allowed.
-
-2013-01-23 08:38  eaxelson
-
-	* configure.ac, test/tools/Makefile.am: Disabled fsmbook tests from
-	  'make check' by default (enable with --enable-fsmbook-tests)
-	  because they currently depend on foma command line tool.
-
-2013-01-22 15:57  moshagen
-
-	* tools/src: Ignore generated binary.
-
-2013-01-22 10:56  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  tools/src/hfst-prune-alphabet.cc: Added function
-	  HfstTransducer::prune_alphabet which is also used in the tool
-	  hfst-prune-alphabet.
-
-2013-01-21 10:39  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Added filtering to
-	  harmonize_flag_diacritics. It will filter out superfluous flag
-	  diacritic paths, which are created during harmonization.
-
-2013-01-18 14:33  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Prevented foma from harmonizing
-	  id- and unk-symbols with flag diacritics in insert_freely.
-
-2013-01-18 11:45  eaxelson
-
-	* test/tools/fsmbook-examples/FinnishProsody/Makefile.am: Removed
-	  'words.txt' from EXTRA_DIST as it is not found in svn repository
-	  and make check passes without it.
-
-2013-01-18 11:40  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, swig/libhfst.i: Added a function
-	  'std::string hfst_get_exception()' that can be used to get the
-	  name of the latest exception thrown by HFST library. This is
-	  useful if the version of Python used does not support catching
-	  exceptions that do not inherit from BaseException.
-
-2013-01-18 10:14  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Making sure that flag diacritics
-	  are added to the alphabets of both arguments in harmonize and
-	  harmonize_
-
-2013-01-18 09:15  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Changed id- and unk-symbols
-	  harmonization so that flag diacritics are no longer harmonized.
-
-2013-01-17 23:29  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed a bug in flag diacritic
-	  harmonization yet again. This time actually using the parameter
-	  bool harmonize in freely_insert.
-
-2013-01-17 14:55  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc: Fixed problem which
-	  resulted from changing the insert_freely-function in the library.
-
-2013-01-17 14:26  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Re-fixed flag diacritic harmonization problem, where identity and
-	  unknown symbols were expanded by flag diacritics. To prevent
-	  expansion in this case, I added a bool parameter harmonize to the
-	  insert_freely library function.
-
-2013-01-16 18:21  eaxelson
-
-	* configure.ac: Now configure gives warning on missing hfst-xfst
-	  correctly.
-
-2013-01-16 14:38  eaxelson
-
-	* configure.ac, libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/tools/Makefile.am, test/tools/non_prunable_alphabet_1.txt,
-	  test/tools/non_prunable_alphabet_2.txt,
-	  test/tools/prunable_alphabet.txt,
-	  test/tools/prune-alphabet-functionality.sh,
-	  tools/src/Makefile.am, tools/src/hfst-prune-alphabet.cc: Added a
-	  new tool, hfst-prune-alphabet. Also added a new bool parameter to
-	  HfstTransitionGraph::prune_alphabet.
-
-2013-01-16 10:16  eaxelson
-
-	* tools/src/hfst-tagger/src/use_model_src/AcyclicAutomaton.cc:
-	  Changed variable name 'infinity' to 'infinity_' to avoid
-	  compilation error on Cygwin.
-
-2013-01-14 15:32  mpsilfve
-
-	* tools/src/hfst-twolc/src/commandline_src/CommandLine.cc,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.h,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy: Added -D switch to enable
-	  reading from file in htwolcpre2 and htwolcpre3 (for debug
-	  purposes).
-
-2013-01-11 15:57  eaxelson
-
-	* configure.ac, test/tools/hfst-check-help.sh,
-	  test/tools/hfst-check-version.sh,
-	  tools/src/hfst-tagger/src/hfst-build-tagger.cc,
-	  tools/src/hfst-tagger/src/hfst-open-input-file-for-tagger.cc,
-	  tools/src/hfst-tagger/src/hfst-tag.cc,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.cc: Now
-	  tagger and twolc tools also pass version and help checks.
-
-2013-01-11 10:42  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.h: Added a missing <cstdio>
-	  header that caused an error on cygwin (FILE was not defined).
-
-2013-01-11 07:27  moshagen
-
-	* test/tools/fsmbook-examples/FinnishProsody: Ignore generated
-	  files.
-
-2013-01-11 07:26  moshagen
-
-	* test/tools/fsmbook-examples/Lingala,
-	  test/tools/fsmbook-examples/Palindromes,
-	  test/tools/fsmbook-examples/PlusOrMinus: Ignore generated files.
-
-2013-01-10 16:02  eaxelson
-
-	* README, back-ends/Makefile.am, back-ends/dlfcn/Makefile.am,
-	  back-ends/openfstwin/src/lib/Makefile.am: Now all back-end files
-	  are included in the distribution package.
-
-2013-01-10 16:00  sdrobac
-
-	* configure.ac,
-	  test/tools/fsmbook-examples/FinnishProsody/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/Makefile.am,
-	  test/tools/fsmbook-examples/FinnishProsody/expected_result.strings,
-	  test/tools/fsmbook-examples/FinnishProsody/test.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/finnish-prosody-test.sh: Fsm-book
-	  test FinnishProsody
-
-2013-01-10 14:23  sdrobac
-
-	* configure.ac, test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/Palindromes/Makefile.am,
-	  test/tools/fsmbook-examples/Palindromes/test.script,
-	  test/tools/fsmbook-examples/palindromes.sh: Fsm-book test
-	  Palindromes updated
-
-2013-01-10 14:05  eaxelson
-
-	* back-ends/Makefile.am, back-ends/dlfcn/Makefile.am,
-	  back-ends/openfstwin/src/Makefile.am: All back-end directories
-	  are now included in the distribution package.
-
-2013-01-10 13:20  sdrobac
-
-	* configure.ac, libhfst/src/parsers/xre_lex.ll,
-	  libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.xfst.script,
-	  test/tools/fsmbook-examples/Lingala/Makefile.am,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/PlusOrMinus/Makefile.am,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.xfst.att,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.xfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/README,
-	  test/tools/fsmbook-examples/PlusOrMinus/test.script,
-	  test/tools/fsmbook-examples/plus-or-minus.sh: Added PlusOrMinus
-	  fsm-book test
-
-2013-01-09 16:01  eaxelson
-
-	* README, test/tools/hfst-check-help.sh,
-	  test/tools/hfst-check-version.sh, tools/src/hfst-info.cc: Updated
-	  README. Fixed hfst-info so that it passes version and help
-	  checks.
-
-2013-01-08 15:22  eaxelson
-
-	* swig/README, swig/libhfst.i: Changed the order of paragraphs in
-	  README. Added a todo comment about XreCompiler.compiler
-	  conflicting with a built-in name 'compile' in python.
-
-2013-01-08 10:39  eaxelson
-
-	* README: Updated README.
-
-2013-01-07 11:36  eaxelson
-
-	* ChangeLog, NEWS, configure.ac, libhfst/src/Makefile.am: Ready for
-	  release 3.4.2.
-
-2013-01-04 11:12  eaxelson
-
-	* back-ends/foma/Makefile.am, configure.ac: Now -lncurses is used
-	  in foma instead if -ltermcap is not found.
-
-2013-01-03 16:28  eaxelson
-
-	* back-ends/Makefile.am, back-ends/foma/fomalib.h, configure.ac,
-	  test/tools/fsmbook-examples/Makefile.am: Fixed a bug in foma
-	  wrapping-
-
-2013-01-03 14:30  sdrobac
-
-	* libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  Added regexp substitution
-
-2012-12-21 14:30  sdrobac
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/Makefile.am,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.xfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/test.script,
-	  test/tools/fsmbook-examples/test-foma.sh: regex parser - added
-	  left replace epenthesis rule
-
-2012-12-21 07:45  moshagen
-
-	* configure.ac: Added note to remind people to also increment the
-	  HFST_LONGVERSION. This is important to ensure consistent
-	  behaviour between different types of version checks. The
-	  different types of version info returned by hfst-info --version
-	  should be consistent, the long version should just be a
-	  representational variant of the other values.
-
-2012-12-20 17:56  moshagen
-
-	* configure.ac: Longversion.
-
-2012-12-20 16:43  eaxelson
-
-	* ChangeLog, NEWS, configure.ac, libhfst/src/Makefile.am: Ready for
-	  release 3.4.1.
-
-2012-12-20 15:20  sdrobac
-
-	* test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/Palindromes/Makefile.am: fsmbook
-	  examples change
-
-2012-12-20 14:03  sdrobac
-
-	* configure.ac, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/HfstXeroxRulesTest.cc,
-	  test/tools/fsmbook-examples/FinnishProsody/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/test.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/Palindromes/Makefile,
-	  test/tools/fsmbook-examples/Palindromes/Makefile.am,
-	  test/tools/fsmbook-examples/Palindromes/Palindromes.hfst.script,
-	  test/tools/fsmbook-examples/Palindromes/test.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/test.script: Epenthesis
-	  rules fixed
-
-2012-12-19 15:07  eaxelson
-
-	* check_installation/morphology_tests/english-analyze.output,
-	  check_installation/morphology_tests/finnish-analyze.output,
-	  check_installation/morphology_tests/french-analyze.output,
-	  check_installation/morphology_tests/german-analyze.output,
-	  check_installation/morphology_tests/italian-analyze.output,
-	  check_installation/morphology_tests/swedish-analyze.output,
-	  check_installation/morphology_tests/turkish-analyze.output:
-	  Updated results of morphology tests.
-
-2012-12-19 14:37  eaxelson
-
-	* scripts/hfst-foma-wrapper.sh.in: Now hfst_foma is called directly
-	  from where it is installed.
-
-2012-12-19 14:37  moshagen
-
-	* configure.ac: Bring the long version string in sync with the
-	  other version numbers.
-
-2012-12-19 13:57  eaxelson
-
-	* scripts/hfst-foma-wrapper.sh.in: hfst-xfst now uses hfst_foma
-	  instead of installed foma.
-
-2012-12-19 11:24  eaxelson
-
-	* check_installation/morphology_tests/english-analyze.input,
-	  check_installation/morphology_tests/finnish-analyze.input,
-	  check_installation/morphology_tests/french-analyze.input,
-	  check_installation/morphology_tests/german-analyze.input,
-	  check_installation/morphology_tests/italian-analyze.input,
-	  check_installation/morphology_tests/swedish-analyze.input,
-	  check_installation/morphology_tests/turkish-analyze.input: Added
-	  test sentences for all morphologies.
-
-2012-12-19 10:53  eaxelson
-
-	* back-ends/foma/Makefile.am, back-ends/foma/minimize.c: Renamed a
-	  duplicate symbol.
-
-2012-12-18 15:37  eaxelson
-
-	* back-ends/sfst/fst.cc: A variable was shadowed by a another
-	  variable with the same name, renamed the previous.
-
-2012-12-18 10:53  moshagen
-
-	* test/tools/fsmbook-examples/FinnishOTProsody: Ignore generated
-	  file.
-
-2012-12-17 15:33  eaxelson
-
-	* check_installation/check-morphologies.sh,
-	  check_installation/check-swig-tests.sh,
-	  check_installation/check-swig.sh,
-	  check_installation/check-tool-tests.sh,
-	  check_installation/check-tools.sh,
-	  check_installation/dist-README, check_installation/make-dist.sh:
-	  Made the names of the tests scripts shorter.
-
-2012-12-17 14:57  eaxelson
-
-	* check_installation/check-morphologies.sh,
-	  check_installation/check-swig-tests.sh,
-	  check_installation/dist-README, check_installation/make-dist.sh,
-	  check_installation/morphology_tests,
-	  check_installation/morphology_tests/english-analyze.input,
-	  check_installation/morphology_tests/english-analyze.output,
-	  check_installation/morphology_tests/english-generate.input,
-	  check_installation/morphology_tests/english-generate.output,
-	  check_installation/morphology_tests/finnish-analyze.input,
-	  check_installation/morphology_tests/finnish-analyze.output,
-	  check_installation/morphology_tests/finnish-generate.input,
-	  check_installation/morphology_tests/finnish-generate.output,
-	  check_installation/morphology_tests/french-analyze.input,
-	  check_installation/morphology_tests/french-analyze.output,
-	  check_installation/morphology_tests/french-generate.input,
-	  check_installation/morphology_tests/french-generate.output,
-	  check_installation/morphology_tests/german-analyze.input,
-	  check_installation/morphology_tests/german-analyze.output,
-	  check_installation/morphology_tests/german-generate.input,
-	  check_installation/morphology_tests/german-generate.output,
-	  check_installation/morphology_tests/italian-analyze.input,
-	  check_installation/morphology_tests/italian-analyze.output,
-	  check_installation/morphology_tests/italian-generate.input,
-	  check_installation/morphology_tests/italian-generate.output,
-	  check_installation/morphology_tests/swedish-analyze.input,
-	  check_installation/morphology_tests/swedish-analyze.output,
-	  check_installation/morphology_tests/swedish-generate.input,
-	  check_installation/morphology_tests/swedish-generate.output,
-	  check_installation/morphology_tests/turkish-analyze.input,
-	  check_installation/morphology_tests/turkish-analyze.output,
-	  check_installation/morphology_tests/turkish-generate.input,
-	  check_installation/morphology_tests/turkish-generate.output:
-	  Tentatively added tests for installed HFST morphologies.
-
-2012-12-17 13:01  sdrobac
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/Makefile.am: Added lower priority
-	  union to regex parser
-
-2012-12-17 11:18  eaxelson
-
-	* back-ends/foma, back-ends/foma/Makefile.am,
-	  back-ends/foma/foma.c, back-ends/foma/iface.c,
-	  back-ends/foma/io.c, back-ends/foma/lex.cmatrix.c,
-	  back-ends/foma/lex.interface.c, back-ends/foma/stack.c,
-	  configure.ac, scripts/Makefile.am: Added foma script under
-	  back-ends/foma. It is now used by hfst-xfst. Fixes bug #147.
-
-2012-12-17 11:16  eaxelson
-
-	* swig/test/test.sh: Fixed a couple of typos in swig test file.
-
-2012-12-17 11:15  eaxelson
-
-	* check_installation/make-dist.sh: Updated the installation check
-	  script.
-
-2012-12-12 15:29  eaxelson
-
-	* check_installation/check-swig-tests.sh,
-	  check_installation/check-tool-tests.sh,
-	  check_installation/copy-swig-tests.sh,
-	  check_installation/copy-tool-tests.sh,
-	  check_installation/dist-README, check_installation/make-dist.sh:
-	  Tentatively added tests for installed swig bindings.
-
-2012-12-12 14:30  eaxelson
-
-	* check_installation/make-dist.sh,
-	  check_installation/test-empty-input.sh,
-	  check_installation/test-help.sh,
-	  check_installation/test-version.sh: Now installation tests pass
-	  on Hippu.
-
-2012-12-12 12:27  eaxelson
-
-	* check_installation/check-tool-tests.sh,
-	  check_installation/copy-files.sh,
-	  check_installation/copy-tool-tests.sh: Updated tests.
-
-2012-12-11 16:50  eaxelson
-
-	* check_installation/copy-files.sh,
-	  check_installation/test-help.sh,
-	  check_installation/test-version.sh,
-	  test/tools/hfst-check-environment.sh,
-	  test/tools/lexc-functionality.sh,
-	  test/tools/push-weights-functionality.sh: Now installation tests
-	  should pass. Also fixed a cople of minor bugs in test/tools.
-
-2012-12-11 16:09  eaxelson
-
-	* check_installation/copy-files.sh,
-	  check_installation/test-empty-input.sh,
-	  check_installation/test-help.sh,
-	  check_installation/test-version.sh: Added new tests.
-
-2012-12-11 14:31  eaxelson
-
-	* check_installation, check_installation/copy-files.sh: Tentatively
-	  added a test for all installed HFST functionalities.
-
-2012-12-10 23:28  moshagen
-
-	* libhfst/src/Makefile.am, tools/src/hfst-tagger/src/Makefile.am:
-	  Another warning-silencer flag that had to be removed to get hfst
-	  to build on MacOSX.
-
-2012-12-10 23:08  moshagen
-
-	* back-ends/foma/Makefile.am, back-ends/sfst/Makefile.am: Made hfst
-	  build on MacOSX again, by removing the -Wno-unused-result GCC
-	  flag. Sorry about the additional warnings, but I really need it
-	  to build.
-
-2012-12-10 16:49  eaxelson
-
-	* back-ends/foma/Makefile.am, back-ends/sfst/Makefile.am,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am: Suppressed warnings caused
-	  by back-end libraries.
-
-2012-12-10 15:57  eaxelson
-
-	* swig/doc, test/tools/fsmbook-examples/BetterColaMachine,
-	  test/tools/fsmbook-examples/DateParser,
-	  test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/Makefile.am,
-	  test/tools/fsmbook-examples/YaleShooting,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.hfst.script,
-	  tools/src: Ignored generated files.
-
-2012-12-10 15:23  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h, swig/README,
-	  swig/libhfst.i, swig/test/test.sh, swig/test/test_examples.py,
-	  swig/test/test_extensions.py, swig/test/test_flag_diacritics.py,
-	  swig/test/test_hfst_basic_transducer.py,
-	  swig/test/test_std_streams.py, swig/test/test_std_streams.sh,
-	  swig/test/test_streams.py, swig/test/test_xre_compiler.py: SWIG
-	  bindings should now work with both Python version 2 and 3. As
-	  FILE* conversions are no longer supported in Python 3, added more
-	  wrapper functions that use an HfstFile argument instead.
-
-2012-12-10 13:44  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  Priority union bug fix
-
-2012-12-10 11:29  sdrobac
-
-	* configure.ac, libhfst/src/HfstXeroxRules.cc,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.hfst.script,
-	  test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.xfst.script,
-	  test/tools/fsmbook-examples/BetterColaMachine/Makefile.am,
-	  test/tools/fsmbook-examples/BetterColaMachine/test.script,
-	  test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/DateParser.xfst.att,
-	  test/tools/fsmbook-examples/DateParser/DateParser.xfst.script,
-	  test/tools/fsmbook-examples/DateParser/Makefile.am,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.xfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/Makefile.am,
-	  test/tools/fsmbook-examples/FinnishOTProsody/test.script,
-	  test/tools/fsmbook-examples/FinnishProsody/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/test.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.xfst.script,
-	  test/tools/fsmbook-examples/Lingala/Makefile.am,
-	  test/tools/fsmbook-examples/Lingala/test.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/Makefile.am,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.xfst.script,
-	  test/tools/fsmbook-examples/YaleShooting/Makefile.am,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.hfst.script,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.xfst.att,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.xfst.script,
-	  test/tools/fsmbook-examples/better-cola-machine-test.sh,
-	  test/tools/fsmbook-examples/finnish-ot-prosody-test.sh,
-	  test/tools/fsmbook-examples/lingala.sh,
-	  test/tools/fsmbook-examples/test-foma.sh,
-	  test/tools/fsmbook-examples/xfst-prolog-to-hfst-att.sh,
-	  test/tools/fsmbook-examples/yale-shooting-test.sh: Fsmbook tests
-	  updated
-
-2012-12-10 11:22  eaxelson
-
-	* test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Removed old command line tool hfst-strip-header from tests.
-
-2012-12-10 11:20  eaxelson
-
-	* test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Removed old command line tool hfst-preprocess-for
-	  optimized-lookup-format from tests.
-
-2012-12-10 11:18  eaxelson
-
-	* test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Removed old command line tool hfst-duplicate from tests.
-
-2012-12-05 20:10  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Revert
-	  previous unintended change to unrelated files
-
-2012-12-05 19:44  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: The
-	  header from r2888 that accidentally didn't get re-committed
-	  with the most recent bugfix in this directory..
-
-2012-12-05 13:45  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Fix
-	  typo-bug wrt tape movement
-
-2012-12-05 13:29  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Roll
-	  back previous changes pending bug fixes
-
-2012-12-05 13:11  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Avoid
-	  reallocations in the input tape
-
-2012-12-05 13:03  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: New
-	  scheme for input and output tapes to allow them to be arbitrarily
-	  large
-
-2012-12-04 16:47  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Handle the case where we want to take a default transition when
-	  it's the only transition
-
-2012-12-04 16:19  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Changed
-	  all includes of type <backend-header.h> to "backend-header.h".
-	  Made small modifications to NSIS installer.
-
-2012-12-04 10:30  moshagen
-
-	* swig, swig/test: Ignore generated files.
-
-2012-11-30 15:22  eaxelson
-
-	* swig/README: Added more information to swig/README.
-
-2012-11-30 13:46  eaxelson
-
-	* ChangeLog, NEWS, configure.ac, libhfst/src/Makefile.am: Ready for
-	  release 3.4.0.
-
-2012-11-30 13:10  eaxelson
-
-	* libhfst/src/Makefile.am, tools/src/hfst-pmatch.cc: Fixed some
-	  bugs noticed when making distcheck-
-
-2012-11-29 12:48  eaxelson
-
-	* Makefile.am, back-ends/foma/Makefile.am,
-	  back-ends/openfst/src/Makefile.am,
-	  back-ends/openfst/src/include/Makefile.am,
-	  back-ends/openfst/src/lib/Makefile.am,
-	  back-ends/sfst/Makefile.am, configure.ac, swig/Makefile.am,
-	  swig/test/Makefile.am, test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script:
-	  Fixed a couple of bugs that occurred during installing a dist
-	  package..
-
-2012-11-28 14:23  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am: Fixed a small bug in
-	  HfstTransducer::read_lexc, suppressed some warnings from openfst
-	  headers.
-
-2012-11-28 14:13  eaxelson
-
-	* swig/doc/libhfst.py, swig/libhfst.i, swig/test/test.sh,
-	  swig/test/test_examples.py, swig/test/test_lexc.py: Updated
-	  python tests.
-
-2012-11-28 10:34  eaxelson
-
-	* swig/test/test_examples.py: Added all python examples given in
-	  the doxygen documentation to tests.
-
-2012-11-27 17:51  eaxelson
-
-	* back-ends/foma/fomalib.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, swig/libhfst.i, swig/test/test.sh,
-	  swig/test/test_examples.py,
-	  swig/test/test_hfst_basic_transducer.py, tools/src/hfst-lexc.cc:
-	  Added more tests to the Python interface and added throw
-	  statements to functions.
-
-2012-11-27 10:27  eaxelson
-
-	* configure.ac, test/tools/hfst-check-environment.sh,
-	  tools/src/Makefile.am, tools/src/hfst-duplicate.cc,
-	  tools/src/hfst-multiply.cc: Renamed hfst-duplicate as
-	  hfst-multiply.
-
-2012-11-23 15:23  eaxelson
-
-	* swig/test/test_std_streams.sh, swig/test/test_streams.py: Now
-	  tests remove extra files that they generate.
-
-2012-11-23 15:10  eaxelson
-
-	* swig/doc/libhfst.py, swig/test, swig/test.sh, swig/test/test.sh,
-	  swig/test/test_constructors.py, swig/test/test_examples.py,
-	  swig/test/test_extensions.py, swig/test/test_flag_diacritics.py,
-	  swig/test/test_hfst_basic_transducer.py,
-	  swig/test/test_lexc.lexc, swig/test/test_lexc.py,
-	  swig/test/test_lexc_fail.lexc, swig/test/test_rules.py,
-	  swig/test/test_std_streams.py, swig/test/test_std_streams.sh,
-	  swig/test/test_streams.py, swig/test/test_tokenizer.py,
-	  swig/test/test_transducer_functions.py,
-	  swig/test/test_xre_compiler.py, swig/test_constructors.py,
-	  swig/test_examples.py, swig/test_extensions.py,
-	  swig/test_flag_diacritics.py, swig/test_hfst_basic_transducer.py,
-	  swig/test_lexc.py, swig/test_rules.py, swig/test_std_streams.py,
-	  swig/test_std_streams.sh, swig/test_streams.py,
-	  swig/test_tokenizer.py, swig/test_transducer_functions.py,
-	  swig/test_xre_compiler.py: Moved Python tests to a separate
-	  directory.
-
-2012-11-23 14:42  eaxelson
-
-	* swig/Doxyfile, swig/doc, swig/doc/Doxyfile, swig/doc/libhfst.py,
-	  swig/hfst_documentation.py, swig/internal_documentation: Python
-	  documentation is now in a separate directory.
-
-2012-11-23 11:53  eaxelson
-
-	* swig/hfst_documentation.py, swig/internal_documentation/rules.py:
-	  Now all functions in Python interface are documented.
-
-2012-11-21 16:51  eaxelson
-
-	* swig/hfst_documentation.py,
-	  swig/internal_documentation/HfstExceptionDefs.py,
-	  swig/internal_documentation/rules.py: Added documentation on rule
-	  functions of the Python interface.
-
-2012-11-21 11:45  eaxelson
-
-	* swig/internal_documentation/HfstExceptionDefs.py,
-	  swig/internal_documentation/HfstTransducer.py: Added new internal
-	  documentation to the Python interface.
-
-2012-11-21 11:12  eaxelson
-
-	* swig/hfst_documentation.py, swig/hfst_swig_extensions.h,
-	  swig/internal_documentation/HfstTransducer.py, swig/libhfst.i:
-	  More documentation on the Python interface.
-
-2012-11-20 18:32  eaxelson
-
-	* swig/hfst_documentation.py,
-	  swig/internal_documentation/HfstTransducer.py: More swig
-	  documentation...
-
-2012-11-20 17:31  eaxelson
-
-	* swig/hfst_documentation.py,
-	  swig/internal_documentation/HfstTransducer.py: Added more
-	  documentation for class libhfst.HfstTransducer.
-
-2012-11-20 15:13  eaxelson
-
-	* swig/hfst_documentation.py,
-	  swig/internal_documentation/HfstTransducer.py,
-	  swig/internal_documentation/HfstTransitionGraph.h,
-	  swig/test_hfst_basic_transducer.py: Updated swig documentation.
-
-2012-11-20 13:01  moshagen
-
-	* back-ends/openfst, back-ends/openfst/src,
-	  back-ends/openfst/src/lib: Ignore generated files.
-
-2012-11-20 13:00  moshagen
-
-	* configure.ac: Added - as a comment - parts of my attempts at
-	  building all version info from only one definition. No success so
-	  far.
-	  
-	  Whitespace changes.
-
-2012-11-20 12:04  eaxelson
-
-	* back-ends/openfst, back-ends/openfst/AUTHORS,
-	  back-ends/openfst/COPYING, back-ends/openfst/INSTALL,
-	  back-ends/openfst/Makefile.am, back-ends/openfst/NEWS,
-	  back-ends/openfst/README, back-ends/openfst/foo,
-	  back-ends/openfst/src, back-ends/openfst/src/Makefile.am,
-	  back-ends/openfst/src/include,
-	  back-ends/openfst/src/include/Makefile.am,
-	  back-ends/openfst/src/include/fst,
-	  back-ends/openfst/src/include/fst/accumulator.h,
-	  back-ends/openfst/src/include/fst/add-on.h,
-	  back-ends/openfst/src/include/fst/arc-map.h,
-	  back-ends/openfst/src/include/fst/arc.h,
-	  back-ends/openfst/src/include/fst/arcfilter.h,
-	  back-ends/openfst/src/include/fst/arcsort.h,
-	  back-ends/openfst/src/include/fst/bi-table.h,
-	  back-ends/openfst/src/include/fst/cache.h,
-	  back-ends/openfst/src/include/fst/closure.h,
-	  back-ends/openfst/src/include/fst/compact-fst.h,
-	  back-ends/openfst/src/include/fst/compat.h,
-	  back-ends/openfst/src/include/fst/complement.h,
-	  back-ends/openfst/src/include/fst/compose-filter.h,
-	  back-ends/openfst/src/include/fst/compose.h,
-	  back-ends/openfst/src/include/fst/concat.h,
-	  back-ends/openfst/src/include/fst/config.h,
-	  back-ends/openfst/src/include/fst/config.h.in,
-	  back-ends/openfst/src/include/fst/connect.h,
-	  back-ends/openfst/src/include/fst/const-fst.h,
-	  back-ends/openfst/src/include/fst/determinize.h,
-	  back-ends/openfst/src/include/fst/dfs-visit.h,
-	  back-ends/openfst/src/include/fst/difference.h,
-	  back-ends/openfst/src/include/fst/edit-fst.h,
-	  back-ends/openfst/src/include/fst/encode.h,
-	  back-ends/openfst/src/include/fst/epsnormalize.h,
-	  back-ends/openfst/src/include/fst/equal.h,
-	  back-ends/openfst/src/include/fst/equivalent.h,
-	  back-ends/openfst/src/include/fst/expanded-fst.h,
-	  back-ends/openfst/src/include/fst/expectation-weight.h,
-	  back-ends/openfst/src/include/fst/factor-weight.h,
-	  back-ends/openfst/src/include/fst/flags.h,
-	  back-ends/openfst/src/include/fst/float-weight.h,
-	  back-ends/openfst/src/include/fst/fst-decl.h,
-	  back-ends/openfst/src/include/fst/fst.h,
-	  back-ends/openfst/src/include/fst/fstlib.h,
-	  back-ends/openfst/src/include/fst/generic-register.h,
-	  back-ends/openfst/src/include/fst/heap.h,
-	  back-ends/openfst/src/include/fst/icu.h,
-	  back-ends/openfst/src/include/fst/intersect.h,
-	  back-ends/openfst/src/include/fst/interval-set.h,
-	  back-ends/openfst/src/include/fst/invert.h,
-	  back-ends/openfst/src/include/fst/label-reachable.h,
-	  back-ends/openfst/src/include/fst/lexicographic-weight.h,
-	  back-ends/openfst/src/include/fst/lock.h,
-	  back-ends/openfst/src/include/fst/log.h,
-	  back-ends/openfst/src/include/fst/lookahead-filter.h,
-	  back-ends/openfst/src/include/fst/lookahead-matcher.h,
-	  back-ends/openfst/src/include/fst/map.h,
-	  back-ends/openfst/src/include/fst/matcher-fst.h,
-	  back-ends/openfst/src/include/fst/matcher.h,
-	  back-ends/openfst/src/include/fst/minimize.h,
-	  back-ends/openfst/src/include/fst/mutable-fst.h,
-	  back-ends/openfst/src/include/fst/pair-weight.h,
-	  back-ends/openfst/src/include/fst/partition.h,
-	  back-ends/openfst/src/include/fst/power-weight.h,
-	  back-ends/openfst/src/include/fst/product-weight.h,
-	  back-ends/openfst/src/include/fst/project.h,
-	  back-ends/openfst/src/include/fst/properties.h,
-	  back-ends/openfst/src/include/fst/prune.h,
-	  back-ends/openfst/src/include/fst/push.h,
-	  back-ends/openfst/src/include/fst/queue.h,
-	  back-ends/openfst/src/include/fst/randequivalent.h,
-	  back-ends/openfst/src/include/fst/randgen.h,
-	  back-ends/openfst/src/include/fst/random-weight.h,
-	  back-ends/openfst/src/include/fst/rational.h,
-	  back-ends/openfst/src/include/fst/register.h,
-	  back-ends/openfst/src/include/fst/relabel.h,
-	  back-ends/openfst/src/include/fst/replace-util.h,
-	  back-ends/openfst/src/include/fst/replace.h,
-	  back-ends/openfst/src/include/fst/reverse.h,
-	  back-ends/openfst/src/include/fst/reweight.h,
-	  back-ends/openfst/src/include/fst/rmepsilon.h,
-	  back-ends/openfst/src/include/fst/rmfinalepsilon.h,
-	  back-ends/openfst/src/include/fst/shortest-distance.h,
-	  back-ends/openfst/src/include/fst/shortest-path.h,
-	  back-ends/openfst/src/include/fst/signed-log-weight.h,
-	  back-ends/openfst/src/include/fst/slist.h,
-	  back-ends/openfst/src/include/fst/sparse-power-weight.h,
-	  back-ends/openfst/src/include/fst/sparse-tuple-weight.h,
-	  back-ends/openfst/src/include/fst/state-map.h,
-	  back-ends/openfst/src/include/fst/state-reachable.h,
-	  back-ends/openfst/src/include/fst/state-table.h,
-	  back-ends/openfst/src/include/fst/statesort.h,
-	  back-ends/openfst/src/include/fst/string-weight.h,
-	  back-ends/openfst/src/include/fst/string.h,
-	  back-ends/openfst/src/include/fst/symbol-table-ops.h,
-	  back-ends/openfst/src/include/fst/symbol-table.h,
-	  back-ends/openfst/src/include/fst/synchronize.h,
-	  back-ends/openfst/src/include/fst/test-properties.h,
-	  back-ends/openfst/src/include/fst/topsort.h,
-	  back-ends/openfst/src/include/fst/tuple-weight.h,
-	  back-ends/openfst/src/include/fst/types.h,
-	  back-ends/openfst/src/include/fst/union-find.h,
-	  back-ends/openfst/src/include/fst/union.h,
-	  back-ends/openfst/src/include/fst/util.h,
-	  back-ends/openfst/src/include/fst/vector-fst.h,
-	  back-ends/openfst/src/include/fst/verify.h,
-	  back-ends/openfst/src/include/fst/visit.h,
-	  back-ends/openfst/src/include/fst/weight.h,
-	  back-ends/openfst/src/lib, back-ends/openfst/src/lib/Makefile.am,
-	  back-ends/openfst/src/lib/compat.cc,
-	  back-ends/openfst/src/lib/flags.cc,
-	  back-ends/openfst/src/lib/fst.cc,
-	  back-ends/openfst/src/lib/properties.cc,
-	  back-ends/openfst/src/lib/symbol-table-ops.cc,
-	  back-ends/openfst/src/lib/symbol-table.cc,
-	  back-ends/openfst/src/lib/util.cc: Added missing directory
-	  'openfst'.
-
-2012-11-20 08:52  moshagen
-
-	* back-ends/openfstwin/src, back-ends/openfstwin/src/lib: More
-	  generated files to ignore.
-
-2012-11-20 08:51  moshagen
-
-	* back-ends, back-ends/dlfcn, back-ends/foma, back-ends/openfstwin,
-	  back-ends/sfst: Ignore generated files.
-
-2012-11-19 16:10  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/hfst_documentation.py,
-	  swig/internal_documentation/HfstTransitionGraph.h,
-	  swig/libhfst.i, swig/test_hfst_basic_transducer.py: Added a new
-	  constructor to HfstTransitionGraph, also added it to swig
-	  interface.
-
-2012-11-19 14:11  eaxelson
-
-	* swig/hfst_documentation.py,
-	  swig/internal_documentation/HfstTransitionGraph.h: Updated swig
-	  documentation.
-
-2012-11-17 11:20  eaxelson
-
-	* swig/hfst_documentation.py, swig/internal_documentation,
-	  swig/internal_documentation/HfstTransitionGraph.h: Updated python
-	  documentation.
-
-2012-11-16 14:34  eaxelson
-
-	* swig/Doxyfile, swig/hfst_documentation.py: Added more
-	  documentation of the python interface.
-
-2012-11-15 20:34  eaxelson
-
-	* swig/Doxyfile, swig/hfst_documentation.py: Tentatively added
-	  doxygen documentation for Python interface.
-
-2012-11-15 15:57  eaxelson
-
-	* Makefile.am, back-ends/Makefile.am, back-ends/foma/fomalib.h,
-	  configure.ac, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am, test/libhfst/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am: Now all back-ends (SFST,
-	  OpenFst and foma) are moved under HFST and statically linked to
-	  the HFST library.
-
-2012-11-15 12:07  eaxelson
-
-	* back-ends/Makefile.am: Forgot to change the directory name to
-	  opefstwin in Makefile.am.
-
-2012-11-15 12:03  eaxelson
-
-	* Makefile.am, back-ends, back-ends/Makefile.am, back-ends/dlfcn,
-	  back-ends/dlfcn/Makefile.am, back-ends/dlfcn/dlfcn.c,
-	  back-ends/dlfcn/dlfcn.h, back-ends/dlfcn/get-dlfcn.sh,
-	  back-ends/foma, back-ends/foma/CHANGELOG, back-ends/foma/COPYING,
-	  back-ends/foma/Makefile.am, back-ends/foma/README,
-	  back-ends/foma/README.cmatrix, back-ends/foma/README.symbols,
-	  back-ends/foma/apply.c, back-ends/foma/coaccessible.c,
-	  back-ends/foma/constructions.c, back-ends/foma/define.c,
-	  back-ends/foma/determinize.c, back-ends/foma/dynarray.c,
-	  back-ends/foma/extract.c, back-ends/foma/flags.c,
-	  back-ends/foma/foma.h, back-ends/foma/fomalib.h,
-	  back-ends/foma/fomalibconf.h, back-ends/foma/int_stack.c,
-	  back-ends/foma/io.c, back-ends/foma/lex.lexc.c,
-	  back-ends/foma/lex.yy.c, back-ends/foma/lexc.h,
-	  back-ends/foma/lexc.l, back-ends/foma/lexcread.c,
-	  back-ends/foma/mem.c, back-ends/foma/minimize.c,
-	  back-ends/foma/regex.l, back-ends/foma/regex.tab.c,
-	  back-ends/foma/regex.tab.h, back-ends/foma/regex.y,
-	  back-ends/foma/reverse.c, back-ends/foma/rewrite.c,
-	  back-ends/foma/sigma.c, back-ends/foma/spelling.c,
-	  back-ends/foma/stringhash.c, back-ends/foma/structures.c,
-	  back-ends/foma/topsort.c, back-ends/foma/trie.c,
-	  back-ends/foma/utf8.c, back-ends/openfstwin,
-	  back-ends/openfstwin/Makefile.am, back-ends/openfstwin/README,
-	  back-ends/openfstwin/get-openfst.sh, back-ends/openfstwin/src,
-	  back-ends/openfstwin/src/Makefile.am,
-	  back-ends/openfstwin/src/include,
-	  back-ends/openfstwin/src/include/fst,
-	  back-ends/openfstwin/src/include/fst/accumulator.h,
-	  back-ends/openfstwin/src/include/fst/add-on.h,
-	  back-ends/openfstwin/src/include/fst/arc-map.h,
-	  back-ends/openfstwin/src/include/fst/arc.h,
-	  back-ends/openfstwin/src/include/fst/arcfilter.h,
-	  back-ends/openfstwin/src/include/fst/arcsort.h,
-	  back-ends/openfstwin/src/include/fst/bi-table.h,
-	  back-ends/openfstwin/src/include/fst/cache.h,
-	  back-ends/openfstwin/src/include/fst/closure.h,
-	  back-ends/openfstwin/src/include/fst/compact-fst.h,
-	  back-ends/openfstwin/src/include/fst/compat.h,
-	  back-ends/openfstwin/src/include/fst/complement.h,
-	  back-ends/openfstwin/src/include/fst/compose-filter.h,
-	  back-ends/openfstwin/src/include/fst/compose.h,
-	  back-ends/openfstwin/src/include/fst/concat.h,
-	  back-ends/openfstwin/src/include/fst/config.h,
-	  back-ends/openfstwin/src/include/fst/connect.h,
-	  back-ends/openfstwin/src/include/fst/const-fst.h,
-	  back-ends/openfstwin/src/include/fst/determinize.h,
-	  back-ends/openfstwin/src/include/fst/dfs-visit.h,
-	  back-ends/openfstwin/src/include/fst/difference.h,
-	  back-ends/openfstwin/src/include/fst/edit-fst.h,
-	  back-ends/openfstwin/src/include/fst/encode.h,
-	  back-ends/openfstwin/src/include/fst/epsnormalize.h,
-	  back-ends/openfstwin/src/include/fst/equal.h,
-	  back-ends/openfstwin/src/include/fst/equivalent.h,
-	  back-ends/openfstwin/src/include/fst/expanded-fst.h,
-	  back-ends/openfstwin/src/include/fst/expectation-weight.h,
-	  back-ends/openfstwin/src/include/fst/factor-weight.h,
-	  back-ends/openfstwin/src/include/fst/flags.h,
-	  back-ends/openfstwin/src/include/fst/float-weight.h,
-	  back-ends/openfstwin/src/include/fst/fst-decl.h,
-	  back-ends/openfstwin/src/include/fst/fst.h,
-	  back-ends/openfstwin/src/include/fst/fstlib.h,
-	  back-ends/openfstwin/src/include/fst/generic-register.h,
-	  back-ends/openfstwin/src/include/fst/heap.h,
-	  back-ends/openfstwin/src/include/fst/icu.h,
-	  back-ends/openfstwin/src/include/fst/intersect.h,
-	  back-ends/openfstwin/src/include/fst/interval-set.h,
-	  back-ends/openfstwin/src/include/fst/invert.h,
-	  back-ends/openfstwin/src/include/fst/label-reachable.h,
-	  back-ends/openfstwin/src/include/fst/lexicographic-weight.h,
-	  back-ends/openfstwin/src/include/fst/lock.h,
-	  back-ends/openfstwin/src/include/fst/log.h,
-	  back-ends/openfstwin/src/include/fst/lookahead-filter.h,
-	  back-ends/openfstwin/src/include/fst/lookahead-matcher.h,
-	  back-ends/openfstwin/src/include/fst/map.h,
-	  back-ends/openfstwin/src/include/fst/matcher-fst.h,
-	  back-ends/openfstwin/src/include/fst/matcher.h,
-	  back-ends/openfstwin/src/include/fst/minimize.h,
-	  back-ends/openfstwin/src/include/fst/mutable-fst.h,
-	  back-ends/openfstwin/src/include/fst/pair-weight.h,
-	  back-ends/openfstwin/src/include/fst/partition.h,
-	  back-ends/openfstwin/src/include/fst/power-weight.h,
-	  back-ends/openfstwin/src/include/fst/product-weight.h,
-	  back-ends/openfstwin/src/include/fst/project.h,
-	  back-ends/openfstwin/src/include/fst/properties.h,
-	  back-ends/openfstwin/src/include/fst/prune.h,
-	  back-ends/openfstwin/src/include/fst/push.h,
-	  back-ends/openfstwin/src/include/fst/queue.h,
-	  back-ends/openfstwin/src/include/fst/randequivalent.h,
-	  back-ends/openfstwin/src/include/fst/randgen.h,
-	  back-ends/openfstwin/src/include/fst/random-weight.h,
-	  back-ends/openfstwin/src/include/fst/rational.h,
-	  back-ends/openfstwin/src/include/fst/register.h,
-	  back-ends/openfstwin/src/include/fst/relabel.h,
-	  back-ends/openfstwin/src/include/fst/replace-util.h,
-	  back-ends/openfstwin/src/include/fst/replace.h,
-	  back-ends/openfstwin/src/include/fst/reverse.h,
-	  back-ends/openfstwin/src/include/fst/reweight.h,
-	  back-ends/openfstwin/src/include/fst/rmepsilon.h,
-	  back-ends/openfstwin/src/include/fst/rmfinalepsilon.h,
-	  back-ends/openfstwin/src/include/fst/shortest-distance.h,
-	  back-ends/openfstwin/src/include/fst/shortest-path.h,
-	  back-ends/openfstwin/src/include/fst/signed-log-weight.h,
-	  back-ends/openfstwin/src/include/fst/slist.h,
-	  back-ends/openfstwin/src/include/fst/sparse-power-weight.h,
-	  back-ends/openfstwin/src/include/fst/sparse-tuple-weight.h,
-	  back-ends/openfstwin/src/include/fst/state-map.h,
-	  back-ends/openfstwin/src/include/fst/state-reachable.h,
-	  back-ends/openfstwin/src/include/fst/state-table.h,
-	  back-ends/openfstwin/src/include/fst/statesort.h,
-	  back-ends/openfstwin/src/include/fst/string-weight.h,
-	  back-ends/openfstwin/src/include/fst/string.h,
-	  back-ends/openfstwin/src/include/fst/symbol-table-ops.h,
-	  back-ends/openfstwin/src/include/fst/symbol-table.h,
-	  back-ends/openfstwin/src/include/fst/synchronize.h,
-	  back-ends/openfstwin/src/include/fst/test-properties.h,
-	  back-ends/openfstwin/src/include/fst/topsort.h,
-	  back-ends/openfstwin/src/include/fst/tuple-weight.h,
-	  back-ends/openfstwin/src/include/fst/types.h,
-	  back-ends/openfstwin/src/include/fst/union-find.h,
-	  back-ends/openfstwin/src/include/fst/union.h,
-	  back-ends/openfstwin/src/include/fst/unordered_map.h,
-	  back-ends/openfstwin/src/include/fst/unordered_set.h,
-	  back-ends/openfstwin/src/include/fst/util.h,
-	  back-ends/openfstwin/src/include/fst/vector-fst.h,
-	  back-ends/openfstwin/src/include/fst/verify.h,
-	  back-ends/openfstwin/src/include/fst/visit.h,
-	  back-ends/openfstwin/src/include/fst/weight.h,
-	  back-ends/openfstwin/src/lib,
-	  back-ends/openfstwin/src/lib/Makefile.am,
-	  back-ends/openfstwin/src/lib/compat.cc,
-	  back-ends/openfstwin/src/lib/flags.cc,
-	  back-ends/openfstwin/src/lib/fst.cc,
-	  back-ends/openfstwin/src/lib/properties.cc,
-	  back-ends/openfstwin/src/lib/symbol-table-ops.cc,
-	  back-ends/openfstwin/src/lib/symbol-table.cc,
-	  back-ends/openfstwin/src/lib/util.cc, back-ends/sfst,
-	  back-ends/sfst/Makefile.am, back-ends/sfst/README,
-	  back-ends/sfst/alphabet.cc, back-ends/sfst/alphabet.h,
-	  back-ends/sfst/basic.cc, back-ends/sfst/basic.h,
-	  back-ends/sfst/compact.cc, back-ends/sfst/compact.h,
-	  back-ends/sfst/determinise.cc, back-ends/sfst/fst.cc,
-	  back-ends/sfst/fst.h, back-ends/sfst/generate.cc,
-	  back-ends/sfst/hopcroft.cc, back-ends/sfst/interface.h,
-	  back-ends/sfst/mem.h, back-ends/sfst/operators.cc,
-	  back-ends/sfst/sgi.h, back-ends/sfst/utf8.cc,
-	  back-ends/sfst/utf8.h, configure.ac, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am, test/libhfst/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am, windows: Renamed directory
-	  'windows' as 'back-ends'.
-
-2012-11-14 20:08  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/libhfst.i, swig/test_hfst_basic_transducer.py: Added a
-	  variant of HfstBasicTransducer::add_symbols_to_alphabet that
-	  takes a StringSet as an argument.
-
-2012-11-14 18:54  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/libhfst.i, swig/test_rules.py,
-	  swig/test_transducer_functions.py, swig/test_xre_compiler.py:
-	  Added all substitute functions to swig.
-
-2012-11-13 16:07  eaxelson
-
-	* swig/libhfst.i, swig/test.sh, swig/test_xre_compiler.py: Added
-	  XreCompiler functionalities to Swig.
-
-2012-11-12 10:31  eaxelson
-
-	* swig/hfst_swig_extensions.h, swig/libhfst.i, swig/test.sh,
-	  swig/test_constructors.py, swig/test_examples.py,
-	  swig/test_extensions.py, swig/test_flag_diacritics.py,
-	  swig/test_hfst_basic_transducer.py, swig/test_lexc.py,
-	  swig/test_rules.py, swig/test_std_streams.py,
-	  swig/test_streams.py, swig/test_transducer_functions.py: Now
-	  enumerators can be used normally in python, e.g.
-	  libhfst.SFST_TYPE.
-
-2012-11-09 17:14  eaxelson
-
-	* swig/hfst_swig_extensions.h, swig/libhfst.i, swig/test.sh,
-	  swig/test_lexc.py: Added Lexc functions to Swig.
-
-2012-11-09 13:55  eaxelson
-
-	* swig/libhfst.i, swig/test.sh, swig/test_examples.py,
-	  swig/test_rules.py: Added more tests.
-
-2012-11-09 10:05  eaxelson
-
-	* configure.ac: Fixed a typo in configure file.
-
-2012-11-08 17:35  moshagen
-
-	* configure.ac: Bring the HFST_LONGVERSION in sync with the other
-	  version strings (again - is there a way to calculate some version
-	  strings from others? I.e. change once, update everywhere?).
-
-2012-11-08 16:39  moshagen
-
-	* test/tools/fsmbook-examples/MonishAnalysis: Ignore generated
-	  files.
-
-2012-11-08 15:05  eaxelson
-
-	* swig/libhfst.i, swig/test_transducer_functions.py: More updates
-	  to tests.
-
-2012-11-08 13:57  eaxelson
-
-	* swig/README, swig/hfst_swig_extensions.h, swig/libhfst.i,
-	  swig/test.sh, swig/test_extensions.py,
-	  swig/test_flag_diacritics.py, swig/test_transducer_functions.py:
-	  Updated swig tests.
-
-2012-11-08 13:14  sdrobac
-
-	* configure.ac, libhfst/src/parsers/xre_parse.yy,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/MonishAnalysis/Makefile.am,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.xfst.att,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.xfst.script,
-	  test/tools/fsmbook-examples/MonishAnalysis/test.script,
-	  test/tools/fsmbook-examples/monish-analysis-test.sh: Fixed
-	  MonishAnalysis fsmbook-examples test
-
-2012-11-08 10:59  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/HfstXeroxRulesTest.cc: Added before and after to
-	  HfstXeroxRules
-
-2012-11-07 13:13  eaxelson
-
-	* swig/test_std_streams.py, swig/test_tokenizer.py: Added new test
-	  for tokenizer.
-
-2012-11-06 13:50  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRulesTest.cc:
-	  Fixed restriction in HfstXeroxRules
-
-2012-11-02 16:29  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/HfstXeroxRulesTest.cc: Updated restriction in
-	  HfstXeroxRules
-
-2012-11-02 13:38  eaxelson
-
-	* swig/hfst_swig_extensions.h, swig/test_std_streams.sh: Small
-	  updates and added documentation to tests and swig bindings.
-
-2012-11-01 15:05  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/hfst_swig_extensions.h, swig/libhfst.i,
-	  swig/test_hfst_basic_transducer.py,
-	  swig/test_transducer_functions.py: Added new test cases and
-	  functions to the Swig interface. Also moved HfstFile to
-	  HfstTransitionGraph.h.
-
-2012-11-01 09:27  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/HfstXeroxRulesTest.cc: Added restriction to
-	  HfstXeroxrules
-
-2012-10-31 13:51  eaxelson
-
-	* swig/test_transducer_functions.py: Added one more test.
-
-2012-10-31 13:20  eaxelson
-
-	* swig/libhfst.i, swig/test_hfst_basic_transducer.py: Updated
-	  tests, added some throw statements to the interface file.
-
-2012-10-31 09:55  eaxelson
-
-	* swig/test_hfst_basic_transducer.py: Tentatively added a new test
-	  for swig bindings.
-
-2012-10-30 16:25  eaxelson
-
-	* swig/hfst_swig_extensions.h, swig/libhfst.i,
-	  swig/test_constructors.py: Added HfstTokenizer to the python
-	  interface.
-
-2012-10-30 15:35  hardwick
-
-	* libhfst/src/parsers/Makefile.am: Added some files to _BUILT that
-	  probably should have been there all along
-	  (is this the cause of those build problems on some platforms?)
-
-2012-10-30 15:20  eaxelson
-
-	* swig/test_constructors.py: Tentatively added python version of
-	  libhfst test.
-
-2012-10-30 10:33  eaxelson
-
-	* test/tools/Makefile.am: Added yet one missing lexc file.
-
-2012-10-30 10:25  eaxelson
-
-	* test/tools/Makefile.am: Added a missing file in lexc tests.
-
-2012-10-30 10:02  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.3.15.
-
-2012-10-29 13:12  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, swig,
-	  test/libhfst/test_transducer_functions.cc: Fixed a re-introduced
-	  bug in insert_freely(SymbolPair&), now unknown and identity
-	  symbols are expanded during the operation. Also made svn ignore
-	  some generated files in swig directory.
-
-2012-10-26 01:43  mie
-
-	* tools/src/hfst-twolc/src/Makefile.am: Fix unnecessary shell call
-	  that breaks portability
-
-2012-10-19 11:48  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed bug in flag diacritic
-	  handling. Transducers were harmonized before insertion of missing
-	  flags, which lead to undesired behavior when identity/unknown
-	  symbols mixed with flag diacritics.
-
-2012-10-18 12:29  eaxelson
-
-	* ., Doxyfile, api_documentation.dox, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h, swig,
-	  tools/src/hfst-tagger/src, tools/src/hfst-twolc/src: Updated
-	  doxygen documentation. Made svn ignore some generated files.
-
-2012-10-18 12:26  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi: Included Python
-	  scripts needed by tagger tools to Windows installer.
-
-2012-10-18 08:34  eaxelson
-
-	* scripts/hfst-xfst: Removed bashisms from scripts.
-
-2012-10-18 08:13  eaxelson
-
-	* tools/src/hfst-tagger/src/hfst-train-tagger.sh,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/hfst-twolc/src/hfst-twolc.sh,
-	  tools/src/hfst-twolc/test/test: Fixed some GNUisms ans bashisms
-	  in twolc and tagger scripts to make them work also on non-Linux
-	  platforms.
-
-2012-10-18 07:58  eaxelson
-
-	* test/tools/empty-input.sh, test/tools/hfst-check-environment.sh,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Fixed some GNUisms ans bashisms in tests to make them work also
-	  on non-Linux platforms.
-
-2012-10-17 11:49  eaxelson
-
-	* Doxyfile, api_documentation.dox, configure.ac,
-	  test/tools/hfst-check-help.sh,
-	  tools/src/hfst-tagger/src/Makefile.am: Enabled hfst-tagger when
-	  compiling on Windows. Excluded the Windows versions of tagger and
-	  twolc tools from hfst-check-help.sh. Also updated Doxygen
-	  documentation.
-
-2012-10-17 11:46  eaxelson
-
-	* NSIS/README, NSIS/copy_files.sh, NSIS/hfst_installer.nsi: Added
-	  hfst-train-tagger and hfst-twolc to Windows installer. Updated
-	  README file.
-
-2012-10-17 10:40  eaxelson
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/hfst-train-tagger-system.cc,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/hfst-twolc/src/hfst-twolc-system.cc: Added versions of
-	  hfst-twolc and hfst-train-tagger that use system calls instead of
-	  shell commands.
-
-2012-10-16 13:53  eaxelson
-
-	* tools/src/hfst-optimized-lookup.cc: Made small modifications to
-	  hfst-optimized-lookup so that it works on Windows. Now the
-	  transducer file is opened in binary mode and carriage returns are
-	  removed from the input strings.
-
-2012-10-13 03:51  mie
-
-	* libhfst/src/parsers/lexc-utils.cc: Just a test commit, nothing to
-	  see here
-
-2012-10-13 03:13  mie
-
-	* libhfst/src/parsers/lexc-utils.cc,
-	  test/tools/basic.lowercase-lexicon-end.lexc,
-	  test/tools/basic.multichar-flag-with-zero.lexc,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh: Parse 0 within @ flags as if it
-	  was known multichar symbol
-
-2012-10-13 03:12  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc: Fix escaped 0 at the end
-
-2012-10-13 02:27  mie
-
-	* libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-parser.yy,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh: Warn users about wrong case in
-	  keywords
-
-2012-10-11 09:25  eaxelson
-
-	* NSIS/README, NSIS/hfst_installer.nsi: Added a README file.
-
-2012-10-10 14:12  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi, configure.ac,
-	  tools/src/Makefile.am: Removed hfst-strip-header from tools, use
-	  hfst-fst2fst instead.
-
-2012-10-10 13:51  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi, configure.ac,
-	  tools/src/Makefile.am: Removed
-	  hfst-preprocess-for-optimized-lookup-format tool.
-
-2012-10-09 11:47  eaxelson
-
-	* NSIS/copy_files.sh, NSIS/hfst_installer.nsi,
-	  swig/hfst_swig_extensions.h, swig/libhfst.i: Updated swig
-	  bindings, edited NSIS scripts.
-
-2012-10-08 17:02  mie
-
-	* tools/src/hfst-info.cc: Parse version vector with serial strtouls
-
-2012-10-08 13:45  moshagen
-
-	* configure.ac: Bring the HFST_LONGVERSION in sync with the other
-	  version strings (?).
-
-2012-10-08 12:10  eaxelson
-
-	* NSIS/hfst_installer.nsi: Added files to HFSt installer.
-
-2012-10-06 19:55  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_constructors.cc, test/libhfst/test_examples.cc,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  test/libhfst/test_streams.cc, tools/src/hfst-txt2fst.cc: Changed
-	  HfstTransducer(FILE*, ...) so that epsilon symbol is an
-	  obligatory argument and added a new obligatory argument that
-	  keeps track of the line number in the AT&T file. Did the same to
-	  HfstBasicTransducer::read_in_att_format.
-
-2012-10-05 14:19  eaxelson
-
-	* NSIS/hfst_installer.nsi: Updated installer script.
-
-2012-10-05 11:58  eaxelson
-
-	* NSIS, NSIS/hfst_installer.nsi, swig/hfst_swig_extensions.h,
-	  swig/libhfst.i, swig/test_std_streams.py: Added a directory for
-	  NSIS installer scripts.
-
-2012-10-04 13:07  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  swig/hfst_swig_extensions.h, swig/libhfst.i,
-	  swig/test_streams.py: Now FomaTransducer::read_net accepts also
-	  files with CR+LF newlines.
-
-2012-10-03 16:29  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  swig/libhfst.i, swig/test_std_streams.sh, swig/test_streams.py:
-	  Added wrapper class HfstFile for FILE* that can be used in
-	  Python.
-
-2012-10-03 07:50  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: upper- and lowercase versions
-	  of convenience acceptors
-
-2012-10-01 09:09  eaxelson
-
-	* swig/libhfst.i, test/tools/Makefile.am: Added missing files to
-	  test/tools, fixed a typo in libhfst.i.
-
-2012-10-01 08:22  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.3.14.
-
-2012-09-30 07:12  eaxelson
-
-	* swig/test_std_streams.py, swig/test_std_streams.sh: Added new
-	  testing scripts.
-
-2012-09-29 14:12  eaxelson
-
-	* libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/libhfst.i, swig/test_streams.py: Now
-	  HfstTransitionGraph::read_in_att_format throws an
-	  EndOfFileException if the argument FILE is exhausted. Also fixed
-	  a typo in HfstOutputStream.
-
-2012-09-29 11:44  eaxelson
-
-	* libhfst/src/HfstOutputStream.cc, libhfst/src/HfstOutputStream.h,
-	  swig/libhfst.i, swig/setup.py, swig/test_streams.py: Added an
-	  alias for HfstOutputStream::operator<<,
-	  HfstOutputStream::redirect. Also added a Python test
-	  test_streams.py.
-
-2012-09-29 10:26  eaxelson
-
-	* swig/libhfst.i: Fixed a namespace issue in libhfst.i, now
-	  omor_query.py works.
-
-2012-09-29 10:04  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/libhfst.i: Added HFST exceptions to the Python interface.
-	  Renamed HfstBasicTransducer::at(HfstState) to
-	  transitions(HfstState).
-
-2012-09-28 16:18  eaxelson
-
-	* swig/libhfst.i: Added more functionalities to the swig interface.
-
-2012-09-27 20:21  mpsilfve
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Fixed
-	  missing symbol table in optionalization bug for tropical weight
-	  type transducers.
-
-2012-09-27 13:36  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/libhfst.i: Added wrappers for operators [], = and << so that
-	  they can be used in swig bindings.
-
-2012-09-26 15:09  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  swig/hfst_swig_extensions.h, swig/libhfst.i: Added the function
-	  write_in_att_format(char * buffer, bool) to HfstTransducer. This
-	  makes it possible to call python's print() to a transducer.
-
-2012-09-25 14:53  eaxelson
-
-	* swig/hfst_swig_extensions.h, swig/libhfst.i: Tentatively added
-	  HfstBasicTransducer to the swig interface.
-
-2012-09-25 12:53  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/xre_parse.yy: Changed Replace rules interface
-
-2012-09-25 07:07  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/hfst-pmatch2fst.cc: Fallback utf-8 tokenization
-
-2012-09-25 06:19  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: Tokenize string literals for
-	  pmatch parsing
-
-2012-09-20 15:30  eaxelson
-
-	* tools/src/hfst-lookup.cc: Now hfst-lookup handles the '\r'
-	  character right when parsing input strings on Windows.
-
-2012-09-20 12:12  eaxelson
-
-	* libhfst/src/implementations/HfstOlTransducer.cc: HfstOlTransducer
-	  streams are now opened in binary mode.
-
-2012-09-18 15:20  eaxelson
-
-	* libhfst/src/Makefile.am, libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am, test/libhfst/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-twolc/src/Makefile.am:
-	  Added dlfcn include path to Makefiles.
-
-2012-09-18 14:54  mie
-
-	* README: Remove mentions of apertium and xml stuff
-
-2012-09-18 09:30  hardwick
-
-	* tools/src/hfst-pmatch2fst.cc: Multiline handling like regexp2fst
-
-2012-09-18 09:13  eaxelson
-
-	* tools/src/Makefile.am: Fixed a typo in Makefile.am.
-
-2012-09-18 07:48  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Tentative names for
-	  charclasses
-
-2012-09-18 07:44  hardwick
-
-	* tools/src/hfst-pmatch2fst.cc: Semicolon separation is default
-
-2012-09-18 06:31  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.h: Context-checking markers in
-	  pmatch2fst parsing
-
-2012-09-17 15:54  moshagen
-
-	* windows/sfst: Ignore generated files.
-
-2012-09-17 14:14  mie
-
-	* libhfst/src/parsers/xre_lex.ll: Make , reserved. Fixes [#134].
-
-2012-09-17 14:12  mie
-
-	* tools/src/hfst-regexp2fst.cc: print yacc debug traces if hidden
-	  sekrit debug mode is on.
-
-2012-09-17 12:03  eaxelson
-
-	* windows/sfst/interface.h: Added missing file sfst/interface.h
-
-2012-09-17 11:15  eaxelson
-
-	* test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.hfst.script,
-	  test/tools/fsmbook-examples/BetterColaMachine/test.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese2.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/EinsteinsPuzzle.hfst.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.sh,
-	  test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAdjectivesAndVerbs.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/test.sh,
-	  test/tools/fsmbook-examples/FinnishNumerals/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.sh,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/test.script,
-	  test/tools/fsmbook-examples/FinnishProsody/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/test.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script,
-	  test/tools/fsmbook-examples/Lingala/test.script,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-examples/MonishAnalysis/test.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.sh,
-	  test/tools/fsmbook-examples/Palindromes/Palindromes.hfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/test.script,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.hfst.script,
-	  test/tools/fsmbook-examples/test-example.sh: Changed
-	  ../../tools/src to in fsmbook-examples to make tests more
-	  flexible.
-
-2012-09-17 09:26  eaxelson
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/compare-functionality.sh,
-	  test/tools/compose-functionality.sh,
-	  test/tools/compose-intersect-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh, test/tools/empty-input.sh,
-	  test/tools/format-functionality.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/fst2txt-functionality.sh,
-	  test/tools/head-functionality.sh,
-	  test/tools/hfst-check-environment.sh,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh,
-	  test/tools/incompatible-formats.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/latin-1-strings.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh, test/tools/lexc2fst-stress.sh,
-	  test/tools/lookup-functionality.sh, test/tools/lookup-stress.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/permutate-file-params.sh,
-	  test/tools/proc-functionality.sh, test/tools/proc-stress.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/push-weights-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/reweight-functionality.sh,
-	  test/tools/shuffle-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/strings2fst-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/summarize-functionality.sh,
-	  test/tools/tail-functionality.sh,
-	  test/tools/txt2fst-functionality.sh, test/tools/utf-8-strings.sh,
-	  test/tools/valgrind.sh: Changed the pathname ../../tools/src to .
-	  This makes testing more flexible.
-
-2012-09-14 13:58  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am,
-	  test/tools/regexp2fst-functionality.sh: Fixed a couple of typos.
-
-2012-09-13 14:53  eaxelson
-
-	* windows/sfst/Makefile.am, windows/sfst/alphabet.C,
-	  windows/sfst/alphabet.cc, windows/sfst/basic.C,
-	  windows/sfst/basic.cc, windows/sfst/compact.C,
-	  windows/sfst/compact.cc, windows/sfst/determinise.C,
-	  windows/sfst/determinise.cc, windows/sfst/fst.C,
-	  windows/sfst/fst.cc, windows/sfst/generate.C,
-	  windows/sfst/generate.cc, windows/sfst/hopcroft.C,
-	  windows/sfst/hopcroft.cc, windows/sfst/operators.C,
-	  windows/sfst/operators.cc, windows/sfst/utf8.C,
-	  windows/sfst/utf8.cc: Renamed .c files to .cc so that
-	  c++-compiler is used.
-
-2012-09-13 13:44  eaxelson
-
-	* libhfst/src/Makefile.am, libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am, test/libhfst/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am: Fixed sfst include path.
-
-2012-09-13 12:35  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am, test/libhfst/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am, windows/Makefile.am,
-	  windows/openfst/README, windows/sfst, windows/sfst/Makefile.am,
-	  windows/sfst/README, windows/sfst/alphabet.C,
-	  windows/sfst/alphabet.h, windows/sfst/basic.C,
-	  windows/sfst/basic.h, windows/sfst/compact.C,
-	  windows/sfst/compact.h, windows/sfst/determinise.C,
-	  windows/sfst/fst.C, windows/sfst/fst.h, windows/sfst/generate.C,
-	  windows/sfst/hopcroft.C, windows/sfst/mem.h,
-	  windows/sfst/operators.C, windows/sfst/sgi.h,
-	  windows/sfst/utf8.C, windows/sfst/utf8.h: Tentatively added SFST
-	  under directory windows.
-
-2012-09-13 11:29  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h: #include
-	  <stack> (seems to be necessary when compiling without openfst at
-	  least)
-
-2012-09-12 22:48  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc: Some compilers don't believe
-	  in universal characters given from the ASCII
-	  range, so instead of \u000D, have \r
-
-2012-09-12 15:44  eaxelson
-
-	* libhfst/src/FormatSpecifiers.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/parsers/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am, windows/foma/io.c: Fixed
-	  format specifiers when printing long long on Windows. Also
-	  specified windows/foma as include directory in Makefiles.
-
-2012-09-11 16:21  moshagen
-
-	* test/tools: Added one ignore.
-
-2012-09-11 16:20  moshagen
-
-	* test/tools/parallel-left-arrow-multicom-emptyline.xre,
-	  test/tools/regexp2fst-functionality.sh: Added regex test case
-	  from the GT/Divvun sources that presently does not compile with
-	  hfst-regexp2fst.
-
-2012-09-11 15:26  eaxelson
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am, windows/foma/Makefile.am,
-	  windows/foma/fomalib.h, windows/foma/io.c: Made fixes to foma
-	  compilation.
-
-2012-09-11 15:18  hardwick
-
-	* libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Add charset-defining
-	  hardcoded transducers to pmatch utilities for now
-
-2012-09-11 12:53  eaxelson
-
-	* windows/foma/Makefile.am, windows/foma/README,
-	  windows/foma/fomalib.h, windows/foma/io.c: Foma's io functions
-	  are now skipped.
-
-2012-09-11 12:38  moshagen
-
-	* windows/foma: Ignore generated files.
-
-2012-09-11 12:01  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/xre_parse.yy,
-	  test/tools/parallel-left-arrow.xre: Fixed left replace rule
-
-2012-09-11 07:20  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h: Stateful
-	  context-checking mechanism; remove recursive functions for same
-
-2012-09-10 16:04  eaxelson
-
-	* configure.ac, windows/foma/Makefile.am: OpenFst library check is
-	  now skipped and flag -D_MSC_VER is used when compiling on
-	  Windows.
-
-2012-09-10 14:58  eaxelson
-
-	* windows/foma/Makefile.am: Fixed a typo in library name.
-
-2012-09-10 14:51  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am, windows/Makefile.am,
-	  windows/foma, windows/foma/CHANGELOG, windows/foma/COPYING,
-	  windows/foma/Makefile.am, windows/foma/README,
-	  windows/foma/README.cmatrix, windows/foma/README.symbols,
-	  windows/foma/apply.c, windows/foma/coaccessible.c,
-	  windows/foma/constructions.c, windows/foma/define.c,
-	  windows/foma/determinize.c, windows/foma/dynarray.c,
-	  windows/foma/extract.c, windows/foma/flags.c,
-	  windows/foma/foma.h, windows/foma/fomalib.h,
-	  windows/foma/fomalibconf.h, windows/foma/int_stack.c,
-	  windows/foma/io.c, windows/foma/lex.lexc.c,
-	  windows/foma/lex.yy.c, windows/foma/lexc.h, windows/foma/lexc.l,
-	  windows/foma/lexcread.c, windows/foma/mem.c,
-	  windows/foma/minimize.c, windows/foma/regex.l,
-	  windows/foma/regex.tab.c, windows/foma/regex.tab.h,
-	  windows/foma/regex.y, windows/foma/reverse.c,
-	  windows/foma/rewrite.c, windows/foma/sigma.c,
-	  windows/foma/spelling.c, windows/foma/stringhash.c,
-	  windows/foma/structures.c, windows/foma/topsort.c,
-	  windows/foma/trie.c, windows/foma/utf8.c: Tentatively added foma
-	  under directory windows.
-
-2012-09-10 13:51  mpsilfve
-
-	* tools/src/generate_model_forms.cc,
-	  tools/src/generate_model_forms.h, tools/src/hfst-guess.cc: Added
-	  generate_threshold parameter to prevent generating suboptimal
-	  forms.
-
-2012-09-10 13:28  mpsilfve
-
-	* tools/src/generate_model_forms.cc,
-	  tools/src/generate_model_forms.h: Generate several forms if
-	  several forms can be generated.
-
-2012-09-10 11:46  eaxelson
-
-	* test/tools/strings2fst-functionality.sh: Added missing --format
-	  flag in hfst-strings2fst functionality test.
-
-2012-09-10 11:35  moshagen
-
-	* tools/src: One more binary file to ignore.
-
-2012-09-10 11:13  mpsilfve
-
-	* tools/src/guessify_fst.cc: Modified guessify to handle gradation
-	  in omofi.
-
-2012-09-09 13:19  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/generate_model_forms.cc,
-	  tools/src/hfst-expand-equivalences.cc, tools/src/hfst-guess.cc:
-	  ACX tool disabled by default, requires libxml/tree.h and -lxml2
-
-2012-09-09 07:56  moshagen
-
-	* libhfst/src, libhfst/src/parsers, test/tools,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle,
-	  test/tools/fsmbook-examples/EnglishNumerals,
-	  test/tools/fsmbook-examples/Esperanto,
-	  test/tools/fsmbook-examples/FinnishNumerals,
-	  test/tools/fsmbook-examples/NumbersToNumerals,
-	  tools/src/hfst-twolc/test: Ignore generated test files.
-
-2012-09-09 07:43  moshagen
-
-	* tools/src/hfst-twolc/test/Makefile.am~: Temporary file - does not
-	  belong in svn.
-
-2012-09-09 00:44  mie
-
-	* test/tools/parallel-left-arrow.xre,
-	  test/tools/regexp2fst-functionality.sh: Test parallel left arrows
-	  [#132] part 2.
-
-2012-09-09 00:30  mie
-
-	* tools/src/hfst-regexp2fst.cc: Ignore expressions that _only_
-	  contain whitespace. Fixes [#132]?
-
-2012-09-09 00:30  mie
-
-	* test/tools/not-contains-a-comment-emptyline.xre,
-	  test/tools/not-contains-a.xre,
-	  test/tools/regexp2fst-functionality.sh: Test not contains and
-	  multiline expressions with comments and emptylines,
-	  Bug [#132]
-
-2012-09-09 00:12  mie
-
-	* tools/src/hfst-regexp2fst.cc: Bail on parse errors
-
-2012-09-09 00:03  mie
-
-	* test/tools/cats_and_dogs_semicolon.xre: No semicolons, huh
-
-2012-09-08 23:41  mie
-
-	* tools/src/hfst-strings2fst.cc: Allow windows or mac legacy \r's
-	  to end strings
-
-2012-09-08 23:37  mie
-
-	* tools/src/hfst-regexp2fst.cc, tools/src/hfst-strings2fst.cc: Stop
-	  recording input data to headers until header support for longer
-	  data
-	  gets fixed
-
-2012-09-08 23:31  mie
-
-	* test/tools/Makefile.am: Only test fsmbook-examples if other tools
-	  actually work...
-
-2012-09-08 22:29  mie
-
-	* configure.ac, tools/src/hfst-info.cc: Do not use AC_PACKAGE_URL
-	  or resp. parameter to support autoconf's
-	  older than 2.63 or so
-
-2012-09-08 22:23  mie
-
-	* test/tools/strings2fst-functionality.sh: Test that dos strings
-	  compile like unix
-
-2012-09-08 22:18  mie
-
-	* test/tools/lexc-functionality.sh: tests should pass 77 if tool is
-	  not available
-
-2012-09-08 21:49  mie
-
-	* test/tools/dos.strings, test/tools/strings2fst-functionality.sh:
-	  Test that strings2fst handles M$-strings
-
-2012-09-07 12:32  eaxelson
-
-	* test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh,
-	  tools/src/hfst-twolc/test/test: Fixed a bug in testing if
-	  compilation is done on Windows.
-
-2012-09-07 11:25  eaxelson
-
-	* test/tools/lexc-functionality.sh, tools/src/hfst-lexc.cc:
-	  Disabled using hfst-lexc with multiple input files on Windows.
-
-2012-09-07 10:34  eaxelson
-
-	* test/tools/fst2txt-functionality.sh,
-	  test/tools/lexc-functionality.sh: Fixed some problems with
-	  automatic LF-to-CRLF conversion on Windows.
-
-2012-09-07 07:44  eaxelson
-
-	* tools/src/hfst-twolc/test/test: Now hfst-twolc test uses 'uname'
-	  to find out if Windows is used.
-
-2012-09-07 07:40  eaxelson
-
-	* test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Added excutable file extension '.exe' to tests when running them
-	  on Windows.
-
-2012-09-06 15:46  eaxelson
-
-	* configure.ac: Disabled tagger tools on Windows until they work
-	  there too.
-
-2012-09-06 13:56  eaxelson
-
-	* tools/src/hfst-substitute.cc: hfst-substitute now recognizes
-	  '@0@' as epsilon, fixes bug #133.
-
-2012-09-05 13:04  moshagen
-
-	* tools/src, tools/src/hfst-tagger/src: Ignore generated files.
-
-2012-09-05 12:38  eaxelson
-
-	* configure.ac, test/tools/fsmbook-examples/Makefile.am,
-	  tools/src/Makefile.am, tools/src/hfst-twolc/src/Makefile.am:
-	  Noticed missing files and tests that should be skipped during
-	  distcheck.
-
-2012-09-05 09:05  eaxelson
-
-	* tools/src/hfst-twolc/src/Makefile.am: make dist revealed an extra
-	  file listed in Makefile, skipped that
-
-2012-09-05 09:01  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.3.13.
-
-2012-09-04 14:04  eaxelson
-
-	* libhfst/src/parsers/LexcCompiler.cc,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.sh,
-	  test/tools/hfst-check-version.sh,
-	  test/tools/shuffle-functionality.sh, tools/src/hfst-compare.cc,
-	  tools/src/hfst-duplicate.cc,
-	  tools/src/hfst-pair-test-transducers.h,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-twolc/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/hfst-twolc/src/common_globals.h,
-	  tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/test/test,
-	  tools/src/parsers/XfstCompiler.cc: Merged changes from old
-	  repository.
-
-2012-09-04 13:43  hardwick
-
-	* libhfst/src/parsers/Makefile.am: Undo conditional compilation of
-	  pmatch compiling stuff
-
-2012-09-04 12:08  mpsilfve
-
-	* tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.h,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponentPair.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponentPair.h,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceTagger.cc: Limit
-	  memory consumption a bit by clearing SequenceModelComponentPair
-	  state tables between tagging sentences.
-
-2012-09-04 12:06  hardwick
-
-	* libhfst/src/parsers/Makefile.am: Make pmatch parsing code
-	  conditional on WANT_PMATCH2FST
-
-2012-09-04 12:03  mpsilfve
-
-	* libhfst/src/implementations/optimized-lookup/pmatch.h: Changed
-	  sizeof(input_symbol) and so on to sizeof(SymbolNumber) since
-	  sizeof can only be applied to static data members according to
-	  standard (though not all versions of gcc).
-
-2012-09-04 11:51  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.cc:
-	  Changed WeightedStringVectorCollection test so that it takes into
-	  account the model penalty weight line.
-
-2012-09-04 10:04  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Fixed
-	  incorrect loop condition in previous commit to this file
-
-2012-09-04 08:16  mpsilfve
-
-	* tools/src/hfst-guess.cc: Added newline between results for
-	  different words.
-
-2012-09-04 08:09  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Recommit fix to ol -> basic conversion bug (hopefully)
-
-2012-08-31 21:52  mie
-
-	* libhfst/src/parsers/lexc-utils.cc: missing part of %0 handling
-
-2012-08-29 13:55  eaxelson
-
-	* test/libhfst/Makefile.am, tools/src/hfst-twolc/src/Makefile.am:
-	  Option --enable-windows is passed to Makefiles.
-
-2012-08-29 08:16  eaxelson
-
-	* tools/src/hfst-twolc/Makefile.am: hfst-twolc test is currently
-	  skipped on Windows. hfst-twolc is a bash script that will be
-	  replaced by a batch file on Windows.
-
-2012-08-28 10:13  mpsilfve
-
-	* tools/src/hfst-tagger/src/hfst-open-input-file-for-tagger.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.cc:
-	  Fixed multiple defintions of SequenceModelComponent::START_STATE
-	  in make check
-
-2012-08-28 07:47  hardwick
-
-	* tools/src: Ignore binary
-
-2012-08-28 07:28  hardwick
-
-	* libhfst/src/parsers/PmatchCompiler.cc: Comment out xre-specific
-	  tests for the time being
-
-2012-08-28 06:41  hardwick
-
-	* tools/src/hfst-pmatch.h: Merge missing header file
-
-2012-08-28 06:36  hardwick
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-pmatch.cc,
-	  tools/src/hfst-pmatch2fst.cc: Merge changes to tools pmatch2fst
-	  and pmatch
-
-2012-08-28 06:26  hardwick
-
-	* libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h: Merge pmatch parser changes
-
-2012-08-28 06:23  hardwick
-
-	* libhfst/src/Makefile.am: Merge inclusion of hfst.h in HFST_HDRS
-
-2012-08-28 06:21  hardwick
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/pmatch.cc,
-	  libhfst/src/implementations/optimized-lookup/pmatch.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Merge
-	  pmatch library parts from devbranch
-
-2012-08-27 14:39  mpsilfve
-
-	* tools/src/generate_model_forms.h, tools/src/hfst-guess.cc,
-	  tools/src/hfst-guessify.cc: Improved error messages and fixed
-	  help message.
-
-2012-08-27 10:39  mpsilfve
-
-	* tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.h:
-	  Maybe fixed undefined ref. to SequenceModelComponent::START_STATE
-	  problem.
-
-2012-08-24 12:26  mie
-
-	* configure.ac: Set revision for info
-
-2012-08-24 11:54  moshagen
-
-	* libhfst/src, tools/src: Even more files to ignore.
-
-2012-08-24 11:52  eaxelson
-
-	* test/tools/fst2txt-functionality.sh,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh,
-	  test/tools/proc-functionality.sh: Newlines are now handled
-	  correctly when testing command line tools on Windows. Version and
-	  help checks also skip the tool hfst-info.
-
-2012-08-24 11:15  mie
-
-	* libhfst/src/hfst.hpp.in, tools/src/hfst-info.cc: Further porting
-	  for info
-
-2012-08-24 10:57  mie
-
-	* configure.ac: Missing square bracket in define
-
-2012-08-24 10:50  mie
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-info.cc: Port
-	  basic info app to trunk.
-
-2012-08-24 10:45  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: Fix
-	  conversion bug where when converting to BasicTransducer, we would
-	  stop
-	  looking for a particular flag diacritic when seeing symbols that
-	  aren't epsilon or this flag. This caused misses of flags when
-	  they
-	  weren't arranged in a lucky way.
-
-2012-08-24 10:32  mie
-
-	* configure.ac: Uh, actually declare hfst.hpp in headers and not
-	  files to get the meta
-
-2012-08-24 10:19  mie
-
-	* configure.ac, libhfst/src/hfst.hpp.in: Port some versioning and
-	  meta from branch
-
-2012-08-24 09:59  moshagen
-
-	* tools/src: More binary files to ignore.
-
-2012-08-24 08:50  moshagen
-
-	* libhfst/src/parsers, tools/src, tools/src/hfst-twolc/src,
-	  windows/dlfcn, windows/openfst/src/lib: Ignore generatated *.hh
-	  file and .deps directories.
-
-2012-08-24 07:33  eaxelson
-
-	* libhfst/src/FormatSpecifiers.h, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am, tools/src/hfst-affix-guessify.cc,
-	  tools/src/hfst-binary-tool.cc, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-compare.cc, tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-determinize.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-duplicate.cc,
-	  tools/src/hfst-edit-metadata.cc, tools/src/hfst-fst2fst.cc,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-grep.cc,
-	  tools/src/hfst-head.cc, tools/src/hfst-invert.cc,
-	  tools/src/hfst-lookup.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-name.cc, tools/src/hfst-pair-test.cc,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-remove-epsilons.cc, tools/src/hfst-repeat.cc,
-	  tools/src/hfst-reverse.cc, tools/src/hfst-reweight.cc,
-	  tools/src/hfst-shuffle.cc, tools/src/hfst-split.cc,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-subtract.cc,
-	  tools/src/hfst-summarize.cc, tools/src/hfst-tail.cc,
-	  tools/src/hfst-txt2fst.cc, tools/src/hfst-unary-tool.cc: Replaced
-	  size_t format specifier %zu with a macro that is expanded to %zu
-	  or %Iu (Windows).
-
-2012-08-23 10:35  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-summarize.cc: Removed debugging prints from
-	  HfstTransitionGraph.h. Added --help information to
-	  hfst-summarize.
-
-2012-08-22 12:55  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/tagger_aux.py,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py:
-	  Fixed python and utf-8 related problems.
-
-2012-08-22 06:34  eaxelson
-
-	* libhfst/src/Makefile.am, libhfst/src/implementations/Makefile.am:
-	  Added preprocessing flag -DWINDOWS to Makefiles if HFST is
-	  compiled on Windows.
-
-2012-08-21 15:41  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/inc/globals-common.h: Streams to files in
-	  TropicalWeightInputStream and TropicalWeightOutputStream are now
-	  opened in binary mode. The global variable _CRT_fmode is also set
-	  to binary mode in file globals-common.h when compiling on
-	  Windows. This makes sure that streams are always processed in
-	  binary mode on Windows, with no extra or missing carriage return
-	  or line feed characters.
-
-2012-08-21 12:13  mie
-
-	* README: Add Mac OS X abort trap to faqs
-
-2012-08-14 19:38  mie
-
-	* libhfst/src/parsers/xre_parse.yy: Move "stuff that is next to
-	  colons" to another level to support quoted
-	  literals and some other constructs maybe
-
-2012-08-13 12:51  mie
-
-	* tools/src/hfst-lexc.cc: Provide more info about itnae's in lexc
-	  for mac users
-
-2012-08-13 09:39  hardwick
-
-	* libhfst/src/hfst.h: A convenience header file including HFST
-	  headers
-	  necessary for doing practically anything
-
-2012-08-13 08:12  eaxelson
-
-	* windows/dlfcn/dlfcn.c, windows/dlfcn/dlfcn.h,
-	  windows/openfst/src/include/fst/accumulator.h,
-	  windows/openfst/src/include/fst/add-on.h,
-	  windows/openfst/src/include/fst/arc-map.h,
-	  windows/openfst/src/include/fst/arc.h,
-	  windows/openfst/src/include/fst/arcfilter.h,
-	  windows/openfst/src/include/fst/arcsort.h,
-	  windows/openfst/src/include/fst/bi-table.h,
-	  windows/openfst/src/include/fst/cache.h,
-	  windows/openfst/src/include/fst/closure.h,
-	  windows/openfst/src/include/fst/compact-fst.h,
-	  windows/openfst/src/include/fst/compat.h,
-	  windows/openfst/src/include/fst/complement.h,
-	  windows/openfst/src/include/fst/compose-filter.h,
-	  windows/openfst/src/include/fst/compose.h,
-	  windows/openfst/src/include/fst/concat.h,
-	  windows/openfst/src/include/fst/config.h,
-	  windows/openfst/src/include/fst/connect.h,
-	  windows/openfst/src/include/fst/const-fst.h,
-	  windows/openfst/src/include/fst/determinize.h,
-	  windows/openfst/src/include/fst/dfs-visit.h,
-	  windows/openfst/src/include/fst/difference.h,
-	  windows/openfst/src/include/fst/edit-fst.h,
-	  windows/openfst/src/include/fst/encode.h,
-	  windows/openfst/src/include/fst/epsnormalize.h,
-	  windows/openfst/src/include/fst/equal.h,
-	  windows/openfst/src/include/fst/equivalent.h,
-	  windows/openfst/src/include/fst/expanded-fst.h,
-	  windows/openfst/src/include/fst/expectation-weight.h,
-	  windows/openfst/src/include/fst/factor-weight.h,
-	  windows/openfst/src/include/fst/flags.h,
-	  windows/openfst/src/include/fst/float-weight.h,
-	  windows/openfst/src/include/fst/fst-decl.h,
-	  windows/openfst/src/include/fst/fst.h,
-	  windows/openfst/src/include/fst/fstlib.h,
-	  windows/openfst/src/include/fst/generic-register.h,
-	  windows/openfst/src/include/fst/heap.h,
-	  windows/openfst/src/include/fst/icu.h,
-	  windows/openfst/src/include/fst/intersect.h,
-	  windows/openfst/src/include/fst/interval-set.h,
-	  windows/openfst/src/include/fst/invert.h,
-	  windows/openfst/src/include/fst/label-reachable.h,
-	  windows/openfst/src/include/fst/lexicographic-weight.h,
-	  windows/openfst/src/include/fst/lock.h,
-	  windows/openfst/src/include/fst/log.h,
-	  windows/openfst/src/include/fst/lookahead-filter.h,
-	  windows/openfst/src/include/fst/lookahead-matcher.h,
-	  windows/openfst/src/include/fst/map.h,
-	  windows/openfst/src/include/fst/matcher-fst.h,
-	  windows/openfst/src/include/fst/matcher.h,
-	  windows/openfst/src/include/fst/minimize.h,
-	  windows/openfst/src/include/fst/mutable-fst.h,
-	  windows/openfst/src/include/fst/pair-weight.h,
-	  windows/openfst/src/include/fst/partition.h,
-	  windows/openfst/src/include/fst/power-weight.h,
-	  windows/openfst/src/include/fst/product-weight.h,
-	  windows/openfst/src/include/fst/project.h,
-	  windows/openfst/src/include/fst/properties.h,
-	  windows/openfst/src/include/fst/prune.h,
-	  windows/openfst/src/include/fst/push.h,
-	  windows/openfst/src/include/fst/queue.h,
-	  windows/openfst/src/include/fst/randequivalent.h,
-	  windows/openfst/src/include/fst/randgen.h,
-	  windows/openfst/src/include/fst/random-weight.h,
-	  windows/openfst/src/include/fst/rational.h,
-	  windows/openfst/src/include/fst/register.h,
-	  windows/openfst/src/include/fst/relabel.h,
-	  windows/openfst/src/include/fst/replace-util.h,
-	  windows/openfst/src/include/fst/replace.h,
-	  windows/openfst/src/include/fst/reverse.h,
-	  windows/openfst/src/include/fst/reweight.h,
-	  windows/openfst/src/include/fst/rmepsilon.h,
-	  windows/openfst/src/include/fst/rmfinalepsilon.h,
-	  windows/openfst/src/include/fst/shortest-distance.h,
-	  windows/openfst/src/include/fst/shortest-path.h,
-	  windows/openfst/src/include/fst/signed-log-weight.h,
-	  windows/openfst/src/include/fst/slist.h,
-	  windows/openfst/src/include/fst/sparse-power-weight.h,
-	  windows/openfst/src/include/fst/sparse-tuple-weight.h,
-	  windows/openfst/src/include/fst/state-map.h,
-	  windows/openfst/src/include/fst/state-reachable.h,
-	  windows/openfst/src/include/fst/state-table.h,
-	  windows/openfst/src/include/fst/statesort.h,
-	  windows/openfst/src/include/fst/string-weight.h,
-	  windows/openfst/src/include/fst/string.h,
-	  windows/openfst/src/include/fst/symbol-table-ops.h,
-	  windows/openfst/src/include/fst/symbol-table.h,
-	  windows/openfst/src/include/fst/synchronize.h,
-	  windows/openfst/src/include/fst/test-properties.h,
-	  windows/openfst/src/include/fst/topsort.h,
-	  windows/openfst/src/include/fst/tuple-weight.h,
-	  windows/openfst/src/include/fst/types.h,
-	  windows/openfst/src/include/fst/union-find.h,
-	  windows/openfst/src/include/fst/union.h,
-	  windows/openfst/src/include/fst/unordered_map.h,
-	  windows/openfst/src/include/fst/unordered_set.h,
-	  windows/openfst/src/include/fst/util.h,
-	  windows/openfst/src/include/fst/vector-fst.h,
-	  windows/openfst/src/include/fst/verify.h,
-	  windows/openfst/src/include/fst/visit.h,
-	  windows/openfst/src/include/fst/weight.h,
-	  windows/openfst/src/lib/compat.cc,
-	  windows/openfst/src/lib/flags.cc, windows/openfst/src/lib/fst.cc,
-	  windows/openfst/src/lib/properties.cc,
-	  windows/openfst/src/lib/symbol-table-ops.cc,
-	  windows/openfst/src/lib/symbol-table.cc,
-	  windows/openfst/src/lib/util.cc: Added OpenFst and dlfcn
-	  functionalities as a part of HFST (at least when it is compiled
-	  on Windows).
-
-2012-08-08 09:05  eaxelson
-
-	* test/tools/fsmbook-examples/monish-guesser-analyzer-test.sh:
-	  Added a script for Monish guesser-analyzer test.
-
-2012-08-01 13:53  mie
-
-	* README.deps: Installation instructions for dependencies that are
-	  not in our control...
-
-2012-08-01 13:16  mie
-
-	* README-alpha: No alphas in trunk
-
-2012-07-31 13:17  moshagen
-
-	* test/tools/fsmbook-examples/MonishGuesserAnalyzer: Ignore
-	  generated files.
-
-2012-07-30 00:27  mie
-
-	* README: retab!
-
-2012-07-30 00:21  mie
-
-	* README: Add port and gentoo installation instructions
-
-2012-07-21 20:53  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/build_model_src/tagger_aux.py,
-	  tools/src/hfst-tagger/src/hfst-reweight-tagger.cc,
-	  tools/src/hfst-tagger/src/hfst-tag.cc: Added reweighting tool.
-
-2012-07-21 14:30  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/tagger_aux.py,
-	  tools/src/hfst-tagger/src/hfst-open-input-file-for-tagger.cc,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py:
-	  Added config-file.
-
-2012-07-21 14:27  mpsilfve
-
-	* tools/src/hfst-tagger/src/use_model_src/SequenceModelComponentPair.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponentPair.h:
-	  Added size() function.
-
-2012-07-21 09:21  mpsilfve
-
-	* tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py:
-	  Added dummy-tags to guesser and lexicon entries without real
-	  tags, so that the could be parsed in the same way as regular
-	  lexicon and guesser entries.
-
-2012-07-21 09:19  mpsilfve
-
-	* tools/src/hfst-tagger/src/hfst-tag.cc: Fixed output file, so that
-	  output is printed to stdout, when no output file is given instead
-	  of file "<stdout>".
-
-2012-07-21 09:17  mpsilfve
-
-	* tools/src/hfst-tagger/src/use_model_src/DataTypes.h,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.cc,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.h,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceTagger.cc:
-	  Changed guesser tags.
-
-2012-07-21 09:15  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/FstBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/FstBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.cc,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.h,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.cc,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.h,
-	  tools/src/hfst-tagger/src/build_model_src/tagger_aux.py: Some
-	  default-transitions were missing. Added them.
-
-2012-07-19 20:37  hardwick
-
-	* tools/src/generate_model_forms.h: Another #include
-	  <hfst/HfstTransducer.h> -> #include "HfstTransducer.h"
-
-2012-07-18 19:05  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/LexicalModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/LexicalModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/tagger_aux.py,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py:
-	  Added case sensitivity to suffix counts.
-
-2012-07-12 13:32  sdrobac
-
-	* configure.ac, test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/Makefile.am,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.xfst.att,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.xfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/test.script,
-	  test/tools/fsmbook-examples/YaleShooting/test.script,
-	  test/tools/fsmbook-examples/xfst-prolog-to-hfst-att.sh: Added
-	  'MonishGuesserAnalyzer' test for parser
-
-2012-07-09 14:38  hardwick
-
-	* libhfst/src/HfstInputStream.cc: Continued adventures in unsigned
-	  short reading: cast to unsigned char,
-	  not unsigned short, before shifting and adding the bytes.
-
-2012-07-05 11:37  sdrobac
-
-	* libhfst/src/parsers/xre_parse.yy: (Regular) containment fixed in
-	  'Regexp2fst'
-
-2012-06-30 19:57  mpsilfve
-
-	* tools/src/hfst-guess.cc, tools/src/hfst-guessify.cc: Fixed
-	  kitwiki addresses in the help-messages of hfst-guess and
-	  hfst-guessify.
-
-2012-06-30 00:21  mpsilfve
-
-	* tools/src/generate_model_forms.cc, tools/src/hfst-guess.cc: Fixed
-	  printouts so that they match for guesses and generated forms.
-	  Fixed printing of guesses, so that they're not printed reversed.
-
-2012-06-29 20:08  mpsilfve
-
-	* tools/src/hfst-guess.cc: Fixed hfst-guess help-message and exit
-	  value.
-
-2012-06-29 16:40  hardwick
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstInputStream.h:
-	  Implement a little-endian unsigned short stream-reader on top of
-	  the
-	  char-reader. Use it to read the header size rather than fiddle
-	  around with
-	  signed shorts.
-
-2012-06-29 16:27  mpsilfve
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/generate_model_forms.cc,
-	  tools/src/generate_model_forms.h, tools/src/hfst-guess.cc:
-	  Initial commit of hfst-guess utility.
-
-2012-06-29 14:31  mpsilfve
-
-	* configure.ac, tools/src/Makefile.am, tools/src/guessify_fst.cc,
-	  tools/src/guessify_fst.h, tools/src/hfst-guessify.cc: Initial
-	  commit of the hfst-guessify utility.
-
-2012-06-29 14:20  sdrobac
-
-	* libhfst/src/parsers/xre_parse.yy: Complement added to the
-	  'regexp'
-
-2012-06-29 13:11  hardwick
-
-	* libhfst/src/HfstInputStream.cc: When reading header size, which
-	  on the disk is a two-byte unsigned number,
-	  we need to call stream_get(short &) because it's not implemented
-	  for
-	  unsigned short. Then cast it to unsigned short.
-
-2012-06-28 18:16  hardwick
-
-	* libhfst/src/HfstInputStream.cc: header_size needs to be able to
-	  handle MAX_HEADER_LENGTH=65535 bytes, so
-	  make it an int instead of a short
-
-2012-06-28 14:12  eaxelson
-
-	* windows/dlfcn/Makefile.am, windows/openfst/src/lib/Makefile.am:
-	  Excluded source files under windows directory from distribution.
-
-2012-06-28 13:46  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/parsers/xre_lex.ll,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h: Curly brackets added to regexp
-
-2012-06-28 10:37  eaxelson
-
-	* tools/src/Makefile.am: Appended $(EXEEXT) to program names in
-	  Makefile.
-
-2012-06-28 10:28  eaxelson
-
-	* tools/src/Makefile.am, tools/src/hfst-commandline.cc: Temporarily
-	  disabled 'hfst_mkstemp' in windows compilation, because it uses
-	  'mkstemp' that is not standard C++.
-
-2012-06-28 10:06  eaxelson
-
-	* tools/src/Makefile.am: Fixed a typo in Makefile.
-
-2012-06-28 08:42  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Complete purge of trap_transition in try_epsilon_transitions
-
-2012-06-28 08:13  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: When
-	  following epsilon index, set found_index *after* returning.
-	  Added rather verbose comment to try_epsilon_transitions to
-	  clarify
-	  when transition-taking needs to be trapped and when it doesn't.
-
-2012-06-27 14:29  moshagen
-
-	* test/tools/fsmbook-examples/FinnishOTProsody,
-	  test/tools/fsmbook-examples/YaleShooting, windows, windows/dlfcn,
-	  windows/openfst, windows/openfst/src, windows/openfst/src/lib:
-	  Ignore generated files.
-
-2012-06-27 13:49  eaxelson
-
-	* Makefile.am: if -> endif in Makefile
-
-2012-06-27 13:39  eaxelson
-
-	* Makefile.am, configure.ac, libhfst/src/Makefile.am,
-	  tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  windows/openfst/get-openfst.sh: Now all Makefiles should be aware
-	  of windows compilation.
-
-2012-06-27 10:33  eaxelson
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/parsers/Makefile.am: Added include flags to Makefiles
-	  when using windows compilation.
-
-2012-06-26 15:36  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am, tools/src/Makefile.am,
-	  windows/openfst/get-openfst.sh,
-	  windows/openfst/src/lib/Makefile.am: Made autotools more aware of
-	  windows compilation.
-
-2012-06-26 14:35  eaxelson
-
-	* windows/openfst/Makefile.am, windows/openfst/src/lib/Makefile.am:
-	  Edited Makefiles.
-
-2012-06-26 14:23  eaxelson
-
-	* windows/openfst/get-openfst.sh, windows/openfst/src/include,
-	  windows/openfst/src/include/fst: Added directories to
-	  windows/openfst and a script to fetch openfst.
-
-2012-06-26 13:00  eaxelson
-
-	* windows/dlfcn/get-dlfcn.sh: Added a script to retrieve dlfcn.
-
-2012-06-26 12:07  eaxelson
-
-	* Makefile.am, configure.ac, windows, windows/Makefile.am,
-	  windows/dlfcn, windows/dlfcn/Makefile.am, windows/openfst,
-	  windows/openfst/Makefile.am, windows/openfst/src,
-	  windows/openfst/src/Makefile.am, windows/openfst/src/lib,
-	  windows/openfst/src/lib/Makefile.am: Tentatively added support
-	  for windows compilation.
-
-2012-06-26 10:11  mie
-
-	* test/tools/fst2txt-functionality.sh, tools/src/hfst-fst2txt.cc:
-	  Implement PCKIMMO output mode for fst2txt
-
-2012-06-25 15:18  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.3.12.
-
-2012-06-25 15:02  eaxelson
-
-	* configure.ac: Tentatively added the possibility to compile hfst
-	  in Windows to configure.ac.
-
-2012-06-25 13:55  mpsilfve
-
-	* tools/src/hfst-tagger/src: Ignore enerated files.
-
-2012-06-25 13:46  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.cc:
-	  Maded changes in tests required by previous edit in
-	  WeightedStringVectorCollection.
-
-2012-06-25 13:39  mpsilfve
-
-	* tools/src/hfst-tagger/src: Ignore generated files.
-
-2012-06-25 13:21  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/FstBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.h: Changed
-	  a bool to weighted_string_type in add_sequence function.
-
-2012-06-25 13:07  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/LexicalModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/SequenceModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.cc,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.h:
-	  Changed the bool lexical_model parameter in the constructor of
-	  WeightedStringVectorCollection to an enum.
-
-2012-06-25 12:58  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/string_handling.h:
-	  Fixed comments
-
-2012-06-25 12:56  mpsilfve
-
-	* tools/src/hfst-tagger/src/hfst-build-tagger.cc: Fixed initial
-	  comments
-
-2012-06-25 11:51  mpsilfve
-
-	* tools/src/hfst-tagger/src/tagger_aux.py: Fixed statistics.
-
-2012-06-25 11:48  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/build_model_src/tagger_aux.py,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py:
-	  Fixed statistics.
-
-2012-06-21 09:03  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/FstBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/LexicalModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/SequenceModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/TaggerBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.h,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.h,
-	  tools/src/hfst-tagger/src/build_model_src/tagger_aux.py,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py:
-	  Added documentation.
-
-2012-06-20 15:17  hardwick
-
-	* libhfst/src/implementations/HfstOlTransducer.cc: Use convenient
-	  STL set constructor with InputIterator objects for returning
-	  alphabet sets
-
-2012-06-20 11:22  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am: Maybe find
-	  unit_test_aux.cc now...
-
-2012-06-20 11:21  hardwick
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h: Support StringSet
-	  get_alphabet() for hfst_ol(w) types
-
-2012-06-19 17:05  mie
-
-	* configure.ac: use am_prog_ar for automake >= 1.12
-
-2012-06-19 15:15  mie
-
-	* tools/src/hfst-commandline.cc: include unistd for systems where
-	  it does not leak in
-
-2012-06-19 08:54  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Handle the "only default transitions in state" case
-
-2012-06-18 12:33  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am: Now perhaps building
-	  unit_test_aux.o properly...
-
-2012-06-18 12:19  mpsilfve
-
-	* tools/src/hfst-tagger/Makefile.am: Build tagger tools only if the
-	  enable-tagger flag has been used during configure.
-
-2012-06-18 11:55  mpsilfve
-
-	* tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.h:
-	  Changed NewLexicalModel.h so that it includes the local header
-	  before instllation.
-
-2012-06-18 11:50  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.cc:
-	  Added unit_test_aux.h to the sources of the test for
-	  string_handling.cc
-
-2012-06-18 11:24  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am: Added DataTypes.h to the
-	  sources of appropriate testa and hfst-tag.
-
-2012-06-17 21:58  moshagen
-
-	* tools/src/hfst-tagger, tools/src/hfst-tagger/src,
-	  tools/src/hfst-tagger/test: Ignore generated items.
-
-2012-06-14 14:30  mpsilfve
-
-	* tools/src/hfst-tagger/src/hfst-tag.cc: Added version of
-	  hfst-tag.cc that compiles.
-
-2012-06-13 13:26  mpsilfve
-
-	* tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponentPair.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceTagger.cc: Tidied
-	  up code in use_model_src.
-
-2012-06-13 13:18  mpsilfve
-
-	* tools/src/hfst-tagger/src/use_model_src/AcyclicAutomaton.cc,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SentenceTagger.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceTagger.cc: Now we
-	  pass all use_model_src/ tests.
-
-2012-06-12 13:53  hardwick
-
-	* tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.h:
-	  #include "HfstTransducer.h" instead of <hfst/HfstTransducer.h>,
-	  since often
-	  people will be building this without having headers already
-	  installed
-
-2012-06-11 19:02  mie
-
-	* test/libhfst/Makefile.am: Remove lexc tests as long as parser is
-	  not reusable
-
-2012-06-11 13:01  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/hfst-tag.cc,
-	  tools/src/hfst-tagger/src/use_model_src/AcyclicAutomaton.cc,
-	  tools/src/hfst-tagger/src/use_model_src/DataTypes.h,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.cc,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.h,
-	  tools/src/hfst-tagger/src/use_model_src/SentenceTransducer.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.cc,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.h,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceTagger.cc: Added
-	  skeleton for hfst-tag.cc and got all tests in use_model_src
-	  compiling. Some tests still fail.
-
-2012-06-08 14:33  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/FstBuilder.cc: Removed
-	  printout from the unit test of FstBuilder.cc
-
-2012-06-08 12:16  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.cc,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.cc:
-	  Fixed WeightedStringVectorCollection.cc and string_handling.cc
-
-2012-06-08 12:00  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am: Tidied Makefile.am.
-
-2012-06-08 11:59  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am: Tests are now run using
-	  make check.
-
-2012-06-08 10:25  mpsilfve
-
-	* swig/libhfst.i: Added invert parameter to compose_intersect in
-	  HfstTransducer
-
-2012-06-07 19:51  mpsilfve
-
-	* tools/src/hfst-tagger/src/hfst-open-input-file-for-tagger.cc:
-	  Added hfst-open-input-file-for-tagger.cc, which was missing.
-
-2012-06-07 17:56  mie
-
-	* tools/src/hfst-tagger/src/build_model_src/FstBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/LexicalModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/SequenceModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.h: Use
-	  intree headers for intree build
-
-2012-06-07 14:41  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/LexicalModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/SequenceModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/TaggerBuilder.cc,
-	  tools/src/hfst-tagger/src/hfst-build-tagger.cc,
-	  tools/src/hfst-tagger/src/hfst-train-tagger.sh,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py,
-	  tools/src/hfst-tagger/src/tagger_aux.py: Added some printouts to
-	  verbose mode.
-
-2012-06-07 13:25  mpsilfve
-
-	* tools/src/hfst-tagger/src/hfst-build-tagger.cc: Fixed issue with
-	  exit value.
-
-2012-06-07 12:50  mpsilfve
-
-	* configure.ac, tools/src/Makefile.am: Updated build files so that
-	  tagger tools can be built. They are not built by default.
-
-2012-06-07 12:41  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/build_model_src/FstBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.cc,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.h,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.cc,
-	  tools/src/hfst-tagger/src/hfst-build-tagger.cc,
-	  tools/src/hfst-tagger/src/hfst-train-tagger.sh: Fixed some in
-	  input handling bugs.
-
-2012-06-07 08:39  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/compute_data_statistics.py,
-	  tools/src/hfst-tagger/src/hfst-train-tagger.sh,
-	  tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py:
-	  Changed comput_data_statistics.py to
-	  hfst_tagger_data_statistics.py
-
-2012-06-06 14:33  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am,
-	  tools/src/hfst-tagger/src/build_model_src/FstBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/LexicalModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/ModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/SequenceModelBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/TaggerBuilder.h,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.h,
-	  tools/src/hfst-tagger/src/build_model_src/string_handling.h,
-	  tools/src/hfst-tagger/src/hfst-build-tagger.cc,
-	  tools/src/hfst-tagger/src/hfst-train-tagger.sh,
-	  tools/src/hfst-tagger/src/tagger_aux.py,
-	  tools/src/hfst-tagger/src/unit_test_aux.h,
-	  tools/src/hfst-tagger/src/use_model_src/AcyclicAutomaton.h,
-	  tools/src/hfst-tagger/src/use_model_src/DataTypes.h,
-	  tools/src/hfst-tagger/src/use_model_src/DelayedSequenceModelComponent.h,
-	  tools/src/hfst-tagger/src/use_model_src/NewLexicalModel.h,
-	  tools/src/hfst-tagger/src/use_model_src/SentenceTagger.h,
-	  tools/src/hfst-tagger/src/use_model_src/SentenceTransducer.h,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponent.h,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceModelComponentPair.h,
-	  tools/src/hfst-tagger/src/use_model_src/SequenceTagger.h,
-	  tools/src/hfst-tagger/test/Makefile.am: Some changes that
-	  actually allow compiling and installing hfst-train-tagger
-
-2012-06-05 10:02  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am: Added test dependencies.
-
-2012-06-05 09:49  mpsilfve
-
-	* tools/src/hfst-tagger/src/build_model_src/FstBuilder.cc,
-	  tools/src/hfst-tagger/src/build_model_src/WeightedStringVectorCollection.cc:
-	  Fixed test defines in build_model_src/.
-
-2012-06-05 09:45  mpsilfve
-
-	* tools/src/hfst-tagger/src/Makefile.am: Added unit tests to
-	  hfst-tagger.
-
-2012-06-05 09:41  mpsilfve
-
-	* tools/src/hfst-tagger/Makefile.am,
-	  tools/src/hfst-tagger/src/Makefile.am: Added Makefile.am files to
-	  hfst-tagger.
-
-2012-06-05 09:29  mpsilfve
-
-	* tools/src/hfst-tagger/build_model_src,
-	  tools/src/hfst-tagger/compute_data_statistics.py,
-	  tools/src/hfst-tagger/hfst-build-tagger.cc,
-	  tools/src/hfst-tagger/src,
-	  tools/src/hfst-tagger/src/build_model_src,
-	  tools/src/hfst-tagger/src/compute_data_statistics.py,
-	  tools/src/hfst-tagger/src/hfst-build-tagger.cc,
-	  tools/src/hfst-tagger/src/unit_test_aux.cc,
-	  tools/src/hfst-tagger/src/unit_test_aux.h,
-	  tools/src/hfst-tagger/src/use_model_src,
-	  tools/src/hfst-tagger/test,
-	  tools/src/hfst-tagger/unit_test_aux.cc,
-	  tools/src/hfst-tagger/unit_test_aux.h,
-	  tools/src/hfst-tagger/use_model_src: Added src and test subdirs
-	  to hfst-tagger.
-
-2012-06-05 09:21  mpsilfve
-
-	* tools/src/hfst-tagger/CompletedCycleBuilder.cc,
-	  tools/src/hfst-tagger/CompletedCycleBuilder.h,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModel.cc,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModel.h,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModelPair.cc,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModelPair.h,
-	  tools/src/hfst-tagger/CycleBuilder.cc,
-	  tools/src/hfst-tagger/CycleBuilder.h,
-	  tools/src/hfst-tagger/GuesserBuilder.cc,
-	  tools/src/hfst-tagger/GuesserBuilder.h,
-	  tools/src/hfst-tagger/GuesserDivisorTransformer.cc,
-	  tools/src/hfst-tagger/GuesserDivisorTransformer.h,
-	  tools/src/hfst-tagger/GuesserStreamTransformer.cc,
-	  tools/src/hfst-tagger/GuesserStreamTransformer.h,
-	  tools/src/hfst-tagger/HMMTagger.cc,
-	  tools/src/hfst-tagger/HMMTagger.h,
-	  tools/src/hfst-tagger/IdentityTransformer.cc,
-	  tools/src/hfst-tagger/IdentityTransformer.h,
-	  tools/src/hfst-tagger/LanguageModel.cc,
-	  tools/src/hfst-tagger/LanguageModel.h,
-	  tools/src/hfst-tagger/LastEntryRemover.cc,
-	  tools/src/hfst-tagger/LastEntryRemover.h,
-	  tools/src/hfst-tagger/LexicalModel.cc,
-	  tools/src/hfst-tagger/LexicalModel.h,
-	  tools/src/hfst-tagger/LexicalStreamTransformer.cc,
-	  tools/src/hfst-tagger/LexicalStreamTransformer.h,
-	  tools/src/hfst-tagger/LexiconBuilder.cc,
-	  tools/src/hfst-tagger/LexiconBuilder.h,
-	  tools/src/hfst-tagger/LexiconDivisorTransformer.cc,
-	  tools/src/hfst-tagger/LexiconDivisorTransformer.h,
-	  tools/src/hfst-tagger/LogSequenceWeightTable.cc,
-	  tools/src/hfst-tagger/LogSequenceWeightTable.h,
-	  tools/src/hfst-tagger/Makefile,
-	  tools/src/hfst-tagger/ModelBuilder.cc,
-	  tools/src/hfst-tagger/ModelBuilder.h,
-	  tools/src/hfst-tagger/NGramAbstracter.cc,
-	  tools/src/hfst-tagger/NGramAbstracter.h,
-	  tools/src/hfst-tagger/NGramModelConstructor.cc,
-	  tools/src/hfst-tagger/NGramModelConstructor.h,
-	  tools/src/hfst-tagger/SentenceStream.cc,
-	  tools/src/hfst-tagger/SentenceStream.h,
-	  tools/src/hfst-tagger/SequenceCounter.cc,
-	  tools/src/hfst-tagger/SequenceCounter.h,
-	  tools/src/hfst-tagger/SequenceModel.cc,
-	  tools/src/hfst-tagger/SequenceModel.h,
-	  tools/src/hfst-tagger/SequenceWeightTable.cc,
-	  tools/src/hfst-tagger/SequenceWeightTable.h,
-	  tools/src/hfst-tagger/SequenceWeighter.cc,
-	  tools/src/hfst-tagger/SequenceWeighter.h,
-	  tools/src/hfst-tagger/Speller.cc,
-	  tools/src/hfst-tagger/Speller.h,
-	  tools/src/hfst-tagger/StandardHMMLexicalModel.cc,
-	  tools/src/hfst-tagger/StandardHMMLexicalModel.h,
-	  tools/src/hfst-tagger/StreamFieldInverter.cc,
-	  tools/src/hfst-tagger/StreamFieldInverter.h,
-	  tools/src/hfst-tagger/StreamMarkovizer.cc,
-	  tools/src/hfst-tagger/StreamMarkovizer.h,
-	  tools/src/hfst-tagger/StreamReinitializer.cc,
-	  tools/src/hfst-tagger/StreamReinitializer.h,
-	  tools/src/hfst-tagger/StreamTokenizer.cc,
-	  tools/src/hfst-tagger/StreamTokenizer.h,
-	  tools/src/hfst-tagger/StreamTransformer.cc,
-	  tools/src/hfst-tagger/StreamTransformer.h,
-	  tools/src/hfst-tagger/StringTransformer.h,
-	  tools/src/hfst-tagger/StringTransformerList.cc,
-	  tools/src/hfst-tagger/StringTransformerList.h,
-	  tools/src/hfst-tagger/SuggestionsInContext.cc,
-	  tools/src/hfst-tagger/SuggestionsInContext.h,
-	  tools/src/hfst-tagger/Tagger.cc, tools/src/hfst-tagger/Tagger.h,
-	  tools/src/hfst-tagger/ToEmptyStringTransforme.cc,
-	  tools/src/hfst-tagger/ToEmptyStringTransforme.h,
-	  tools/src/hfst-tagger/ToEmptyStringTransformer.cc,
-	  tools/src/hfst-tagger/ToEmptyStringTransformer.h,
-	  tools/src/hfst-tagger/TrieBuilder.cc,
-	  tools/src/hfst-tagger/TrieBuilder.h,
-	  tools/src/hfst-tagger/WordformProbabilityListBuilder.cc,
-	  tools/src/hfst-tagger/WordformProbabilityListBuilder.h,
-	  tools/src/hfst-tagger/WordformProbabilityListTransformer.cc,
-	  tools/src/hfst-tagger/WordformProbabilityListTransformer.h,
-	  tools/src/hfst-tagger/WordformRemover.cc,
-	  tools/src/hfst-tagger/WordformRemover.h,
-	  tools/src/hfst-tagger/build_model_src,
-	  tools/src/hfst-tagger/build_model_src/FstBuilder.cc,
-	  tools/src/hfst-tagger/build_model_src/FstBuilder.h,
-	  tools/src/hfst-tagger/build_model_src/LexicalModelBuilder.cc,
-	  tools/src/hfst-tagger/build_model_src/LexicalModelBuilder.h,
-	  tools/src/hfst-tagger/build_model_src/Makefile,
-	  tools/src/hfst-tagger/build_model_src/ModelBuilder.cc,
-	  tools/src/hfst-tagger/build_model_src/ModelBuilder.h,
-	  tools/src/hfst-tagger/build_model_src/SequenceModelBuilder.cc,
-	  tools/src/hfst-tagger/build_model_src/SequenceModelBuilder.h,
-	  tools/src/hfst-tagger/build_model_src/TaggerBuilder.cc,
-	  tools/src/hfst-tagger/build_model_src/TaggerBuilder.h,
-	  tools/src/hfst-tagger/build_model_src/WeightedStringVectorCollection.cc,
-	  tools/src/hfst-tagger/build_model_src/WeightedStringVectorCollection.h,
-	  tools/src/hfst-tagger/build_model_src/string_handling.cc,
-	  tools/src/hfst-tagger/build_model_src/string_handling.h,
-	  tools/src/hfst-tagger/build_model_src/tagger_aux.py,
-	  tools/src/hfst-tagger/compute_data_statistics.py,
-	  tools/src/hfst-tagger/context_speller.cc,
-	  tools/src/hfst-tagger/hfst-build-tagger.cc,
-	  tools/src/hfst-tagger/hfst_tagger_code_skeleton.cc,
-	  tools/src/hfst-tagger/hfst_tagger_header_skeleton.h,
-	  tools/src/hfst-tagger/tag_with_hmm_tagger.cc,
-	  tools/src/hfst-tagger/train_hmm_tagger.cc,
-	  tools/src/hfst-tagger/unit_test_aux.cc,
-	  tools/src/hfst-tagger/unit_test_aux.h,
-	  tools/src/hfst-tagger/use_model_src,
-	  tools/src/hfst-tagger/use_model_src/AcyclicAutomaton.cc,
-	  tools/src/hfst-tagger/use_model_src/AcyclicAutomaton.h,
-	  tools/src/hfst-tagger/use_model_src/DataTypes.h,
-	  tools/src/hfst-tagger/use_model_src/DelayedSequenceModelComponent.cc,
-	  tools/src/hfst-tagger/use_model_src/DelayedSequenceModelComponent.h,
-	  tools/src/hfst-tagger/use_model_src/NewLexicalModel.cc,
-	  tools/src/hfst-tagger/use_model_src/NewLexicalModel.h,
-	  tools/src/hfst-tagger/use_model_src/SentenceTagger.cc,
-	  tools/src/hfst-tagger/use_model_src/SentenceTagger.h,
-	  tools/src/hfst-tagger/use_model_src/SentenceTransducer.cc,
-	  tools/src/hfst-tagger/use_model_src/SentenceTransducer.h,
-	  tools/src/hfst-tagger/use_model_src/SequenceModelComponent.cc,
-	  tools/src/hfst-tagger/use_model_src/SequenceModelComponent.h,
-	  tools/src/hfst-tagger/use_model_src/SequenceModelComponentPair.cc,
-	  tools/src/hfst-tagger/use_model_src/SequenceModelComponentPair.h,
-	  tools/src/hfst-tagger/use_model_src/SequenceTagger.cc,
-	  tools/src/hfst-tagger/use_model_src/SequenceTagger.h: Initial
-	  commit of new tagger lib architecture.
-
-2012-06-05 06:50  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Copy
-	  input to output for default transitions
-
-2012-05-31 02:35  mie
-
-	* libhfst/src/parsers/lexc-lexer.ll,
-	  test/tools/basic.multi-file-1.lexc,
-	  test/tools/basic.multi-file-2.lexc,
-	  test/tools/basic.multi-file-3.lexc,
-	  tools/src/hfst-lexc-compiler.cc, tools/src/hfst-lexc.cc: Allow
-	  reserved chars between quotation marks, avoid one more segfault
-	  on
-	  parser error
-
-2012-05-31 02:19  mie
-
-	* test/tools/Makefile.am,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh, test/tools/xre.quotations.lexc:
-	  Add quotation example that breaks the legacy parser; use all
-	  tests on both
-	  lexc front-ends
-
-2012-05-30 23:04  mie
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/parsers/LexcCompiler.cc, test/libhfst/test_lexc.cc:
-	  Emit parse error on unopenable file...
-
-2012-05-30 21:54  mie
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h, test/libhfst/test_lexc.cc,
-	  tools/src/hfst-lexc-compiler.cc: Pass parse errors upwards from
-	  LexcCompiler
-
-2012-05-30 20:46  mie
-
-	* tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-lexc.cc: Remove temporary lexc concatenations on
-	  successful exit
-
-2012-05-30 19:54  mie
-
-	* tools/src/hfst-program-options.cc: Reword -q to "print only fatal
-	  errors and requested output" as it does
-
-2012-05-27 19:40  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Notice @_DEFAULT_SYMBOL_@ in other Alphabet contructors than the
-	  copying one as well
-
-2012-05-27 19:05  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Add an
-	  internal boolean found_index to keep track of whether an index
-	  has been
-	  successfully hit in the current iteration, and try to find a
-	  default symbol
-	  otherwise
-
-2012-05-27 18:42  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Make
-	  alphabet know about default
-
-2012-05-27 18:39  hardwick
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h:
-	  @_DEFAULT_SYMBOL_@ and hfst::is_default()
-
-2012-05-10 13:51  mie
-
-	* test/tools/Makefile.am, tools/src/hfst-commandline.cc: Remove
-	  warning messages and XFAIL tests that may confuse users.
-	  Fixes bug #3525179
-
-2012-05-10 09:27  eaxelson
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese1/Makefile.am,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/Makefile.am:
-	  Added READMEs under BrazilianPortuguese 1 and 2 to EXTRA_DIST.
-
-2012-05-08 09:51  eaxelson
-
-	* Doxyfile, api_documentation.dox: Updated Doxygen documentation.
-
-2012-05-04 10:46  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.3.11.
-
-2012-04-27 06:22  moshagen
-
-	* libhfst/src/parsers, tools/src: Ignore generated items.
-
-2012-04-26 15:49  eaxelson
-
-	* configure.ac, test/tools/shuffle-functionality.sh: Now
-	  hfst-shuffle is disabled by default.
-
-2012-04-26 11:33  eaxelson
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  test/libhfst/test_transducer_functions.cc,
-	  test/tools/Makefile.am, test/tools/ab.txt,
-	  test/tools/ab_shuffle_bc.txt, test/tools/aid.txt,
-	  test/tools/aid_shuffle_idb.txt, test/tools/bc.txt,
-	  test/tools/id.txt, test/tools/id_shuffle_id.txt,
-	  test/tools/idb.txt, test/tools/shuffle-functionality.sh,
-	  tools/src/Makefile.am, tools/src/hfst-shuffle.cc: Added the
-	  command line tool hfst-shuffle and functionality tests for that.
-
-2012-04-25 13:39  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_transducer_functions.cc: Tentatively added
-	  function shuffle under HfstTransducer.
-
-2012-04-23 16:06  hardwick
-
-	* libhfst/src/parsers/pmatch_parse.yy: A nicer single production
-	  for INSERT
-
-2012-04-23 14:57  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc: Fixed a bug in
-	  SfstTransducer::random_path that happened when indexing states of
-	  the argument transducer.
-
-2012-04-23 14:23  hardwick
-
-	* configure.ac, libhfst/src/Makefile.am,
-	  libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/PmatchCompiler.cc,
-	  libhfst/src/parsers/PmatchCompiler.h,
-	  libhfst/src/parsers/pmatch_lex.ll,
-	  libhfst/src/parsers/pmatch_parse.yy,
-	  libhfst/src/parsers/pmatch_utils.cc,
-	  libhfst/src/parsers/pmatch_utils.h, tools/src/Makefile.am,
-	  tools/src/hfst-pmatch2fst.cc: Introduction of semifunctional
-	  pmatch2fst
-
-2012-04-18 23:03  moshagen
-
-	* tools/src/hfst-proc/formatter.cc: No plus sign in front of tags
-	  in CG mode, not even the special carry-through tag.
-
-2012-04-18 17:37  moshagen
-
-	* tools/src/hfst-proc/formatter.cc,
-	  tools/src/hfst-proc/formatter.h: Added experimental support for
-	  printing the raw analysis tag as part of the Xerox analysis. It
-	  is printed as a tag with a special prefix, and with the full
-	  analysis string enclosed in quotes. The idea is that vislcg, if
-	  enhanced to read the Xerox format, should carry this "tag"
-	  through the disambiguation (and possibly analysis), and print it
-	  out on the other end. The tag can then be used as input to
-	  morphological generation.
-
-2012-04-18 16:25  moshagen
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese1,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2: Ignore
-	  auto-generated files.
-
-2012-04-18 13:55  moshagen
-
-	* tools/src/hfst-proc/formatter.cc: Print the raw analysis string
-	  as a specially prefixed tag at the end, instead of as a
-	  sub-reading in the beginning of the analysis.
-
-2012-04-18 12:53  eaxelson
-
-	* test/tools/fst2txt-functionality.sh: Now hfst-fst2txt
-	  functionality test tests whether the program dot exists before
-	  using it.
-
-2012-04-18 12:32  eaxelson
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese2.hfst.script:
-	  Changed call to the installed hfst-regexp2fst to the one in
-	  tools/src/.
-
-2012-04-18 12:25  eaxelson
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.hfst.script:
-	  Changed call to the installed hfst-regexp2fst to the one in
-	  tools/src/.
-
-2012-04-17 01:21  mie
-
-	* libhfst/src/parsers/xre_parse.yy: Add containments and term
-	  negation, remove nasty windows formatting markers
-
-2012-04-16 15:16  eaxelson
-
-	* man/hfst-fst2strings.1, tools/src/hfst-fst2strings.cc: Added the
-	  option --print-separator in hfst-fst2strings. The option will
-	  print
-	  a separating line "--" after each input transducer is processed.
-
-2012-04-16 15:11  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc:
-	  FomaInputStream::write_transducer and
-	  SfstInputStream::write_transducer now call fflush
-	  after writing the transducer. Now the command line tools should
-	  work correctly when pipelined.
-
-2012-04-16 14:57  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: The regexp [?] was parsed as
-	  [?|?:?] by FomaTransducer::define_transducer(const &string, const
-	  &string).
-	  This is now circumvented by using
-	  FomaTransducer::define_transducer(const &string) instead.
-	  This bug will be reported and fixed soon.
-
-2012-04-16 12:42  eaxelson
-
-	* man/Makefile.am, man/hfst-compose-intersect.1: Manpages are not
-	  created unless 'make man' is executed in directory man.
-
-2012-04-13 13:30  mpsilfve
-
-	* tools/src/hfst-compose-intersect.cc: Added support for inverting
-	  the composition i.e. computing intersect(rules) .o. lexicon
-	  instead of lexicon .o. intersect(rules).
-
-2012-04-13 13:28  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Added possibility to invert the composition in compose_intersect
-	  i.e. to compute intersect(rules) .o. lexicon instead of lexicon
-	  .o. intersect(rules). Also added added support for indetity
-	  symbols in the lexicon to compose_intersect.
-
-2012-04-12 15:29  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstConstantTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.h,
-	  libhfst/src/implementations/Makefile.am: Removed
-	  HfstConstantTransducer as it is not used.
-
-2012-04-12 14:15  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am: Removed FinnishOTProsody
-	  from tests as it does not yet work. Also added
-	  HfstXeroxRulesTest.cc to EXTRA_DIST.
-
-2012-04-11 11:28  eaxelson
-
-	* man/Makefile.am, man/hfst-head.1, man/hfst-tail.1: Temporarily
-	  excluded hfst-lookup from man page creation (due to a bug in
-	  help2man?). Also updated hfst-tail and hfst-head man pages.
-
-2012-04-10 22:31  mie
-
-	* test/tools/Makefile.am, test/tools/head-functionality.sh,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-head.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/hfst-tail.cc: Heads and tails with plusses and minuses
-
-2012-04-10 19:24  mie
-
-	* test/tools/Makefile.am, test/tools/head-functionality.sh,
-	  test/tools/tail-functionality.sh: Test negative heads and
-	  positive tails
-
-2012-04-05 12:51  eaxelson
-
-	* configure.ac, test/tools/fsmbook-examples/Makefile.am: Added
-	  Brazilian Portuguese tests to fsmbook-examples, they now work
-	  because missing files were added.
-
-2012-04-05 12:49  sdrobac
-
-	* test/tools/fsmbook-examples/DateParser/DateParser.xfst.att,
-	  test/tools/fsmbook-examples/DateParser/DateParser.xfst.script,
-	  test/tools/fsmbook-examples/brazilian-portuguese1-test.sh,
-	  test/tools/fsmbook-examples/xfst-prolog-to-hfst-att.sh: adding
-	  missing files
-
-2012-04-05 12:42  sdrobac
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese2.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese2.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese2.xfst.script:
-	  Added missing files
-
-2012-04-05 09:07  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.3.10.
-
-2012-04-05 08:38  eaxelson
-
-	* configure.ac, test/tools/fsmbook-examples/Makefile.am: Brazilian
-	  Portuguese tests disabled in fstmbook-examples to get a working
-	  release. They probably had missing files.
-
-2012-04-05 08:14  eaxelson
-
-	* man/hfst-compare.1, man/hfst-compose.1, man/hfst-concatenate.1,
-	  man/hfst-conjunct.1, man/hfst-disjunct.1, man/hfst-subtract.1:
-	  Updated man pages of binary tools as their help messages were
-	  changed.
-
-2012-04-05 08:06  eaxelson
-
-	* tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-program-options.cc: Added documentation to the
-	  binary tools about the restored feature that the first input can
-	  have several transducers while the second has only one.
-
-2012-04-05 08:02  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc:
-	  TropicalWeightTransducer::extract_random_paths now also
-	  calculates the weight of each path. Fixes bug ID 3514912.
-
-2012-04-04 14:22  eaxelson
-
-	* tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-subtract.cc: All
-	  binary tools now handle the case where the first input contains
-	  several transducers and the second input exactly one transducer.
-
-2012-04-04 13:31  sdrobac
-
-	* configure.ac, man/hfst-calculate.1, man/hfst-compare.1,
-	  man/hfst-compose-intersect.1, man/hfst-compose.1,
-	  man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinize.1, man/hfst-disjunct.1, man/hfst-format.1,
-	  man/hfst-fst2fst.1, man/hfst-fst2strings.1, man/hfst-fst2txt.1,
-	  man/hfst-head.1, man/hfst-invert.1, man/hfst-minimize.1,
-	  man/hfst-name.1, man/hfst-project.1, man/hfst-push-weights.1,
-	  man/hfst-regexp2fst.1, man/hfst-remove-epsilons.1,
-	  man/hfst-repeat.1, man/hfst-reverse.1, man/hfst-split.1,
-	  man/hfst-strings2fst.1, man/hfst-substitute.1,
-	  man/hfst-subtract.1, man/hfst-summarize.1, man/hfst-tail.1,
-	  man/hfst-txt2fst.1,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese.xfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/Makefile.am,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/README,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/test.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/brazilian-portuguese2-test.sh:
-	  BrazilianPortuguese2 fmsbook example added to tests
-
-2012-04-04 11:54  sdrobac
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.xfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/README,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/test-example.sh,
-	  test/tools/fsmbook-examples/xfst-prolog-to-hfst-att.sh:
-	  BrazilianPortuguese1 test should pass now
-
-2012-04-04 09:37  eaxelson
-
-	* tools/src/hfst-compare.cc: hfst-compare now handles the case
-	  where the first input contains several transducers and the second
-	  input exactly one transducer.
-
-2012-04-04 09:11  eaxelson
-
-	* tools/src/hfst-compose.cc: hfst-compose now handles the case
-	  where the first input contains several transducers and the second
-	  input exactly one transducer.
-
-2012-04-03 14:59  eaxelson
-
-	* tools/src/hfst-summarize.cc: hfst-summarize now prints at the end
-	  how many transducers it has read in total.
-
-2012-04-03 13:58  eaxelson
-
-	* tools/src/inc/check-params-binary.h: Added documentation to
-	  different cases that are gone through when checking binary
-	  parameters.
-
-2012-04-03 13:56  eaxelson
-
-	* tools/src/hfst-twolc/src/htwolcpre3.yy: Changed the variable name
-	  stdout to stdout_ to avoid namespace conflicts.
-
-2012-04-03 13:34  sdrobac
-
-	* test/tools/fsmbook-examples/FinnishOTProsody/Makefile.am:
-	  forgotten Makefile.am
-
-2012-04-03 12:44  sdrobac
-
-	* configure.ac: Configure file had to be changed to compile fsm
-	  book examples
-
-2012-04-03 12:43  sdrobac
-
-	* test/tools/fsmbook-examples/Makefile.am: Fsmbook examples update
-
-2012-04-03 12:34  sdrobac
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/Makefile.am,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/YaleShooting/Makefile.am,
-	  test/tools/fsmbook-examples/test-example.sh,
-	  test/tools/fsmbook-examples/xfst-att-to-hfst-att.sh,
-	  test/tools/fsmbook-examples/xfst-prolog-to-hfst-att.sh: Fsmbook
-	  examples update
-
-2012-04-03 12:29  sdrobac
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/HfstXeroxRulesTest.cc,
-	  libhfst/src/parsers/xre_parse.yy: In xfstRules, removed TMP
-	  marker from the result alphabet
-
-2012-04-02 10:04  eaxelson
-
-	* tools/src/hfst-compose-intersect.cc: Updated
-	  hfst-compose-intersect help message.
-
-2012-04-02 09:34  eaxelson
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/xre_parse.yy: Appended namespace std:: in
-	  front of vector and pair where avoiding it might cause
-	  compilation problems. Also changed calls to 'rindex' to
-	  'strrchar'.
-
-2012-03-27 08:42  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Doxygen for the speller and some ol internals
-
-2012-03-26 14:28  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS: Forgot to commit ChangeLog and
-	  NEWS, now ready for release 3.3.9.
-
-2012-03-26 14:09  eaxelson
-
-	* configure.ac, libhfst/src/Makefile.am: Ready for release 3.3.9
-
-2012-03-26 13:36  eaxelson
-
-	* man/hfst-calculate.1, man/hfst-fst2fst.1, man/hfst-regexp2fst.1,
-	  man/hfst-strings2fst.1, man/hfst-txt2fst.1,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-format.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-txt2fst.cc: Fixed
-	  help messages of tools.
-
-2012-03-26 10:16  eaxelson
-
-	* tools/src/hfst-lexc.cc: Changed hfst-lexc so that the
-	  implementation format defaults to openfst-tropical.
-
-2012-03-21 18:14  hardwick
-
-	* test/tools/proc-caps-out5.strings: Changed expected output to
-	  reflect current cg printing
-
-2012-03-20 11:00  hardwick
-
-	* libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/ospell.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Integrate ospell, first commit
-
-2012-03-19 15:02  sdrobac
-
-	* test/tools/fsmbook-examples/Makefile.am: updated so that tests
-	  don't fail
-
-2012-03-19 14:38  sdrobac
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese.xfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese1.xfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/Makefile.am,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/test.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/test-example.sh: updated one fsmbook
-	  example, still not working properly
-
-2012-03-15 17:59  moshagen
-
-	* tools/src/hfst-proc/formatter.cc: Double greek PI met opposition
-	  in #apertium, hereby changed to double dagger instead (‡). It is
-	  still open whether the raw analysis string should end up in this
-	  position at all.
-
-2012-03-15 09:34  moshagen
-
-	* tools/src/hfst-proc/hfst-proc.cc: Fixed a bug in command-line
-	  option parsing, where -e conflicted with all case-handling
-	  options.
-
-2012-03-14 10:54  hardwick
-
-	* tools/src/hfst-proc/hfst-proc.cc: Fixed bug wrt option counting
-
-2012-03-14 09:02  moshagen
-
-	* tools/src/hfst-proc/formatter.cc,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/hfst-proc.h: Added a new option to turn on
-	  printing of raw analysis string in CG format output. Default is
-	  to not print it.
-
-2012-03-13 23:51  moshagen
-
-	* tools/src/hfst-proc/formatter.cc: Replaced triple ] (]]]) with
-	  double ∏ (∏∏ - capital greek PI) as the CG sub-reading separator.
-	  It turned out that inserting +]]] into the transducer was not
-	  working very well.
-
-2012-03-13 23:21  moshagen
-
-	* tools/src/hfst-proc/formatter.cc: Deleting the + char in front of
-	  GT/Divvun tags for the CG output. Also, there is no problem with
-	  printing the raw analysis string, all is fine (contrary to what I
-	  said in my previous commit). This tool is now pretty close to
-	  what we need in the Divvun work :)
-
-2012-03-13 23:00  moshagen
-
-	* tools/src/hfst-proc/formatter.cc: Experimenting with the CG
-	  output mode. Using the -C option, the output will now include the
-	  original lemma+tags string, including all tags within compounds
-	  etc. It is printed before the CG-formatted tag list, and
-	  separated with ]]] (suggested CG sub-reading separator). For some
-	  reason, the tags have lost their initial + sign at this point, so
-	  the result is pretty ugly and unusable. I don't know why or where
-	  - feedback appreciated.
-
-2012-03-13 17:06  hardwick
-
-	* tools/src/hfst-proc/formatter.cc: Make sure the outputs are
-	  sorted before filtering and printing
-
-2012-03-13 16:40  hardwick
-
-	* tools/src/hfst-proc/hfst-proc.cc: Corrected key string for
-	  getopt_long
-
-2012-03-13 16:39  hardwick
-
-	* tools/src/hfst-proc/lookup-path.cc: Corrected condition in
-	  LookupPathW::operator< (or at least made it more understandable)
-
-2012-03-13 15:34  hardwick
-
-	* tools/src/hfst-proc/formatter.cc: Correct terminating condition
-
-2012-03-13 15:31  hardwick
-
-	* tools/src/hfst-proc/formatter.cc: Stop before end of output
-	  iterator
-
-2012-03-13 15:20  hardwick
-
-	* tools/src/hfst-proc/formatter.cc: Clarified comment
-
-2012-03-13 15:19  hardwick
-
-	* tools/src/hfst-proc/formatter.cc,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/hfst-proc.h: Added an option to only print
-	  analyses belonging to N equal-weight classes
-
-2012-03-13 14:42  hardwick
-
-	* tools/src/hfst-proc/hfst-proc.cc: Typo in error message
-
-2012-03-13 10:46  moshagen
-
-	* tools/src/hfst-proc/alphabet.cc: Adding identification and
-	  processing of GT-style tags beginning with +. When formatting for
-	  CG output, this is important, otherwise the output is more or
-	  less useless. This change should probably be enhanced with tests
-	  for the requested output format, so that it does not contaminate
-	  the Apertium analyser. Please have a look.
-
-2012-03-12 20:47  hardwick
-
-	* tools/src/hfst-proc/alphabet.cc: indentation
-
-2012-03-12 20:35  moshagen
-
-	* tools/src/hfst-proc/alphabet.cc,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/hfst-proc.h: Added a quietFlag variable,
-	  which makes the -s/-q flags actually useful. Using either -s or
-	  -q the warning "Warning: Transducer contains one or more
-	  multi-character symbols made up of ASCII characters which are
-	  also available as single-character symbols." will be suppressed.
-	  There might be other output that should also be suppressed, but
-	  that is not implemented yet.
-
-2012-03-12 17:25  moshagen
-
-	* tools/src/hfst-compose-intersect.cc: Removed "e.g." to avoid
-	  ambiguity in the interpretation of the output.
-
-2012-03-08 16:56  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/xre_lex.ll: Boundary mark in contexts is
-	  beeing handled now.
-
-2012-03-08 15:56  sdrobac
-
-	* libhfst/src/parsers/xre_parse.yy, tools/src/hfst-regexp2fst.cc:
-	  Xfst rules parser should be working now
-
-2012-03-07 14:25  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/parsers/xre_lex.ll,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc, tools/src/hfst-regexp2fst.cc:
-	  regexp updated, precedance seems to be fine now, but parallel
-	  rules with one comma and context still don't work.
-
-2012-03-07 13:49  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc:
-	  FomaTransducer::extract_paths bug fixed, now it does not produces
-	  duplicate paths.
-
-2012-03-06 17:04  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Ready
-	  for release 3.3.8.
-
-2012-03-06 11:28  hardwick
-
-	* tools/src/hfst-summarize.cc: Add expected arcs per symbol
-	  statistic
-
-2012-03-05 15:59  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for releasing version 3.3.7.
-
-2012-03-05 15:24  eaxelson
-
-	* man/Makefile.am, man/hfst-lookup.1, man/hfst-regexp2fst.1:
-	  Updated tool man pages.
-
-2012-03-05 15:22  eaxelson
-
-	* tools/src/align.sh, tools/src/hfst-regexp2fst.cc,
-	  tools/src/test-memory-leaks.sh: Updated hfst-regexp2fst help
-	  message.
-
-2012-03-05 15:20  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc: Fixed an
-	  error in composition introduced by the newest version of OpenFst
-	  (1.3.1).
-
-2012-03-05 11:06  eaxelson
-
-	* libhfst/src/parsers/xre_parse.yy: Fixed identities in regexp
-	  parser, now [?] is parsed as identity pair.
-
-2012-03-01 15:36  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.h, man/hfst-calculate.1,
-	  man/hfst-compare.1, man/hfst-compose-intersect.1,
-	  man/hfst-compose.1, man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinize.1, man/hfst-disjunct.1, man/hfst-format.1,
-	  man/hfst-fst2fst.1, man/hfst-fst2strings.1, man/hfst-fst2txt.1,
-	  man/hfst-head.1, man/hfst-invert.1, man/hfst-lookup.1,
-	  man/hfst-minimize.1, man/hfst-name.1, man/hfst-project.1,
-	  man/hfst-push-weights.1, man/hfst-regexp2fst.1,
-	  man/hfst-remove-epsilons.1, man/hfst-repeat.1,
-	  man/hfst-reverse.1, man/hfst-split.1, man/hfst-strings2fst.1,
-	  man/hfst-substitute.1, man/hfst-subtract.1, man/hfst-summarize.1,
-	  man/hfst-tail.1, man/hfst-txt2fst.1: Updated regexp2fst parser -
-	  rules work fine for themselves, but there remains precedance
-	  issue.
-
-2012-02-27 16:27  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for HFST release 3.3.6.
-
-2012-02-27 16:05  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  tools/src/test-memory-leaks.sh: Changed include directives of
-	  implementation headers (foma, sfst, openfst) so that they search
-	  for headers in default include path first. Also modified memory
-	  leak script.
-
-2012-02-27 14:31  eaxelson
-
-	* tools/src/test-memory-leaks.sh: Updated memory leak test.
-
-2012-02-27 13:04  eaxelson
-
-	* tools/src/test-memory-leaks.sh: Tentatively added a script for
-	  testing memory leaks.
-
-2012-02-27 12:40  eaxelson
-
-	* tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-determinize.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-fst2fst.cc,
-	  tools/src/hfst-invert.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-remove-epsilons.cc, tools/src/hfst-repeat.cc,
-	  tools/src/hfst-reverse.cc, tools/src/hfst-reweight.cc,
-	  tools/src/hfst-subtract.cc: Fixed memory leaks caused by
-	  hfst_get_name in command line tools.
-
-2012-02-27 11:07  eaxelson
-
-	* man/Makefile.am, man/hfst-lookup.1: Fixed a bug in hfst-lookup
-	  man page generation, now option --no-discard-stderr is used in
-	  help2man. (However, cannot figure out why this helps..)
-
-2012-02-21 17:17  eaxelson
-
-	* libhfst/src/HfstRules.cc: Removed yet some extra code.
-
-2012-02-21 16:42  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc: Removed commented code.
-
-2012-02-21 16:16  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  tools/src/HfstCompiler.cc: Fixed some compilation warnings and
-	  removed commented code.
-
-2012-02-20 18:13  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-optimized-lookup.h, tools/src/hfst-pair-test.cc,
-	  tools/src/hfst-proc/hfst-proc.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-summarize.cc, tools/src/hfst-traverse.cc,
-	  tools/src/lexc-readline-ui.cc: Fixed some more compilation
-	  warnings.
-
-2012-02-20 17:10  eaxelson
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h: Fixed
-	  more compilation warnings.
-
-2012-02-20 16:51  eaxelson
-
-	* libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  test/libhfst/test_transducer_functions.cc: Fixed some compilation
-	  warnings.
-
-2012-02-13 13:37  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for HFST release 3.3.5.
-
-2012-02-13 13:34  eaxelson
-
-	* man/hfst-fst2txt.1, man/hfst-strings2fst.1: Man pages updated.
-
-2012-02-09 15:27  eaxelson
-
-	* man/Makefile.am: Modified Makefile.am.
-
-2012-02-09 14:07  sdrobac
-
-	* libhfst/src/HfstXeroxRules.h: Added some comments
-
-2012-02-09 11:15  eaxelson
-
-	* test/tools/fst2txt-functionality.sh: Fixed a small bug in
-	  hfst-fst2txt functionality test.
-
-2012-02-08 13:55  mie
-
-	* test/tools/fst2txt-functionality.sh, tools/src/hfst-fst2txt.cc:
-	  Output dot/graphviz
-
-2012-02-08 12:29  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: Maybe finally the reversion is
-	  working..
-
-2012-02-08 12:26  eaxelson
-
-	* test/libhfst/auxiliary_functions.cc,
-	  test/libhfst/test_transducer_functions.cc: Made yet some changes
-	  to revert to the older revision.'
-
-2012-02-08 12:11  eaxelson
-
-	* BUGS.old, INSTALL, Makefile.am, README, configure.ac,
-	  libhfst/src/HfstApply.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/BooleanWeightTransducer.cc,
-	  libhfst/src/implementations/BooleanWeightTransducer.h,
-	  libhfst/src/implementations/ConvertBooleanWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/Makefile.am,
-	  test/libhfst/auxiliary_functions.cc,
-	  test/libhfst/test_transducer_functions.cc: Reverted to revision
-	  2076.
-
-2012-02-07 10:15  eaxelson
-
-	* libhfst/src/implementations/BooleanWeightTransducer.cc,
-	  libhfst/src/implementations/BooleanWeightTransducer.h,
-	  libhfst/src/implementations/ConvertBooleanWeightTransducer.cc:
-	  Forgot to add the new files for BooleanWeightTransducer.
-
-2012-02-07 10:13  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/Makefile.am: Tentatively added a new
-	  HfstTransducer type, BOOLEAN_WEIGHT_TYPE.
-
-2012-02-06 14:50  eaxelson
-
-	* tools/src/hfst-strings2fst.cc: Fixed a small error in the options
-	  handling part of the help message for hfst-strings2fst.
-
-2012-02-02 13:05  eaxelson
-
-	* man, man/Makefile.am, man/hfst-format.1, man/hfst-name.1: Added
-	  new man pages for hfst-name and hfst-format and links to man
-	  pages for tool aliases.
-
-2012-02-01 15:07  eaxelson
-
-	* man/Makefile.am, man/hfst-calculate.1, man/hfst-compare.1,
-	  man/hfst-compose-intersect.1, man/hfst-compose.1,
-	  man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinize.1, man/hfst-disjunct.1, man/hfst-fst2fst.1,
-	  man/hfst-fst2strings.1, man/hfst-fst2txt.1, man/hfst-head.1,
-	  man/hfst-invert.1, man/hfst-minimize.1, man/hfst-project.1,
-	  man/hfst-push-weights.1, man/hfst-regexp2fst.1,
-	  man/hfst-remove-epsilons.1, man/hfst-repeat.1,
-	  man/hfst-reverse.1, man/hfst-split.1, man/hfst-strings2fst.1,
-	  man/hfst-substitute.1, man/hfst-subtract.1, man/hfst-summarize.1,
-	  man/hfst-tail.1, man/hfst-txt2fst.1: Now the man pages also have
-	  a short description of the tool, i.e. the one given by hfst-foo
-	  --help.
-
-2012-01-27 14:59  eaxelson
-
-	* test/tools/cat2dog.substitute: Added a test case for the bug
-	  fixed in revision 2016 (out_of_range thrown by substitute
-	  function).
-
-2012-01-27 14:58  hardwick
-
-	* tools/src/hfst-compose.cc: De-spanishify hint string
-	  ("argumentes" -> "arguments")
-
-2012-01-27 14:32  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Now
-	  HfstTransitionGraph:substitute(const HfstSymbolSubstitutions &
-	  subs) adds all symbols in subs to the global alphabet before
-	  relabeling, thus avoiding the out_of_range exceptions thrown
-	  earlier by this function.
-
-2012-01-26 21:05  mpsilfve
-
-	* tools/src/hfst-compose-intersect.cc: Changed
-	  hfst-compose-intersect so that it gives a warning (1) when the
-	  rule does not contain the identity symbol and the output tape of
-	  the lexicon contains a symbol not found on the input tape of the
-	  first rule, and (2) when the output tape of the lexicon contains
-	  multi character symbols not found on the input tape of the first
-	  rule.
-
-2012-01-26 16:39  eaxelson
-
-	* libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Removed
-	  spurious consts from optimized lookup conversion functions. Fixes
-	  bug ID 3469227.
-
-2012-01-26 16:27  eaxelson
-
-	* test/tools/fsmbook-examples/FinnishNumerals/test.sh: Bug on mac
-	  os caused by its sort order (bug ID: 3462485) fixed.
-
-2012-01-26 14:24  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-optimized-lookup.cc:
-	  Added function write_in_att_format_number. Also fixed
-	  hfst-optimized-lookup so that --version and --help print to
-	  standard output instead of standard error.
-
-2012-01-25 18:25  hardwick
-
-	* tools/src/Makefile.am, tools/src/hfst-optimized-lookup.h:
-	  hfst-optimized-lookup softlink and some package strings for
-	  hfst-optimized-lookup.h
-
-2012-01-25 09:20  hardwick
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-optimized-lookup.h: Heavy-handed bundling of the
-	  hfst-optimized-lookup standalone
-
-2012-01-23 15:25  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/xre_parse.yy: Rules parser - added epenthesis
-
-2012-01-19 15:51  eaxelson
-
-	* test/tools/hfst-check-environment.sh,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Still needed to fix some errors caused by in-place sed.. Now
-	  everything should work in commandline tools tests.
-
-2012-01-19 15:20  eaxelson
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/compare-functionality.sh,
-	  test/tools/compose-functionality.sh,
-	  test/tools/compose-intersect-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh,
-	  test/tools/format-functionality.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/fst2txt-functionality.sh,
-	  test/tools/head-functionality.sh,
-	  test/tools/hfst-check-environment.sh,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh,
-	  test/tools/incompatible-formats.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/latin-1-strings.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh, test/tools/lexc2fst-stress.sh,
-	  test/tools/lookup-functionality.sh, test/tools/lookup-stress.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/permutate-file-params.sh, test/tools/proc-stress.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/push-weights-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/reweight-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/strings2fst-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/summarize-functionality.sh,
-	  test/tools/tail-functionality.sh,
-	  test/tools/txt2fst-functionality.sh, test/tools/utf-8-strings.sh,
-	  test/tools/valgrind.sh: Fixed problems in test/tools that came
-	  after updating the Makefile.
-
-2012-01-19 13:46  eaxelson
-
-	* test/tools/Makefile.am, test/tools/at_file_quote.foma.xre,
-	  test/tools/at_file_quote.openfst-tropical.xre,
-	  test/tools/at_file_quote.sfst.xre,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/proc-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh: Removed commas from
-	  filename suffixes (e.g. .hfst.sfst -> .sfst) in test/tools. Also
-	  replaced compilation rules using %-symbol in Makefile.am with
-	  old-fashioned suffix rules. Now commandline tool tests should
-	  work with older versions of make as well.
-
-2012-01-17 12:01  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/Makefile.am: Ready for
-	  HFST release 3.3.4.
-
-2012-01-16 15:37  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstSymbolDefs.h: Added some
-	  documentation for HfstSymbolSubstitutions and
-	  HfstSymbolPairSubstitutions. Also updated the doxygen
-	  documentation.
-
-2012-01-16 14:03  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc: Now HfstTransducer
-	  supports making several substitutions at the same time. Also made
-	  a test for these functions. Adding documentation soon.
-
-2012-01-16 12:57  eaxelson
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Tentatively
-	  added a symbol-to-symbol substitution function to
-	  HfstTransitionGraph.
-
-2012-01-16 12:15  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/xre_parse.yy: newer version of the rules
-	  parser
-
-2012-01-12 03:11  mie
-
-	* libhfst/src/parsers/xre_parse.yy: weighted expressions
-
-2012-01-11 17:58  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.h,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.sh,
-	  tools/src/hfst-regexp2fst.cc: added some xerox rules to
-	  xre_parser (hfst-regexp2fst). Also, slightly modified xerox rules
-
-2012-01-11 08:43  mie
-
-	* libhfst/src/parsers/xre_parse.yy: Remove some debugging printout
-
-2012-01-04 17:14  mie
-
-	* libhfst/src/parsers, libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/xre_lex.ll, libhfst/src/parsers/xre_parse.yy:
-	  Merge xre precedence fixes
-
-2012-01-04 16:21  eaxelson
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  tools/src/hfst-substitute.cc: Now const_cast<char*> is used
-	  instead of strdup/free in
-	  ConvertFomaTransducer::hfst_basic_transducer_to_foma. Also
-	  modified hfst-substitute so that the alphabet is not pruned after
-	  substitution.
-
-2012-01-04 14:49  eaxelson
-
-	* tools/src/hfst-substitute.cc: hfst-substitute now implements the
-	  option --in-order.
-
-2012-01-04 11:55  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.h: Fixed bug,
-	  which prevented compilation of grammars with both set
-	  constructions and : or ?.
-
-2012-01-04 11:54  mpsilfve
-
-	* tools/src/hfst-twolc/test/test60,
-	  tools/src/hfst-twolc/test/test60.txt_fst: Unit test for grammars
-	  which have both set constructions and : or ?
-
-2012-01-03 13:45  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc:
-	  FomaTransducer::repeat_n now takes a copy of its argument
-	  transducer to avoid double delete caused by new foma interface.
-	  Fixes bug 3468373.
-
-2011-12-30 19:51  mie
-
-	* README: OpenFst linking bug is fixed in 1.2.10; also gqipped some
-	  paras
-
-2011-12-30 18:28  mie
-
-	* configure.ac: Warn end users about disabled "important" tools
-
-2011-12-30 15:17  sdrobac
-
-	* libhfst/src/HfstXeroxRules.cc, libhfst/src/HfstXeroxRules.h,
-	  libhfst/src/Makefile.am: Xerox rules added to the library
-
-2011-12-25 02:03  spectre360
-
-	* tools/src/hfst-proc/alphabet.cc: more alphabet hacks
-
-2011-12-24 23:25  spectre360
-
-	* tools/src/hfst-proc/alphabet.cc: more alphabet hacks
-
-2011-12-22 17:23  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-substitute.cc: Added new substitution functions.
-	  Now it is possible to perform many string pair-to-string pair
-	  mappings at the same time on a transducer. Also tentatively added
-	  a functions that performs many string-to-string mappings at the
-	  same time.
-
-2011-12-22 12:00  sdrobac
-
-	* test/tools/fsmbook-examples/EinsteinsPuzzle/EinsteinsPuzzle.hfst.script:
-	  Now the test EinsteinsPuzzle uses local tools instead of the
-	  installed ones.
-
-2011-12-22 11:56  eaxelson
-
-	* test/tools/fsmbook-examples/FinnishNumerals/FinnishNumerals.hfst.script:
-	  Now the test FinnishNumerals uses local tools, no the installed
-	  ones.
-
-2011-12-21 17:12  eaxelson
-
-	* libhfst/src/implementations/ConvertTropicalWeightTransducer.cc:
-	  Conversions between HfstTropicalTransducer and
-	  HfstBasicTransducer also made more modular.
-
-2011-12-21 16:32  eaxelson
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/SfstTransducer.cc: Made conversion
-	  functions more modular by moving code to subroutines. Also
-	  removed commented code from files.
-
-2011-12-21 14:30  eaxelson
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc: Now
-	  conversions between transducer formats openfst-tropical, sfst and
-	  foma are carried out using numbers always when possible.
-
-2011-12-20 23:45  eaxelson
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h: Tentatively added
-	  functions for fast conversion between transducer formats.
-
-2011-12-20 22:39  eaxelson
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc: Now also
-	  conversion from foma to basic transducer uses numbers. Some
-	  commented code also removed.
-
-2011-12-20 17:36  eaxelson
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Some
-	  conversion functions are not carreid out using numbers directly.
-
-2011-12-20 15:27  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.cc,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Renamed HfstTropicalTransitionData variable
-	  'number2symbol_vector' to 'number2symbol_map' to avoid a strange
-	  linking error. Also removed transducer conversion functions that
-	  are not used.
-
-2011-12-19 23:54  eaxelson
-
-	* libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.cc,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Removed some extra code.
-
-2011-12-19 18:17  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-substitute.cc: Tentatively added alphabet pruning
-	  to substitute functions, it still has to be removed from
-	  hfst-substitute.
-
-2011-12-19 15:24  eaxelson
-
-	* libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Conversion between HfstBasicTransducer and
-	  TropicalOpenfstTransducer is now more efficient as it is done
-	  using numbers directly.
-
-2011-12-16 17:22  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Changed
-	  conversion from HfstTropicalTransducer to HfstTransitionGraph so
-	  that it uses transition numbers directly. This improves the
-	  performance greatly.
-
-2011-12-14 13:36  mpsilfve
-
-	* tools/src/hfst-pair-test.cc: Fixed bug which made tests always
-	  pass.
-
-2011-12-09 12:10  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am, test/tools/fsmbook-examples/Makefile.am:
-	  Ready for HFST release 3.3.3. Also disabled DateParser test
-	  because it relies on hfst-calculate.
-
-2011-12-08 17:52  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/Rule.cc: Fixed speces so that
-	  the space symbol is used in the transition instead of @_SPACE_ at .
-
-2011-12-08 13:18  hardwick
-
-	* libhfst/src/implementations/FomaTransducer.cc: Skip copying the
-	  foma transducer name to the net, leaving an empty string.
-	  Rationale: foma has a limiting 40 char ceiling on names, and we
-	  might as well
-	  use HFST3-style names for everything.
-
-2011-12-08 12:37  eaxelson
-
-	* tools/src/hfst-txt2fst.cc: Removed hard tab indentation from
-	  hfst-txt2fst.cc
-
-2011-12-08 12:34  eaxelson
-
-	* tools/src/hfst-lexc.cc: Replaced tabs with spaces in hfst-lexc.cc
-
-2011-12-08 12:25  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Fixed
-	  HfstTransitionGraph:swap_states so that the variable new_target
-	  is no longer used uninitialized.
-
-2011-12-08 12:10  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/DateParser.hfst.script:
-	  DateParser test fixed, the path os hfst-calculate was not
-	  correct.
-
-2011-12-07 12:00  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc:
-	  Fixed ComposeIntersectLexicon test
-
-2011-12-07 11:45  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc,
-	  tools/src/hfst-twolc/src/scanner1.ll: Now the escape '% ' should
-	  work everywhere.
-
-2011-12-07 11:43  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test59,
-	  tools/src/hfst-twolc/test/test59.txt_fst: Added test for rules
-	  with space symbols.
-
-2011-12-07 11:24  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/Makefile.am: Added a conversion test
-	  and made the LIBHFST_TST actually run, causing
-	  test failure for the time being
-
-2011-12-02 13:24  mpsilfve
-
-	* libhfst/src/implementations/HfstTropicalTransducerTransitionData.cc,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h:
-	  Optimized HfstTropicalTransducerTransitionData::get_symbol(...)
-
-2011-11-30 09:21  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h: Call
-	  sizeof() on type names, not variable names due to OSX compilation
-	  thinking the variables are non-static uninitialized fields.
-	  Fixes #3445592.
-
-2011-11-29 15:53  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h: Fixed
-	  (serious) typo
-
-2011-11-29 15:23  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h:
-	  (re-)added a char* constructor for tables, made it the default to
-	  only read
-	  disk once per table
-
-2011-11-29 09:40  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Eliminate use of non-portable strdupa(const char *).
-	  Fixes #3444950.
-
-2011-11-28 13:28  hardwick
-
-	* tools/src/hfst-lookup.cc: Removed some garbage
-
-2011-11-28 13:24  hardwick
-
-	* tools/src/hfst-lookup.cc: Removed some of the unnecessary work
-	  done in tokenizing for ol-lookup
-
-2011-11-28 13:23  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Fixed
-	  a name shadowing bug
-
-2011-11-28 12:56  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Added
-	  a lookup_fd(char *), reduced code duplication in interface
-	  functions
-
-2011-11-23 17:42  hardwick
-
-	* README: Added note about current OpenFst / Ubuntu problems.
-
-2011-11-17 17:09  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre3.yy: Fixed error message.
-
-2011-11-17 16:31  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.h,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc: Now terminating
-	  compilation, if an empty pair is found in a defintion, rule
-	  center or rule context.
-
-2011-11-16 11:46  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am,
-	  test/tools/fsmbook-examples/numbers-to-numerals-test.sh: Ready
-	  for release 3.3.2
-
-2011-11-16 09:47  mpsilfve
-
-	* libhfst/src/implementations/ConvertTropicalWeightTransducer.cc:
-	  Use NumArcs as a member function instead of using NumArcs from
-	  the OpenFst internal namespace.
-
-2011-11-16 09:25  hardwick
-
-	* libhfst/src/implementations/ConvertTropicalWeightTransducer.cc:
-	  OpenFst has moved NumArcs into the namespace ::internal. This
-	  commit reflects
-	  that, fixing compilation with the newest version of OpenFst.
-	  NOTE:
-	  THIS BREAKS BACKWARDS COMPATIBILITY, you need the newest OFST to
-	  compile after
-	  this commit.
-
-2011-11-14 07:52  eaxelson
-
-	* test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.xfst.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.sh,
-	  test/tools/fsmbook-examples/Esperanto/test.sh,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.sh,
-	  test/tools/fsmbook-examples/Lingala/Lingala.xfst.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.sh,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.xfst.script:
-	  Fixed svn properties of executables in fsmbook-tests.
-
-2011-11-14 03:06  mie
-
-	* configure.ac, tools/src/hfst-proc/Makefile.am: Remove PKG_ macros
-	  from end user builds since they do not work nicely on
-	  all platforms.
-
-2011-11-13 14:33  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/Makefile.am,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/EinsteinsPuzzle.xfst.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/Makefile.am,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/expected_result_foma,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.sh,
-	  test/tools/fsmbook-examples/EnglishNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/Esperanto/Makefile.am,
-	  test/tools/fsmbook-examples/Esperanto/test.sh,
-	  test/tools/fsmbook-examples/NumbersToNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.sh,
-	  test/tools/fsmbook-examples/foma-att-to-hfst-att.sh,
-	  test/tools/fsmbook-examples/test-example.sh: Tentatively added to
-	  fsmbook-examples tests where the results from foma and xfst are
-	  compared.
-
-2011-11-13 12:13  eaxelson
-
-	* test/tools/fsmbook-examples/EinsteinsPuzzle/Makefile.am,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.sh,
-	  test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/Makefile.am,
-	  test/tools/fsmbook-examples/Esperanto/test.sh,
-	  test/tools/fsmbook-examples/FinnishNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.sh,
-	  test/tools/fsmbook-examples/NumbersToNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.sh: Now all
-	  tests in fsmbook-examples use the tools in tools/src/ instead of
-	  installed tools.
-
-2011-11-12 14:37  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/Makefile.am,
-	  test/tools/fsmbook-examples/EnglishNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.xfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.sh,
-	  test/tools/fsmbook-examples/test-example.sh: Tentatively fixed
-	  parts of fsmbook-tests where intalled commandline tools are used
-	  instead of tools in tools/src/.
-
-2011-11-11 14:35  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for release 3.3.1
-
-2011-11-11 08:44  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Fixed memory leak in HfstTransducer::get_property
-
-2011-11-11 07:50  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/Rule.cc: Remove escape sequence
-	  __HFST_TWOLC_ from symbols in rule names.
-
-2011-11-10 23:39  mpsilfve
-
-	* tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-subtract.cc: Changed
-	  flag diacritics handling in hfst-compose, hfst-conjunct,
-	  hfst-concatenate and hfst-subtract. Now flags are harmonized
-	  using HfstTransducer::harmonize_flag_diacritics(...).
-
-2011-11-10 23:36  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Added a function for querying if a transducer has flag diacritics
-	  and added a parameter in harmonize_flag_diacritics for diabling
-	  insertion of missgin flags (needed for hfst-concatenate).
-
-2011-11-10 21:28  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Added function bool HfstTransducer::has_flag_diacritics(void)
-	  const
-
-2011-11-10 18:08  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc: When
-	  looking for indexes with a particular symbol (which is used for
-	  converting to other transducer types), handle flag diacritics
-	  specially
-	  as per their indexing rules.
-
-2011-11-10 17:44  mpsilfve
-
-	* libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h: Added
-	  HfstTransducer::hamonize_flag_diacritcs(HfstTransducer &another)
-
-2011-11-10 17:03  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/convert.h: 1) Report
-	  the correct indexing offset for epsilon as 0 even when there
-	  aren't
-	  any epsilons
-	  2) Put the exception about trying to find the offset of absent
-	  symbols in
-	  the proper scope so it actually gets thrown
-
-2011-11-10 13:10  eaxelson
-
-	* test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.xfst.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/foma-att-to-hfst-att.sh,
-	  test/tools/fsmbook-examples/remove-complement.sh,
-	  test/tools/fsmbook-examples/test-example.sh: Tentatively added to
-	  fsmbook-examples tests where results from foma and xfst are
-	  compared. Also fixed a small bug in remove-complement.sh.
-
-2011-11-10 11:00  eaxelson
-
-	* test/libhfst, test/libhfst/test_constructors.cc,
-	  test/libhfst/test_streams.cc, test/tools,
-	  test/tools/fsmbook-examples/Esperanto,
-	  test/tools/fsmbook-examples/FinnishNumerals,
-	  test/tools/fsmbook-examples/NumbersToNumerals: Extra files
-	  created during tests are no ignored by svn.
-
-2011-11-10 05:25  moshagen
-
-	* test/tools/fsmbook-examples/EinsteinsPuzzle,
-	  test/tools/fsmbook-examples/EnglishNumerals: Ignore generated
-	  autotools files.
-
-2011-11-09 23:23  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc:
-	  Added flag diacritics to the epsilon filter.
-
-2011-11-09 21:14  eaxelson
-
-	* test/tools/fsmbook-examples/EinsteinsPuzzle/Makefile.am: Added
-	  missing file.
-
-2011-11-09 14:35  eaxelson
-
-	* README, configure.ac,
-	  test/tools/fsmbook-examples/DateParser/DateParser.xfst.att,
-	  test/tools/fsmbook-examples/DateParser/DateParser.xfst.script,
-	  test/tools/fsmbook-examples/DateParser/Makefile.am,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/Makefile,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/expected_result,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.sh,
-	  test/tools/fsmbook-examples/EnglishNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAdjectivesAndVerbs.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/Makefile.am,
-	  test/tools/fsmbook-examples/Esperanto/test.script,
-	  test/tools/fsmbook-examples/Esperanto/test.sh,
-	  test/tools/fsmbook-examples/FinnishNumerals/Makefile,
-	  test/tools/fsmbook-examples/FinnishNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.script,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.sh,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/NumbersToNumerals/Makefile,
-	  test/tools/fsmbook-examples/NumbersToNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.sh,
-	  test/tools/fsmbook-examples/einsteins-puzzle-test.sh,
-	  test/tools/fsmbook-examples/esperanto-test.sh,
-	  test/tools/fsmbook-examples/finnish-numerals-test.sh,
-	  test/tools/fsmbook-examples/numbers-to-numerals-test.sh,
-	  test/tools/fsmbook-examples/test-example.sh: Added a note on
-	  configure enable/disable switches to README. Changed
-	  fsmbook-examples so that now all examples that can be compiled
-	  with the current HFST tools are included in the tests.
-
-2011-11-07 20:37  eaxelson
-
-	* configure.ac: Forgot to commit configure.ac last time, now
-	  automake should work.
-
-2011-11-07 16:14  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/Makefile.am,
-	  test/tools/fsmbook-examples/DateParser/remove-complement.sh,
-	  test/tools/fsmbook-examples/DateParser/test-example.sh,
-	  test/tools/fsmbook-examples/DateParser/test.sh,
-	  test/tools/fsmbook-examples/EnglishNumerals/Makefile,
-	  test/tools/fsmbook-examples/EnglishNumerals/Makefile.am,
-	  test/tools/fsmbook-examples/EnglishNumerals/test.script,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/date-parser-test.sh,
-	  test/tools/fsmbook-examples/english-numerals-test.sh,
-	  test/tools/fsmbook-examples/remove-complement.sh,
-	  test/tools/fsmbook-examples/test-example.sh,
-	  test/tools/fsmbook-examples/test.sh: Made some modifications to
-	  fsmbook tests.
-
-2011-11-07 13:23  moshagen
-
-	* test/tools/fsmbook-examples,
-	  test/tools/fsmbook-examples/DateParser: Ignore auto-generated
-	  files by auto-tools.
-
-2011-11-07 11:44  hardwick
-
-	* tools/src/hfst-grep.cc: Same leak issue as in r1846
-
-2011-11-07 10:38  hardwick
-
-	* tools/src/hfst-lookup.cc: free() char*'s that get strdup'd in a
-	  loop (which leaks memory if not free()'d).
-
-2011-11-04 14:15  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/Makefile,
-	  test/tools/fsmbook-examples/DateParser/Makefile.am: Added missing
-	  file.
-
-2011-11-03 16:16  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/Makefile,
-	  test/tools/fsmbook-examples/DateParser/test.sh: Made small
-	  changes to the tests under fsmbook-examples, now make distcheck
-	  should work also when scripts in an upper-level directory are
-	  used.
-
-2011-11-03 14:41  eaxelson
-
-	* configure.ac, test/tools/Makefile.am,
-	  test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/Makefile,
-	  test/tools/fsmbook-examples/DateParser/remove-complement.sh,
-	  test/tools/fsmbook-examples/DateParser/test-example.sh,
-	  test/tools/fsmbook-examples/DateParser/test.sh: Tentatively added
-	  one subdirectory of fsmbook-examples to the tests performed in
-	  make check.
-
-2011-11-02 14:02  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/Makefile,
-	  test/tools/fsmbook-examples/DateParser/test.script,
-	  test/tools/fsmbook-examples/DateParser/test.sh,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/EinsteinsPuzzle.hfst.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/Makefile,
-	  test/tools/fsmbook-examples/FinnishNumerals/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script,
-	  test/tools/fsmbook-examples/Makefile,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-examples/Palindromes/Palindromes.hfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.hfst.script,
-	  test/tools/fsmbook-examples/test.sh: Tentatively added some
-	  testing scripts to fstbook-examples
-
-2011-11-01 14:20  hardwick
-
-	* tools/src/hfst-commandline.cc: Remove spurious space character
-	  from error message
-
-2011-11-01 14:19  hardwick
-
-	* tools/src/hfst-commandline.cc: Give more guidance when ejecting
-	  the user for having a non-UTF-8 charset
-
-2011-10-28 19:05  hardwick
-
-	* test/tools/Makefile.am: Comment out fsmbook-subdir; it's broken
-
-2011-10-28 11:16  eaxelson
-
-	* test/tools/Makefile.am, test/tools/fsmbook-examples/Makefile,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/Palindromes/Makefile,
-	  test/tools/fsmbook-examples/test.sh: fsmbook-examples are now
-	  included in tests.
-
-2011-10-27 13:25  eaxelson
-
-	* ChangeLog, ChangeLog.old, NEWS, configure.ac,
-	  libhfst/src/Makefile.am: Ready for HFST release 3.3.0.
-
-2011-10-27 12:50  eaxelson
-
-	* test/tools/format-functionality.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lookup-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh: missing added to some
-	  tests so that they pass distcheck
-
-2011-10-26 15:48  eaxelson
-
-	* test/tools/Makefile.am: lexc-functionality updated
-
-2011-10-26 14:31  eaxelson
-
-	* test/tools/Makefile.am, test/tools/lookup-functionality.sh: make
-	  distcheck should now find the missing files
-
-2011-10-25 16:20  mie
-
-	* tools/src/hfst-flag-diacritics.cc: remove hfst2 broken flags from
-	  main tree
-
-2011-10-25 16:04  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-apertium2fst.cc, tools/src/hfst-xfst-compiler.cc:
-	  Remove experimental, hard to compile and dependent programs from
-	  main
-	  compilation
-
-2011-10-25 14:27  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, test/tools/Makefile.am,
-	  tools/src/Makefile.am: Added missing files to Makefiles. Also
-	  replaced HfstExceptions.h with HfstExceptionsDefs.h in include
-	  declarations.
-
-2011-10-25 11:53  eaxelson
-
-	* tools/src/hfst-lexc.cc, tools/src/hfst-substitute.cc: Option -s
-	  in hfst-lexc and hfst-substitute now suppresses warnings as it
-	  should.
-
-2011-10-25 11:51  eaxelson
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/incompatible-formats.sh,
-	  test/tools/lexc-functionality.sh,
-	  test/tools/substitute-functionality.sh: Made yet some tests less
-	  verbose.
-
-2011-10-25 11:28  eaxelson
-
-	* tools/src/hfst-lookup.cc: The option -s in hfst-lookup now
-	  suppresses warnings as they should.
-
-2011-10-25 11:16  eaxelson
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/compare-functionality.sh,
-	  test/tools/compose-functionality.sh,
-	  test/tools/compose-intersect-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh,
-	  test/tools/head-functionality.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/latin-1-strings.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lookup-functionality.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/permutate-file-params.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/push-weights-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/strings2fst-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/tail-functionality.sh,
-	  test/tools/txt2fst-functionality.sh, test/tools/valgrind.sh: Made
-	  tests less verbose.
-
-2011-10-25 10:50  eaxelson
-
-	* tools/src/hfst-twolc/test/test: Testing if a library exists is
-	  now done with the command 'hfst-format --test-format'.
-
-2011-10-24 16:53  eaxelson
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/format-functionality.sh,
-	  test/tools/lexc-functionality.sh: Now all tests in test/tools
-	  should pass.
-
-2011-10-24 14:59  eaxelson
-
-	* test/tools/format-functionality.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lookup-functionality.sh, tools/src/hfst-format.cc:
-	  Fixed a bug in hfst-format. Also fixed some tests so that they
-	  don't assume that all backend libraries are available.
-
-2011-10-24 11:19  hardwick
-
-	* configure.ac: Indicate whether apertium2fst is enabled
-
-2011-10-21 13:53  hardwick
-
-	* libhfst/src/Makefile.am: A spurious space was apparently
-	  preventing libhfst.la from getting built (!!)
-
-2011-10-20 15:01  eaxelson
-
-	* test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/test.script:
-	  Fixed some small bugs.
-
-2011-10-20 11:47  eaxelson
-
-	* test/tools/fsmbook-examples/Esperanto/EsperantoNounsAdjectivesAndVerbs.lexc:
-	  Added a missing file.
-
-2011-10-20 11:46  eaxelson
-
-	* test/tools/fsmbook-examples/Esperanto/EsperantoNounsAdjectivesAndVerbs.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/test.script: Now all
-	  Esperanto tests work.
-
-2011-10-20 09:37  eaxelson
-
-	* test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.hfst.script:
-	  Now EsperantoNounsAndAdjectivesWithTags passes.
-
-2011-10-19 20:14  mie
-
-	* README: Mention both forms of <SFST-1.4.6 error messages
-
-2011-10-19 13:41  eaxelson
-
-	* test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/test.script: Fixed some
-	  bugs.
-
-2011-10-19 09:39  eaxelson
-
-	* test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.xfst.att:
-	  EsperantoNounsAndAdjectives works now.
-
-2011-10-19 09:22  mie
-
-	* configure.ac, scripts/hfst-lexc: Remove hfst-lexc and feature
-	  check that requires newer autotools from
-	  default builds
-
-2011-10-19 09:00  eaxelson
-
-	* test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.lexc,
-	  test/tools/fsmbook-examples/Esperanto/test.script: Updated the
-	  tests.
-
-2011-10-18 15:00  eaxelson
-
-	* test/tools/fsmbook-examples/Esperanto,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoAdjectives.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNouns.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectives.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.hfst.script,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.lexc,
-	  test/tools/fsmbook-examples/Esperanto/EsperantoNounsAndAdjectivesWithTags.xfst.att,
-	  test/tools/fsmbook-examples/Esperanto/test.script: New tests.
-
-2011-10-18 13:31  eaxelson
-
-	* test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.hfst.script:
-	  HFST scripts for Monish tests ready.
-
-2011-10-18 08:51  eaxelson
-
-	* test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.xfst.att,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.xfst.script:
-	  Fixed a bug in the xfst file.
-
-2011-10-18 08:44  eaxelson
-
-	* test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.hfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.xfst.att,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/MonishGuesserAnalyzer.xfst.script,
-	  test/tools/fsmbook-examples/MonishGuesserAnalyzer/test.script:
-	  Adding a new test.
-
-2011-10-14 12:07  eaxelson
-
-	* test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.hfst.script,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.xfst.att,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.xfst.script,
-	  test/tools/fsmbook-examples/MonishAnalysis/test.script,
-	  test/tools/fsmbook-examples/xfst-att-to-hfst-att.sh: Added files
-	  to MonishAnalysis
-
-2011-10-14 11:21  eaxelson
-
-	* test/tools/fsmbook-examples/MonishAnalysis,
-	  test/tools/fsmbook-examples/MonishAnalysis/MonishAnalysis.xfst.script:
-	  Adding a new test case
-
-2011-10-14 10:58  eaxelson
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/BrazilianPortuguese.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese1/test.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese.xfst.att,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/BrazilianPortuguese.xfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese2/test.script:
-	  Added an alternative solution to Brazilian Portuguese.
-
-2011-10-14 10:34  eaxelson
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese/test.script,
-	  test/tools/fsmbook-examples/xfst-att-to-hfst-att.sh: Now unicode
-	  characters are transformed correctly from xfst att format to hfst
-	  att format.
-
-2011-10-13 17:44  moshagen
-
-	* tools/src, tools/src/hfst-proc: Ignore generated binaries.
-
-2011-10-13 13:33  eaxelson
-
-	* test/tools/fsmbook-examples/BrazilianPortuguese,
-	  test/tools/fsmbook-examples/BrazilianPortuguese/BrazilianPortuguese.hfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese/BrazilianPortuguese.xfst.script,
-	  test/tools/fsmbook-examples/BrazilianPortuguese/test.script:
-	  Added new test
-
-2011-10-13 12:34  eaxelson
-
-	* test/tools/fsmbook-examples/BetterColaMachine,
-	  test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.hfst.script,
-	  test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.xfst.att,
-	  test/tools/fsmbook-examples/BetterColaMachine/BetterColaMachine.xfst.script,
-	  test/tools/fsmbook-examples/BetterColaMachine/test.script: Added
-	  a new test
-
-2011-10-13 10:53  eaxelson
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh,
-	  test/tools/subtract-functionality.sh: Fixed some tests so that
-	  they work when only openfst is installed.
-
-2011-10-13 09:34  mie
-
-	* libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc: use const char * in bison's
-	  error handler
-
-2011-10-13 09:24  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, test/libhfst/test_constructors.cc,
-	  test/libhfst/test_examples.cc,
-	  test/libhfst/test_flag_diacritics.cc,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  test/libhfst/test_lexc.cc, test/libhfst/test_rules.cc,
-	  test/libhfst/test_streams.cc,
-	  test/libhfst/test_transducer_functions.cc: Fixed tests in
-	  test/libhfst so that they also pass when only OpenFst is
-	  installed. Also changed HfstTransducer::convert so that
-	  exceptions are handled correctly.
-
-2011-10-07 13:52  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/LeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftRestrictionArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc: Ultimate fix
-	  to implementation type availability checking in twolc
-	  unit-testmake check
-
-2011-10-07 13:44  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc:
-	  Tentatively fixed unit-test in OtherSymbolTransducer.cc
-
-2011-10-07 12:56  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftRestrictionArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRule.cc: Added checks
-	  for existence of implementation types to unit tests.
-
-2011-10-07 12:25  mpsilfve
-
-	* tools/src/hfst-twolc/src/commandline_src/CommandLine.cc: Added
-	  support for new backend format strings in commandline arguments.
-
-2011-10-07 12:24  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Added check for existence of
-	  backend formats to tests.
-
-2011-10-07 10:33  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h:
-	  HfstTransducer::is_implementation_type_available changed from
-	  protected to public. HfstTransducer and HfstRules tests now work
-	  also when all backend libraries are not available.
-
-2011-10-06 14:18  hardwick
-
-	* swig/hfstBot.py: Only respond to nick + , or nick + :. Fixed
-	  flood-handling.
-
-2011-10-06 09:35  mie
-
-	* README: Update instructions for easier svn source
-
-2011-10-05 10:49  mie
-
-	* configure.ac: Disable problematic backend libraries from default
-	  build
-
-2011-10-04 15:48  mie
-
-	* autogen.sh, configure.ac, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h:
-	  Remove all version requirements and dependencies and tools that
-	  require versions, features, or dependencies to support older tool
-	  chains and systems
-
-2011-09-30 06:03  mie
-
-	* tools/src/hfst-reweight.cc: allow modifying only end state
-
-2011-09-28 10:22  eaxelson
-
-	* test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.xfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/expected_result.strings:
-	  Fixed character coding in Finnish examples.
-
-2011-09-28 09:01  eaxelson
-
-	* test/tools/fsmbook-examples/YaleShooting/YaleShooting.hfst.script,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.xfst.att,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.xfst.script,
-	  test/tools/fsmbook-examples/YaleShooting/test.script:
-	  YaleShooting test complete, rules must be implemented in HFST
-	  commandline tools before it can be tested.
-
-2011-09-28 08:36  eaxelson
-
-	* test/tools/fsmbook-examples/Palindromes,
-	  test/tools/fsmbook-examples/Palindromes/Palindromes.hfst.script,
-	  test/tools/fsmbook-examples/Palindromes/Palindroms.hfst.script,
-	  test/tools/fsmbook-examples/Palindromes/test.script,
-	  test/tools/fsmbook-examples/Palindroms,
-	  test/tools/fsmbook-examples/test.sh: Changed 'Palindroms' into
-	  'Palindromes'.
-
-2011-09-28 07:36  mie
-
-	* configure.ac, test/tools/Makefile.am,
-	  test/tools/reweight-functionality.sh, tools/src/Makefile.am,
-	  tools/src/hfst-reweight.cc: Add tool for modifying weights
-
-2011-09-27 13:46  eaxelson
-
-	* test/tools/fsmbook-examples/Palindroms/Palindroms.hfst.script,
-	  test/tools/fsmbook-examples/Palindroms/test.script: Now the test
-	  passes also for foma implementation type when revision 47 of foma
-	  is used.
-
-2011-09-27 13:33  eaxelson
-
-	* test/tools/fsmbook-examples/YaleShooting,
-	  test/tools/fsmbook-examples/YaleShooting/Makefile.am,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.hfst.script,
-	  test/tools/fsmbook-examples/YaleShooting/YaleShooting.xfst.script,
-	  test/tools/fsmbook-examples/YaleShooting/test.script: Added test
-	  files.
-
-2011-09-27 13:23  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: A bug in
-	  HfstTransitionGraph::swap_states fixed, now final states are
-	  swapped too.
-
-2011-09-27 08:16  eaxelson
-
-	* test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.xfst.att,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.xfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/test.script,
-	  test/tools/fsmbook-examples/test.sh: Added documentation
-
-2011-09-27 06:31  mie
-
-	* tools/src/hfst-proc/Makefile.am: alias old proc
-
-2011-09-26 14:49  mie
-
-	* man/hfst-xfst.1: add bugs
-
-2011-09-26 14:24  mie
-
-	* man/hfst-fst2strings.1: Missing -r option
-
-2011-09-26 14:20  mie
-
-	* man/hfst-apertium-proc.1: document input format requirements in
-	  the beginning
-
-2011-09-26 13:56  mie
-
-	* test/tools/proc-functionality.sh, test/tools/proc-stress.sh,
-	  test/tools/valgrind.sh: few less apertiums in directories
-
-2011-09-26 13:46  mie
-
-	* man/Makefile.am, man/hfst-apertium-proc.1, man/hfst-proc.1,
-	  test/tools/proc-functionality.sh, test/tools/proc-stress.sh,
-	  test/tools/regexp2fst-functionality.sh, test/tools/valgrind.sh,
-	  tools/src/hfst-proc/Makefile.am: s/proc/apertium-proc/g
-
-2011-09-26 13:09  eaxelson
-
-	* test/tools/fsmbook-examples/Lingala,
-	  test/tools/fsmbook-examples/Lingala/Lingala.hfst.script,
-	  test/tools/fsmbook-examples/Lingala/Lingala.xfst.script,
-	  test/tools/fsmbook-examples/Lingala/test.script,
-	  test/tools/fsmbook-examples/test.sh: Added a test case, Lingala.
-	  The test is not included until an issue with writing transducers
-	  in AT&T format with the limited licence of xfst.
-
-2011-09-26 11:18  eaxelson
-
-	* test/tools/fsmbook-examples/FinnishOTProsody,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.xfst.att,
-	  test/tools/fsmbook-examples/FinnishOTProsody/FinnishOTProsody.xfst.script,
-	  test/tools/fsmbook-examples/FinnishOTProsody/test.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/test.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/xfst-att-to-hfst-att.sh,
-	  test/tools/fsmbook-examples/test.sh,
-	  test/tools/fsmbook-examples/xfst-att-to-hfst-att.sh: Added a new
-	  test, FinnishOTProsody
-
-2011-09-26 10:32  eaxelson
-
-	* test/tools/fsmbook-examples/PlusOrMinus,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.hfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/PlusOrMinus.xfst.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/test.script,
-	  test/tools/fsmbook-examples/PlusOrMinus/xfst-att-to-hfst-att.sh,
-	  test/tools/fsmbook-examples/test.sh: Added a new test,
-	  PlusOrMinus
-
-2011-09-23 14:34  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc: Fixed a bug that
-	  occurred in binary operators when the calling transducer and the
-	  argument transducer were the same.
-
-2011-09-22 11:48  eaxelson
-
-	* test/tools/fsmbook-examples/FinnishProsody,
-	  test/tools/fsmbook-examples/FinnishProsody/FinnishProsody.hfst.script,
-	  test/tools/fsmbook-examples/FinnishProsody/expected_result.strings,
-	  test/tools/fsmbook-examples/FinnishProsody/test.script,
-	  test/tools/fsmbook-examples/Palindroms,
-	  test/tools/fsmbook-examples/Palindroms/Palindroms.hfst.script,
-	  test/tools/fsmbook-examples/Palindroms/expected_result,
-	  test/tools/fsmbook-examples/Palindroms/test.script,
-	  test/tools/fsmbook-examples/Palindroms/words.txt,
-	  test/tools/fsmbook-examples/test.sh: Added more fsmbook examples.
-	  The tests have to wait until we get rules in hfst-regexp2fst.
-
-2011-09-22 05:00  mie
-
-	* libhfst/src/parsers/xre_utils.cc,
-	  test/tools/at_file_quote.foma.xre,
-	  test/tools/at_file_quote.openfst-tropical.xre,
-	  test/tools/at_file_quote.sfst.xre: Terminate xre parsed quoted
-	  string, fixes 3400657
-
-2011-09-20 07:51  mie
-
-	* tools/src/hfst-twolc/src/Makefile.am: Declare BUILT_SOURCES
-
-2011-09-15 13:34  eaxelson
-
-	* configure.ac,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.script,
-	  test/tools/fsmbook-examples/Makefile,
-	  test/tools/fsmbook-examples/Makefile.am,
-	  test/tools/fsmbook-examples/test.sh: We are one step closer to
-	  get the tests in test/tools/fsmbook-examples under autotools..
-
-2011-09-14 12:17  eaxelson
-
-	* test/tools/Makefile.am,
-	  test/tools/fsmbook-examples/DateParser/Makefile,
-	  test/tools/fsmbook-examples/DateParser/test.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/Makefile,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/Makefile,
-	  test/tools/fsmbook-examples/EnglishNumerals/test.script,
-	  test/tools/fsmbook-examples/FinnishNumerals/Makefile,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.script,
-	  test/tools/fsmbook-examples/Makefile,
-	  test/tools/fsmbook-examples/NumbersToNumerals/Makefile,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.script,
-	  test/tools/fsmbook-examples/test.script,
-	  test/tools/fsmbook-examples/test.sh: Added Makefiles to
-	  fsmbook-examples. The tests in fsmbook-examples are not executed
-	  until they use autotools.
-
-2011-09-14 11:15  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/DateParser.xfst.att,
-	  test/tools/fsmbook-examples/DateParser/test.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.xfst.att,
-	  test/tools/fsmbook-examples/EnglishNumerals/test.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.xfst.att,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.script,
-	  test/tools/fsmbook-examples/test.script: Now the tests do not
-	  depend on the tool hfst-xfst. Instead, they use hfst-txt2fst and
-	  a transducer in att format.
-
-2011-09-13 10:02  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc: A bug in
-	  FomaTransducer::write_net fixed. Now the the function fsm_count
-	  is called before writing the transducer so that the number of
-	  lines is always correct.
-
-2011-09-13 09:58  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/test.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.script,
-	  test/tools/fsmbook-examples/test.script: A testfile added.
-
-2011-09-12 07:24  mie
-
-	* tools/src/hfst-apertium2fst.cc: Use basic transducer and trie
-	  disjunction
-
-2011-09-11 17:37  mie
-
-	* tools/src/hfst-apertium2fst.cc: Works minus regexps
-
-2011-09-11 14:53  mie
-
-	* configure.ac: dl before openfst though
-
-2011-09-11 14:33  mie
-
-	* configure.ac: do we still need pthreads and m?
-
-2011-09-11 14:32  mie
-
-	* libhfst/src/HfstTransducer.cc: Yet another missing header and
-	  using
-
-2011-09-09 14:39  moshagen
-
-	* tools/src: Ignore generated binaries.
-
-2011-09-09 14:06  mpsilfve
-
-	* tools/src/hfst-tagger/training_data: Removed file training_data,
-	  which was accidentally added.
-
-2011-09-09 13:57  mpsilfve
-
-	* tools/src/hfst-tagger,
-	  tools/src/hfst-tagger/CompletedCycleBuilder.cc,
-	  tools/src/hfst-tagger/CompletedCycleBuilder.h,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModel.cc,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModel.h,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModelPair.cc,
-	  tools/src/hfst-tagger/ComposeIntersectNGramModelPair.h,
-	  tools/src/hfst-tagger/CycleBuilder.cc,
-	  tools/src/hfst-tagger/CycleBuilder.h,
-	  tools/src/hfst-tagger/GuesserBuilder.cc,
-	  tools/src/hfst-tagger/GuesserBuilder.h,
-	  tools/src/hfst-tagger/GuesserDivisorTransformer.cc,
-	  tools/src/hfst-tagger/GuesserDivisorTransformer.h,
-	  tools/src/hfst-tagger/GuesserStreamTransformer.cc,
-	  tools/src/hfst-tagger/GuesserStreamTransformer.h,
-	  tools/src/hfst-tagger/HMMTagger.cc,
-	  tools/src/hfst-tagger/HMMTagger.h,
-	  tools/src/hfst-tagger/IdentityTransformer.cc,
-	  tools/src/hfst-tagger/IdentityTransformer.h,
-	  tools/src/hfst-tagger/LanguageModel.cc,
-	  tools/src/hfst-tagger/LanguageModel.h,
-	  tools/src/hfst-tagger/LastEntryRemover.cc,
-	  tools/src/hfst-tagger/LastEntryRemover.h,
-	  tools/src/hfst-tagger/LexicalModel.cc,
-	  tools/src/hfst-tagger/LexicalModel.h,
-	  tools/src/hfst-tagger/LexicalStreamTransformer.cc,
-	  tools/src/hfst-tagger/LexicalStreamTransformer.h,
-	  tools/src/hfst-tagger/LexiconBuilder.cc,
-	  tools/src/hfst-tagger/LexiconBuilder.h,
-	  tools/src/hfst-tagger/LexiconDivisorTransformer.cc,
-	  tools/src/hfst-tagger/LexiconDivisorTransformer.h,
-	  tools/src/hfst-tagger/LogSequenceWeightTable.cc,
-	  tools/src/hfst-tagger/LogSequenceWeightTable.h,
-	  tools/src/hfst-tagger/Makefile,
-	  tools/src/hfst-tagger/ModelBuilder.cc,
-	  tools/src/hfst-tagger/ModelBuilder.h,
-	  tools/src/hfst-tagger/NGramAbstracter.cc,
-	  tools/src/hfst-tagger/NGramAbstracter.h,
-	  tools/src/hfst-tagger/NGramModelConstructor.cc,
-	  tools/src/hfst-tagger/NGramModelConstructor.h,
-	  tools/src/hfst-tagger/SentenceStream.cc,
-	  tools/src/hfst-tagger/SentenceStream.h,
-	  tools/src/hfst-tagger/SequenceCounter.cc,
-	  tools/src/hfst-tagger/SequenceCounter.h,
-	  tools/src/hfst-tagger/SequenceModel.cc,
-	  tools/src/hfst-tagger/SequenceModel.h,
-	  tools/src/hfst-tagger/SequenceWeightTable.cc,
-	  tools/src/hfst-tagger/SequenceWeightTable.h,
-	  tools/src/hfst-tagger/SequenceWeighter.cc,
-	  tools/src/hfst-tagger/SequenceWeighter.h,
-	  tools/src/hfst-tagger/Speller.cc,
-	  tools/src/hfst-tagger/Speller.h,
-	  tools/src/hfst-tagger/StandardHMMLexicalModel.cc,
-	  tools/src/hfst-tagger/StandardHMMLexicalModel.h,
-	  tools/src/hfst-tagger/StreamFieldInverter.cc,
-	  tools/src/hfst-tagger/StreamFieldInverter.h,
-	  tools/src/hfst-tagger/StreamMarkovizer.cc,
-	  tools/src/hfst-tagger/StreamMarkovizer.h,
-	  tools/src/hfst-tagger/StreamReinitializer.cc,
-	  tools/src/hfst-tagger/StreamReinitializer.h,
-	  tools/src/hfst-tagger/StreamTokenizer.cc,
-	  tools/src/hfst-tagger/StreamTokenizer.h,
-	  tools/src/hfst-tagger/StreamTransformer.cc,
-	  tools/src/hfst-tagger/StreamTransformer.h,
-	  tools/src/hfst-tagger/StringTransformer.h,
-	  tools/src/hfst-tagger/StringTransformerList.cc,
-	  tools/src/hfst-tagger/StringTransformerList.h,
-	  tools/src/hfst-tagger/SuggestionsInContext.cc,
-	  tools/src/hfst-tagger/SuggestionsInContext.h,
-	  tools/src/hfst-tagger/Tagger.cc, tools/src/hfst-tagger/Tagger.h,
-	  tools/src/hfst-tagger/ToEmptyStringTransforme.cc,
-	  tools/src/hfst-tagger/ToEmptyStringTransforme.h,
-	  tools/src/hfst-tagger/ToEmptyStringTransformer.cc,
-	  tools/src/hfst-tagger/ToEmptyStringTransformer.h,
-	  tools/src/hfst-tagger/TrieBuilder.cc,
-	  tools/src/hfst-tagger/TrieBuilder.h,
-	  tools/src/hfst-tagger/WordformProbabilityListBuilder.cc,
-	  tools/src/hfst-tagger/WordformProbabilityListBuilder.h,
-	  tools/src/hfst-tagger/WordformProbabilityListTransformer.cc,
-	  tools/src/hfst-tagger/WordformProbabilityListTransformer.h,
-	  tools/src/hfst-tagger/WordformRemover.cc,
-	  tools/src/hfst-tagger/WordformRemover.h,
-	  tools/src/hfst-tagger/context_speller.cc,
-	  tools/src/hfst-tagger/hfst_tagger_code_skeleton.cc,
-	  tools/src/hfst-tagger/hfst_tagger_header_skeleton.h,
-	  tools/src/hfst-tagger/tag_with_hmm_tagger.cc,
-	  tools/src/hfst-tagger/train_hmm_tagger.cc,
-	  tools/src/hfst-tagger/training_data: Initial add of hfst-tagger.
-	  A lot of stuff is still missing and the tool needs to be
-	  integrated in the build system.
-
-2011-09-08 15:55  eaxelson
-
-	* test/tools/fsmbook-examples/EinsteinsPuzzle/test.script,
-	  test/tools/fsmbook-examples/FinnishNumerals/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.script: tests
-	  modified
-
-2011-09-08 15:24  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/test.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/EinsteinsPuzzle.hfst.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/test.script,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.script: some
-	  of the tests rewritten
-
-2011-09-08 13:00  eaxelson
-
-	* test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/test.script: Now the tests
-	  are performed for sfst, openfst-tropical and foma types.
-
-2011-09-08 11:59  eaxelson
-
-	* libhfst/src/HfstDataTypes.h: typedef HfstTransducerPairSet
-	  removed from HfstDataTypes.h because it is not used anywhere and
-	  would cause problems because HfstTransducer::operator< is not
-	  defined
-
-2011-09-08 11:10  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, test/libhfst/test_constructors.cc,
-	  test/tools/fsmbook-examples/EnglishNumerals/test.script: Now
-	  HfstTransducer::operator= works for the case of optimized lookup
-	  transducers and copies the name of the transducer for all cases.
-
-2011-09-08 03:32  mie
-
-	* libhfst/src/HfstTransducer.cc, test/libhfst/test_constructors.cc:
-	  copy props in copy constructor (excepting type); fixes bug
-	  #3405831
-
-2011-09-07 22:40  mie
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc, tools/src/hfst-edit-metadata.cc,
-	  tools/src/hfst-grep.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/hfst-tool-metadata.cc, tools/src/hfst-traverse.cc: make
-	  compilation work without inclusions leaking from backend headers
-
-2011-09-06 07:50  spectre360
-
-	* tools/src/hfst-edit-metadata.cc: add include for std::map
-
-2011-09-06 07:35  spectre360
-
-	* tools/src/hfst-apertium2fst.cc: add include for std::set
-
-2011-09-05 22:16  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-apertium2fst.cc, tools/src/hfst-program-options.h,
-	  tools/src/hfst-regexp2fst.cc: apertium2fst tool added
-
-2011-09-05 22:14  mie
-
-	* libhfst/src/HfstOutputStream.cc: Avoid writing name, version or
-	  type twice
-
-2011-09-02 10:49  hardwick
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc: Added necessary std::qualifiers.
-	  (With --without-sfst some using-directives apparently disappear.)
-
-2011-09-01 23:47  mie
-
-	* libhfst/src/HfstTokenizer.cc, tools/src/hfst-strings2fst.cc: Fix
-	  UTF-8 bugs in strings:
-	  * use error_at_line instead of error when linens are known
-	  * remove bogus double try blocks
-	  * throw UTF-8 errors with messages
-
-2011-09-01 23:45  mie
-
-	* tools/src/hfst-tool-metadata.cc: Fix formulae for filenames and
-	  data starting with non-ASCII
-
-2011-09-01 23:23  mie
-
-	* tools/src/hfst-strings2fst.cc: Revert tab-containing commit r1576
-
-2011-09-01 22:22  mie
-
-	* test/tools/compare-functionality.sh,
-	  test/tools/lexc-functionality.sh,
-	  test/tools/proc-functionality.sh: fix missing paths in tests
-	  (would've used $PATH instead of newly builts)
-
-2011-09-01 22:21  mie
-
-	* tools/src/hfst-commandline.h,
-	  tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-determinize.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-grep.cc,
-	  tools/src/hfst-invert.cc, tools/src/hfst-lexc-compiler.cc,
-	  tools/src/hfst-lexc.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-remove-epsilons.cc,
-	  tools/src/hfst-repeat.cc, tools/src/hfst-reverse.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-subtract.cc, tools/src/hfst-summarize.cc,
-	  tools/src/hfst-txt2fst.cc: Use new metadata handling in tools
-	  * fix signedness in -grep
-	  * fix erroneous error printout in -compose-intersect
-	  * add few features to summarize
-
-2011-09-01 22:18  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-edit-metadata.cc, tools/src/hfst-tool-metadata.cc,
-	  tools/src/hfst-tool-metadata.h: * common practices headers and
-	  utils for metadata in cli tools
-	  * a simple cli tool to edit metadata
-
-2011-09-01 22:12  mie
-
-	* doc/hfst3-metadata-header-registry.rst: metadata header name
-	  registry
-
-2011-09-01 22:05  mie
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstExceptions.h,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h: Make use of HFST3 transducer format
-	  metadata:
-	  This is basically upwards and downwards compatible change with
-	  HFST3
-	  automata and header parsing, but be cautious that everything may
-	  break at
-	  random
-
-2011-09-01 12:54  eaxelson
-
-	* test/tools/fsmbook-examples,
-	  test/tools/fsmbook-examples/DateParser,
-	  test/tools/fsmbook-examples/DateParser/DateParser.hfst.script,
-	  test/tools/fsmbook-examples/DateParser/DateParser.xfst.script,
-	  test/tools/fsmbook-examples/DateParser/test.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/EinsteinsPuzzle.hfst.script,
-	  test/tools/fsmbook-examples/EinsteinsPuzzle/test.script,
-	  test/tools/fsmbook-examples/EnglishNumerals,
-	  test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/EnglishNumerals.xfst.script,
-	  test/tools/fsmbook-examples/EnglishNumerals/test.script,
-	  test/tools/fsmbook-examples/FinnishNumerals,
-	  test/tools/fsmbook-examples/FinnishNumerals/FinnishNumerals.hfst.script,
-	  test/tools/fsmbook-examples/FinnishNumerals/english_to_finnish_numerals_expected,
-	  test/tools/fsmbook-examples/FinnishNumerals/finnish_to_english_numerals_expected,
-	  test/tools/fsmbook-examples/FinnishNumerals/test.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.hfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/NumbersToNumerals.xfst.script,
-	  test/tools/fsmbook-examples/NumbersToNumerals/test.script: Added
-	  Beesley and Karttunen's fsmbook examples to the tests. The
-	  fsmbook tests are not yet run when doing make check.
-
-2011-08-29 14:16  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/variable_src/MatchedConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableDefs.h: Fixed bug
-	  that caused hfst-twolc to segfault when variable rules with
-	  keyword matched had unequal value lists. Now it will give an
-	  error message and terminate compilation.
-
-2011-08-29 13:03  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Cross product added to the library
-
-2011-08-26 11:52  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Universal pair update and added identity pair
-
-2011-08-25 09:44  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc: A
-	  bug in transducer conversion fixed.
-
-2011-08-24 17:16  hardwick
-
-	* tools/src/hfst-substitute.cc: Don't do foma-SFST conversion if we
-	  don't HAVE_SFST
-
-2011-08-24 17:10  hardwick
-
-	* tools/src/hfst-substitute.cc: Warning about broken foma handling
-
-2011-08-24 14:09  hardwick
-
-	* tools/src/hfst-substitute.cc: More accurate comment
-
-2011-08-24 13:28  hardwick
-
-	* tools/src/hfst-substitute.cc: Do foma-sfst -conversion for
-	  substitute also (not just pruning);
-	  HfstTransducer doesn't know about foma's substitute.
-
-2011-08-24 13:13  hardwick
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc: Typo
-
-2011-08-24 13:07  hardwick
-
-	* tools/src/hfst-substitute.cc: Swing foma substitutions through
-	  sfst to prevent horrible leaks
-
-2011-08-24 11:42  hardwick
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc: Don't leak
-	  1 (!!) byte of empty string when constructing foma transducer
-
-2011-08-23 13:57  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed mismatched free/delete when
-	  freeing foma transducers.
-
-2011-08-23 13:11  hardwick
-
-	* tools/src/hfst-substitute.cc: Don't leak "fallback" transducer
-	  for each label
-
-2011-08-23 08:29  hardwick
-
-	* swig/hfstBot.py: Strip server junk from username reply
-
-2011-08-22 16:00  hardwick
-
-	* libhfst/src/HfstTransducer.cc: Fixed wrong exception name
-
-2011-08-22 12:19  hardwick
-
-	* libhfst/src/HfstTransducer.cc: Make composition with OL throw a
-	  Mismatch exception, which compose is
-	  looking for (it still needs to know about the second tranducer
-	  being OL)
-
-2011-08-18 19:09  spectre360
-
-	* tools/src/hfst-affix-guessify.cc: add 'using std::set' to fix
-	  compilation problem in hfst-affix-guessify.cc
-
-2011-08-18 13:56  eaxelson
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-lexc-compiler.cc,
-	  tools/src/hfst-lexc.cc, tools/src/hfst-txt2fst.cc,
-	  tools/src/hfst-xfst-compiler.cc: Standardized the transducer
-	  format options of commandline tools.
-
-2011-08-17 18:09  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.h:
-	  MAde ComposeIntersectRulePair::get_transitions virtual.
-
-2011-08-17 16:06  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h:
-	  made size_t size(void) a const method.
-
-2011-08-17 15:26  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h:
-	  Added method ComposeIntersectFst::get_symbol_number, because
-	  HfstTropicalTransducerTransitionData::get_number is not
-	  accessible from outside the library.
-
-2011-08-17 15:16  mpsilfve
-
-	* libhfst/src/implementations/Makefile.am: Edited Makefile.am so
-	  that it installs compose intersect headers properly
-
-2011-08-17 13:37  mpsilfve
-
-	* tools/src/HfstStrings2FstTokenizer.cc,
-	  tools/src/hfst-strings2fst.cc: Fixed bug in tokenizing string
-	  with lonely backslashes. Backslash can now escape any symbol and
-	  it is ignored when it occurs as the last symbol in the input.
-
-2011-08-16 18:13  moshagen
-
-	* tools/src, tools/src/hfst-twolc/src: Ignore generated files.
-
-2011-08-16 09:05  sdrobac
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h: Updated Rules - left replace down
-	  karttunen + tests
-
-2011-08-16 07:46  moshagen
-
-	* README: Whitespace, punctuation, cleaned double conjunction.
-
-2011-08-16 07:36  moshagen
-
-	* README: Updates on building on the Mac.
-
-2011-08-15 22:44  mie
-
-	* tools/src/hfst-affix-guessify.cc: iterators can no longer be
-	  used...
-
-2011-08-15 22:36  mie
-
-	* README: Update SFST requirements
-
-2011-08-15 19:50  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-affix-guessify.cc: Resurrect the affix guesser
-	  maker
-
-2011-08-15 18:51  hardwick
-
-	* swig/hfstBot.py: Flood protection for channel messages
-
-2011-08-15 18:44  hardwick
-
-	* swig/hfstBot.py: Improved message finding and private messaging
-
-2011-08-15 15:24  mie
-
-	* configure.ac: autoconf doesn't understand dnl without space?
-
-2011-08-15 14:42  mie
-
-	* configure.ac, tools/src/hfst-traverse.cc: apparently mac os x
-	  "readline" does not support rl_completion_matches...
-
-2011-08-15 14:33  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc:
-	  HfstTransitionGraph::iterator is now protected, the public
-	  HfstTransitionGraph::const_iterator should be used instead.
-
-2011-08-15 14:22  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc:
-	  Replaced all mentions of HfstBasicTransducer::iterator with
-	  HfstBasicTransducer::const_iterator in OtherSymbolTransducer.cc.
-
-2011-08-15 14:15  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/src/scanner2.ll,
-	  tools/src/hfst-twolc/src/scanner3.ll,
-	  tools/src/hfst-twolc/test/test57,
-	  tools/src/hfst-twolc/test/test58: Changed syntax of negative
-	  context rules.
-
-2011-08-15 13:52  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc:
-	  Modified OtherSymbolTransducer::harmonize_diacritics, so
-	  HfstBasicTransducer::add_transition is used instead of adding
-	  transitions directly to the transition vector.
-
-2011-08-15 13:50  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Enabled sfst tests.
-
-2011-08-15 12:47  hardwick
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h: untabify recent
-	  changes
-
-2011-08-15 12:30  eaxelson
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h: Updated HFST so
-	  that it works with the newest version of SFST, 1.4.6.
-
-2011-08-15 10:25  hardwick
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HfstApply.cc, libhfst/src/HfstExceptionDefs.h,
-	  libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstSymbolDefs.cc,
-	  libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstConstantTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.h,
-	  libhfst/src/implementations/HfstFastTransitionData.h,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRule.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  libhfst/src/parsers/lexc-utils.cc, swig/hfst_swig_extensions.h,
-	  test/libhfst/auxiliary_functions.cc,
-	  test/libhfst/test_constructors.cc, test/libhfst/test_examples.cc,
-	  test/libhfst/test_flag_diacritics.cc,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  test/libhfst/test_lexc.cc, test/libhfst/test_rules.cc,
-	  test/libhfst/test_streams.cc, test/libhfst/test_tokenizer.cc,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/FunctionalTransducer.cc, tools/src/HfstAlphabet.cc,
-	  tools/src/HfstAlphabet.h, tools/src/HfstBasic.cc,
-	  tools/src/HfstCompiler.cc, tools/src/HfstCompiler.h,
-	  tools/src/HfstLookupFlagDiacritics.cc,
-	  tools/src/HfstLookupFlagDiacritics.h,
-	  tools/src/HfstStrings2FstTokenizer.cc,
-	  tools/src/HfstStrings2FstTokenizer.h, tools/src/HfstUtf8.cc,
-	  tools/src/hfst-flag-diacritics.cc, tools/src/hfst-format.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-optimized-lookup.h,
-	  tools/src/hfst-pair-test-commandline.h,
-	  tools/src/hfst-pair-test-transducers.h,
-	  tools/src/hfst-pair-test.cc,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc,
-	  tools/src/hfst-proc/buffer.h, tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-split.cc, tools/src/hfst-strip-header.cc,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.cc,
-	  tools/src/hfst-twolc/src/io_src/InputReader.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingRightArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingRightArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftRestrictionArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftRestrictionArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.h,
-	  tools/src/hfst-twolc/src/rule_src/RuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.h,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.cc,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.h,
-	  tools/src/hfst-twolc/src/variable_src/ConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/MatchedConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/MixedConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/RuleSymbolVector.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleVariablesConstIterator.cc,
-	  tools/src/hfst-twolc/src/variable_src/VariableBlock.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableValueIterator.h,
-	  tools/src/parsers/xfst-utils.cc, tools/src/test.cc: detab hfst3
-	  tree - feel free to revert (and report) if this causes any
-	  problems
-
-2011-08-15 04:10  mie
-
-	* tools/src/hfst-summarize.cc: add few trivial features to list
-
-2011-08-15 03:30  mie
-
-	* tools/src/hfst-compose-intersect.cc: Be more verbose about type
-	  mismatch
-
-2011-08-14 21:43  mie
-
-	* tools/src/hfst-substitute.cc: check for empty strings
-
-2011-08-14 08:50  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Modified test script so that it
-	  runs tests for all backend formats. Disabled tests for sfst and
-	  log-openfst formats, since sfst segaults and log-openfst gives
-	  weird results. These are errors from the library.
-
-2011-08-12 17:55  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test58,
-	  tools/src/hfst-twolc/test/test58.txt_fst: Added test for negative
-	  rule contexts in rules with variables.
-
-2011-08-12 09:20  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/src/scanner2.ll,
-	  tools/src/hfst-twolc/src/scanner3.ll: Added negative context
-	  rules.
-
-2011-08-12 09:19  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test57,
-	  tools/src/hfst-twolc/test/test57.txt_fst: Added tests for
-	  negative contexts in twolc rules.
-
-2011-08-11 12:47  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  test/libhfst/test_constructors.cc: Now HfstTransducer::operator=
-	  throws a FunctionNotImplementedException instead of a
-	  TransducerHasWrongTypeException.
-
-2011-08-10 20:16  mie
-
-	* tools/src/hfst-lexc.cc: Fallback to anything or nothing from
-	  settings; resolves bug #1061990
-
-2011-08-10 18:17  mie
-
-	* INSTALL: kind reminder about importance of the README
-
-2011-08-09 11:34  hardwick
-
-	* swig/hfstBot.py: Some logging changes
-
-2011-08-09 11:33  hardwick
-
-	* swig/README: end readme in nl
-
-2011-08-09 08:56  hardwick
-
-	* swig/hfstBot.py: Save misses to logfile
-
-2011-08-08 13:37  hardwick
-
-	* swig/hfstBot.py: Send notice if word is unknown
-
-2011-08-08 13:31  hardwick
-
-	* swig/hfstBot.py: Don't print ugly weights
-
-2011-08-08 13:14  hardwick
-
-	* swig/hfstBot.py: Just dump privmsg to console and don't do
-	  anything for now..
-
-2011-08-08 13:11  hardwick
-
-	* swig/README, swig/hfstBot.py: hfst-bot demo
-
-2011-08-08 11:46  hardwick
-
-	* swig/README, swig/libhfst.i, swig/omor_query.py: Lookup demo
-
-2011-08-08 11:17  hardwick
-
-	* swig/README, swig/hfst_swig_extensions.h, swig/libhfst.i,
-	  swig/setup.py: Full api and distutils-based build & install
-
-2011-08-08 00:28  mie
-
-	* README: clarify SFST libraries relation to HFST; thanks to
-	  spectie for the suggestion
-
-2011-08-08 00:18  mie
-
-	* tools/src/Makefile.am, tools/src/hfst-lexc.cc,
-	  tools/src/lexc-readline-ui.cc: * Save temporary files for foma in
-	  /tmp/
-	  * import old readline UI from 2nd branch
-	  * deprecation warning if input = stdin
-	  * error if output = stdout
-
-2011-08-07 18:07  mie
-
-	* tools/src/hfst-traverse.cc: Another readline editline libedit fix
-	  maybe
-
-2011-08-07 17:43  mie
-
-	* configure.ac, tools/src/hfst-traverse.cc: CHECK_DECLs to support
-	  mac os X's fake cripple readline
-
-2011-08-05 10:04  eaxelson
-
-	* libhfst/src/HfstRules.cc: Tests of replace functions now work for
-	  transducers of foma type as well.
-
-2011-08-05 09:33  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  test/libhfst/test_rules.cc: A new function
-	  rules::replace_down_karttunen added. This function returns the
-	  actual downward replacement rule transducer instead of
-	  rules::replace_down that returns a downward rule transducer as
-	  defined in SFST-PL.
-
-2011-08-04 14:25  mie
-
-	* Makefile.am, libhfst/src/Makefile.am,
-	  libhfst/src/valgrind-unit-tests.sh, test/tools/Makefile.am,
-	  test/tools/valgrind.sh: New target for root makefile: valgrind
-
-2011-08-03 15:26  mie
-
-	* autogen.sh: >=autoconf-2.62 not 2.22
-
-2011-08-03 15:21  mie
-
-	* configure.ac: Remove libtool 1 support tricks, more trouble than
-	  it's worth
-
-2011-08-03 09:49  mie
-
-	* autogen.sh: Mark version requirements in autogen
-
-2011-08-02 21:54  mie
-
-	* configure.ac: Move version requirement to beginning of the line
-	  to be sure...
-
-2011-08-02 18:29  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-traverse.cc:
-	  debugging tool
-
-2011-08-02 10:32  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: A bug in
-	  function random_path fixed
-
-2011-08-01 17:46  mie
-
-	* tools/src/hfst-grep.cc: help messages to message_out instead of
-	  stderr
-
-2011-08-01 17:22  mie
-
-	* test/tools/Makefile.am, test/tools/compounds.txt,
-	  test/tools/proc-compounds-out.strings,
-	  test/tools/proc-compounds.strings,
-	  test/tools/proc-functionality.sh,
-	  tools/src/hfst-proc/applicators.cc: Do not cut unknown word forms
-	  from first non-alphabetic character in
-	  analysis, test case added
-
-2011-08-01 11:47  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_hfst_basic_transducer.cc: Fixed a piece of
-	  documentation on HfstTransitionGraph and added a test case too.
-
-2011-08-01 11:17  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/fst2strings-functionality.sh,
-	  tools/src/HfstAlphabet.cc, tools/src/HfstAlphabet.h,
-	  tools/src/hfst-fst2txt.cc: Now extract_random_paths works for an
-	  empty tropical transducer. A test case also added.
-
-2011-08-01 07:20  mie
-
-	* tools/src/hfst-summarize.cc: print more than fstinfo only if
-	  verbose
-
-2011-08-01 06:00  mie
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc: Fix
-	  arc-based leak in conversion
-
-2011-07-31 22:57  mie
-
-	* configure.ac, scripts/Makefile.am, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-commandline.h, tools/src/hfst-lexc.cc: Make old
-	  lexc default lexc again; fixes: 100000000 Mac OS X bugs
-
-2011-07-31 17:53  mie
-
-	* test/tools/Makefile.am, test/tools/hfst-check-environment.sh,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-compare.cc, tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-determinize.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-duplicate.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-head.cc,
-	  tools/src/hfst-invert.cc, tools/src/hfst-lexc-compiler.cc,
-	  tools/src/hfst-lexc.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-minimize.cc, tools/src/hfst-name.cc,
-	  tools/src/hfst-pair-test.cc,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-remove-epsilons.cc,
-	  tools/src/hfst-repeat.cc, tools/src/hfst-reverse.cc,
-	  tools/src/hfst-split.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-subtract.cc,
-	  tools/src/hfst-summarize.cc, tools/src/hfst-tail.cc,
-	  tools/src/hfst-txt2fst.cc, tools/src/hfst-xfst-compiler.cc: allow
-	  options to be passed via env.var. HFST_OPTIONS
-
-2011-07-31 05:06  mie
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-grep.cc:
-	  works but leaks
-
-2011-07-30 16:33  mie
-
-	* configure.ac: and default to glib to test if end users are ready
-	  for that in next rel
-
-2011-07-30 16:27  mie
-
-	* ChangeLog, NEWS, authors.xml, configure.ac, libhfst/hfst.pc.in,
-	  libhfst/src/Makefile.am: Release changes
-
-2011-07-28 16:20  mie
-
-	* test/libhfst/test_examples.cc, test/libhfst/test_streams.cc:
-	  delete created test files
-
-2011-07-28 15:41  mie
-
-	* test/tools/Makefile.am: include new proc tests in dist
-
-2011-07-28 15:40  mie
-
-	* Makefile.am: extra dist m4 macros
-
-2011-07-27 21:32  spectre360
-
-	* tools/src/hfst-proc/alphabet.cc, tools/src/hfst-proc/alphabet.h,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/hfst-proc.h: fix how compound words are
-	  generated
-
-2011-07-27 20:34  mie
-
-	* tools/src/hfst-proc/applicators.cc,
-	  tools/src/hfst-proc/applicators.h: try generating first without
-	  compound interpretations; possible fix for
-	  bug #3290585
-
-2011-07-27 00:26  mie
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/compare-functionality.sh,
-	  test/tools/compose-functionality.sh,
-	  test/tools/compose-intersect-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh,
-	  test/tools/head-functionality.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/push-weights-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/tail-functionality.sh,
-	  test/tools/txt2fst-functionality.sh: do not pipe error messages
-	  from tests to /dev/null
-
-2011-07-26 23:27  mie
-
-	* test/tools/project-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/subtract-functionality.sh: fix some -a tests
-
-2011-07-26 23:20  mie
-
-	* test/tools/Makefile.am, test/tools/valgrind.sh: add valgrind to
-	  stress test targets
-
-2011-07-26 16:24  mie
-
-	* README: Add a blurb about Unicode support requirements
-
-2011-07-26 01:32  mie
-
-	* tools/src/hfst-lookup.cc: calculate spaces in length of print
-	  forms; fixes #3296854
-
-2011-07-26 00:33  mie
-
-	* configure.ac, tools/src/hfst-proc/Makefile.am,
-	  tools/src/hfst-proc/alphabet.cc: Allow use of glib for proc
-	  unicode casing (most likely breaks all Macs
-	  because of pkg-config and all that)
-
-2011-07-25 19:03  mie
-
-	* test/tools/incompatible-formats.sh,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-subtract.cc: Implement
-	  type mismatch error messages for all binary tools
-
-2011-07-25 16:07  mie
-
-	* tools/src/hfst-twolc/test/test: add quotation and neat printing
-	  in twolc tests
-
-2011-07-25 15:58  mie
-
-	* test/tools/Makefile.am,
-	  test/tools/incompatible-formats-compare.sh,
-	  test/tools/incompatible-formats.sh, tools/src/hfst-compose.cc:
-	  incompatible format messages in composition
-
-2011-07-25 15:27  mie
-
-	* README: document new tests in troubleshooting with examples.
-
-2011-07-25 15:20  mie
-
-	* test/tools/Makefile.am, test/tools/latin-1-strings.sh: Move
-	  latin-1 string tests to XFAIL
-
-2011-07-25 15:00  mie
-
-	* test/tools/Makefile.am,
-	  test/tools/incompatible-formats-compare.sh,
-	  tools/src/PathPrettyPrinters, tools/src/hfst-compare.cc: Neat
-	  error output when incompatible formats; bug #3287458
-
-2011-07-18 14:55  mie
-
-	* README: Troubleshooting for Mac OS X's getopt
-
-2011-07-18 14:45  mie
-
-	* configure.ac, scripts/hfst-lexc: Check for GNU compatible getopt,
-	  try to fallback to broken getopts more aggressively on Mac OS X
-
-2011-07-18 11:31  mie
-
-	* tools/src/hfst-summarize.cc: Implement print-sigma and acceptor
-
-2011-07-09 15:04  mie
-
-	* man/hfst-proc.1: include new command line option in man pages
-
-2011-07-09 14:40  mie
-
-	* tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/tokenizer.cc,
-	  tools/src/hfst-proc/tokenizer.h: Disable reserved characters and
-	  escapes in raw mode.
-
-2011-07-08 20:55  mie
-
-	* test/tools/permutate-file-params.sh,
-	  test/tools/proc-caps-gen.strings,
-	  test/tools/proc-functionality.sh: remove roundtrip test: mac os x
-	  sed does not support new lines
-
-2011-07-06 13:09  mie
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-lexc.cc:
-	  hfst-lexc around lexc_read
-
-2011-07-06 12:07  spectre360
-
-	* tools/src/hfst-proc/alphabet.cc: more alphabet hacks, i should
-	  really fix this properly as opposed to just
-	  patching the bugs i find
-
-2011-07-05 01:07  mie
-
-	* test/tools/proc-caps-out1.strings,
-	  test/tools/proc-caps-out2.strings,
-	  test/tools/proc-caps-out3.strings,
-	  test/tools/proc-caps-out4.strings,
-	  test/tools/proc-caps-out5.strings, test/tools/proc-caps.txt,
-	  test/tools/proc-functionality.sh,
-	  tools/src/hfst-proc/applicators.cc,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/hfst-proc.h,
-	  tools/src/hfst-proc/lookup-state.cc: New analysis mode for
-	  finntreebank people:
-	  * no lowercase
-	  * no uppercases
-	  * no compounds
-	  * probably some ohter things
-
-2011-07-03 20:48  mie
-
-	* README: Detail all external backend libraries in troubleshooting
-	  section also...
-
-2011-06-29 12:01  mie
-
-	* tools/src/Makefile.am, tools/src/hfst-grep.cc: here here
-
-2011-06-29 11:27  mie
-
-	* tools/src/Makefile.am: possibly hippu-compatible alias
-	  installation
-
-2011-06-29 09:36  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc: Now
-	  HfstTransducer::substitute(StringPair, HfstTransducer) does not
-	  modify the argument transducer. A test for this case also added.
-
-2011-06-28 21:22  mie
-
-	* Makefile.am, hfst.m4: Provide preliminary autoconf scripts for
-	  HFST
-
-2011-06-28 15:02  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: Replaced HfstFastTransducer with
-	  HfstBasicTransducer in conversions. This might make HFST slower,
-	  but it is needed until the bugs in alphabet handling are fixed.
-
-2011-06-28 13:53  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_rules.cc,
-	  test/libhfst/test_transducer_functions.cc: When performing
-	  transducer conversion through HfstFastTransducer, symbols leaked
-	  from one alphabet to another. Now HfstBasicTransducer is used
-	  instead and a test case is added that will fail if
-	  HfstFastTransducer is used instead. The original bug is to be
-	  fixed at some point.
-
-2011-06-27 14:49  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_rules.cc: Added a test case for replace_up with
-	  FOMA_TYPE that fails. Currently it is commented so that make
-	  check will pass, but it will be fixed soon.
-
-2011-06-27 13:23  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  test/libhfst/test_transducer_functions.cc: Now binary operations
-	  HfstTransducer::disjunct etc. do not modify the argument
-	  transducer.
-
-2011-06-27 09:08  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_transducer_functions.cc:
-	  HfstTransducer::insert_to_alphabet and
-	  HfstTransducer::remove_from_alphabet now pass the tests.
-
-2011-06-23 13:33  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/libhfst/test_transducer_functions.cc: Added function
-	  HfstTransducer::remove_from_alphabet. Currently throws
-	  FunctionNotImplementedException because it does not pass all
-	  tests.
-
-2011-06-22 22:27  mie
-
-	* test/tools/proc-functionality.sh: verbose test failures
-
-2011-06-22 14:32  eaxelson
-
-	* libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc:
-	  Documentation updated.
-
-2011-06-22 13:06  mpsilfve
-
-	* tools/src/hfst-twolc/src/string_src/string_manipulation.cc:
-	  Removed check for null-termination of string in the test of
-	  string_mainpultion.cc, because it fails on Mac.
-
-2011-06-21 20:08  moshagen
-
-	* .: Hide all generated distributions.
-
-2011-06-21 10:32  eaxelson
-
-	* test/libhfst/Makefile.am, test/libhfst/test_constructors.cc,
-	  test/libhfst/test_examples.cc,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  test/libhfst/test_streams.cc, test/libhfst/test_transducer.att,
-	  test/libhfst/test_transducers.att, test/libhfst/transducer.att:
-	  Now distcheck passes the tests but still complains about att
-	  files..
-
-2011-06-21 08:59  moshagen
-
-	* test/libhfst/foobar.att, test/libhfst/test_transducer.att,
-	  test/libhfst/test_transducers.att, test/libhfst/transducer.att:
-	  Reverted r1418 - these files are supposed to be here, and 'make
-	  clean' is over-cleaning.
-
-2011-06-21 07:15  moshagen
-
-	* test/tools: Don't ignore all generated files - they should be
-	  cleaned after a successful test run, ie if they are still there
-	  after the run, that is a sign there is a problem somewhere.
-
-2011-06-21 07:14  moshagen
-
-	* test/libhfst: Don't ignore all generated files - they should be
-	  cleaned after a successful test run, ie if they are still there
-	  after the run, that is a sign there is a problem somewhere.
-
-2011-06-21 07:11  moshagen
-
-	* test/libhfst/foobar.att, test/libhfst/test_transducer.att,
-	  test/libhfst/test_transducers.att, test/libhfst/transducer.att:
-	  Deleted supposedly generated files - they were removed by the
-	  make clean target in test/.
-
-2011-06-20 09:39  mie
-
-	* test/libhfst/test_constructors.cc: assert fopen != NULL
-
-2011-06-16 20:30  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRule.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRule.h:
-	  Modified compose-intersect, so that it will treat only flg
-	  diacritics not found in the alphabet of the rules as epsilons.
-
-2011-06-15 11:40  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  test/libhfst/test_rules.cc: A small bug fixed in the newest
-	  version of foma in the foma svn. Now the FomaTransducer test
-	  works correctly.
-
-2011-06-14 14:39  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/libhfst/test_constructors.cc: Code reorganized. There seems
-	  to be some errors in openfst's minimization, temporarily fixed
-	  the situation by pushing weights before minimization.
-
-2011-06-13 18:35  mie
-
-	* libhfst/src/parsers/LexcCompiler.cc, test/tools/Makefile.am,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/walk_or_dog.txt: Retain root joiners while applying
-	  morphotax
-
-2011-06-13 15:51  mie
-
-	* tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/src/scanner2.ll,
-	  tools/src/hfst-twolc/src/scanner3.ll: kill some warnings by
-	  settings
-
-2011-06-13 12:12  hardwick
-
-	* NEWS: New NEWS
-
-2011-06-13 12:10  hardwick
-
-	* configure.ac, libhfst/src/Makefile.am: New releasenum (3.1.1) and
-	  libvector (6:0:0)
-
-2011-06-13 11:50  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Changed the test script so that
-	  it removes temp.twolc.hfst0, when it's done
-
-2011-06-13 11:14  hardwick
-
-	* test/libhfst/test_constructors.cc: Fixed typo where $SRCDIR
-	  wasn't getting assigned to the file we want to test
-
-2011-06-13 11:04  mpsilfve
-
-	* tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/test/test53,
-	  tools/src/hfst-twolc/test/test54,
-	  tools/src/hfst-twolc/test/test55,
-	  tools/src/hfst-twolc/test/test56: Changed [[ ... ]] in regular
-	  expression center rules to <[ ... ]> to avoid introducing syntax
-	  errors in previously working twolc-grammars.
-
-2011-06-10 20:24  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am: Added new tests in
-	  Makefile.am.
-
-2011-06-10 19:56  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.h,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.h,
-	  tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/src/scanner2.ll,
-	  tools/src/hfst-twolc/src/scanner3.ll: Added support for rules
-	  which have centers that are regular expressions of pairs.
-
-2011-06-10 19:52  mpsilfve
-
-	* tools/src/hfst-twolc/test/test53,
-	  tools/src/hfst-twolc/test/test53.txt_fst,
-	  tools/src/hfst-twolc/test/test54,
-	  tools/src/hfst-twolc/test/test54.txt_fst,
-	  tools/src/hfst-twolc/test/test55,
-	  tools/src/hfst-twolc/test/test55.txt_fst,
-	  tools/src/hfst-twolc/test/test56,
-	  tools/src/hfst-twolc/test/test56.txt_fst: Added tests for rules
-	  with regular expression centers.
-
-2011-06-10 19:51  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Improved test script so it won't
-	  exit normally if hfst-twolc crashes.
-
-2011-06-09 09:17  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: The public and
-	  protected interface of HfstTransitionGraph revised. Unnecessary
-	  comments and debugging code removed from HfstTransducer.
-
-2011-06-08 14:41  eaxelson
-
-	* libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTransition.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/Makefile.am: class HfstTransition
-	  moved to file 'HfstTransition.h'
-
-2011-06-08 13:59  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Substitute
-	  functions in HfstTransitionGraph should now be easier to read.
-
-2011-06-08 12:17  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Code of
-	  HfstTransitionGraph made clearer, a bug in including
-	  HfstTransitionData.h fixed.
-
-2011-06-08 11:39  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Code
-	  simplified.
-
-2011-06-08 10:31  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.h,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  test/libhfst/test_examples.cc, test/libhfst/test_lexc.cc,
-	  test/libhfst/test_streams.cc,
-	  test/libhfst/test_transducer_functions.cc: Transducer conversion
-	  done through HfstTransitionGraph.
-
-2011-06-08 08:13  mpsilfve
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Included
-	  <algorithm>...
-
-2011-06-08 07:18  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h:
-	  Changed member const HfstBasicTransducer &t to
-	  HfstBasicTransducer t in ComposeIntersectFst
-
-2011-06-08 06:59  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc:
-	  Fixed bug in ComposeIntersectFst which forced all states in a
-	  transducer to have the same final weight as the initial state.
-
-2011-06-07 14:15  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc:
-	  Sorting the arcs of the argument transducer in the constructor of
-	  ComposeIntersectFst, because they need not be sorted nowadays.
-
-2011-06-07 14:13  mpsilfve
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Added arc_sort
-	  member function to HfstTransitionGraph.
-
-2011-06-07 12:16  hardwick
-
-	* swig/hfst_swig_extensions.h, swig/libhfst.i: Some additional
-	  experimental container-hacking layer stuff
-
-2011-06-06 08:47  sdrobac
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.h: left
-	  arrow rules
-
-2011-06-05 17:48  spectre360
-
-	* tools/src/hfst-proc/alphabet.cc: some more hacks to alphabet.cc
-
-2011-06-03 11:46  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.h,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy: Added support for rule
-	  centers which have the form 'X:a' where 'X' is a set and 'a' is a
-	  symbol.
-
-2011-06-03 11:45  mpsilfve
-
-	* tools/src/hfst-twolc/test/test51,
-	  tools/src/hfst-twolc/test/test51.txt_fst,
-	  tools/src/hfst-twolc/test/test52,
-	  tools/src/hfst-twolc/test/test52.txt_fst: Added tests for rules
-	  with centers 'X:a' where 'X' is a set and 'a' is a symbol.
-
-2011-06-03 11:11  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h: Undid
-	  some changes that stopped working after the interface of
-	  HfstBasicTransducer apparently changed. Also changed
-	  HfstTransducer OtherSymbolTransducer::get_transducer(void) to
-	  const and added the function void
-	  OtherSymbolTransducer::get_initial_transition_pairs(SymbolPairVector
-	  &pair_container) const.
-
-2011-06-03 11:09  mpsilfve
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.h: Made max() and
-	  is_subset() static functions.
-
-2011-06-03 08:38  mpsilfve
-
-	* tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/io_src/InputReader.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingRightArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftRestrictionArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.cc:
-	  hfst-twolc unit tests added.
-
-2011-06-02 08:46  hardwick
-
-	* NEWS: New NEWS
-
-2011-06-02 08:44  hardwick
-
-	* configure.ac, libhfst/src/Makefile.am: New release number, 3.1.0
-	  release and 5:0:0 libvector
-
-2011-05-31 13:48  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Removed an
-	  extra debugging print
-
-2011-05-31 13:46  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_lexc.cc:
-	  HfstTransducer::insert_freely(HfstTransducer&) now uses
-	  HfstFastTransducer
-
-2011-05-30 19:21  mie
-
-	* configure.ac, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-commandline.h, tools/src/hfst-lookup.cc: check
-	  locale in some tools
-
-2011-05-30 14:03  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstFastTransitionData.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  test/libhfst/test_transducer_functions.cc:
-	  HfstTransducer::insert_freely now uses HfstFastTransducer for
-	  foma type. More tests also added for insert_freely.
-
-2011-05-30 11:32  eaxelson
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Conversion
-	  functions between HfstFastTransducer and backend implementations
-	  added. Now HfstTransducer::convert also converts through
-	  HfstFastTransducer. HfstFastTransducer will gradually replace
-	  HfstBasicTransducer for HfstTransducer functions that require
-	  conversion.
-
-2011-05-26 13:51  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  test/libhfst/test_constructors.cc,
-	  test/libhfst/test_flag_diacritics.cc,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-pair-test.cc,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc,
-	  tools/src/hfst-summarize.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc:
-	  HfstTransitionGraph now has a vector of states instead of a set.
-	  All programs and functions updated accordingly.
-
-2011-05-26 12:22  mie
-
-	* tools/src/hfst-lookup.cc: Reword slow lookup warning
-
-2011-05-25 15:05  hardwick
-
-	* swig/hfst_swig_extensions.h, swig/libhfst.i: An apparently
-	  functional way to expose sets by copying them in order to vectors
-
-2011-05-25 13:49  mpsilfve
-
-	* libhfst/src/HfstRules.cc: Fixed typo
-
-2011-05-25 09:27  mpsilfve
-
-	* libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/XreCompiler.h: Fixed includes in
-	  XreCompiler.h and LexcCompiler.h
-
-2011-05-24 19:51  moshagen
-
-	* tools/src: Ignore generated items.
-
-2011-05-24 15:00  eaxelson
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h: added some
-	  functions to ConversionFunctions that will be used in fast
-	  conversion between transducer types instead of
-	  HfstConstantTransducer
-
-2011-05-24 14:37  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Fixed test script so that it
-	  should work in distcheck
-
-2011-05-24 07:59  hardwick
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h: Made
-	  lookdown functions consistent with lookup ones, updated docs
-
-2011-05-24 07:17  hardwick
-
-	* libhfst/src/HfstTransducer.h: Updated doxygen to reflect changes
-	  in lookup functions
-
-2011-05-23 17:49  mie
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-duplicate.cc:
-	  simple archive tool for duplicating repeats
-
-2011-05-23 13:59  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/Makefile.am, test/libhfst/test_lexc.cc,
-	  test/libhfst/test_lexc_fail.lexc,
-	  test/libhfst/test_transducer_functions.cc: Added a faster version
-	  of lexc compiler for a transducer of foma type.
-
-2011-05-23 12:00  mie
-
-	* test/tools/lookup-stress.sh, test/tools/proc-stress.sh: decrease
-	  stress by order of 8
-
-2011-05-23 09:46  hardwick
-
-	* libhfst/src/HfstFlagDiacritics.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc: Keep
-	  information about the parent FdTable of an FdState in the class
-	  to avoid invalid reads if it gets deleted
-
-2011-05-23 08:40  hardwick
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/hfst-lookup.cc: Changed lookup functions to return
-	  pointer to HfstOneLevelPaths, and take no
-	  argument for it. Calling functions are (still) responsible for
-	  freeing memory.
-
-2011-05-23 02:31  mie
-
-	* README: Add more common problems
-
-2011-05-20 14:03  moshagen
-
-	* libhfst/src/parsers: Ignore generated files.
-
-2011-05-19 14:19  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Added
-	  HfstTransducer::get_symbol_number, it will be used in faster
-	  conversion between transducer formats.
-
-2011-05-19 13:34  eaxelson
-
-	* test/libhfst/test_hfst_basic_transducer.cc: A small bug in
-	  testing the EmptyStringException fixed.
-
-2011-05-19 12:36  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  test/libhfst/test_lexc.cc: EmptyStringException is now thrown if
-	  the empty string is used as a transition symbol.
-
-2011-05-19 11:23  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Universal pair function added
-
-2011-05-19 11:16  mie
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/parsers/LexcCompiler.cc: Need more inclusions and
-	  usings when they don't leak in from backend
-	  libraries
-
-2011-05-18 10:37  eaxelson
-
-	* test/libhfst/test_constructors.cc, test/libhfst/test_lexc.cc,
-	  test/libhfst/test_streams.cc: Pathnames of testfiles in
-	  test/libhfst are now given as getenv("pwd") + "/tesfilename"
-
-2011-05-18 09:25  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/parsers/LexcCompiler.cc, test/libhfst/Makefile.am,
-	  test/libhfst/test_lexc.cc: Tests in test/libhfst now create the
-	  test files in EXTRA_DIST, so that distcheck works. This is a
-	  temporary solution.
-
-2011-05-17 19:13  mie
-
-	* tools/src/hfst-lookup.cc: Remove obvious memory leaks
-
-2011-05-17 12:24  eaxelson
-
-	* test/libhfst/test_lexc.cc, test/libhfst/test_lexc.lexc: Added
-	  missing test files.
-
-2011-05-17 12:16  hardwick
-
-	* configure.ac, libhfst/src/Makefile.am: Prepare 3.0.3
-
-2011-05-17 12:12  hardwick
-
-	* NEWS: New NEWS
-
-2011-05-17 10:17  eaxelson
-
-	* configure.ac, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am, libhfst/src/parsers,
-	  libhfst/src/parsers/LexcCompiler.cc,
-	  libhfst/src/parsers/LexcCompiler.h,
-	  libhfst/src/parsers/Makefile.am,
-	  libhfst/src/parsers/XreCompiler.cc,
-	  libhfst/src/parsers/XreCompiler.h,
-	  libhfst/src/parsers/lexc-lexer.ll,
-	  libhfst/src/parsers/lexc-parser.yy,
-	  libhfst/src/parsers/lexc-utils.cc,
-	  libhfst/src/parsers/lexc-utils.h, libhfst/src/parsers/xre_lex.ll,
-	  libhfst/src/parsers/xre_parse.yy,
-	  libhfst/src/parsers/xre_utils.cc,
-	  libhfst/src/parsers/xre_utils.h, test/libhfst/Makefile.am,
-	  tools/src/Makefile.am, tools/src/parsers/LexcCompiler.cc,
-	  tools/src/parsers/LexcCompiler.h,
-	  tools/src/parsers/XreCompiler.cc,
-	  tools/src/parsers/XreCompiler.h, tools/src/parsers/lexc-lexer.ll,
-	  tools/src/parsers/lexc-parser.yy,
-	  tools/src/parsers/lexc-utils.cc, tools/src/parsers/lexc-utils.h,
-	  tools/src/parsers/xre_lex.ll, tools/src/parsers/xre_parse.yy,
-	  tools/src/parsers/xre_utils.cc, tools/src/parsers/xre_utils.h:
-	  LexC and regexp functionalities moved from tools/src/parsers
-	  under the HFST interface at libhfst/src/parsers.
-
-2011-05-17 09:02  hardwick
-
-	* swig/setup.py: Link with libhfst/src/libhfst.la (is this
-	  portable?)
-
-2011-05-17 08:53  mie
-
-	* configure.ac: allow debianised names for libraries and headers
-
-2011-05-17 08:30  hardwick
-
-	* swig/HfstTransducer.i, swig/libhfst.i, swig/setup.py: Global
-	  wrapper - could it be this easy?
-
-2011-05-17 08:10  hardwick
-
-	* swig/setup.py: Fetch headers from srcdir instead and assume
-	  libhfst is installed in the
-	  sense of ldconf
-
-2011-05-17 08:08  hardwick
-
-	* swig/setup.py: Fetch headers and libraries from a (presently)
-	  hardcoded /usr/local
-
-2011-05-17 07:32  hardwick
-
-	* swig/HfstTransducer.i: Testing a simple swig module
-
-2011-05-17 07:31  hardwick
-
-	* swig/setup.py: SWIG generates files with .cxx extensions
-
-2011-05-17 07:22  hardwick
-
-	* swig/setup.py: Removed debugging message
-
-2011-05-17 07:21  hardwick
-
-	* swig, swig/setup.py: Initial framework
-
-2011-05-17 00:35  mie
-
-	* test/tools/proc-stress.sh: stress test for proc
-
-2011-05-16 23:08  mie
-
-	* configure.ac, test/tools/Makefile.am,
-	  test/tools/lexc2fst-stress.sh, test/tools/lookup-stress.sh:
-	  Optional stress tests now
-
-2011-05-16 22:34  mie
-
-	* test/tools/lexc-compiler-functionality.sh: Move stress tests out
-
-2011-05-16 11:09  sdrobac
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Priority union function and unit tests
-
-2011-05-13 14:29  eaxelson
-
-	* libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstFastTransitionData.h,
-	  libhfst/src/implementations/HfstTransitionGraph.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.cc,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  libhfst/src/implementations/Makefile.am: Starting to implement a
-	  faster conversion, added file HfstFastTransitionData.h for that
-	  purpose. Also separated HfstTropicalTransducerTransitionData into
-	  its own file.
-
-2011-05-13 11:53  eaxelson
-
-	* libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/HfstTropicalTransducerTransitionData.h,
-	  libhfst/src/implementations/Makefile.am:
-	  HfstTropicalTransducerTransitionData moved to a separate file
-	  from HfstTransitionGraph.h.
-
-2011-05-13 10:54  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: The pathname
-	  of HfstDataTypes.h fixed in HfstTransitionGraph.h
-
-2011-05-12 10:15  eaxelson
-
-	* libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am: A
-	  non-existing file removed from Makefile and an include command.
-
-2011-05-11 14:56  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.h,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/HfstCompiler.cc, tools/src/HfstCompiler.h,
-	  tools/src/HfstStrings2FstTokenizer.cc,
-	  tools/src/HfstStrings2FstTokenizer.h,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-scanner.ll: Including
-	  HfstTransducer.h and HfstTransitionGraph.h into header files
-	  avoided in most cases by using HfstDataTypes.h instead.
-
-2011-05-11 12:58  eaxelson
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc,
-	  tools/src/parsers/LexcCompiler.h,
-	  tools/src/parsers/XreCompiler.cc,
-	  tools/src/parsers/XreCompiler.h: Made some changes to header
-	  files in order to avoid cyclic dependencies.
-
-2011-05-09 12:48  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: A bug in
-	  TropicalWeightTransducer::determinize fixed. The weights must not
-	  be encoded, only the label pairs.
-
-2011-05-09 06:51  hardwick
-
-	* configure.ac: Typo in license conflict warning
-
-2011-05-06 13:53  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  test/tools/Makefile.am, test/tools/subtract-functionality.sh: Now
-	  the subtraction of two empty transducers works also for
-	  SfstTransducer. A test case also added for all transducer
-	  implementations.
-
-2011-05-06 09:17  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Now
-	  read_in_att_format and hfst-txt2fst also accept a single newline
-	  as an empty transducer, if that is the only transducer in a
-	  stream.
-
-2011-05-05 14:30  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstSymbolDefs.cc,
-	  libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstConstantTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/HfstAlphabet.cc, tools/src/HfstCompiler.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-pair-test.cc, tools/src/hfst-summarize.cc: The
-	  library now uses is_epsilon, internal_epsilon etc. instead of
-	  string literals.
-
-2011-05-05 10:42  mpsilfve
-
-	* libhfst/Makefile.am: Added pkgconfig definitions
-
-2011-05-05 10:41  mpsilfve
-
-	* configure.ac: Fixed variable LIBHFST_VERSION
-
-2011-05-05 10:22  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc:
-	  HfstTransducer::get_alphabet declared public. Now the foma
-	  implementation returns also special symbols that are not included
-	  in the sigma of foma, but foma is still aware of them. Some unit
-	  tests also added.
-
-2011-05-04 13:54  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc: Added some unit
-	  test for SfstTransducer that test if the alphabet is pruned in
-	  operations.
-
-2011-05-04 13:20  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h:
-	  Fixed possible bug in ComposeIntersectUtilities and the find
-	  member function of SpaeSavingSet.
-
-2011-05-04 09:01  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc: Put stl sort
-	  function in stl namespace (which for unknown reasons is
-	  apparently unnecessary but it's probably clearer this way).
-
-2011-05-03 13:45  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/Makefile.am, test/tools/a2b.txt,
-	  test/tools/a2b_complement.txt,
-	  test/tools/a2b_input_projection_complement.txt,
-	  test/tools/project-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/unk_or_id_star.txt: Added more test cases for
-	  hfst-subtract that test if the identities and symbols are handled
-	  right. Now subtraction seems to work for SfstTransducer, too.
-
-2011-05-03 08:29  mie
-
-	* tools/src/hfst-proc/hfst-proc.cc: Print --version and --help to
-	  stdout in standard style
-
-2011-05-03 08:28  mie
-
-	* tools/src/hfst-twolc/src/Makefile.am: clean generated scripts
-
-2011-05-03 08:19  mie
-
-	* test/libhfst/Makefile.am: Remove all binaries and texts after
-	  tests
-
-2011-05-03 08:17  mie
-
-	* test/tools/latin-1-strings.sh: remove generated files on expected
-	  failures
-
-2011-05-03 08:01  mie
-
-	* test/tools/project-functionality.sh: remove generated files after
-	  testing
-
-2011-05-03 07:56  mie
-
-	* tools/src/Makefile.am: Skip broken aliases
-
-2011-05-03 02:33  mie
-
-	* scripts/Makefile.am, tools/src/hfst-twolc/src/Makefile.am: exempt
-	  scripts and tools with broken option parsing from distcheck
-
-2011-05-03 00:04  mie
-
-	* test/tools/Makefile.am, test/tools/empty-input.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/fst2txt-functionality.sh,
-	  test/tools/latin-1-strings.sh,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/lexc-functionality.sh,
-	  test/tools/lookup-functionality.sh,
-	  test/tools/proc-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh,
-	  test/tools/strings2fst-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/txt2fst-functionality.sh, test/tools/utf-8-strings.sh:
-	  Use $srcdir in tests and include all sources
-
-2011-05-02 21:11  mie
-
-	* test/tools/unk2unk.txt: Missing text file reconstructed by
-	  guessing
-
-2011-05-02 17:20  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/Makefile.am, test/tools/cat2dog_0.3.txt,
-	  test/tools/cat2dog_0.5.txt, test/tools/empty.txt,
-	  test/tools/project-functionality.sh,
-	  test/tools/subtract-functionality.sh: Now input and output
-	  projections keep all symbols in the alphabet and have unknowns
-	  replaced with identities. Subtraction of tropical transducers
-	  handles weights correctly, all paths in the second transducer are
-	  subtracted from the first one.
-
-2011-05-02 12:54  hardwick
-
-	* test/tools/Makefile.am: Comment out failing test prereq for now
-	  (it broke make dist).
-
-2011-05-02 11:55  hardwick
-
-	* libhfst/src/implementations,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/compose_intersect,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRule.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h,
-	  libhfst/src/implementations/optimized-lookup,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc: Unit
-	  tests reinstated for .cc files under implementations,
-	  compose_intersect
-	  forced under same regimen (whether MAIN_TEST is #defined).
-
-2011-05-02 11:27  moshagen
-
-	* libhfst/src: Ignore generated unit testing files.
-
-2011-05-02 09:29  hardwick
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HfstApply.cc, libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstSymbolDefs.cc,
-	  libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/Makefile.am: Dummy unit tests for every .cc file in
-	  libhfst/src except HfstExceptionDefs.cc
-
-2011-04-28 08:22  eaxelson
-
-	* test/tools/lookup-functionality.sh, tools/src/hfst-lookup.cc:
-	  Tests added for hfst-lookup with transducers that contain
-	  identitites.
-
-2011-04-27 21:33  mie
-
-	* README: Document openfst version requirements in troubleshooting
-	  also
-
-2011-04-27 14:38  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  test/libhfst/test_flag_diacritics.cc,
-	  test/libhfst/test_transducer_functions.cc,
-	  test/tools/Makefile.am, test/tools/abid.txt,
-	  test/tools/lookup-functionality.sh, tools/src/hfst-lookup.cc: An
-	  error in harmonization fixed: now flags are excluded when
-	  expanding unknowns. A test also added that checks this case.
-
-2011-04-26 11:37  moshagen
-
-	* test/libhfst, test/tools: Ignore generated files in the test dir.
-
-2011-04-26 10:01  mie
-
-	* test/tools/basic.UTF-8.lexc, test/tools/basic.cat-dog-bird.lexc,
-	  test/tools/basic.colons.lexc, test/tools/basic.comments.lexc,
-	  test/tools/basic.empty-sides.lexc, test/tools/basic.end.lexc,
-	  test/tools/basic.escapes.lexc, test/tools/basic.infostrings.lexc,
-	  test/tools/basic.initial-lexicon-empty.lexc,
-	  test/tools/basic.multi-entry-lines.lexc,
-	  test/tools/basic.multi-file-1.lexc,
-	  test/tools/basic.multi-file-2.lexc,
-	  test/tools/basic.multi-file-3.lexc,
-	  test/tools/basic.multichar-symbol-with-0.lexc,
-	  test/tools/basic.multichar-symbols.lexc,
-	  test/tools/basic.no-Root.lexc,
-	  test/tools/basic.no-newline-at-end.lexc,
-	  test/tools/basic.punctuation.lexc,
-	  test/tools/basic.root-loop.lexc,
-	  test/tools/basic.spurious-lexicon.lexc,
-	  test/tools/basic.string-pairs.lexc,
-	  test/tools/basic.two-lexicons.lexc,
-	  test/tools/basic.zeros-epsilons.lexc,
-	  test/tools/hfst.weights.lexc,
-	  test/tools/stress.random-lexicons-100.lexc,
-	  test/tools/xfail.ISO-8859-1.lexc, test/tools/xfail.bogus.lexc,
-	  test/tools/xfail.lexicon-semicolon.lexc,
-	  test/tools/xre.any-variations.lexc, test/tools/xre.at-file.lexc,
-	  test/tools/xre.automatic-multichar-symbols.lexc,
-	  test/tools/xre.basic.lexc, test/tools/xre.definitions.lexc,
-	  test/tools/xre.months.lexc,
-	  test/tools/xre.nested-definitions.lexc,
-	  test/tools/xre.numeric-star.lexc, test/tools/xre.sharp.lexc,
-	  test/tools/xre.star-plus-optional.lexc: Missing lexc test cases
-
-2011-04-26 09:48  hardwick
-
-	* libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Reinstate
-	  final weights (they've apparently been absent since the
-	  missing state -relabeling code was added...)
-
-2011-04-26 07:01  hardwick
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Added
-	  overloaded lookup functions passing untokenized strings
-
-2011-04-26 00:43  mie
-
-	* tools/src/hfst-lookup.cc: print verbosely tokenization and
-	  blocked flags unless ol
-
-2011-04-25 22:53  mie
-
-	* scripts/hfst-lexc: use GNU getopt if available
-
-2011-04-25 20:07  mie
-
-	* tools/src/Makefile.am: declare more built sources
-
-2011-04-25 19:58  mie
-
-	* test/tools/Makefile.am, test/tools/cat.lexc,
-	  test/tools/heavycat.strings, test/tools/heavycat.txt,
-	  test/tools/lexc-compiler-functionality.sh,
-	  test/tools/proc-functionality.sh,
-	  test/tools/strings2fst-functionality.sh,
-	  test/tools/substitute-functionality.sh: More weight tests
-
-2011-04-25 19:51  mie
-
-	* tools/src/hfst-substitute.cc: More sanity checks for escaped
-	  colons
-
-2011-04-25 11:23  mie
-
-	* man/hfst-strings2fst.1: Give weighted example
-
-2011-04-23 18:35  spectre360
-
-	* tools/src/hfst-proc/alphabet.cc: partial fix for 3269636
-
-2011-04-23 15:08  mie
-
-	* tools/src/parsers/xre_utils.cc: remove debug printout
-
-2011-04-23 14:28  mie
-
-	* tools/src/parsers/LexcCompiler.cc,
-	  tools/src/parsers/lexc-lexer.ll,
-	  tools/src/parsers/lexc-parser.yy,
-	  tools/src/parsers/lexc-utils.cc, tools/src/parsers/lexc-utils.h:
-	  filenames and line numbers in error reporting again
-
-2011-04-23 13:14  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-lexc-compiler.cc,
-	  tools/src/parsers/LexcCompiler.cc,
-	  tools/src/parsers/LexcCompiler.h: Build obsolete lexc compiler by
-	  default:
-	  * remove handbuilt lexicon combinatorics and revert to sfcm2009
-	  algo
-	  * use pretty name for lexicons
-	  * more verbose printing instead of xerox style again
-
-2011-04-22 10:47  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/Rule.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.h,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.cc,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.h: Now
-	  hfst-twolc rule names are unquoted.
-
-2011-04-20 23:33  mie
-
-	* test/tools/Makefile.am, test/tools/cats_and_dogs_semicolon.xre,
-	  test/tools/compose-functionality.sh, test/tools/identity.txt,
-	  test/tools/unknown2a.txt: Add missing files with likely sources
-
-2011-04-20 14:30  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/tools/summarize_test1.txt: Now composition should work
-	  correctly
-
-2011-04-15 12:38  mpsilfve
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc: Changed
-	  population of symbols sets in
-	  HarmonizeUnknownAndIdentitySymbols.cc so that it relies on the
-	  get_alphabet method in HfstTransitionGraph. get_alphabet
-	  sometimes returns an empty set, so that needs to be fixed in
-	  order for unknown and identity symbols harmonization to be
-	  reliable.
-
-2011-04-15 12:34  mpsilfve
-
-	* libhfst/src/Makefile.am: Added
-	  HarmonizeUnknownAndIdentitySymbols.{cc,h} to Makefile.am
-
-2011-04-14 14:41  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/Makefile.am, test/tools/compose-functionality.sh,
-	  test/tools/summarize_test1.txt: Unknown and identity symbols
-	  should now work correctly in composition. Still some errors in
-	  other tools in test/tools, trying to get them pass all.
-
-2011-04-14 13:07  mpsilfve
-
-	* libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc,
-	  libhfst/src/HarmonizeUnknownAndIdentitySymbols.h:
-	  HarmonizeUnknownAndIdentitySymbols.{h,cc}: A model for how
-	  identity and unknown symbol harmonization can be done...
-
-2011-04-13 15:29  hardwick
-
-	* NEWS: New NEWS for 3.0.2 rerelease
-
-2011-04-13 15:21  hardwick
-
-	* libhfst/src/implementations/Makefile.am: Added missing
-	  ComposeIntersectUtilities.cc
-
-2011-04-13 15:12  hardwick
-
-	* libhfst/src/implementations/Makefile.am: Added missing
-	  ComposeIntersectUtilities.h to Makefile.am
-
-2011-04-12 09:59  hardwick
-
-	* NEWS, configure.ac, libhfst/src/Makefile.am: Prepare 3.0.2
-	  release
-
-2011-04-12 09:41  mie
-
-	* tools/src/hfst-compose.cc: s/warning: Warning/warning: /
-
-2011-04-11 08:13  mpsilfve
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc: Moved the
-	  #ifdef HAVE_SFST a bit higher..
-
-2011-04-10 12:51  mie
-
-	* configure.ac, test/tools/regexp2fst-functionality.sh,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-regexp2fst.cc: Fix ; separated regexps:
-	  * add compatibility function for mac OS X missing getdelim
-	  * use delim for all cases in regexp2fst
-
-2011-04-07 14:43  eaxelson
-
-	* libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h: Converting
-	  to and from SFST format is now faster because function
-	  'check_visited' is used instead of a set of visited states.
-
-2011-04-07 13:52  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.h: Conversions
-	  between tropical, sfst and foma transducers are now carried out
-	  through HfstConstantTransducer, which is faster than using
-	  HfstBasicTransducer.
-
-2011-04-07 13:38  mie
-
-	* tools/src/hfst-substitute.cc: Make fallback dependent on fnie
-
-2011-04-07 12:10  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h:
-	  Removed some unused code..
-
-2011-04-07 12:09  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h:
-	  Reduced hfst-compose-intersect memory consumption a bit.
-
-2011-04-06 17:23  moshagen
-
-	* tools/src: Ignore generated items.
-
-2011-04-06 14:46  mpsilfve
-
-	* configure.ac, tools/src/Makefile.am, tools/src/hfst-pair-test.cc:
-	  Added hfst-pair-test for testing hfst-twolc rule files.
-
-2011-04-06 11:46  eaxelson
-
-	* libhfst/src/implementations/ConvertFomaTransducer.cc,
-	  libhfst/src/implementations/ConvertLogWeightTransducer.cc,
-	  libhfst/src/implementations/ConvertOlTransducer.cc,
-	  libhfst/src/implementations/ConvertSfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/ConvertTropicalWeightTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.cc,
-	  libhfst/src/implementations/HfstConstantTransducer.h,
-	  libhfst/src/implementations/HfstConversionTransducer.cc,
-	  libhfst/src/implementations/HfstConversionTransducer.h,
-	  libhfst/src/implementations/Makefile.am: HfstConversionTransducer
-	  renamed to HfstConstantTransducer, most functions in
-	  ConvertTransducerFormat.cc splitted to separate files
-
-2011-04-05 14:24  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstConversionTransducer.cc,
-	  libhfst/src/implementations/HfstConversionTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  tools/src/hfst-lookup.cc: Some optimizations done on conversion
-	  functions. Class HfstConversionTransducer added, it will be soon
-	  used in a more efficient conversion.
-
-2011-04-05 07:53  mie
-
-	* configure.ac: Note that we have licence exception for foma and
-	  warn if foma is missing
-
-2011-04-04 16:10  mie
-
-	* libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc:
-	  Epsilon filter compose intersect
-
-2011-04-04 15:39  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Only
-	  ascii-tokenize a-zA-Z to avoid breaking eg. generating
-	  transducers
-
-2011-04-04 12:41  hardwick
-
-	* NEWS: 3.0.1 release news
-
-2011-04-04 12:37  hardwick
-
-	* configure.ac, libhfst/src/Makefile.am: Prepare bugfix release
-	  3.0.1
-
-2011-04-04 11:57  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Use
-	  library function to check for epsilon in to_ol
-
-2011-04-04 11:57  hardwick
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h: Pass
-	  strings to internal representation checking functions by
-	  reference
-
-2011-04-04 10:50  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: More
-	  control over floor lift behaviour
-
-2011-04-04 10:49  moshagen
-
-	* tools/src: Ignore generated items.
-
-2011-04-04 09:18  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Clean up
-	  conflict resolution mess
-
-2011-04-04 09:02  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Better
-	  floor jumping + relabel non-contiguous states (could slowdown in
-	  extreme cases, possibly revisit)
-
-2011-04-04 05:53  mie
-
-	* tools/src/Makefile.am: Alias hfst-optimized-lookup -> hfst-lookup
-	  for compatibility
-
-2011-04-03 19:50  moshagen
-
-	* tools/src: Ignore generated items.
-
-2011-04-03 16:18  mie
-
-	* tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-determinize.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-invert.cc,
-	  tools/src/hfst-minimize.cc,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-remove-epsilons.cc, tools/src/hfst-repeat.cc,
-	  tools/src/hfst-reverse.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-subtract.cc: use default names to trace hfst
-	  operations neatly
-
-2011-04-03 14:51  mie
-
-	* scripts/hfst-lexc, tools/src/hfst-name.cc: Allow name truncation
-	  for neater names
-
-2011-04-03 11:15  mie
-
-	* man/hfst-fst2strings.1, man/hfst-fst2txt.1,
-	  man/hfst-regexp2fst.1, man/hfst-strings2fst.1,
-	  man/hfst-substitute.1, man/hfst-txt2fst.1: describe input/output
-	  formats in man pages
-
-2011-04-03 09:16  mie
-
-	* man/hfst-tool.1.template: Extend example to contain all sections
-	  and stuff
-	  --Denn och nedanstående rader kommer inte med i loggmeddelandet--
-	  
-	  M hfst-tool.1.template
-
-2011-04-03 05:21  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-preprocess-for-optimized-lookup-format.cc: New
-	  tool for preprocessing automata before optimizing
-
-2011-03-31 11:55  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-summarize.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc: A
-	  state in an HfstTransitionGraph now has a vector of transitions
-	  intead of a set of transitions.
-
-2011-03-31 11:42  hardwick
-
-	* tools/src/hfst-fst2fst.cc: ...I meant HfstException
-
-2011-03-31 11:39  hardwick
-
-	* tools/src/hfst-fst2fst.cc: Catch HfstFatalException in convertion
-
-2011-03-31 11:38  hardwick
-
-	* libhfst/src/HfstExceptionDefs.h: HFST_CATCH macro
-
-2011-03-31 11:10  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/HfstLookupFlagDiacritics.cc,
-	  tools/src/HfstLookupFlagDiacritics.h, tools/src/Makefile.am,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-lookup.cc:
-	  hfst-lookup now handles flag diacritics correctly
-
-2011-03-31 08:59  hardwick
-
-	* libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h:
-	  Added functions to check for equality to internal reserved
-	  strings
-
-2011-03-31 06:48  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc: a bug in printing
-	  epsilons in hfst-fst2strings for sfst transducers fixed
-
-2011-03-30 15:24  mie
-
-	* README, libhfst/src/HfstTransducer.h: Add custom error message
-	  and README blurb for ::malloc errors
-
-2011-03-30 14:54  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: When the
-	  floor sticks for (even) a single round, jump up to most recent
-	  successful allocation. This makes things a lot faster, at the
-	  cost of some
-	  waste of space. --quick should not be necessary for most purposes
-	  now.
-	  
-	  Soon: some research on what's a better jumping threshold (this
-	  version is
-	  rather sensitive).
-
-2011-03-30 13:24  eaxelson
-
-	* libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-lookup.cc:
-	  hfst-fst2strings now implements option --random for sfst and
-	  openfst transducers
-
-2011-03-30 12:38  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Misc.
-	  speed improvements, in particular removed the need to separately
-	  track
-	  which indices begin states
-
-2011-03-30 10:27  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Actually write the index table finality markers
-
-2011-03-29 15:23  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: see
-	  previous commit message
-
-2011-03-29 15:20  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Fixed
-	  oopsie wrt removed profiling variables
-
-2011-03-29 14:47  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Run twolc tests in numerical
-	  order.
-
-2011-03-29 14:45  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/scanner1.ll: Fixed problem with word
-	  boundries breaking the alphabet.
-
-2011-03-29 14:44  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test49,
-	  tools/src/hfst-twolc/test/test49.txt_fst: Added tests for
-	  ensuring that word boundary conversions wonät break the alphabet.
-
-2011-03-29 14:20  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/scanner1.ll: Changed word boundaries so
-	  that they perhaps emulate what xerox does. A "#" in a rule file
-	  is always compiled to both an absolute word boundary (which is an
-	  internal symbol in hfst-twolc) and a relative word boundary "#".
-	  The absolute word boundary will always correspond to zero in
-	  output strings and the relative one will correspond to whatever
-	  it corresponded to in the rule file.
-
-2011-03-29 14:18  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test48,
-	  tools/src/hfst-twolc/test/test48.txt_fst: Word bounadry tests
-	  added.
-
-2011-03-29 13:47  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Major
-	  improvements to --quick and some speed cases
-
-2011-03-28 12:03  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  test/tools/Makefile.am, tools/src/hfst-fst2strings.cc: option
-	  --random added to hfst-fst2strings, not yet implemented
-
-2011-03-28 11:50  hardwick
-
-	* test/tools/Makefile.am: Removed trailing whitespace that broke
-	  make
-
-2011-03-24 18:37  mie
-
-	* configure.ac, test/tools/cat.lexc,
-	  test/tools/lexc-functionality.sh, tools/src/hfst-commandline.h,
-	  tools/src/hfst-lookup.cc, tools/src/hfst-substitute.cc: Fix lexc
-	  tests:
-	  * make script in build dir +x
-	  * put script dir in beginning of PATH in tests
-
-2011-03-24 11:32  eaxelson
-
-	* test/libhfst/Makefile.am, test/tools/Makefile.am:
-
-2011-03-23 16:47  moshagen
-
-	* .: Ignore files generated by 'make dist' and 'make distcheck'.
-
-2011-03-23 14:33  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, test/libhfst/Makefile.am,
-	  test/libhfst/foobar.att, test/libhfst/test_constructors.cc,
-	  test/libhfst/test_streams.cc, test/libhfst/test_transducers.att,
-	  test/tools/Makefile.am: Missing files added to Makefiles, make
-	  distcheck still fails.
-
-2011-03-23 12:45  hardwick
-
-	* tools/src/hfst-fst2fst.cc: Turned option passing back on for
-	  convert function
-
-2011-03-22 16:16  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: test-script fixed. Previously it
-	  required installed hfst-compare, hfst-txt2fst and hfst-fst2txt
-
-2011-03-21 07:13  mie
-
-	* tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h: fix
-	  partial commit of portability c xfunctions
-
-2011-03-21 01:27  mie
-
-	* tools/src/hfst-fst2fst.cc: remove unnecessary read
-
-2011-03-21 01:19  mie
-
-	* scripts/hfst-lexc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-txt2fst.cc: use
-	  pretty names by default
-
-2011-03-21 00:28  mie
-
-	* tools/src/Makefile.am: Fix name tool installation
-
-2011-03-21 00:22  mie
-
-	* tools/src/hfst-commandline.cc, tools/src/hfst-compare.cc,
-	  tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-determinize.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2txt.cc,
-	  tools/src/hfst-head.cc, tools/src/hfst-invert.cc,
-	  tools/src/hfst-lookup.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-program-options.cc, tools/src/hfst-project.cc,
-	  tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-remove-epsilons.cc, tools/src/hfst-repeat.cc,
-	  tools/src/hfst-reverse.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-subtract.cc, tools/src/hfst-summarize.cc,
-	  tools/src/hfst-tail.cc, tools/src/hfst-unary-tool.cc: Use
-	  automata names from metadata instead of filenames
-
-2011-03-18 12:51  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy: Fixed a bug with
-	  %-escaped variable values, which weren't properly unescaped
-	  previously.
-
-2011-03-18 12:50  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test47,
-	  tools/src/hfst-twolc/test/test47.txt_fst: Added tests for
-	  %-escaped variable values.
-
-2011-03-18 10:46  eaxelson
-
-	* tools/src/hfst-fst2strings.cc: hfst-fst2strings help message and
-	  special character printing fixed
-
-2011-03-18 09:19  eaxelson
-
-	* api_documentation.dox, test/tools/fst2strings-functionality.sh,
-	  tools/src/hfst-fst2strings.cc: hfst-fst2strings fixed
-
-2011-03-18 07:06  mie
-
-	* tools/src/hfst-fst2strings.cc: filter flags should've defaulted
-	  true
-
-2011-03-17 12:53  hardwick
-
-	* tools/src/hfst-compose-intersect.cc: Typo in usage message
-
-2011-03-17 09:20  mpsilfve
-
-	* tools/src/FunctionalTransducer.cc,
-	  tools/src/FunctionalTransducer.h: Added some files for a
-	  transducer testing environment.
-
-2011-03-16 23:10  mie
-
-	* tools/src/hfst-compose-intersect.cc: fix spacing in examples and
-	  describe
-
-2011-03-16 21:37  mie
-
-	* NEWS: update version
-
-2011-03-16 21:32  mie
-
-	* README: "environment" variables fed to configure get saved
-
-2011-03-16 15:10  hardwick
-
-	* README: Added note about local libraries
-
-2011-03-16 14:20  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc: Fixed a bug in
-	  compiling <=>-rules with list centers.
-
-2011-03-16 14:19  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test46,
-	  tools/src/hfst-twolc/test/test46.txt_fst: Added test for
-	  compiling <=>-rules with list centers.
-
-2011-03-16 13:57  hardwick
-
-	* configure.ac: Changed target to first release version
-
-2011-03-16 13:31  eaxelson
-
-	* tools/src/hfst-lookup.cc: hfst-lookup should now work correctly
-
-2011-03-16 11:30  hardwick
-
-	* tools/src/hfst-compiler.yy: Added deprecated (and undocumented)
-	  -w switch to hfst-calculate for backwards
-	  compatibility
-
-2011-03-16 11:08  mie
-
-	* man/Makefile.am, man/hfst-substitute.1,
-	  tools/src/hfst-substitute.cc: Update substitute documentation
-
-2011-03-16 10:28  eaxelson
-
-	* tools/src/hfst-lookup.cc: hfst-lookup should now work, still some
-	  problems in printing strings
-
-2011-03-15 15:42  eaxelson
-
-	* tools/src/hfst-fst2fst.cc, tools/src/hfst-lookup.cc: A more
-	  organized version of lookup function added to hfst-lookup. It
-	  will soon replace the original function.
-
-2011-03-15 15:42  hardwick
-
-	* test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Don't expect hfst-lexc-compiler to have a proper help and version
-	  string
-	  because it's just a humble wrapper.
-	  
-	  With this commit, hfst3's make check passes for the first
-	  time..!!
-
-2011-03-15 14:40  hardwick
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  tools/src/hfst-fst2fst.cc: Added a way for ol-conversion to be
-	  done really lazily (for when you want it
-	  done quickly - should still be faster, honestly). Also to pass a
-	  string
-	  parameter to conversion functions if they ever want a hint about
-	  something.
-
-2011-03-15 14:00  hardwick
-
-	* libhfst/src/implementations/Makefile.am: Don't run obsolete tests
-	  that break when run after make clean
-
-2011-03-15 10:38  mie
-
-	* test/libhfst/Makefile.am, tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test: more distcheck fixes
-
-2011-03-15 08:43  eaxelson
-
-	* tools/src/hfst-lookup.cc: small changes made to hfst-lookup
-
-2011-03-15 06:02  moshagen
-
-	* tools/src/hfst-commandline.cc: Added single quotes around and
-	  space after the filename for file-not-found errors. Makes it
-	  easier to read the filename (earlier the cause of the error was
-	  printed flush after the filename, with no space between).
-
-2011-03-15 03:57  mie
-
-	* README, configure.ac, scripts/Makefile.am: be explicit explicit
-	  about foma requirement for lexc and xfst
-
-2011-03-14 22:34  mie
-
-	* scripts/hfst-foma-wrapper.sh.in: Only claim to convert files that
-	  test -f
-
-2011-03-14 16:27  eaxelson
-
-	* libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/tools/project-functionality.sh,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-txt2fst.cc: Small changes made to helps and
-	  arguments in tools that convert between text, string and binary
-	  formats.
-
-2011-03-14 14:56  hardwick
-
-	* tools/src/hfst-lookup.cc: Maybe INFINITY will be defined more
-	  portably this way
-
-2011-03-14 13:49  mpsilfve
-
-	* tools/src/hfst-lookup.cc: INFINTY in hfst-lookup was not defined
-	  properly. fixed it.
-
-2011-03-14 13:33  mpsilfve
-
-	* tools/src/hfst-fst2strings.cc: string::npos changed to
-	  std::string::npos
-
-2011-03-14 13:20  hardwick
-
-	* test/tools/Makefile.am: Generate binaries needed to test
-	  hfst-proc correctly
-
-2011-03-14 13:14  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-fst2txt.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-txt2fst.cc: More
-	  utf-8 checks added. Command line tool helps also updated.
-
-2011-03-14 13:12  mpsilfve
-
-	* tools/src/hfst-twolc/src/Makefile.am: Fixed Makefile.am so that
-	  make dist works.
-
-2011-03-14 13:01  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Initialise weight
-
-2011-03-14 12:40  hardwick
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Missing std
-	  qualifier
-
-2011-03-14 12:28  mpsilfve
-
-	* test/libhfst/auxiliary_functions.cc,
-	  test/libhfst/test_tokenizer.cc: Added HfstTokenizer utf-8
-	  validation tests.
-
-2011-03-14 12:21  hardwick
-
-	* tools/src/hfst-proc/hfst-proc.cc: Enlightened hfst-proc as to the
-	  true nature of HFST3 headers
-
-2011-03-14 11:21  mpsilfve
-
-	* libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTokenizer.h: made
-	  HfstTokenizer::check_utf8_correctness a public static
-
-2011-03-14 10:10  mpsilfve
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTokenizer.h: Added utf-8 validation to the
-	  tokenizer and added the exception IncorrectUtf8CodingException.
-
-2011-03-13 19:23  mie
-
-	* test/libhfst/transducer.att, test/tools/permutate-file-params.sh:
-	  Fix brokentests
-
-2011-03-13 18:09  mie
-
-	* libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/Makefile.am, libhfst/src/coding-style.sh: remove
-	  coding style requirements and unit tests since they aren't
-	  followed anyways
-
-2011-03-13 17:28  mie
-
-	* tools/src/hfst-lookup.cc: Do not print all multicharacter symbols
-	  unless in verbose mode
-
-2011-03-12 17:48  mie
-
-	* man/Makefile.am, man/hfst-calculate.1, man/hfst-compare.1,
-	  man/hfst-compose-intersect.1, man/hfst-compose.1,
-	  man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinize.1, man/hfst-disjunct.1, man/hfst-fst2fst.1,
-	  man/hfst-fst2strings.1, man/hfst-fst2txt.1, man/hfst-head.1,
-	  man/hfst-invert.1, man/hfst-lexc-compiler.1, man/hfst-lookup.1,
-	  man/hfst-minimize.1, man/hfst-project.1, man/hfst-push-weights.1,
-	  man/hfst-regexp2fst.1, man/hfst-remove-epsilons.1,
-	  man/hfst-repeat.1, man/hfst-reverse.1, man/hfst-split.1,
-	  man/hfst-strings2fst.1, man/hfst-subtract.1,
-	  man/hfst-summarize.1, man/hfst-tail.1, man/hfst-txt2fst.1: Update
-	  man pages
-
-2011-03-12 17:22  mie
-
-	* HACKING, NEWS, configure.ac: mark 3.0_rc1
-
-2011-03-12 02:45  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/test/Makefile.am~,
-	  tools/src/hfst-twolc/test/test45,
-	  tools/src/hfst-twolc/test/test45.txt_fst: Fixed a bug in
-	  compiling rules with word boundaries and added test45.
-
-2011-03-11 18:39  mie
-
-	* scripts/hfst-foma-wrapper.sh.in: Don't use sed in scripts since
-	  it's broken on MacOS
-
-2011-03-11 16:05  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed bug in compose_intersect
-	  which discarded the second rule systematically.
-
-2011-03-11 15:25  mpsilfve
-
-	* tools/src/HfstStrings2FstTokenizer.cc,
-	  tools/src/HfstStrings2FstTokenizer.h,
-	  tools/src/hfst-strings2fst.cc: @_SPACE_@, @_TAB_@ and @_COLON_@
-	  added to HfstStrings2FstTokenizer.cc
-
-2011-03-11 14:46  moshagen
-
-	* tools/src/hfst-twolc/src, tools/src/hfst-twolc/test: Ignore more
-	  generated items.
-
-2011-03-11 14:10  eaxelson
-
-	* test/tools/cat.two-level.strings,
-	  test/tools/fst2strings-functionality.sh,
-	  tools/src/HfstStrings2FstTokenizer.cc, tools/src/Makefile.am,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-lookup.cc:
-	  hfst-lookup now uses HfstFst2StringsTokenizer to tokenize the
-	  input strings.
-
-2011-03-11 13:00  mie
-
-	* scripts/hfst-foma-wrapper.sh.in: Don't convert same stack more
-	  than once
-
-2011-03-11 12:42  mie
-
-	* scripts/hfst-foma-wrapper.sh.in, scripts/hfst-lexc: fis?\008x
-	  some warnings
-
-2011-03-11 08:31  mie
-
-	* tools/src/hfst-substitute.cc: workaround mac''s missing strndup
-
-2011-03-11 04:19  mie
-
-	* tools/src/hfst-substitute.cc: Allow pair substitutions...
-
-2011-03-11 02:38  mie
-
-	* tools/src/hfst-twolc/test/test: Fix test for Mac OS
-
-2011-03-11 01:49  mie
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h,
-	  libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-fst2strings.cc: Replace tabs with random number of
-	  spaces
-
-2011-03-11 01:00  mie
-
-	* test/tools/calculate-functionality.sh,
-	  test/tools/compose-intersect-functionality.sh: More tests limited
-	  to available formats
-
-2011-03-11 00:45  mie
-
-	* test/tools/txt2fst-functionality.sh: Only test available automata
-	  formats
-
-2011-03-11 00:35  mie
-
-	* test/tools/Makefile.am, test/tools/cat2dog.csv,
-	  test/tools/cat2dog.pairs, test/tools/cat2dog.pairstring,
-	  test/tools/cat2dog.spaces, test/tools/cat2dog.strings,
-	  test/tools/strings2fst-functionality.sh: Test all string formats
-	  in strings2fst
-
-2011-03-10 17:06  mpsilfve
-
-	* tools/src/HfstStrings2FstTokenizer.cc,
-	  tools/src/HfstStrings2FstTokenizer.h, tools/src/Makefile.am,
-	  tools/src/hfst-strings2fst.cc: Fixed hfst-string2fst parsing of
-	  input strings and reading of multichar symbols.
-
-2011-03-10 17:02  eaxelson
-
-	* tools/src/hfst-strings2fst.cc: hfst-strings2fst should now be
-	  able to handle all kind of string formats.
-
-2011-03-10 13:47  mpsilfve
-
-	* tools/src/hfst-twolc/src/scanner1.ll: # is no longer a special
-	  symbol, because it is not a special symbol in xerox twolc.
-
-2011-03-10 13:45  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/LeftArrowRuleContainer.cc,
-	  tools/src/hfst-twolc/src/scanner1.ll: Fixed print in left arrow
-	  rule conflict warnings.
-
-2011-03-10 13:35  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed word boundaries in
-	  compose-intersect, again...
-
-2011-03-10 13:10  eaxelson
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-strings2fst.cc:
-	  Special symbol handling changed in the commandline tools.
-
-2011-03-09 20:14  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed word boundaries in
-	  compose_intersect. When HfstBasicTransducer substitute starts
-	  working correctly, this can be done more efficiently.
-
-2011-03-09 17:21  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed word boundaries in
-	  compose_intersect.
-
-2011-03-09 13:25  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h: Added
-	  printing the conflicting context in left a row rule conflict
-	  warnings.
-
-2011-03-09 12:52  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Unknown and
-	  identity symbols are now correctly handled in composition. AT&T
-	  format now allows spaces in symbols if they are ascaped as
-	  '@_SPACE_@'
-
-2011-03-08 20:40  mie
-
-	* test/tools/Makefile.am, test/tools/compose-functionality.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/identity-star.txt, test/tools/unknown-star.txt: Tests
-	  for ? symbols
-
-2011-03-08 20:01  mie
-
-	* tools/src/parsers/xre_parse.yy: Use unknowns and identities in
-	  regexp2fst
-
-2011-03-08 17:25  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstExceptionDefs.h,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstTransducer.h,
-	  test/libhfst/test_examples.cc, tools/src/hfst-txt2fst.cc:
-	  Documentation added. Exceptions now throw a message.
-
-2011-03-08 14:08  mpsilfve
-
-	* tools/src/hfst-twolc/test/test: Modified test so that the script
-	  does not have to be changed when new tests are added.
-
-2011-03-08 13:48  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/LeftArrowRuleContainer.cc:
-	  Removed a unnecessary newline printed when not reporting left
-	  arrow conflicts.
-
-2011-03-08 13:47  mpsilfve
-
-	* tools/src/hfst-twolc/src/Makefile.am: Added a rule for compiling
-	  a local version of hfst-twolc used in tests.
-
-2011-03-08 13:46  mpsilfve
-
-	* tools/src/hfst-twolc/Makefile.am: Added hfst-twolc tests.
-
-2011-03-08 13:45  mpsilfve
-
-	* tools/src/hfst-twolc/test/Makefile.am,
-	  tools/src/hfst-twolc/test/test, tools/src/hfst-twolc/test/test10,
-	  tools/src/hfst-twolc/test/test10.txt_fst,
-	  tools/src/hfst-twolc/test/test11.txt_fst,
-	  tools/src/hfst-twolc/test/test12.txt_fst,
-	  tools/src/hfst-twolc/test/test13.txt_fst,
-	  tools/src/hfst-twolc/test/test14.txt_fst,
-	  tools/src/hfst-twolc/test/test15.txt_fst,
-	  tools/src/hfst-twolc/test/test16.txt_fst,
-	  tools/src/hfst-twolc/test/test17.txt_fst,
-	  tools/src/hfst-twolc/test/test18.txt_fst,
-	  tools/src/hfst-twolc/test/test19.txt_fst,
-	  tools/src/hfst-twolc/test/test20.txt_fst,
-	  tools/src/hfst-twolc/test/test21.txt_fst,
-	  tools/src/hfst-twolc/test/test22.txt_fst,
-	  tools/src/hfst-twolc/test/test23.txt_fst,
-	  tools/src/hfst-twolc/test/test24.txt_fst,
-	  tools/src/hfst-twolc/test/test25.txt_fst,
-	  tools/src/hfst-twolc/test/test26.txt_fst,
-	  tools/src/hfst-twolc/test/test27.txt_fst,
-	  tools/src/hfst-twolc/test/test28.txt_fst,
-	  tools/src/hfst-twolc/test/test29.txt_fst,
-	  tools/src/hfst-twolc/test/test30.txt_fst,
-	  tools/src/hfst-twolc/test/test31.txt_fst,
-	  tools/src/hfst-twolc/test/test32.txt_fst,
-	  tools/src/hfst-twolc/test/test33.txt_fst,
-	  tools/src/hfst-twolc/test/test34.txt_fst,
-	  tools/src/hfst-twolc/test/test35.txt_fst,
-	  tools/src/hfst-twolc/test/test36.txt_fst,
-	  tools/src/hfst-twolc/test/test37.txt_fst,
-	  tools/src/hfst-twolc/test/test38.txt_fst,
-	  tools/src/hfst-twolc/test/test39.txt_fst,
-	  tools/src/hfst-twolc/test/test40.txt_fst,
-	  tools/src/hfst-twolc/test/test41.txt_fst,
-	  tools/src/hfst-twolc/test/test42.txt_fst,
-	  tools/src/hfst-twolc/test/test43,
-	  tools/src/hfst-twolc/test/test43.txt_fst,
-	  tools/src/hfst-twolc/test/test44,
-	  tools/src/hfst-twolc/test/test44.txt_fst,
-	  tools/src/hfst-twolc/test/test9.txt_fst: Added hfst-twolc tsts.
-
-2011-03-08 13:43  mpsilfve
-
-	* configure.ac: Added hfst-twolc tests.
-
-2011-03-07 16:46  mpsilfve
-
-	* tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-twolc/test/test1.txt_fst,
-	  tools/src/hfst-twolc/test/test2,
-	  tools/src/hfst-twolc/test/test2.txt_fst,
-	  tools/src/hfst-twolc/test/test3,
-	  tools/src/hfst-twolc/test/test3.txt_fst,
-	  tools/src/hfst-twolc/test/test4,
-	  tools/src/hfst-twolc/test/test4.txt_fst,
-	  tools/src/hfst-twolc/test/test5,
-	  tools/src/hfst-twolc/test/test5.txt_fst,
-	  tools/src/hfst-twolc/test/test6,
-	  tools/src/hfst-twolc/test/test6.txt_fst,
-	  tools/src/hfst-twolc/test/test7.txt_fst,
-	  tools/src/hfst-twolc/test/test8,
-	  tools/src/hfst-twolc/test/test8.txt_fst,
-	  tools/src/hfst-twolc/test/test9,
-	  tools/src/inc/check-params-binary.h: Cahnged order of arguments
-	  so that 'cat fst1 | hfst-binary-tool fst2' will treat fst1 as the
-	  first and fst2 as the second argument.
-
-2011-03-07 15:12  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc: Fixed compose-intersect
-
-2011-03-07 14:48  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Handle
-	  the empty transducer in ->ol
-
-2011-03-07 14:47  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTransducer.h, test/libhfst/Makefile.am,
-	  test/libhfst/test_examples.cc, tools/src/hfst-compare.cc: Now
-	  hfst-compare does not print anything in silent mode. More tests
-	  added to test/libhfst.
-
-2011-03-07 14:13  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/scanner3.ll: Fixed definitions
-
-2011-03-07 13:36  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc: Fixed
-	  d:0 where d is a diacritic.
-
-2011-03-07 12:15  hardwick
-
-	* libhfst/src/HfstFlagDiacritics.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc: Fixed
-	  symbol offset calculation in certain flag diacritic-concerning
-	  cases
-
-2011-03-07 11:57  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc: Fixed problem
-	  with diacritic pair syntax. Now d d: and d:0 are equivalent for
-	  the diacritic d and d:x will give a warning.
-
-2011-03-07 11:07  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Remove
-	  debugging strings
-
-2011-03-07 11:00  hardwick
-
-	* libhfst/src/HfstFlagDiacritics.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Properly copy flag state vector on stack
-
-2011-03-07 08:54  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/scanner1.ll: Fixed a bug with
-	  definitions
-
-2011-03-07 03:17  mie
-
-	* test/tools/Makefile.am, test/tools/latin-1-strings.sh,
-	  test/tools/latin-1.strings, test/tools/utf-8-strings.sh,
-	  test/tools/utf-8.strings: Add tests for UTF-8 and latin-1 encoded
-	  strings
-
-2011-03-06 01:01  mie
-
-	* tools/src/hfst-fst2strings.cc: follow print-epsilons in all
-	  formats
-
-2011-03-06 00:37  mie
-
-	* tools/src/hfst-fst2strings.cc: format options like other tools
-	  have them
-
-2011-03-04 15:50  eaxelson
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.h: More
-	  documentation added.
-
-2011-03-03 10:41  moshagen
-
-	* tools/src/hfst-twolc, tools/src/hfst-twolc/src: Ignore generated
-	  files.
-
-2011-03-03 10:38  moshagen
-
-	* libhfst/src/implementations/compose_intersect: Ignore autotools
-	  file+dir.
-
-2011-03-03 03:36  mie
-
-	* configure.ac, scripts/hfst-foma-wrapper.sh.in, scripts/hfst-lexc,
-	  scripts/hfst-xfst: More careful quotation and informative error
-	  messages for foma scripts
-
-2011-03-02 16:56  mie
-
-	* tools/src/hfst-twolc/src/commandline_src/CommandLine.h,
-	  tools/src/hfst-twolc/src/rule_src/Rule.h: Use "HfstTransducer.hh"
-	  instead of <hfst/HfstTransducer.hh> for in tree builds
-
-2011-03-02 14:45  eaxelson
-
-	* tools/src/hfst-strings2fst.cc: hfst-strings2fst fixed
-
-2011-03-02 14:30  eaxelson
-
-	* tools/src/hfst-strings2fst.cc: Now hfst-strings2fst should handle
-	  escaping correctly.
-
-2011-03-02 14:01  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-format.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-summarize.cc: A bug
-	  in hfst-strings2fst fixed: now the backslash is reserved for
-	  escaping characters. Now the library also throws more informative
-	  exceptions.
-
-2011-03-01 16:13  hardwick
-
-	* libhfst/src/HfstFlagDiacritics.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Fixed
-	  operation retrieval
-
-2011-03-01 13:32  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Fixed
-	  problem wrt subtracting from an end() iterator of an empty
-	  state_placeholder index placeholder map
-
-2011-02-26 15:40  mpsilfve
-
-	* tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc: Removed some more
-	  debug prints.
-
-2011-02-26 15:01  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc: Removed some
-	  debugging prints
-
-2011-02-26 14:55  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/scanner1.ll: Fixed bug in defining lista
-	  using other lists and another bug which prevented variable rules
-	  unless there was a Definitions section.
-
-2011-02-26 00:16  mpsilfve
-
-	* tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.h,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc: Fixed diacritics
-	  handling.
-
-2011-02-24 22:58  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy: Fixed output file
-	  handling.
-
-2011-02-24 22:22  mpsilfve
-
-	* tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/scanner1.ll: Gave up on making }, ] and
-	  ) literal if they are not preceeded by opening {, [ and [, since
-	  this is too difficult in flex when brackets get nested. Fixed
-	  commandline argument handling properly and separated { and } from
-	  [ and ] i.e. they get their own bison symbols.
-
-2011-02-24 21:39  mpsilfve
-
-	* tools/src/hfst-twolc/src/commandline_src/CommandLine.cc: Fixed
-	  handling of commandline paramters so that the input filename can
-	  be given as a free argument without -i or --input.
-
-2011-02-24 21:36  mpsilfve
-
-	* tools/src/hfst-twolc/src/commandline_src/CommandLine.cc,
-	  tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/io_src/InputReader.cc,
-	  tools/src/hfst-twolc/src/scanner1.ll: Fixed syntax so that a
-	  lonely }, ] or ) is not interpreted as abracket, parenthesis and
-	  so on. Fixed numbers so that they need not be quoted unless
-	  preceeded by ^
-
-2011-02-24 19:42  mie
-
-	* scripts/hfst-foma-wrapper.sh.in: nore quotation and script
-	  guessing
-
-2011-02-24 18:58  mpsilfve
-
-	* tools/src/Makefile.am, tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-twolc/src/htwolcpre1.yy: Added
-	  hfst-compose-intersect.cc
-
-2011-02-24 18:56  mpsilfve
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/Makefile.am: Changes needed for
-	  libhfst/src/implementations/compose_intersect
-
-2011-02-24 18:41  mpsilfve
-
-	* libhfst/src/implementations/compose_intersect,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRule.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRule.h,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc,
-	  libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.h:
-	  Added fiels needed in compose_intersect
-
-2011-02-23 16:43  mpsilfve
-
-	* configure.ac: configure.ac changed because hfst-twolc was added.
-
-2011-02-23 15:23  mpsilfve
-
-	* tools/src/hfst-twolc/.txt_fst: Removed file hfst-twolc/.txt_fst
-	  which was added by mistake.
-
-2011-02-23 15:22  mpsilfve
-
-	* tools/src/hfst-twolc/src/.deps: Removed geerated dir
-	  hfst-twolc/src/.deps which was added by mistake
-
-2011-02-23 15:18  mpsilfve
-
-	* tools/src/Makefile.am, tools/src/hfst-twolc,
-	  tools/src/hfst-twolc/.txt_fst, tools/src/hfst-twolc/Makefile.am,
-	  tools/src/hfst-twolc/src, tools/src/hfst-twolc/src/.deps,
-	  tools/src/hfst-twolc/src/.deps/Alphabet.Po,
-	  tools/src/hfst-twolc/src/.deps/CommandLine.Po,
-	  tools/src/hfst-twolc/src/.deps/ConflictResolvingLeftArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/ConflictResolvingRightArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/InputReader.Po,
-	  tools/src/hfst-twolc/src/.deps/LeftArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/LeftArrowRuleContainer.Po,
-	  tools/src/hfst-twolc/src/.deps/LeftRestrictionArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/OtherSymbolTransducer.Po,
-	  tools/src/hfst-twolc/src/.deps/RightArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/RightArrowRuleContainer.Po,
-	  tools/src/hfst-twolc/src/.deps/Rule.Po,
-	  tools/src/hfst-twolc/src/.deps/RuleContainer.Po,
-	  tools/src/hfst-twolc/src/.deps/RuleSymbolVector.Po,
-	  tools/src/hfst-twolc/src/.deps/RuleVariables.Po,
-	  tools/src/hfst-twolc/src/.deps/RuleVariablesConstIterator.Po,
-	  tools/src/hfst-twolc/src/.deps/TwolCGrammar.Po,
-	  tools/src/hfst-twolc/src/.deps/VariableValues.Po,
-	  tools/src/hfst-twolc/src/.deps/hfst-commandline.Po,
-	  tools/src/hfst-twolc/src/.deps/hfst-program-options.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre1.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre2.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-Alphabet.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-ConflictResolvingLeftArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-ConflictResolvingRightArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-InputReader.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-LeftArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-LeftArrowRuleContainer.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-LeftRestrictionArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-OtherSymbolTransducer.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-RightArrowRule.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-RightArrowRuleContainer.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-Rule.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-RuleContainer.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-TwolCGrammar.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-htwolcpre3.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-scanner3.Po,
-	  tools/src/hfst-twolc/src/.deps/htwolcpre3_debugging-string_manipulation.Po,
-	  tools/src/hfst-twolc/src/.deps/scanner1.Po,
-	  tools/src/hfst-twolc/src/.deps/scanner2.Po,
-	  tools/src/hfst-twolc/src/.deps/scanner3.Po,
-	  tools/src/hfst-twolc/src/.deps/string_manipulation.Po,
-	  tools/src/hfst-twolc/src/Doxyfile,
-	  tools/src/hfst-twolc/src/HfstTwolcDefs.h,
-	  tools/src/hfst-twolc/src/Makefile.am,
-	  tools/src/hfst-twolc/src/alphabet_src,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.cc,
-	  tools/src/hfst-twolc/src/alphabet_src/Alphabet.h,
-	  tools/src/hfst-twolc/src/commandline_src,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.cc,
-	  tools/src/hfst-twolc/src/commandline_src/CommandLine.h,
-	  tools/src/hfst-twolc/src/doxygen_src,
-	  tools/src/hfst-twolc/src/doxygen_src/hfst_twolc_doxygen_header.h,
-	  tools/src/hfst-twolc/src/grammar_defs.h,
-	  tools/src/hfst-twolc/src/hfst-twolc.sh,
-	  tools/src/hfst-twolc/src/htwolcpre1.yy,
-	  tools/src/hfst-twolc/src/htwolcpre2.yy,
-	  tools/src/hfst-twolc/src/htwolcpre3.yy,
-	  tools/src/hfst-twolc/src/io_src,
-	  tools/src/hfst-twolc/src/io_src/InputReader.cc,
-	  tools/src/hfst-twolc/src/io_src/InputReader.h,
-	  tools/src/hfst-twolc/src/io_src/input_defs.h,
-	  tools/src/hfst-twolc/src/rule_src,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingLeftArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingRightArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/ConflictResolvingRightArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftArrowRuleContainer.h,
-	  tools/src/hfst-twolc/src/rule_src/LeftRestrictionArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/LeftRestrictionArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.cc,
-	  tools/src/hfst-twolc/src/rule_src/OtherSymbolTransducer.h,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRule.cc,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRule.h,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/RightArrowRuleContainer.h,
-	  tools/src/hfst-twolc/src/rule_src/Rule.cc,
-	  tools/src/hfst-twolc/src/rule_src/Rule.h,
-	  tools/src/hfst-twolc/src/rule_src/RuleContainer.cc,
-	  tools/src/hfst-twolc/src/rule_src/RuleContainer.h,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.cc,
-	  tools/src/hfst-twolc/src/rule_src/TwolCGrammar.h,
-	  tools/src/hfst-twolc/src/scanner1.ll,
-	  tools/src/hfst-twolc/src/scanner2.ll,
-	  tools/src/hfst-twolc/src/scanner3.ll,
-	  tools/src/hfst-twolc/src/string_src,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.cc,
-	  tools/src/hfst-twolc/src/string_src/string_manipulation.h,
-	  tools/src/hfst-twolc/src/variable_src,
-	  tools/src/hfst-twolc/src/variable_src/ConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/MatchedConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/MixedConstContainerIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/RuleSymbolVector.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleSymbolVector.h,
-	  tools/src/hfst-twolc/src/variable_src/RuleVariables.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleVariables.h,
-	  tools/src/hfst-twolc/src/variable_src/RuleVariablesConstIterator.cc,
-	  tools/src/hfst-twolc/src/variable_src/RuleVariablesConstIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableBlock.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableBlockContainer.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableContainer.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableContainerBase.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableDefs.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableValueIterator.h,
-	  tools/src/hfst-twolc/src/variable_src/VariableValues.cc,
-	  tools/src/hfst-twolc/src/variable_src/VariableValues.h,
-	  tools/src/hfst-twolc/test, tools/src/hfst-twolc/test/test1,
-	  tools/src/hfst-twolc/test/test1.txt_fst,
-	  tools/src/hfst-twolc/test/test10,
-	  tools/src/hfst-twolc/test/test10.txt_fst,
-	  tools/src/hfst-twolc/test/test11,
-	  tools/src/hfst-twolc/test/test11.txt_fst,
-	  tools/src/hfst-twolc/test/test12,
-	  tools/src/hfst-twolc/test/test12.txt_fst,
-	  tools/src/hfst-twolc/test/test13,
-	  tools/src/hfst-twolc/test/test13.txt_fst,
-	  tools/src/hfst-twolc/test/test14,
-	  tools/src/hfst-twolc/test/test14.txt_fst,
-	  tools/src/hfst-twolc/test/test15,
-	  tools/src/hfst-twolc/test/test15.txt_fst,
-	  tools/src/hfst-twolc/test/test16,
-	  tools/src/hfst-twolc/test/test16.txt_fst,
-	  tools/src/hfst-twolc/test/test17,
-	  tools/src/hfst-twolc/test/test17.txt_fst,
-	  tools/src/hfst-twolc/test/test18,
-	  tools/src/hfst-twolc/test/test18.txt_fst,
-	  tools/src/hfst-twolc/test/test19,
-	  tools/src/hfst-twolc/test/test19.txt_fst,
-	  tools/src/hfst-twolc/test/test2,
-	  tools/src/hfst-twolc/test/test2.txt_fst,
-	  tools/src/hfst-twolc/test/test20,
-	  tools/src/hfst-twolc/test/test20.txt_fst,
-	  tools/src/hfst-twolc/test/test21,
-	  tools/src/hfst-twolc/test/test21.txt_fst,
-	  tools/src/hfst-twolc/test/test22,
-	  tools/src/hfst-twolc/test/test22.txt_fst,
-	  tools/src/hfst-twolc/test/test23,
-	  tools/src/hfst-twolc/test/test23.txt_fst,
-	  tools/src/hfst-twolc/test/test24,
-	  tools/src/hfst-twolc/test/test24.txt_fst,
-	  tools/src/hfst-twolc/test/test25,
-	  tools/src/hfst-twolc/test/test26,
-	  tools/src/hfst-twolc/test/test26.txt_fst,
-	  tools/src/hfst-twolc/test/test27,
-	  tools/src/hfst-twolc/test/test27.txt_fst,
-	  tools/src/hfst-twolc/test/test28,
-	  tools/src/hfst-twolc/test/test28.txt_fst,
-	  tools/src/hfst-twolc/test/test29,
-	  tools/src/hfst-twolc/test/test29.txt_fst,
-	  tools/src/hfst-twolc/test/test3,
-	  tools/src/hfst-twolc/test/test3.txt_fst,
-	  tools/src/hfst-twolc/test/test30,
-	  tools/src/hfst-twolc/test/test30.txt_fst,
-	  tools/src/hfst-twolc/test/test31,
-	  tools/src/hfst-twolc/test/test31.txt_fst,
-	  tools/src/hfst-twolc/test/test32,
-	  tools/src/hfst-twolc/test/test32.txt_fst,
-	  tools/src/hfst-twolc/test/test33,
-	  tools/src/hfst-twolc/test/test33.txt_fst,
-	  tools/src/hfst-twolc/test/test34,
-	  tools/src/hfst-twolc/test/test35,
-	  tools/src/hfst-twolc/test/test35.txt_fst,
-	  tools/src/hfst-twolc/test/test36,
-	  tools/src/hfst-twolc/test/test36.txt_fst,
-	  tools/src/hfst-twolc/test/test37,
-	  tools/src/hfst-twolc/test/test37.txt_fst,
-	  tools/src/hfst-twolc/test/test38,
-	  tools/src/hfst-twolc/test/test38.txt_fst,
-	  tools/src/hfst-twolc/test/test39,
-	  tools/src/hfst-twolc/test/test39.txt_fst,
-	  tools/src/hfst-twolc/test/test4,
-	  tools/src/hfst-twolc/test/test4.txt_fst,
-	  tools/src/hfst-twolc/test/test40,
-	  tools/src/hfst-twolc/test/test40.txt_fst,
-	  tools/src/hfst-twolc/test/test41,
-	  tools/src/hfst-twolc/test/test41.txt_fst,
-	  tools/src/hfst-twolc/test/test42,
-	  tools/src/hfst-twolc/test/test42.txt_fst,
-	  tools/src/hfst-twolc/test/test5,
-	  tools/src/hfst-twolc/test/test5.txt_fst,
-	  tools/src/hfst-twolc/test/test6,
-	  tools/src/hfst-twolc/test/test6.txt_fst,
-	  tools/src/hfst-twolc/test/test7,
-	  tools/src/hfst-twolc/test/test7.txt_fst,
-	  tools/src/hfst-twolc/test/test8,
-	  tools/src/hfst-twolc/test/test8.txt_fst,
-	  tools/src/hfst-twolc/test/test9,
-	  tools/src/hfst-twolc/test/test9.txt_fst: Added hfst-twolc.
-
-2011-02-23 12:30  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Miscellaneous packing tricks & fixed a typo
-
-2011-02-23 09:44  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h:
-	  Correction to flag indexing
-
-2011-02-23 08:34  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Corrected
-	  alphabet ordering (eps-input-flag-other)
-
-2011-02-22 17:16  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Small changes done in documentation.
-
-2011-02-22 16:47  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: More
-	  refactoring
-
-2011-02-22 16:35  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h:
-	  Miscellaneous improvements and refactoring
-
-2011-02-22 11:16  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Fixed bug
-	  wrt finding the largest used index
-
-2011-02-22 09:49  eaxelson
-
-	* test/libhfst/test_flag_diacritics.cc,
-	  test/libhfst/test_transducer_functions.cc: missing test file
-	  added
-
-2011-02-22 09:39  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc:
-	  Parametrized packing aggression. Packing is still a little slow
-	  for
-	  decent levels of aggression. Consider adding a mechanism to ask
-	  conversion
-	  to be maximally aggressive (eg. for binary distribution).
-
-2011-02-21 19:59  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Redo flag
-	  handling in ol-conversion
-
-2011-02-21 15:07  eaxelson
-
-	* tools/src/hfst-fst2strings.cc, tools/src/hfst-lookup.cc: A bug in
-	  hfst-lookup fixed: reading input strings in spaced format now
-	  works.
-
-2011-02-21 14:02  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h: Fix
-	  stupid mistake in previous fix to optimized-lookup internals
-
-2011-02-21 13:37  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: More
-	  coding style conformism
-
-2011-02-21 13:18  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.cc:
-	  Coding style conformism
-
-2011-02-21 13:12  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Fixes
-	  to optimized-lookup internals and conversion
-
-2011-02-21 13:02  eaxelson
-
-	* Doxyfile, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/hfst-compose.cc: Exception classes refined
-
-2011-02-18 12:38  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h, libhfst/src/HfstExceptions.h,
-	  libhfst/src/HfstExtractStrings.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTokenizer.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am, libhfst/src/coding-style.sh,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.cc,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  test/libhfst/test_rules.cc, test/libhfst/test_streams.cc,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-binary-tool.cc,
-	  tools/src/hfst-compare.cc, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-determinize.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-format.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-head.cc,
-	  tools/src/hfst-invert.cc, tools/src/hfst-lexc-compiler.cc,
-	  tools/src/hfst-lookup.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-name.cc, tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-remove-epsilons.cc, tools/src/hfst-repeat.cc,
-	  tools/src/hfst-reverse.cc, tools/src/hfst-split.cc,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-subtract.cc,
-	  tools/src/hfst-summarize.cc, tools/src/hfst-tail.cc,
-	  tools/src/hfst-unary-tool.cc, tools/src/hfst-xfst-compiler.cc,
-	  tools/src/test.cc: All exceptions changed to
-	  HFST_THROW(HfstException).
-
-2011-02-18 10:15  mpsilfve
-
-	* libhfst/src/HfstExceptionDefs.h: Renamed TWROW HFST_THROW in
-	  HfstExceptionDefs.h
-
-2011-02-17 14:09  mpsilfve
-
-	* libhfst/src/HfstExceptionDefs.cc,
-	  libhfst/src/HfstExceptionDefs.h: Added some macro definitions,
-	  which make it easy to declare, define and throw informative
-	  exceptions.
-
-2011-02-17 12:47  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Free
-	  memory earlier and do some less work in ol-conversion
-
-2011-02-17 10:28  moshagen
-
-	* tools/src: Ignore the latest binary file.
-
-2011-02-17 10:07  eaxelson
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstExtractStrings.h,
-	  libhfst/src/HfstTokenizer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-lookup.cc: The order of weight and string/string
-	  pair changed in HfstOneLevelPath and HfstTwoLevelPath. Now the
-	  elements of a set are sorted in ascending weight order.
-
-2011-02-16 16:37  eaxelson
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstExtractStrings.h,
-	  libhfst/src/HfstTokenizer.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/hfst-lookup.cc: HfstLookupPath(s) is now replaced with
-	  HfstOneLevelPath(s)
-
-2011-02-16 15:48  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/libhfst/Makefile.am, test/libhfst/auxiliary_functions.cc:
-	  Flag diacritics should now be handled right in functions lookup
-	  and extract_strings
-
-2011-02-16 13:09  eaxelson
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstExtractStrings.h,
-	  libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTokenizer.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  test/libhfst/test_transducer_functions.cc,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-lookup.cc: HfstTransducer::lookup now takes a
-	  StringVector as argument and HfstTransducer::extract_strings
-	  stores its results in an 'HfstTwoLevelPaths'
-
-2011-02-15 15:50  eaxelson
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstFlagDiacritics.h,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/coding-style.sh, libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Now
-	  coding-style.sh should pass.
-
-2011-02-15 15:28  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstExceptions.h, libhfst/src/HfstExtractStrings.h,
-	  libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstSymbolDefs.cc, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/HfstTokenizer.cc, libhfst/src/HfstTokenizer.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.cc,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/new-ConvertTransducerFormat.cc:
-	  Overlong lines separated on several lines.
-
-2011-02-15 11:08  hardwick
-
-	* tools/src/hfst-compiler.yy: More more more OFST->OPENFST renaming
-
-2011-02-15 11:06  hardwick
-
-	* libhfst/src/implementations/HfstInternalTransducer.cc: More more
-	  OFST->OPENFST renaming
-
-2011-02-15 11:04  hardwick
-
-	* libhfst/src/HfstInputStream.cc: more OFST -> OPENFST name
-	  renaming
-
-2011-02-14 14:54  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc:
-	  HfstTransducer::read_in_att_format is now protected
-
-2011-02-14 12:52  eaxelson
-
-	* test/libhfst/test_rules.cc: A bug in tests fixed.
-
-2011-02-14 12:48  eaxelson
-
-	* test/libhfst/Makefile.am, test/libhfst/auxiliary_functions.cc,
-	  test/libhfst/test.cc, test/libhfst/test_constructors.cc,
-	  test/libhfst/test_rules.cc, test/libhfst/test_streams.cc,
-	  test/libhfst/test_transducer_functions.cc: test.cc renamed to
-	  test_rules.cc and only tests for functions in namespace
-	  hfst::rules preserved
-
-2011-02-14 12:18  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstExceptions.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2txt.cc,
-	  tools/src/hfst-lexc-compiler.cc, tools/src/hfst-name.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-split.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-summarize.cc,
-	  tools/src/hfst-txt2fst.cc, tools/src/hfst-xfst-compiler.cc,
-	  tools/src/parsers/LexcCompiler.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XreCompiler.cc, tools/src/test.cc:
-	  TROPICAL_OFST_TYPE and LOG_OFST_TYPE changed to
-	  TROPICAL_OPENFST_TYPE and LOG_OPENFST_TYPE.
-
-2011-02-14 11:32  mpsilfve
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  tools/src/Makefile.am: Fixed a bug in reading binary SFST and
-	  FOMA transducers.
-
-2011-02-12 22:59  mie
-
-	* README: update requirements and reorganise
-
-2011-02-11 16:44  mpsilfve
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Fixed bug
-	  in reading and writing transducer binary headers.
-
-2011-02-11 14:49  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstExtractStrings.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/libhfst/Makefile.am, test/libhfst/test.cc,
-	  test/libhfst/test_hfst_basic_transducer.cc,
-	  test/libhfst/test_transducer_functions.cc,
-	  test/libhfst/test_transducers.att, tools/src/HfstCompiler.cc:
-	  AT&T format now accepts all whitespace characters as field
-	  separators.
-
-2011-02-11 10:49  mpsilfve
-
-	* libhfst/src/implementations/HfstTransitionGraph.h: Added a
-	  const-version of HfstTransitionGraph::operator[], so that it is
-	  possible to access the transitions of a const
-	  HfstTransitionGraph.
-
-2011-02-10 15:21  hardwick
-
-	* libhfst/src/HfstTransducer.cc: Added appropriate type checks in a
-	  HfstTransducer constructor - probably many more needed...
-
-2011-02-10 15:20  hardwick
-
-	* tools/src/hfst-txt2fst.cc: Fixed typo and clarified help message
-
-2011-02-10 13:09  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Represent epsilon as blank string when returning representations
-	  from
-	  ol-library
-
-2011-02-10 10:48  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc: More tests added.
-	  Substitute bugs fixed in TropicalWeightTransducer.
-
-2011-02-09 14:32  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  test/libhfst/test_transducer_functions.cc: New tests added.
-	  Substitution functions cause a segfault in
-	  TropicalWeightTransducer, debugging under way.
-
-2011-02-09 11:30  eaxelson
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTokenizer.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  test/libhfst/test_transducer_functions.cc: More tests added.
-
-2011-02-08 15:51  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc: Fixed some problems
-	  (due to epsilon symbol) in SfstTransducer functions that take a
-	  String or StringPair as argument. FomaTransducer::is_cyclic now
-	  works correctly, function 'fsm_topsort' must be called before
-	  'is_loop_free'.
-
-2011-02-08 15:06  eaxelson
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/libhfst/test_transducer_functions.cc: More tests added.
-
-2011-02-08 13:14  eaxelson
-
-	* test/libhfst/test_transducer_functions.cc: File
-	  test_transducer_functions fixed.
-
-2011-02-08 13:12  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  test/libhfst/Makefile.am,
-	  test/libhfst/test_transducer_functions.cc: Extra debugging
-	  messages removed.
-
-2011-02-07 14:41  eaxelson
-
-	* test/libhfst/Makefile.am, test/libhfst/auxiliary_functions.cc,
-	  test/libhfst/test_streams.cc, test/libhfst/test_tokenizer.cc,
-	  test/libhfst/transducer.att: Test for tokenizer added.
-
-2011-02-07 14:02  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  test/libhfst/Makefile.am, test/libhfst/test_streams.cc:
-	  FomaTransducer::define_transducer(char*) now calls
-	  fsm_count(struct *fsm) on its return value. In this way the
-	  number of fsm lines is correct when the transducer is written to
-	  file.
-
-2011-02-04 15:25  eaxelson
-
-	* test/libhfst/Makefile.am, test/libhfst/test_streams.cc,
-	  test/libhfst/test_transducers.att: More tests added.
-
-2011-02-04 15:14  eaxelson
-
-	* test/libhfst/Makefile.am, test/libhfst/auxiliary_functions.cc,
-	  test/libhfst/test_constructors.cc:
-
-2011-02-04 14:21  eaxelson
-
-	* test/libhfst/foobar.att, test/libhfst/test_constructors.cc:
-
-2011-02-04 13:53  eaxelson
-
-	* test/libhfst/Makefile.am, test/libhfst/test.cc,
-	  test/libhfst/test_constructors.cc: File test_constructors.cc
-	  added
-
-2011-02-03 16:20  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-	  Documentation added.
-
-2011-02-02 16:03  eaxelson
-
-	* api_documentation.dox, configure.ac,
-	  libhfst/src/HfstExceptions.h, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstTransducer.h,
-	  tools/src/Makefile.am, tools/src/hfst-name.cc: Documentation
-	  updated. Tool hfst-name added.
-
-2011-02-02 13:49  eaxelson
-
-	* libhfst/src/HfstExceptions.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-summarize.cc: Now conversion from OpenFst and SFST
-	  to HFST handles special symbols correctly. How special symbols
-	  should be handled in the reverse case is still an open question.
-
-2011-02-01 13:47  mie
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-lookup.cc: remove deprecated conversions and
-	  unused parameters
-
-2011-02-01 10:35  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  ol-basic -conversion
-
-2011-01-31 14:00  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Function
-	  HfstTransducer::insert_freely(const HfstTransducer &tr) added.
-
-2011-01-31 11:06  eaxelson
-
-	* libhfst/src/HfstOutputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Now the
-	  output symbol table of a tropical or log HFST transducer is
-	  assigned a copy of the input symbol table when the transducer is
-	  written. This should make conversions between OpenFst and HFST
-	  transducers easier.
-
-2011-01-31 10:42  mpsilfve
-
-	* tools/src/hfst-summarize.cc: Fixed two typedefs in
-	  trunk/hfst3/tools/src/hfst-summarize.cc
-
-2011-01-31 10:41  mpsilfve
-
-	* libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Fixed an
-	  #include in
-	  trunk/hfst3/libhfst/src/implementations/ConvertTransducerFormat.h
-	  and a typedef in
-	  trunk/hfst3/libhfst/src/implementations/convert.h
-
-2011-01-30 22:51  mie
-
-	* tools/src/hfst-fst2fst.cc: Fix verbose messages about HFST3
-	  headers
-
-2011-01-30 22:30  mie
-
-	* test/tools/cat2epsilon.txt, test/tools/epsilon.txt,
-	  test/tools/epsilon2cat.txt: epsilon tests
-
-2011-01-28 14:20  eaxelson
-
-	* libhfst/src/HfstOutputStream.h, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  tools/src/hfst-lookup.cc: hfst-lookup now prints the results in
-	  the FILE requested instead of stderr
-
-2011-01-28 11:09  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, tools/src/hfst-lookup.cc:
-	  hfst-lookup has two options more. It is possible to print results
-	  in pairstring format (not implemented for optimized lookup
-	  format) and defined how the epsilon is printed.
-
-2011-01-27 15:18  eaxelson
-
-	* libhfst/src/HfstExtractStrings.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/tools/Makefile.am: extract_strings and WeightedPath changed
-	  so that it is possible to include a StringPairVector
-	  representation of the extracted paths
-
-2011-01-27 04:00  mie
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/Makefile.am, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-lookup.cc: implement flags and epsilons and xfst
-	  options print-space print-flag obey-flags etc.
-
-2011-01-26 23:24  mie
-
-	* test/tools/Makefile.am, test/tools/compose-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/fst2txt-functionality.sh,
-	  test/tools/head-functionality.sh, test/tools/hfst-check-help.sh,
-	  test/tools/hfst-check-version.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/summarize-functionality.sh,
-	  test/tools/tail-functionality.sh: Avoid testing missing backends
-	  if possible
-
-2011-01-26 15:45  eaxelson
-
-	* libhfst/src/HfstExceptions.h, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTokenizer.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, tools/src/HfstCompiler.cc:
-	  Documentation added. Thrown exception types changed for some
-	  functions.
-
-2011-01-25 17:18  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstExceptions.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTokenizer.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-strings2fst.cc:
-	  Documentation improved and added. Keyword 'const' added to
-	  functions and their arguments when appropriate.
-
-2011-01-24 16:18  eaxelson
-
-	* api_documentation.dox,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  tools/src/hfst-fst2strings.cc: Documentation added.
-
-2011-01-21 15:57  eaxelson
-
-	* Doxyfile, api_documentation.dox, configure.ac,
-	  libhfst/src/HfstApply.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstExceptions.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTokenizer.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/MfstlTransducer.cc,
-	  libhfst/src/implementations/MfstlTransducer.h,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.cc,
-	  libhfst/src/implementations/MyTransducerLibraryTransducer.h:
-	  Documentation changed.
-
-2011-01-19 15:18  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstExceptions.h,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-lookup.cc: HfstFileException changed to
-	  HfstStreamException
-
-2011-01-19 11:50  eaxelson
-
-	* libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-compose.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-subtract.cc: Missing flag diacritics now yield a
-	  warning in hfst-compose, hfst-conjunct and hfst-subtract, unless
-	  freely inserted by option -F.
-
-2011-01-18 14:23  hardwick
-
-	* tools/src/HfstCompiler.cc: One more portability fix... could be
-	  the last one!
-
-2011-01-18 14:20  hardwick
-
-	* tools/src/hfst-summarize.cc: Yet another without-openfst
-	  portability fix
-
-2011-01-18 14:17  hardwick
-
-	* tools/src/parsers/xre_utils.cc: Another without-openfst
-	  portability fix
-
-2011-01-18 14:14  hardwick
-
-	* tools/src/parsers/xre_utils.h: Another without-openfst
-	  portability fix
-
-2011-01-18 14:12  hardwick
-
-	* tools/src/hfst-lookup.cc: Added using-directives to
-	  hfst-lookup.cc - apparently they don't get
-	  included from somewhere else when not HAVE_OPENFST, so this is
-	  necessary
-	  for portability
-
-2011-01-18 13:55  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: More
-	  optimized-lookup conversion fixes... produces correct results at
-	  least
-	  for trivial cases now.
-
-2011-01-17 20:11  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Various
-	  bits of format correctness for optimized-lookup conversion
-	  (lookup still doesn't give correct results)
-
-2011-01-17 16:45  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstTransitionGraph.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/HfstAlphabet.h, tools/src/HfstBasic.h,
-	  tools/src/HfstUtf8.h: Documentation added.
-
-2011-01-17 15:08  eaxelson
-
-	* libhfst/src/HfstAlphabet.cc, libhfst/src/HfstAlphabet.h,
-	  libhfst/src/HfstBasic.cc, libhfst/src/HfstBasic.h,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/HfstUtf8.cc,
-	  libhfst/src/HfstUtf8.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh,
-	  test/tools/lookup-functionality.sh,
-	  test/tools/permutate-file-params.sh, tools/src/HfstAlphabet.cc,
-	  tools/src/HfstAlphabet.h, tools/src/HfstBasic.cc,
-	  tools/src/HfstBasic.h, tools/src/HfstUtf8.cc,
-	  tools/src/HfstUtf8.h, tools/src/Makefile.am,
-	  tools/src/hfst-lookup.cc, tools/src/hfst-txt2fst.cc:
-	  HfstAlphabet, HfstBasic and HfstUtf8 cc and h files moved to
-	  tools/src. Some functions in HfstTransducer decalred as
-	  protected.
-
-2011-01-17 08:41  hardwick
-
-	* libhfst/src/HfstOutputStream.cc: #if HAVE_HFST_OL perhaps not
-	  working correctly - in any case HFST_OL-writing
-	  is now enabled, although the results still don't appear to be
-	  quite correct
-
-2011-01-17 08:31  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Oops,
-	  forgot to remove some debugging messages
-
-2011-01-17 08:29  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Fixed
-	  hanging hfst-ol conversion, still doesn't get written
-
-2011-01-16 18:24  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Ol-conversion (untested as yet)
-
-2011-01-15 13:27  hardwick
-
-	* tools/src/Makefile.am: Added parsers/xre_utils.h to noist_HEADERS
-	  in tools/src/Makefile.am
-	  
-	  This commit is also to celebrate that hfst3 will now actually
-	  build on a clean
-	  system!
-
-2011-01-15 12:40  hardwick
-
-	* tools/src/Makefile.am: Added parsers/XreCompiler.h to
-	  noinst_HEADERS in tools/src/Makefile.am
-
-2011-01-14 15:41  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstInputStream.h:
-	  Documentation added.
-
-2011-01-13 14:46  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstTransducer.h:
-	  Documentation added.
-
-2011-01-12 16:23  eaxelson
-
-	* configure.ac, libhfst/src/HfstGrammar.cc,
-	  libhfst/src/HfstGrammar.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightComposeIntersect.cc,
-	  libhfst/src/implementations/TropicalWeightComposeIntersect.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/tools/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-compose-intersect.cc: Intersecting composition
-	  functionalities removed, they will be implemented using
-	  HfstBasicTransducer format in the future.
-
-2011-01-12 14:13  hardwick
-
-	* configure.ac: Updated configure.ac to reflect dropping of
-	  tools/src/parsers/Makefile.am
-
-2011-01-12 14:12  hardwick
-
-	* tools/src/parsers/Makefile.am: Deleted unneeded Makefile.am in
-	  tools/src/parsers
-
-2011-01-12 13:37  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Substituting
-	  unknowns and identities now works correctly in composition.
-
-2011-01-12 12:32  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  tools/src/parsers/LexcCompiler.cc: A bug in reading transducers
-	  in AT&T format fixed. Also an alphabet bug in converting
-	  HfstBasicTransducers into SFST transducers fixed.
-
-2011-01-12 08:49  moshagen
-
-	* api_documentation.dox: Corrected documentation link.
-
-2011-01-11 15:21  eaxelson
-
-	* Doxyfile, api_documentation.dox, libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstSymbolDefs.h,
-	  libhfst/src/implementations/HfstTransitionGraph.h: Documentation
-	  added.
-
-2011-01-10 16:47  eaxelson
-
-	* api_documentation.dox,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-summarize.cc: Redundant code removed from class
-	  HfstTransitionGraph.
-
-2011-01-10 15:29  moshagen
-
-	* .: Ignore typical build subdirs.
-
-2011-01-10 15:21  eaxelson
-
-	* Doxyfile, api_documentation.dox, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstNet.cc,
-	  libhfst/src/implementations/HfstNet.h,
-	  libhfst/src/implementations/HfstTransitionGraph.cc,
-	  libhfst/src/implementations/HfstTransitionGraph.h,
-	  libhfst/src/implementations/Makefile.am,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-summarize.cc,
-	  tools/src/parsers/LexcCompiler.cc: HfstNet renamed to
-	  HfstTransitionGraph, HfstFsm to HfstBasicTransducer and HfstArc
-	  to HfstBasicTransition
-
-2011-01-06 08:57  mie
-
-	* scripts/Makefile.am: extra_dist all scripts
-
-2011-01-06 02:59  mie
-
-	* libhfst/src/HfstAlphabet.cc, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/Makefile.am, tools/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: fix VPATH _build_
-
-2011-01-05 13:58  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstNet.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-	  Substitute functions of HfstNet updated.
-
-2011-01-05 11:53  hardwick
-
-	* tools/src/Makefile.am: HfstCompiler.h in noinst_HEADERS
-
-2011-01-05 11:30  hardwick
-
-	* tools/src/parsers/Makefile.am: Added items to noinst_HEADERS in
-	  tools/src/parsers/Makefile.am, evidently needed
-	  for building
-
-2011-01-05 08:50  moshagen
-
-	* tools/src: Ignore more generated files.
-
-2011-01-04 17:24  mie
-
-	* scripts/hfst-foma-wrapper.sh.in, scripts/hfst-lexc: Remove
-	  intermediate files and be selectively verbose to avoid confusion
-
-2011-01-04 15:50  hardwick
-
-	* libhfst/src/Makefile.am: YAUH: HfstUtf8.h
-
-2011-01-04 15:19  hardwick
-
-	* libhfst/src/Makefile.am: YAUH: HfstBasic.h
-
-2011-01-04 15:02  hardwick
-
-	* libhfst/src/Makefile.am: Another unshipped header (HfstGrammar.h)
-
-2011-01-04 11:05  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: oops
-
-2011-01-04 10:57  hardwick
-
-	* libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h:
-	  HAVE_OPENFST guards
-
-2011-01-04 10:46  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstNet.h, tools/src/HfstCompiler.cc:
-	  A bug in transducer conversion functions fixed.
-
-2011-01-04 10:17  hardwick
-
-	* libhfst/src/implementations/Makefile.am: Missing \ in another
-	  header shipping directive in
-	  libhfst/src/implementations/Makefile.am
-
-2011-01-04 10:14  hardwick
-
-	* libhfst/src/implementations/Makefile.am: Another missing header,
-	  TropicalWeightComposeIntersect.h included for shipping
-	  (this is probably temporary and the header shouldn't be needed
-	  anymore,
-	  but for now building fails without it on clean machines)
-
-2011-01-04 07:40  mie
-
-	* README-alpha, libhfst/src/coding-style.sh: The alpha testing
-	  instructions
-
-2011-01-03 18:01  mie
-
-	* libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc: skip all
-	  tests that might fail
-
-2011-01-03 17:00  mie
-
-	* configure.ac, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  tools/src/FlagDiacritics, tools/src/Makefile.am,
-	  tools/src/parsers/Makefile.am: * some new autoconfiscate features
-	  (silent make!)
-	  * misc. stylistic changes
-
-2011-01-03 15:50  mpsilfve
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstNet.h: Made
-	  HfstNet::get_final_weight(...) a const member function.
-
-2011-01-03 15:36  hardwick
-
-	* libhfst/src/implementations/Makefile.am: Added missing headers to
-	  Makefile
-
-2011-01-03 14:34  mpsilfve
-
-	* libhfst/src/implementations/HfstNet.h: changed void
-	  HfstNet::add_state(HfstState s) so that it returns s and added
-	  HfstState HfstNet::add_state(void), which adds a new state.
-
-2011-01-03 11:46  eaxelson
-
-	* libhfst/src/implementations/HfstNet.cc: HfstNet.cc added
-
-2011-01-03 11:15  eaxelson
-
-	* libhfst/src/HfstDataTypes.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstNet.h,
-	  libhfst/src/implementations/Makefile.am,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-summarize.cc,
-	  tools/src/parsers/LexcCompiler.cc,
-	  tools/src/parsers/xfst-lexer.ll: Conversions between transducer
-	  formats updated so that they use HfstFsm
-
-2011-01-02 20:15  moshagen
-
-	* tools/src: Ignore generated files.
-
-2011-01-02 19:37  moshagen
-
-	* tools/src/parsers: Ignore generated files.
-
-2011-01-01 13:28  mie
-
-	* tools/src/Makefile.am, tools/src/hfst-lexc-compiler.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-xfst-compiler.cc,
-	  tools/src/parsers/XfstCompiler.cc,
-	  tools/src/parsers/XfstCompiler.h,
-	  tools/src/parsers/xfst-utils.cc, tools/src/parsers/xfst-utils.h:
-	  Fix the missing includes and linkage
-
-2010-12-31 14:22  mie
-
-	* configure.ac, libhfst/src/Makefile.am, libhfst/src/extensions,
-	  tools/src/Makefile.am, tools/src/hfst-compare.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/hfst-repeat.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-strip-header.cc, tools/src/parsers,
-	  tools/src/parsers/LexcCompiler.cc,
-	  tools/src/parsers/LexcCompiler.h, tools/src/parsers/Makefile.am,
-	  tools/src/parsers/XreCompiler.h, tools/src/parsers/xre_lex.ll,
-	  tools/src/parsers/xre_parse.yy, tools/src/parsers/xre_utils.cc,
-	  tools/src/parsers/xre_utils.h: Remove hfst's lexc, xfst and xre
-	  parsers and use foma's instead of reinventing
-	  wheel and doubling update burden
-
-2010-12-28 16:34  eaxelson
-
-	* libhfst/src/implementations/HfstNet.h,
-	  libhfst/src/implementations/new-ConvertTransducerFormat.cc: New
-	  transducer conversion functions added.
-
-2010-12-28 14:17  eaxelson
-
-	* libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  tools/src/HfstCompiler.cc:
-
-2010-12-28 13:28  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  tools/src/HfstCompiler.cc: A bug in
-	  FomaTransducer::define_transducer fixed.
-
-2010-12-22 17:18  eaxelson
-
-	* libhfst/src/implementations/HfstNet.h: A bug fixed in
-	  HfstNet::substitute(StringPair, HfstNet)
-
-2010-12-22 16:26  eaxelson
-
-	* libhfst/src/implementations/HfstNet.h: More functions added to
-	  HfstNet
-
-2010-12-22 13:15  eaxelson
-
-	* api_documentation.dox,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FooTransducer.h,
-	  libhfst/src/implementations/HfstNet.h,
-	  libhfst/src/implementations/new-ConvertTransducerFormat.cc,
-	  test/libhfst/Makefile.am, test/tools/Makefile.am: More functions
-	  added to HfstNet
-
-2010-12-21 07:38  mie
-
-	* test/tools/compare-functionality.sh,
-	  test/tools/permutate-file-params.sh: Use local compare for all
-	  tests
-
-2010-12-21 02:52  mie
-
-	* configure.ac, tools/src/hfst-regexp2fst.cc: don't fclose infile
-	  too early
-
-2010-12-21 01:29  mie
-
-	* tools/src/hfst-compare.cc, tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-determinize.cc,
-	  tools/src/hfst-diff-test.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-format.cc, tools/src/hfst-fst2fst.cc,
-	  tools/src/hfst-fst2pairstrings.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-head.cc,
-	  tools/src/hfst-invert.cc, tools/src/hfst-lexc-compiler.cc,
-	  tools/src/hfst-lookup-optimize.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-minimize.cc, tools/src/hfst-omor-evaluate.cc,
-	  tools/src/hfst-optimized-lookup.cc, tools/src/hfst-pair-test.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-remove-epsilons.cc,
-	  tools/src/hfst-repeat.cc, tools/src/hfst-reverse.cc,
-	  tools/src/hfst-split.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-strip-header.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-subtract.cc, tools/src/hfst-summarize.cc,
-	  tools/src/hfst-symbols.cc, tools/src/hfst-tail.cc,
-	  tools/src/hfst-txt2fst.cc, tools/src/hfst-xfst-compiler.cc: *
-	  Separate bug report from further info by newline
-	  * remove old and deprecated tools
-
-2010-12-21 00:40  mie
-
-	* man/Makefile.am, man/hfst-calculate.1, man/hfst-compare.1,
-	  man/hfst-compose-intersect.1, man/hfst-compose.1,
-	  man/hfst-concatenate.1, man/hfst-conjunct.1,
-	  man/hfst-determinize.1, man/hfst-disjunct.1, man/hfst-fst2fst.1,
-	  man/hfst-fst2strings.1, man/hfst-fst2txt.1, man/hfst-head.1,
-	  man/hfst-intersect.1, man/hfst-invert.1, man/hfst-minimize.1,
-	  man/hfst-proc.1, man/hfst-project.1, man/hfst-push-weights.1,
-	  man/hfst-regexp2fst.1, man/hfst-remove-epsilons.1,
-	  man/hfst-repeat.1, man/hfst-reverse.1, man/hfst-split.1,
-	  man/hfst-strings2fst.1, man/hfst-subtract.1,
-	  man/hfst-summarize.1, man/hfst-tail.1, man/hfst-txt2fst.1,
-	  man/hfst-xfst-compiler.1, man/hfst-xfst.1: * intersect has been
-	  called conjunct since forever
-	  * move external links in SEE ALSO
-
-2010-12-20 22:05  mie
-
-	* libhfst/src/Makefile.am, libhfst/src/coding-style.sh: enforce
-	  coding style in make check :-)
-
-2010-12-20 14:55  eaxelson
-
-	* Doxyfile, api_documentation.dox,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstNet.h,
-	  libhfst/src/implementations/new-ConvertTransducerFormat.cc: File
-	  new-ConvertTransducerFormat.cc added, it will soon replace
-	  ConvertTransducerFormat.cc
-
-2010-12-20 06:04  mie
-
-	* test/tools/compare-functionality.sh,
-	  test/tools/permutate-file-params.sh: testing results of parameter
-	  vcombinations
-
-2010-12-20 05:09  mie
-
-	* man/hfst-lexc.1, scripts/Makefile.am, scripts/hfst-lexc,
-	  scripts/hfst-xfst, test/tools/Makefile.am,
-	  test/tools/lexc-functionality.sh: add hfst-lexc script
-
-2010-12-20 04:27  mie
-
-	* man/Makefile.am, man/hfst-foma-wrapper.1,
-	  man/hfst-tool.1.template, man/hfst-xfst.1,
-	  scripts/hfst-foma-wrapper.sh.in, scripts/hfst-xfst,
-	  test/tools/Makefile.am: Update xfst/foma scripts
-
-2010-12-19 12:28  eaxelson
-
-	* libhfst/src/implementations/HfstNet.h: Added a substitute
-	  function to class HfstNet.
-
-2010-12-17 15:26  eaxelson
-
-	* libhfst/src/implementations/HfstNet.h: HfstNet.h has now a
-	  function write_in_att_format
-
-2010-12-17 14:30  eaxelson
-
-	* libhfst/src/implementations/HfstNet.h: HfstNet.h updated and
-	  tested.
-
-2010-12-17 10:26  eaxelson
-
-	* libhfst/src/implementations/HfstInternalTransducer.h,
-	  libhfst/src/implementations/HfstNet.h: Added file HfstNet.h that
-	  will soon replace file HfstInternalTransducer.h.
-
-2010-12-16 22:37  mie
-
-	* libhfst/src/implementations/HfstInternalTransducer.cc: Fix
-	  internal tests
-
-2010-12-16 16:36  eaxelson
-
-	* libhfst/src/implementations/HfstInternalTransducer.h:
-	  HfstInternalTransducer_ updated.
-
-2010-12-16 16:19  eaxelson
-
-	* Doxyfile, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.h: A new
-	  HfstInternalTransducer class HfstInternalTransducer_ added.
-
-2010-12-16 10:00  eaxelson
-
-	* libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.h: class
-	  HfstTransition changed to struct HfstTransition
-
-2010-12-16 09:38  eaxelson
-
-	* Doxyfile, api_documentation.dox, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h: A bug in
-	  converting empty transducers between internal and OpenFst's
-	  formats fixed.
-
-2010-12-16 07:20  mie
-
-	* libhfst/src/HfstTransducer.cc: use #if's on backend specific code
-
-2010-12-15 13:27  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.h,
-	  libhfst/src/implementations/LogFstTrieFunctions.cc,
-	  libhfst/src/implementations/LogFstTrieFunctions.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-	  LogFstTrieFunctions .cc and .h removed and their functions moved
-	  to LogWeightTransducer .cc and .h and copied also to
-	  TropicalWeightTransducer .cc and .h
-
-2010-12-14 16:09  eaxelson
-
-	* libhfst/src/ExtractStrings.h, libhfst/src/FlagDiacritics.cc,
-	  libhfst/src/FlagDiacritics.h, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstExceptions.h, libhfst/src/HfstExtractStrings.h,
-	  libhfst/src/HfstFlagDiacritics.cc,
-	  libhfst/src/HfstFlagDiacritics.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstMutableTransducer.h,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstSymbolDefs.cc,
-	  libhfst/src/HfstSymbolDefs.h, libhfst/src/HfstTokenizer.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am, libhfst/src/SymbolDefs.cc,
-	  libhfst/src/SymbolDefs.h, libhfst/src/apply_schemas.h,
-	  libhfst/src/extensions/LexcCompiler.cc,
-	  libhfst/src/hfst_apply_schemas.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstInternalTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/MfstlTransducer.cc,
-	  libhfst/src/implementations/MfstlTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/HfstCompiler.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-proc/lookup-path.h, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-summarize.cc, tools/src/test.cc: Files renamed and
-	  deleted.
-
-2010-12-13 17:11  eaxelson
-
-	* api_documentation.dox, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstMutableTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.h: Including
-	  headers should now work correctly. Doxygen documentation also
-	  added.
-
-2010-12-13 07:18  mie
-
-	* libhfst/src/extensions/LexcCompiler.cc,
-	  test/tools/lexc-compiler-functionality.sh: The minimal lexc
-	  compiler functionality tests and minor fixes to compilation
-	  formula
-
-2010-12-13 05:46  mie
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/MfstlTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc:
-	  implementations unit tests
-
-2010-12-13 03:27  mie
-
-	* libhfst/src/extensions/LexcCompiler.cc,
-	  libhfst/src/extensions/LexcCompiler.h,
-	  libhfst/src/extensions/Makefile.am,
-	  libhfst/src/extensions/XfstCompiler.cc,
-	  libhfst/src/extensions/XfstCompiler.h,
-	  libhfst/src/extensions/XreCompiler.cc,
-	  libhfst/src/extensions/XreCompiler.h,
-	  libhfst/src/extensions/xre_utils.cc,
-	  libhfst/src/extensions/xre_utils.h: Add unit tests for extensions
-
-2010-12-13 03:16  mie
-
-	* libhfst/src/HfstInputStream.cc: don't test default input stream
-	  since it requires stdin
-
-2010-12-11 07:00  mie
-
-	* libhfst/src/FlagDiacritics.cc, libhfst/src/HfstTokenizer.cc:
-	  EXIT_* needs cstdlib on newere gcc's/glibc's
-
-2010-12-11 05:08  mie
-
-	* libhfst/src/FlagDiacritics.cc, libhfst/src/HfstAlphabet.cc,
-	  libhfst/src/HfstGrammar.cc, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/Makefile.am: main interface unit tests 3/6
-
-2010-12-10 21:58  mie
-
-	* libhfst/src/HfstTransducer.cc, test/tools/Makefile.am: It's a
-	  verbose test suite
-
-2010-12-10 16:53  eaxelson
-
-	* tools/src/hfst-strings2fst.cc: hfst-strings2fst now tokenizes
-	  multicharacter symbols
-
-2010-12-10 16:01  eaxelson
-
-	* tools/src/hfst-strings2fst.cc: A bug in hfst-strings2fst with
-	  (not pairstrings && not spaces) fixed.
-
-2010-12-10 15:39  eaxelson
-
-	* Doxyfile, api_documentation.dox, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.h,
-	  libhfst/src/implementations/MfstlTransducer.h,
-	  new_library/MyFst.cc, new_library/MyFst.h,
-	  tools/src/hfst-strings2fst.cc: hfst-strings2fst now uses the
-	  internal trie transducer format and converts to the format
-	  requested before writing the output. This should make
-	  hfst-strings2fst faster.
-
-2010-12-10 11:22  eaxelson
-
-	* api_documentation.dox: Documentation added.
-
-2010-12-10 10:41  eaxelson
-
-	* configure.ac, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/MfstlTransducer.cc,
-	  libhfst/src/implementations/MfstlTransducer.h, new_library,
-	  new_library/Makefile, new_library/MyFst.cc, new_library/MyFst.h,
-	  new_library/README, new_library/test.cc: Added a simple example
-	  transducer library, MFSTL, that can be included by command
-	  './configure --with-mfstl=true'
-
-2010-12-09 17:52  eaxelson
-
-	* configure.ac, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FooTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-strings2fst.cc: An
-	  implementation type FOO_TYPE added for testing, by default it is
-	  not included in HFST.
-
-2010-12-09 13:00  mie
-
-	* test/tools/Makefile.am, test/tools/lookup-functionality.sh,
-	  tools/src/hfst-lookup.cc: Fix lookup_printf and test it
-
-2010-12-08 16:55  eaxelson
-
-	* libhfst/src/HfstInputStream.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Reading
-	  hfst version 2 transducers whose implementation type is OpenFst
-	  should work now.
-
-2010-12-08 15:38  eaxelson
-
-	* Doxyfile, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstTransducer.h: Documentation added. A bug in hfst
-	  version 2 transducer handling detected, fixing started.
-
-2010-12-08 03:32  mie
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/Makefile.am: Full-ish
-	  HfstTransducer unit test
-
-2010-12-07 15:09  eaxelson
-
-	* Doxyfile, libhfst/src/HfstTransducer.h, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-strings2fst.cc: A bug in hfst-strings2fst fixed,
-	  now the newline character is discarded before converting the
-	  weight string into a float. More Doxygen documentation also
-	  added.
-
-2010-12-07 10:55  hardwick
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Lookup
-	  implemented for optimized-lookup API with new style headers,
-	  though hfst-lookup doesn't print anything due to commented-out
-	  printing
-	  function (it seems to break when I uncomment it..?)
-
-2010-12-07 01:01  mie
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/Makefile.am: This
-	  could be unit test
-
-2010-12-04 16:58  eaxelson
-
-	* libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/HfstTransducer.h, tools/src/hfst-lookup.cc:
-	  hfst-lookup should now work correctly for transducers having
-	  epsilon input cycles. Also added some documentation.
-
-2010-12-04 04:17  mie
-
-	* tools/src/hfst-commandline.cc: fix more of mac os x getline
-	  substitute
-
-2010-12-04 03:56  mie
-
-	* test/tools/empty-input.sh: skip hfst-proc dir for empty input tst
-
-2010-12-03 22:44  mie
-
-	* man/Makefile.am, man/hfst-foma-wrapper.1,
-	  man/hfst-xfst-compiler.1, man/hfst-xfst.1: Revert man
-	  bootstrapping stuff and add stubs for rest of the tools
-
-2010-12-03 22:39  mie
-
-	* libhfst/src/extensions/LexcCompiler.cc: add set and use zu for
-	  size_t prints
-
-2010-12-03 18:12  moshagen
-
-	* tools/src: New item to ignore.
-
-2010-12-03 14:31  eaxelson
-
-	* tools/src/hfst-lookup.cc: hfst-lookup fixed, still allows too
-	  many cycles although limits the results to a finite number
-
-2010-12-03 10:52  eaxelson
-
-	* man/hfst-calculate.1, man/hfst-compare.1,
-	  man/hfst-compose-intersect.1, man/hfst-compose.1,
-	  man/hfst-concatenate.1, man/hfst-determinize.1,
-	  man/hfst-disjunct.1, man/hfst-fst2fst.1, man/hfst-fst2strings.1,
-	  man/hfst-fst2txt.1, man/hfst-head.1, man/hfst-invert.1,
-	  man/hfst-minimize.1, man/hfst-project.1, man/hfst-push-weights.1,
-	  man/hfst-regexp2fst.1, man/hfst-remove-epsilons.1,
-	  man/hfst-repeat.1, man/hfst-reverse.1, man/hfst-split.1,
-	  man/hfst-strings2fst.1, man/hfst-subtract.1,
-	  man/hfst-summarize.1, man/hfst-tail.1, man/hfst-txt2fst.1,
-	  tools/src/hfst-lexc-compiler.cc, tools/src/hfst-lookup.cc: A bug
-	  in hfst-lexc-compiler fixed, still some errors in help2man and
-	  tool tests.
-
-2010-12-03 10:01  eaxelson
-
-	* libhfst/src/HfstExceptions.cc, tools/src/hfst-lookup.cc: File
-	  added.
-
-2010-12-02 15:14  eaxelson
-
-	* libhfst/src/HfstExceptions.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FooTransducer.h,
-	  tools/src/hfst-compare.cc, tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2strings.cc,
-	  tools/src/hfst-lookup.cc, tools/src/hfst-split.cc: Outputs of
-	  help commands of commandline tools fixed.
-
-2010-11-30 13:57  eaxelson
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  tools/src/hfst-format.cc: A bug in
-	  HfstTransducer(StringPairVector&, type==FOMA_TYPE) fixed.
-
-2010-11-30 11:35  moshagen
-
-	* libhfst/src/extensions: More files to ignore.
-
-2010-11-30 09:32  hardwick
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: A
-	  version of infinitely_ambiguous (necessary for at least lookup)
-
-2010-11-30 09:30  hardwick
-
-	* tools/src/hfst-lookup.cc: Removed conditional compilation guards
-	  from non-template
-	  lookup-performing function (which way do we want it to be?)
-
-2010-11-30 01:58  mie
-
-	* configure.ac, tools/src/hfst-commandline.cc: enable lexc, missing
-	  ) added
-
-2010-11-29 19:13  hardwick
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Some
-	  additional HFST_OL functionality
-
-2010-11-29 17:29  mie
-
-	* man/Makefile.am, man/hfst-calculate.1, man/hfst-compare.1,
-	  man/hfst-compose-intersect.1, man/hfst-compose.1,
-	  man/hfst-concatenate.1, man/hfst-determinize.1,
-	  man/hfst-diff-test.1, man/hfst-disjunct.1, man/hfst-fst2fst.1,
-	  man/hfst-fst2pairstrings.1, man/hfst-fst2strings.1,
-	  man/hfst-fst2txt.1, man/hfst-head.1, man/hfst-invert.1,
-	  man/hfst-lexc-compiler.1, man/hfst-lookup.1, man/hfst-minimize.1,
-	  man/hfst-pair-test.1, man/hfst-proc.1, man/hfst-project.1,
-	  man/hfst-push-weights.1, man/hfst-regexp2fst.1,
-	  man/hfst-remove-epsilons.1, man/hfst-repeat.1,
-	  man/hfst-reverse.1, man/hfst-split.1, man/hfst-strings2fst.1,
-	  man/hfst-subtract.1, man/hfst-summarize.1, man/hfst-tail.1,
-	  man/hfst-txt2fst.1, man/hfst-unweighted2weighted.1,
-	  man/hfst-weighted2unweighted.1: Update man pages for release :-)
-
-2010-11-29 17:26  eaxelson
-
-	* test/tools/Makefile.am, test/tools/compose-functionality.sh,
-	  test/tools/compose-intersect-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh,
-	  test/tools/fst2strings-functionality.sh,
-	  test/tools/fst2txt-functionality.sh,
-	  test/tools/head-functionality.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/regexp2fst-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/strings2fst-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/subtract-functionality.sh,
-	  test/tools/summarize-functionality.sh,
-	  test/tools/summarize_test2.txt, test/tools/tail-functionality.sh,
-	  test/tools/txt2fst-functionality.sh, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-program-options.cc: Tests added.
-
-2010-11-29 16:30  hardwick
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Some
-	  fixes to make the right names defined down the line, plus
-	  a first attempt at the lookup API
-
-2010-11-29 16:12  hardwick
-
-	* libhfst/src/FlagDiacritics.h,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Lookup
-	  for hfst_ol in hfst3
-
-2010-11-26 15:31  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/implementations/FooTransducer.h: More documentation
-	  added.
-
-2010-11-25 17:08  eaxelson
-
-	* Doxyfile, libhfst/src/ExtractStrings.h,
-	  libhfst/src/FlagDiacritics.h, libhfst/src/HfstAlphabet.h,
-	  libhfst/src/HfstApply.cc, libhfst/src/HfstBasic.h,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstExceptions.h,
-	  libhfst/src/HfstGrammar.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstMutableTransducer.h,
-	  libhfst/src/HfstOutputStream.h, libhfst/src/HfstTokenizer.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/HfstUtf8.h, libhfst/src/SymbolDefs.h,
-	  libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/FooTransducer.h,
-	  libhfst/src/implementations/HfstInternalTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LogFstTrieFunctions.h,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightComposeIntersect.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Files
-	  documented, a skeleton file added for adding a new backend
-	  implementation
-
-2010-11-25 14:29  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  tools/src/HfstCompiler.cc: Files renamed
-
-2010-11-25 14:21  eaxelson
-
-	* libhfst/src/implementations/HfstInternalTransducer.cc,
-	  libhfst/src/implementations/HfstInternalTransducer.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h:
-
-2010-11-25 13:20  eaxelson
-
-	* libhfst/src/FlagDiacritics.cc, libhfst/src/FlagDiacritics.h,
-	  libhfst/src/HfstAlphabet.cc, libhfst/src/HfstAlphabet.h,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/FlagDiacritics.cc,
-	  libhfst/src/implementations/FlagDiacritics.h,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/HfstAlphabet.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/HfstCompiler.h, tools/src/hfst-proc/lookup-path.h: Now
-	  libhfst/src/implementations contains files that modify backend
-	  transducers directly and libhfst/src other files
-
-2010-11-25 12:47  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstInputStream.h, libhfst/src/HfstTokenizer.cc,
-	  libhfst/src/HfstTokenizer.h, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/Makefile.am: Files moved
-
-2010-11-25 11:41  eaxelson
-
-	* libhfst/src/ExtractStrings.h, libhfst/src/HfstDataTypes.h,
-	  libhfst/src/HfstExceptions.h, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Files
-	  moved
-
-2010-11-25 06:39  moshagen
-
-	* .: More things to ignore.
-
-2010-11-25 05:53  moshagen
-
-	* scripts/Makefile.am, scripts/hfst-foma-wrapper.sh.in,
-	  scripts/hfst-xfst: Set executable bit + line endings.
-
-2010-11-25 05:30  moshagen
-
-	* scripts: Ignore generated files.
-
-2010-11-25 00:59  mie
-
-	* Makefile.am, configure.ac, scripts, scripts/Makefile.am,
-	  scripts/hfst-foma-wrapper.sh.in, scripts/hfst-xfst: Fake
-	  hfst-xfst using foma-wrapper hacks
-
-2010-11-24 18:15  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/Makefile.am, tools/src/HfstCompiler.cc,
-	  tools/src/HfstCompiler.h, tools/src/Makefile.am: HfstCompiler.cc
-	  and HfstCompiler.h added to tools/src/
-
-2010-11-24 17:59  eaxelson
-
-	* libhfst/src/HfstBasic.cc, libhfst/src/HfstBasic.h,
-	  libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/HfstUtf8.cc,
-	  libhfst/src/HfstUtf8.h, libhfst/src/Makefile.am,
-	  libhfst/src/SymbolDefs.cc, libhfst/src/SymbolDefs.h,
-	  libhfst/src/extensions/Makefile.am,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/GlobalSymbolTable.cc,
-	  libhfst/src/implementations/GlobalSymbolTable.h,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SymbolDefs.cc,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-scanner.ll: Files moved.
-
-2010-11-24 14:58  eaxelson
-
-	* tools/src/hfst-lookup.cc: hfst-lookup updated, handling flag
-	  diacritics and multiple paths with the same weights not yet
-	  implemented
-
-2010-11-24 13:23  eaxelson
-
-	* tools/src/hfst-lookup.cc: hfst-lookup no works on unweighted
-	  acyclic transducers
-
-2010-11-24 08:42  moshagen
-
-	* tools/src: Ignore compiled binary tools.
-
-2010-11-24 08:02  mie
-
-	* tools/src/hfst-commandline.cc: set type after exiting error for
-	  mac compiler
-
-2010-11-24 02:27  mie
-
-	* tools/src/hfst-txt2fst.cc: Fix -o handling
-
-2010-11-23 17:44  eaxelson
-
-	* libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  tools/src/hfst-lookup.cc: hfst-lookup implementation continued,
-	  works not yet
-
-2010-11-23 16:37  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  test/tools/format-functionality.sh, tools/src/hfst-format.cc,
-	  tools/src/hfst-lookup.cc: beginning to implement hfst-lookup
-
-2010-11-22 14:44  hardwick
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc:
-	  Recover from make-breaking stupid mistake
-
-2010-11-22 14:37  hardwick
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h: Standardization
-	  of HfstOlTransducer's iostreams
-
-2010-11-22 13:26  eaxelson
-
-	* Doxyfile, libhfst/src/HfstCompiler.cc,
-	  libhfst/src/HfstCompiler.h, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/SymbolDefs.h: just testing that
-	  everything works
-
-2010-11-22 08:08  moshagen
-
-	* libhfst/src/extensions: Ignore generated items.
-
-2010-11-22 01:54  mie
-
-	* configure.ac, libhfst/src/HfstCompiler.cc,
-	  libhfst/src/HfstDataTypes.h, libhfst/src/HfstGrammar.cc,
-	  libhfst/src/HfstGrammar.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstInputStream.h,
-	  libhfst/src/HfstMutableTransducer.h,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstOutputStream.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am, libhfst/src/extensions/LexcCompiler.cc,
-	  libhfst/src/extensions/LexcCompiler.h,
-	  libhfst/src/extensions/Makefile.am,
-	  libhfst/src/extensions/XfstCompiler.cc,
-	  libhfst/src/extensions/XfstCompiler.h,
-	  libhfst/src/extensions/XreCompiler.cc,
-	  libhfst/src/extensions/XreCompiler.h,
-	  libhfst/src/extensions/lexc-lexer.ll,
-	  libhfst/src/extensions/lexc-parser.yy,
-	  libhfst/src/extensions/lexc-utils.cc,
-	  libhfst/src/extensions/lexc-utils.h,
-	  libhfst/src/extensions/xfst-lexer.ll,
-	  libhfst/src/extensions/xfst-parser.yy,
-	  libhfst/src/extensions/xfst-utils.cc,
-	  libhfst/src/extensions/xfst-utils.h,
-	  libhfst/src/extensions/xre_lex.ll,
-	  libhfst/src/extensions/xre_parse.yy,
-	  libhfst/src/extensions/xre_utils.cc,
-	  libhfst/src/extensions/xre_utils.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LexcCompiler.cc,
-	  libhfst/src/implementations/LexcCompiler.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/XfstCompiler.cc,
-	  libhfst/src/implementations/XfstCompiler.h,
-	  libhfst/src/implementations/XreCompiler.cc,
-	  libhfst/src/implementations/XreCompiler.h,
-	  libhfst/src/implementations/lexc-lexer.ll,
-	  libhfst/src/implementations/lexc-parser.yy,
-	  libhfst/src/implementations/lexc-utils.cc,
-	  libhfst/src/implementations/lexc-utils.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  libhfst/src/implementations/xfst-lexer.ll,
-	  libhfst/src/implementations/xfst-parser.yy,
-	  libhfst/src/implementations/xfst-utils.cc,
-	  libhfst/src/implementations/xfst-utils.h,
-	  libhfst/src/implementations/xre_lex.ll,
-	  libhfst/src/implementations/xre_parse.yy,
-	  libhfst/src/implementations/xre_utils.cc,
-	  libhfst/src/implementations/xre_utils.h, test/libhfst/test.cc,
-	  test/tools/empty-input.sh, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-commandline.h, tools/src/hfst-compare.cc,
-	  tools/src/hfst-compose-intersect.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-determinize.cc, tools/src/hfst-disjunct.cc,
-	  tools/src/hfst-format.cc, tools/src/hfst-fst2fst.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-fst2txt.cc,
-	  tools/src/hfst-head.cc, tools/src/hfst-invert.cc,
-	  tools/src/hfst-lookup.cc, tools/src/hfst-minimize.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-remove-epsilons.cc,
-	  tools/src/hfst-repeat.cc, tools/src/hfst-reverse.cc,
-	  tools/src/hfst-split.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-subtract.cc,
-	  tools/src/hfst-summarize.cc, tools/src/hfst-tail.cc,
-	  tools/src/hfst-txt2fst.cc: Clean up few minor details
-
-2010-11-18 15:08  eaxelson
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/HfstTokenizer.h: Documentation added.
-
-2010-11-17 14:48  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/SymbolDefs.h: More documentation
-	  added, exceptions divided into subclasses.
-
-2010-11-17 09:31  eaxelson
-
-	* Doxyfile, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h: Documentation
-	  added.
-
-2010-11-17 00:16  mie
-
-	* libhfst/src/implementations/SfstTransducer.cc,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-lookup.cc: Catch stuff to provide meaningful error
-	  messages, provide better error replacement
-
-2010-11-16 14:22  eaxelson
-
-	* Doxyfile, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-compare.cc, tools/src/hfst-strings2fst.cc: Small
-	  changes done, documentation added.
-
-2010-11-15 05:18  mie
-
-	* configure.ac, libhfst/src/HfstTransducer.h,
-	  tools/src/Makefile.am, tools/src/hfst-lookup.cc: Lookup and
-	  related functions
-
-2010-11-14 22:49  mie
-
-	* tools/src/hfst-commandline.cc: Update string_to_format and some
-	  polishing
-
-2010-11-11 14:25  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.h: A
-	  bug in reading transducers with old header format fixed.
-
-2010-11-11 11:54  eaxelson
-
-	* Doxyfile, libhfst/src/HfstApply.cc, libhfst/src/HfstCompiler.cc,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-compiler.yy:
-	  harmonization function optimized
-
-2010-11-11 06:12  moshagen
-
-	* .: Ignore ChangeLog, it is generated.
-
-2010-11-10 23:41  mie
-
-	* configure.ac, tools/src/hfst-commandline.h: don't use bsd err
-	  functions
-
-2010-11-10 13:23  mie
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  return paths even if !HAVE_SFST
-
-2010-11-10 13:14  mie
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/xre_utils.cc: using std::map, have
-	  SFST stuff ifdef'd
-
-2010-11-08 14:08  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-compiler.yy: A name field added to hfst header.
-	  Doxygen documentation updated.
-
-2010-11-05 14:02  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-commandline.h: HfstInputStream changed
-
-2010-11-03 15:28  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h: Missing restriction
-	  rule operators added.
-
-2010-11-03 13:53  moshagen
-
-	* tools/src, tools/src/hfst-proc: Ignore generated source and
-	  binary files.
-
-2010-11-03 12:40  eaxelson
-
-	* libhfst/src/HfstRules.cc: A bug in HfstRules fixed. FEXPORT must
-	  be added in front of foma functions 'sigma_create', 'xxmalloc'
-	  and 'sigma_max' in file fomalibconf.h until new version of foma
-	  is released.
-
-2010-11-01 14:44  eaxelson
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.h, test/tools/split-functionality.sh,
-	  tools/src/hfst-compose-intersect.cc: A bug in HFST header
-	  handling fixed. Todo: update HFST code to work with the newest
-	  version of SFST.
-
-2010-11-01 08:56  moshagen
-
-	* libhfst/src/implementations,
-	  libhfst/src/implementations/optimized-lookup: Ignore more
-	  generated items.
-
-2010-10-31 23:52  mie
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/LexcCompiler.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  tools/src/hfst-lexc-compiler.cc: Fix lexc compiler
-
-2010-10-31 12:28  mie
-
-	* README: Detail GNU bison version and feature requirements
-
-2010-10-31 12:22  mie
-
-	* libhfst/src/implementations/lexc-parser.yy,
-	  libhfst/src/implementations/xfst-parser.yy,
-	  libhfst/src/implementations/xre_parse.yy: Use obsolete syntax for
-	  name-prefix to support slightly older bisons
-
-2010-10-29 15:57  mie
-
-	* configure.ac: More checks for backend installation sanity§
-
-2010-10-29 15:40  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-xfst-compiler.cc: Make compiler tools dependent on
-	  relevant features in library
-
-2010-10-29 15:39  mie
-
-	* README: Also include current foma diffs
-
-2010-10-29 14:50  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  libhfst/src/implementations/xre_parse.yy,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-compare.cc,
-	  tools/src/hfst-compose.cc, tools/src/hfst-concatenate.cc,
-	  tools/src/hfst-conjunct.cc, tools/src/hfst-determinize.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-fst2fst.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-fst2txt.cc,
-	  tools/src/hfst-head.cc, tools/src/hfst-invert.cc,
-	  tools/src/hfst-minimize.cc, tools/src/hfst-project.cc,
-	  tools/src/hfst-push-weights.cc, tools/src/hfst-regexp2fst.cc,
-	  tools/src/hfst-remove-epsilons.cc, tools/src/hfst-repeat.cc,
-	  tools/src/hfst-reverse.cc, tools/src/hfst-split.cc,
-	  tools/src/hfst-strings2fst.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-subtract.cc, tools/src/hfst-tail.cc,
-	  tools/src/hfst-txt2fst.cc, tools/src/hfst-xfst-compiler.cc:
-	  Function open() removed from HfstInputStream and
-	  HfstOutputStream. HFST transducer header structure changed.
-
-2010-10-29 12:04  moshagen
-
-	* ., libhfst/src/implementations/optimized-lookup, tools/src,
-	  tools/src/hfst-proc: Ignore generated items.
-
-2010-10-29 11:56  moshagen
-
-	* README: Added MacOS X notes.
-
-2010-10-28 21:36  mie
-
-	* libhfst/src/implementations/SFST,
-	  libhfst/src/implementations/foma: Remove bundled foma and SFST
-
-2010-10-28 16:37  mie
-
-	* configure.ac, games, games/src, tools/src/Makefile.am:
-	  Mergefail→delete duplicate lines
-
-2010-10-28 16:15  mie
-
-	* libhfst/src/implementations/LexcCompiler.cc,
-	  libhfst/src/implementations/LexcCompiler.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/XfstCompiler.cc,
-	  libhfst/src/implementations/XfstCompiler.h,
-	  libhfst/src/implementations/XreCompiler.cc,
-	  libhfst/src/implementations/XreCompiler.h,
-	  libhfst/src/implementations/xfst-lexer.ll,
-	  libhfst/src/implementations/xfst-parser.yy,
-	  libhfst/src/implementations/xfst-utils.cc,
-	  libhfst/src/implementations/xfst-utils.h,
-	  libhfst/src/implementations/xre_parse.yy,
-	  libhfst/src/implementations/xre_utils.cc,
-	  libhfst/src/implementations/xre_utils.h, tools/src/Makefile.am,
-	  tools/src/hfst-xfst-compiler.cc: Add preliminary xfst compiler
-	  for offline compilation of static files
-
-2010-10-28 11:02  mie
-
-	* autogen.sh: Add autogen.sh for problematic oses and systems
-
-2010-10-28 10:35  mie
-
-	* AUTHORS, NEWS, README: Document library backend requirements
-
-2010-10-28 09:58  mie
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-summarize.cc: add replacement strndup and
-	  error_at_line for mac again
-
-2010-10-21 13:06  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/tools/Makefile.am,
-	  test/tools/compose-intersect-functionality.sh: commandline tool
-	  hfst-compose-intersect and test added
-
-2010-10-20 14:17  eaxelson
-
-	* configure.ac, libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  test/tools/Makefile.am, test/tools/calculate-functionality.sh,
-	  test/tools/format-functionality.sh, tools/src/Makefile.am,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-format.cc,
-	  tools/src/inc/getopt-cases-common.h: more tests added to tools,
-	  SFST_TYPE transducer header now has an optional field that tells
-	  if the transducer is minimal
-
-2010-10-19 12:14  eaxelson
-
-	* configure.ac, libhfst/src/implementations/SfstTransducer.cc,
-	  test/tools/Makefile.am, test/tools/calculate-functionality.sh,
-	  test/tools/head-functionality.sh,
-	  test/tools/push-weights-functionality.sh,
-	  test/tools/split-functionality.sh,
-	  test/tools/tail-functionality.sh, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-split.cc: more tests added to test/tools and small
-	  bugs fixed in commandline programs
-
-2010-10-18 15:28  eaxelson
-
-	* libhfst/src/HfstCompiler.h, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstOutputStream.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/Makefile.am, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-summarize.cc: HfstInputStream and HfstOutputStream
-	  now work correctly with tropical and log weight transducers if
-	  their file argument is an empty string
-
-2010-10-14 13:37  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Alphabet
-	  definition in HfstCompiler is now not done through internal
-	  format when using SfstTransducers. This optimization makes
-	  hfst-calculate slightly faster.
-
-2010-10-13 14:56  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: tropical
-	  transducer harmonization code optimized
-
-2010-10-13 12:57  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Moved the
-	  #endif to the actual correct place...
-
-2010-10-13 12:06  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc: Moved
-	  #endif to correct place. Suggestion: when there's a lot of
-	  distance
-	  between #if and #endif, consider placing a comment after #endif
-	  to indicate
-	  what it's ending (emacs can't figure it out).
-
-2010-10-13 11:59  hardwick
-
-	* libhfst/src/implementations/ConvertTransducerFormat.h: Removed
-	  obsolete definitions
-
-2010-10-12 14:06  eaxelson
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc:
-	  transducer harmonization code optimized
-
-2010-10-11 15:55  eaxelson
-
-	* libhfst/src/HfstCompiler.cc,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-
-2010-10-11 10:39  eaxelson
-
-	* libhfst/src/HfstBasic.cc, libhfst/src/HfstBasic.h,
-	  libhfst/src/HfstUtf8.cc, libhfst/src/HfstUtf8.h: missing files
-	  added
-
-2010-10-08 14:32  eaxelson
-
-	* libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-
-2010-10-06 15:32  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-	  HfstCompiler's code optimized
-
-2010-10-04 13:53  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  tools/src/hfst-compiler.yy:
-
-2010-10-01 12:24  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-	  replace_in_context's code optimized
-
-2010-09-30 15:37  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc:
-
-2010-09-29 16:04  eaxelson
-
-	* libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/FomaTransducer.cc:
-
-2010-09-29 13:26  eaxelson
-
-	* libhfst/src/HfstCompiler.cc,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h: Class
-	  'HfstTrie' added for quick disjunction of words in hfst-calculate
-
-2010-09-28 14:52  eaxelson
-
-	* libhfst/src/HfstCompiler.cc,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/SfstTransducer.cc: reading words from
-	  a file should now be faster in hfst-calculate
-
-2010-09-27 14:15  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/HfstAlphabet.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-scanner.ll:
-
-2010-09-24 14:13  eaxelson
-
-	* libhfst/src/HfstCompiler.cc:
-
-2010-09-23 14:44  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/InternalTransducer.cc: a bug in
-	  hfst-calculate's 'make_mapping' fixed
-
-2010-09-22 15:36  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-scanner.ll: now
-	  hfst-calculate does not unnecessarily handle unknown symbols in
-	  composition
-
-2010-09-21 14:38  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/HfstAlphabet.h,
-	  libhfst/src/implementations/InternalTransducer.cc: A bug in
-	  alphabet definition in hfst-calculate fixed. It seems that
-	  handling unknown and identity symbols in composition is very slow
-	  for some reason.
-
-2010-09-20 14:11  eaxelson
-
-	* libhfst/src/HfstRules.cc,
-	  libhfst/src/implementations/HfstAlphabet.cc: A bug in
-	  HfstCompiler::complement_range fixed
-
-2010-09-17 14:58  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  tools/src/hfst-compiler.yy: HfstCompiler::new_transducer is now
-	  faster
-
-2010-09-15 15:39  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  test/libhfst/test.cc, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-fst2txt.cc, tools/src/hfst-summarize.cc: some bugs
-	  in command line programs fixed
-
-2010-09-14 13:54  eaxelson
-
-	* configure.ac, libhfst/src/HfstInputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  test/tools/fst2txt-functionality.sh, tools/src/hfst-fst2txt.cc,
-	  tools/src/hfst-summarize.cc: some bugs fixed in tests and hfst
-	  library
-
-2010-09-14 11:27  eaxelson
-
-	* test/tools/2to4cats.txt, test/tools/4_cats.txt,
-	  test/tools/4cats.txt: 4cats.txt now contains a transducer
-	  accepting 4 consecutive 'cat's, and 4_cats.txt contains 4
-	  consecutive transducers that each accept 'cat'.
-
-2010-09-13 14:42  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstRules.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-txt2fst.cc: a bug in
-	  function 'harmonize' fixed
-
-2010-09-10 14:22  moshagen
-
-	* ., tools/src, tools/src/hfst-proc: Ignore generated autotools
-	  stuff.
-
-2010-09-10 12:17  mie
-
-	* tools/src/Makefile.am, tools/src/inc/getopt-cases-unary.h: Commit
-	  missing inputNamed
-
-2010-09-08 15:14  eaxelson
-
-	* configure.ac, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/xre_utils.cc,
-	  libhfst/src/implementations/xre_utils.h: hfst now compiles with
-	  all combinations of available backend libraries
-
-2010-09-07 11:58  eaxelson
-
-	* libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h:
-
-2010-09-06 18:46  mie
-
-	* libhfst/hfst.pc.in, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-scanner.ll: Make
-	  --without-foma work
-
-2010-09-06 13:13  hardwick
-
-	* tools/src/hfst-optimized-lookup.cc,
-	  tools/src/hfst-optimized-lookup.h: optimized-lookup bigfix wrt
-	  weights in flagged transducers
-
-2010-09-02 15:36  eaxelson
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SymbolDefs.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/Makefile.am: Function HfstTransducer::push_weights
-	  added. Foma is now dynamically linked to hfst, option
-	  -fvisibility must not be used when compiling foma, because then
-	  some of foma's functions will not be visible to hfst.
-
-2010-09-02 13:20  mie
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.h:
-	  Tentatively implement HFST 2 format
-
-2010-09-01 01:55  mie
-
-	* tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-split.cc,
-	  tools/src/hfst-txt2fst.cc, tools/src/inc/check-params-common.h,
-	  tools/src/inc/check-params-unary.h,
-	  tools/src/inc/getopt-cases-binary.h,
-	  tools/src/inc/getopt-cases-common.h,
-	  tools/src/inc/getopt-cases-unary.h,
-	  tools/src/inc/globals-binary.h, tools/src/inc/globals-common.h,
-	  tools/src/inc/globals-unary.h: move things around
-
-2010-08-31 22:56  mie
-
-	* libhfst/src/HfstTransducer.h, test/tools/c_a_t.strings,
-	  test/tools/strings2fst-functionality.sh,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-strings2fst.cc: Add
-	  space separated strings2fst; parse - as filename in hfst_fopen
-
-2010-08-31 15:37  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/HfstAlphabet.h,
-	  libhfst/src/implementations/SFST/src/alphabet.C,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  tools/src/hfst-compiler.yy: hfst now works without making any
-	  changes in sfst files
-
-2010-08-29 22:36  mie
-
-	* configure.ac,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  tools/src/hfst-compose-intersect.cc,
-	  tools/src/hfst-lexc-compiler.cc: Configuring out broken parts
-
-2010-08-29 18:19  mie
-
-	* Makefile.am, configure.ac,
-	  libhfst/src/implementations/LexcCompiler.cc,
-	  libhfst/src/implementations/LexcCompiler.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/lexc-lexer.ll,
-	  libhfst/src/implementations/lexc-parser.yy,
-	  libhfst/src/implementations/lexc-utils.cc,
-	  libhfst/src/implementations/lexc-utils.h,
-	  tools/src/LexcCompiler.cc, tools/src/LexcCompiler.h,
-	  tools/src/Makefile.am, tools/src/hfst-lexc-compiler.cc: Add
-	  preliminary lexc compiler
-
-2010-08-29 17:18  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  tools/src/hfst-summarize.cc: HfstMutableTransducer defined in
-	  namespace hfst, small bugs fixed in TropicalWeightTransducer
-
-2010-08-29 12:13  eaxelson
-
-	* libhfst/src/HfstTransducer.cc: unknown and identity symbols are
-	  now handled correctly in composition
-
-2010-08-28 18:38  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/HfstAlphabet.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  tools/src/hfst-summarize.cc: HfstMutableTransducer replaced with
-	  HfstInternalTransducer
-
-2010-08-28 14:11  mie
-
-	* libhfst/src/implementations/XreCompiler.h: Document the XRE
-	  compiler
-
-2010-08-28 10:11  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h: functions that
-	  read and write in AT&T format now use HfstInternalFormat
-
-2010-08-27 16:17  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-scanner.ll: some
-	  modifications made to HfstInternalTransducer
-
-2010-08-26 14:14  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h: freely_insert and
-	  substitute functions now do not depend on any specific library.
-	  They must still be tested.
-
-2010-08-25 14:49  eaxelson
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/InternalTransducer.cc,
-	  libhfst/src/implementations/InternalTransducer.h: some functions
-	  added to HfstInternalTransducer
-
-2010-08-25 11:36  mie
-
-	* configure.ac, libhfst/src/extensions,
-	  libhfst/src/implementations/xre_lex.ll,
-	  libhfst/src/implementations/xre_utils.cc: invert XRE autoconf
-	  logic
-
-2010-08-25 11:14  eaxelson
-
-	* libhfst/src/implementations/HfstAlphabet.cc,
-	  libhfst/src/implementations/HfstAlphabet.h,
-	  libhfst/src/implementations/InternalTransducer.cc: missing files
-	  added
-
-2010-08-25 10:45  eaxelson
-
-	* libhfst/src/HfstCompiler.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h:
-	  conversions between internal transducers and sfst, tropical and
-	  foma transducers implemented
-
-2010-08-25 00:54  mie
-
-	* configure.ac, libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/XreCompiler.cc,
-	  libhfst/src/implementations/XreCompiler.h,
-	  libhfst/src/implementations/xre_lex.ll,
-	  libhfst/src/implementations/xre_parse.yy,
-	  libhfst/src/implementations/xre_utils.cc,
-	  libhfst/src/implementations/xre_utils.h, test/tools/Makefile.am,
-	  test/tools/cats_and_dogs.xre,
-	  test/tools/regexp2fst-functionality.sh,
-	  tools/src/hfst-regexp2fst.cc: Enable XRE parser
-
-2010-08-24 14:24  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SFST/src/fst.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/Makefile.am: conversions between SFST and internal
-	  transducers added
-
-2010-08-23 23:25  mie
-
-	* tools/src/hfst-summarize.cc: summarize more statistics
-
-2010-08-23 16:59  mie
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.h: Wrap
-	  backends around autoconf have_
-
-2010-08-23 16:26  mie
-
-	* configure.ac, tools/src/hfst-compose-intersect.cc: Enable basic
-	  compose-intersect again; no flags, no #'s
-
-2010-08-23 14:07  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/InternalTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/Makefile.am: HFST code updated so that it works with
-	  OpenFst version 1.2. New internal transducer format added.
-
-2010-08-22 22:58  mie
-
-	* configure.ac,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-commandline.h, tools/src/hfst-fst2strings.cc: fix
-	  signs when wno-sign-compare fails
-
-2010-08-22 22:56  mie
-
-	* tools/src/hfst-proc/Makefile, tools/src/hfst-proc/Makefile.in,
-	  tools/src/hfst-proc/hfst-proc: Delete generated files
-
-2010-08-19 15:47  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/Makefile.am, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-scanner.ll: Now hfst-calculate does not depend on
-	  SFST.
-
-2010-08-18 13:43  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  tools/src/hfst-compiler.yy: hfst-calculate now does not depend on
-	  SFST, function implementations not yet written
-
-2010-08-16 15:54  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-proc/Makefile,
-	  tools/src/hfst-proc/hfst-proc: a bug in substitute(StringPair,
-	  HfstTransducer) fixed, agreement variables added to
-	  hfst-calculate
-
-2010-08-15 18:28  bcroom
-
-	* test/tools/Makefile.am, test/tools/hfst-check-help.sh,
-	  test/tools/hfst-check-version.sh, test/tools/proc-caps.txt,
-	  test/tools/proc-cat-out.strings,
-	  test/tools/proc-cat-weighted-out.strings,
-	  test/tools/proc-functionality.sh: Add some functionality tests
-	  for hfst-proc
-
-2010-08-15 18:27  bcroom
-
-	* tools/src/hfst-proc.cc, tools/src/hfst_proc.cc,
-	  tools/src/hfst_proc.h: Remove obsolete source files of hfst-proc
-	  predecessors
-
-2010-08-15 18:27  bcroom
-
-	* test/tools/proc-caps-in.strings,
-	  test/tools/proc-caps-out1.strings,
-	  test/tools/proc-caps-out2.strings,
-	  test/tools/proc-caps-out3.strings,
-	  test/tools/proc-caps-out4.strings, test/tools/proc-caps.txt,
-	  tools/src/hfst-proc/lookup-path.cc: Fix bug causing final weights
-	  not to be included in weight calculations
-
-2010-08-15 18:26  bcroom
-
-	* tools/src/hfst-proc/flag-diacritics.cc,
-	  tools/src/hfst-proc/flag-diacritics.h,
-	  tools/src/hfst-proc/transducer.h: Remove obsolete flag diacritics
-	  code from hfst-proc
-
-2010-08-15 18:25  bcroom
-
-	* libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  tools/src/hfst-proc/alphabet.cc, tools/src/hfst-proc/alphabet.h,
-	  tools/src/hfst-proc/applicators.cc,
-	  tools/src/hfst-proc/applicators.h,
-	  tools/src/hfst-proc/formatter.cc,
-	  tools/src/hfst-proc/formatter.h,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/hfst-proc.h,
-	  tools/src/hfst-proc/lookup-path.cc,
-	  tools/src/hfst-proc/lookup-path.h,
-	  tools/src/hfst-proc/lookup-state.cc,
-	  tools/src/hfst-proc/lookup-state.h,
-	  tools/src/hfst-proc/tokenizer.cc,
-	  tools/src/hfst-proc/tokenizer.h,
-	  tools/src/hfst-proc/transducer.cc,
-	  tools/src/hfst-proc/transducer.h: Add license information to
-	  hfst-proc and optimized-lookup files
-
-2010-08-15 18:24  bcroom
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Modify
-	  the extract_strings algorithm to avoid the non-standard
-	  std::vector::data() for older GCCs
-
-2010-08-15 18:24  bcroom
-
-	* configure.ac, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/FlagDiacritics.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h,
-	  man/Makefile.am, man/hfst-proc.1, tools/src/Makefile.am,
-	  tools/src/hfst-proc, tools/src/hfst-proc/Makefile,
-	  tools/src/hfst-proc/Makefile.am, tools/src/hfst-proc/Makefile.in,
-	  tools/src/hfst-proc/alphabet.cc, tools/src/hfst-proc/alphabet.h,
-	  tools/src/hfst-proc/applicators.cc,
-	  tools/src/hfst-proc/applicators.h, tools/src/hfst-proc/buffer.h,
-	  tools/src/hfst-proc/flag-diacritics.cc,
-	  tools/src/hfst-proc/flag-diacritics.h,
-	  tools/src/hfst-proc/formatter.cc,
-	  tools/src/hfst-proc/formatter.h, tools/src/hfst-proc/hfst-proc,
-	  tools/src/hfst-proc/hfst-proc.cc,
-	  tools/src/hfst-proc/hfst-proc.h,
-	  tools/src/hfst-proc/lookup-path.cc,
-	  tools/src/hfst-proc/lookup-path.h,
-	  tools/src/hfst-proc/lookup-state.cc,
-	  tools/src/hfst-proc/lookup-state.h,
-	  tools/src/hfst-proc/tokenizer.cc,
-	  tools/src/hfst-proc/tokenizer.h,
-	  tools/src/hfst-proc/transducer.cc,
-	  tools/src/hfst-proc/transducer.h: Perform initial migration of
-	  hfst-proc into its new home in the proper HFST tools directory,
-	  while refactoring to share as much code as possible with the
-	  optimized-lookup library backend
-
-2010-08-15 18:22  bcroom
-
-	* tools/src/hfst-fst2strings.cc: Add 'exclude' option to
-	  hfst-fst2strings
-
-2010-08-13 14:32  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h:
-
-2010-08-13 08:39  mpsilfve
-
-	* libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Fixed
-	  memory leaks in harmonize
-
-2010-08-13 08:00  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/TropicalWeightComposeIntersect.cc,
-	  libhfst/src/implementations/TropicalWeightComposeIntersect.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Added
-	  libhfst/src/implementations/TropicalWeightComposeIntersect.h and
-	  libhfst/src/implementations/TropicalWeightComposeIntersect.cc
-
-2010-08-12 16:45  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/SFST/src/alphabet.C,
-	  libhfst/src/implementations/SFST/src/interface.C,
-	  libhfst/src/implementations/SFST/src/interface.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/SymbolDefs.cc,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-compiler.yy: Composition can soon handle identity
-	  and unknown symbols correctly. Substitute can now also modify
-	  symbol pairs through a function pointer.
-
-2010-08-12 06:06  bcroom
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-fst2strings.cc: Refactor extract_strings to invoke
-	  a callback on paths, allowing neat features in hfst-fst2strings
-
-2010-08-12 06:06  bcroom
-
-	* AUTHORS, THANKS: Credit self in AUTHORS
-
-2010-08-10 15:04  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/SFST/src/Makefile,
-	  libhfst/src/implementations/SFST/src/Socket.h,
-	  libhfst/src/implementations/SFST/src/Transducer.h,
-	  libhfst/src/implementations/SFST/src/alphabet.C,
-	  libhfst/src/implementations/SFST/src/alphabet.h,
-	  libhfst/src/implementations/SFST/src/basic.C,
-	  libhfst/src/implementations/SFST/src/basic.h,
-	  libhfst/src/implementations/SFST/src/compact.C,
-	  libhfst/src/implementations/SFST/src/compact.h,
-	  libhfst/src/implementations/SFST/src/default-scanner.C,
-	  libhfst/src/implementations/SFST/src/default-scanner.ll,
-	  libhfst/src/implementations/SFST/src/determinise.C,
-	  libhfst/src/implementations/SFST/src/expand.C,
-	  libhfst/src/implementations/SFST/src/fst-compact.C,
-	  libhfst/src/implementations/SFST/src/fst-compare.C,
-	  libhfst/src/implementations/SFST/src/fst-compiler.C,
-	  libhfst/src/implementations/SFST/src/fst-compiler.yy,
-	  libhfst/src/implementations/SFST/src/fst-generate.C,
-	  libhfst/src/implementations/SFST/src/fst-infl.C,
-	  libhfst/src/implementations/SFST/src/fst-infl2-daemon.C,
-	  libhfst/src/implementations/SFST/src/fst-infl2.C,
-	  libhfst/src/implementations/SFST/src/fst-infl3.C,
-	  libhfst/src/implementations/SFST/src/fst-lattice.C,
-	  libhfst/src/implementations/SFST/src/fst-lowmem.C,
-	  libhfst/src/implementations/SFST/src/fst-match.C,
-	  libhfst/src/implementations/SFST/src/fst-mor.C,
-	  libhfst/src/implementations/SFST/src/fst-parse.C,
-	  libhfst/src/implementations/SFST/src/fst-parse2.C,
-	  libhfst/src/implementations/SFST/src/fst-print.C,
-	  libhfst/src/implementations/SFST/src/fst-text2bin.C,
-	  libhfst/src/implementations/SFST/src/fst-train.C,
-	  libhfst/src/implementations/SFST/src/fst.C,
-	  libhfst/src/implementations/SFST/src/fst.h,
-	  libhfst/src/implementations/SFST/src/generate.C,
-	  libhfst/src/implementations/SFST/src/interface.C,
-	  libhfst/src/implementations/SFST/src/interface.h,
-	  libhfst/src/implementations/SFST/src/lowmem.C,
-	  libhfst/src/implementations/SFST/src/lowmem.h,
-	  libhfst/src/implementations/SFST/src/make-compact.C,
-	  libhfst/src/implementations/SFST/src/make-compact.h,
-	  libhfst/src/implementations/SFST/src/mem.h,
-	  libhfst/src/implementations/SFST/src/operators.C,
-	  libhfst/src/implementations/SFST/src/robust.C,
-	  libhfst/src/implementations/SFST/src/scanner.ll,
-	  libhfst/src/implementations/SFST/src/utf8-scanner.ll,
-	  libhfst/src/implementations/SFST/src/utf8.C,
-	  libhfst/src/implementations/SFST/src/utf8.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  tools/src/hfst-compiler.yy: SFST updated to new test version,
-	  some modifications still needed to HFST library so that it will
-	  work with the new version
-
-2010-08-09 19:31  mie
-
-	* tools/src/hfst-substitute.cc: error_at_line for parsing errors
-
-2010-08-09 19:15  mie
-
-	* tools/src/hfst-substitute.cc: Allow empty lines and comment lines
-	  starting with # except when followed
-	  by a tab.
-
-2010-08-09 18:49  mie
-
-	* configure.ac, test/tools/Makefile.am,
-	  test/tools/summarize-functionality.sh, tools/src/Makefile.am,
-	  tools/src/hfst-summarize.cc: Add the basic summarize
-	  functionality and the test
-
-2010-08-06 14:49  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstRules.cc, tools/src/hfst-compiler.yy: rule
-	  operators added to hfst-calculate
-
-2010-08-06 09:50  mie
-
-	* test/tools/Makefile.am, test/tools/fst2txt-functionality.sh,
-	  test/tools/substitute-functionality.sh,
-	  test/tools/txt2fst-functionality.sh: More functionlaity tests
-
-2010-08-06 06:43  bcroom
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SFST/src/fst.h,
-	  libhfst/src/implementations/SFST/src/generate.C,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-fst2strings.cc: Reimplement extract_strings in all
-	  backends with cycle-limiting functionality
-
-2010-08-05 23:00  mie
-
-	* test/tools/Makefile.am, test/tools/cat2dog.substitute,
-	  tools/src/hfst-substitute.cc: substitute and test
-
-2010-08-05 16:29  mie
-
-	* test/tools/Makefile.am, test/tools/empty-input.sh,
-	  test/tools/fst2strings-functionality.sh: Add test for fst2stings
-
-2010-08-05 15:04  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstTransducer.h, tools/src/hfst-compiler.yy: more
-	  functions added to hfst-calculate
-
-2010-08-05 12:28  mie
-
-	* test/tools/empty-input.sh: Ubuntu (dash?) workaround
-
-2010-08-05 12:27  mie
-
-	* tools/src/hfst-commandline.h, tools/src/hfst-strings2fst.cc,
-	  tools/src/inc/check-params-unary.h: Make string pair
-	  implementation work
-
-2010-08-05 07:26  mie
-
-	* ., man, test/tools, tools/src: Ignore generated files§
-
-2010-08-05 07:17  mie
-
-	* tools/src/LexcCompiler.cc, tools/src/LexcCompiler.h,
-	  tools/src/hfst-lexc-compiler.cc: Add lexc compiler's old skeleton
-
-2010-08-05 00:34  bcroom
-
-	* libhfst/src/implementations/SFST/src/generate.C: Reverse how the
-	  upper and lower strings are stored during string extraction in
-	  the SFST backend
-
-2010-08-05 00:34  bcroom
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h: Implement string
-	  extraction in the optimized-lookup backend
-
-2010-08-05 00:34  bcroom
-
-	* libhfst/src/HfstInputStream.cc: Fix a compiler warning about
-	  missing a return statement
-
-2010-08-05 00:34  bcroom
-
-	* libhfst/src/implementations/FlagDiacritics.h: Remove debug output
-	  that should never have been committed
-
-2010-08-04 22:01  bcroom
-
-	* libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h: Fix
-	  calculation of several header properties during conversion
-
-2010-08-04 17:46  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  tools/src/hfst-compiler.yy: more functions added to
-	  hfst-calculate
-
-2010-08-04 14:28  mie
-
-	* doc/transducer-representations-formats.rst: Start a document on
-	  formats
-
-2010-08-04 11:25  mie
-
-	* test/tools/Makefile.am, test/tools/cat.strings,
-	  test/tools/strings2fst-functionality.sh,
-	  tools/src/hfst-strings2fst.cc: test strings2fst and fail
-
-2010-08-03 22:37  mie
-
-	* libhfst/src/HfstTransducer.cc: Rollback bogus repeat throw
-
-2010-08-02 22:04  mie
-
-	* libhfst/src/HfstTransducer.cc: comment out broken repeats
-
-2010-08-02 20:53  mie
-
-	* test/tools/Makefile.am, test/tools/permutate-file-params.sh,
-	  tools/src/hfst-conjunct.cc, tools/src/inc/check-params-binary.h,
-	  tools/src/inc/getopt-cases-binary.h,
-	  tools/src/inc/globals-binary.h: Fix bug in binary op parameter
-	  handling and add test for it
-
-2010-08-02 18:55  mie
-
-	* test/tools/project-functionality.sh: Invert upper and lower to
-	  follow upside-down terminology of HFST
-
-2010-08-02 18:54  mie
-
-	* tools/src/Makefile.am, tools/src/hfst-commandline.h,
-	  tools/src/hfst-program-options.h, tools/src/hfst-project.cc,
-	  tools/src/inc/check-params-unary.h,
-	  tools/src/inc/getopt-cases-error.h: Fix no parameters parsing for
-	  unary tools and project
-
-2010-08-02 16:55  mie
-
-	* test/tools/Makefile.am, test/tools/compare-functionality.sh,
-	  test/tools/compose-functionality.sh,
-	  test/tools/concatenate-functionality.sh,
-	  test/tools/conjunct-functionality.sh,
-	  test/tools/determinize-functionality.sh,
-	  test/tools/disjunct-functionality.sh,
-	  test/tools/invert-functionality.sh,
-	  test/tools/minimize-functionality.sh,
-	  test/tools/project-functionality.sh,
-	  test/tools/remove-epsilons-functionality.sh,
-	  test/tools/repeat-functionality.sh,
-	  test/tools/reverse-functionality.sh,
-	  test/tools/subtract-functionality.sh: Test basic algebra
-
-2010-08-02 15:38  mie
-
-	* test/tools/Makefile.am, test/tools/compare-functionality.sh,
-	  test/tools/concatenate-functionality.sh: functionality test for
-	  concatenate
-
-2010-08-02 15:15  mie
-
-	* test/tools/0to3cats.txt, test/tools/2to4cats.txt,
-	  test/tools/4cats.txt, test/tools/4toINFcats.txt,
-	  test/tools/CAT_uppercased.txt, test/tools/CAT_uppercased2cat.txt,
-	  test/tools/Makefile.am, test/tools/cat+dog.txt,
-	  test/tools/cat.txt, test/tools/cat2CAT_uppercased.txt,
-	  test/tools/cat2cat_or_CAT_uppercased.txt, test/tools/cat2dog.txt,
-	  test/tools/cat_or_dog.txt, test/tools/cat_weight_final.txt,
-	  test/tools/cat_weight_initial.txt,
-	  test/tools/cat_weight_middle.txt, test/tools/catdog.txt,
-	  test/tools/dog.txt, test/tools/dog2cat.txt,
-	  test/tools/infinitely_ambiguous.txt, test/tools/non_minimal.txt,
-	  test/tools/rule1.txt, test/tools/rule2.txt,
-	  test/tools/summarize_test1.txt, test/tools/summarize_test2.txt,
-	  test/tools/tac.txt: Add text based transducers for functionality
-	  tests
-
-2010-08-02 15:12  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-substitute.cc, tools/src/hfst-summarize.cc,
-	  tools/src/hfst-txt2fst.cc: Fix fst2strings to use
-	  set_program_name and rest of the basic tools
-
-2010-08-02 14:38  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/implementations/SFST/src/alphabet.C,
-	  libhfst/src/implementations/SFST/src/interface.C,
-	  libhfst/src/implementations/SFST/src/interface.h,
-	  tools/src/Makefile.am, tools/src/hfst-compiler.yy,
-	  tools/src/hfst-scanner.ll: small changes done in functions that
-	  are needed for hfst-calculate
-
-2010-08-02 14:07  mie
-
-	* test/tools/Makefile.am, test/tools/empty-file,
-	  test/tools/empty-input.sh: Check handling of empty input file for
-	  all tools
-
-2010-08-01 20:39  mie
-
-	* configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-commandline.cc: Default to -Wall -Wextra -Werror
-	  for developers
-
-2010-08-01 19:31  mie
-
-	* configure.ac, tools/src/hfst-commandline.h,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-txt2fst.cc,
-	  tools/src/inc/globals-common.h, tools/src/inc/globals-unary.h:
-	  Convert txt2fst;
-	  * use const for global char-*
-	  * default stdin, stdout for global FILE*
-
-2010-08-01 18:39  bcroom
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FlagDiacritics.cc,
-	  libhfst/src/implementations/FlagDiacritics.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SFST/src/fst.h,
-	  libhfst/src/implementations/SFST/src/generate.C,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/src/hfst-fst2strings.cc: Add initial support for evaluating
-	  and filtering flag diacritics when extracting transducer paths
-
-2010-08-01 18:38  bcroom
-
-	* libhfst/src/implementations/FlagDiacritics.cc,
-	  libhfst/src/implementations/FlagDiacritics.h,
-	  libhfst/src/implementations/Makefile.am: Add a class for dealing
-	  with flag diacritics in string extraction
-
-2010-08-01 18:38  bcroom
-
-	* configure.ac, tools/src/hfst-fst2strings.cc: Port and enable
-	  fst2strings
-
-2010-08-01 18:37  bcroom
-
-	* libhfst/src/HfstTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h: Hook up is_cyclic
-	  for the optimized-lookup backend
-
-2010-07-28 12:01  mie
-
-	* tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-project.cc: Use warn and err if warnc, errc, error
-	  are not available
-
-2010-07-28 11:35  mie
-
-	* Makefile.am, configure.ac, lib, m4/gnulib-cache.m4,
-	  man/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-binary-tool.cc, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-commandline.h, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-program-options.cc,
-	  tools/src/hfst-subtract.cc, tools/src/inc/globals-common.h:
-	  Instead of gnulib-tool, handle gnulib manually
-
-2010-07-27 01:41  mie
-
-	* tools/src/inc/check-params-unary.h: Missing file
-
-2010-07-27 01:30  mie
-
-	* m4/gnulib-cache.m4: Gnulib weirdness?
-
-2010-07-27 01:15  mie
-
-	* HACKING, configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-binary-tool.cc, tools/src/hfst-commandline.cc,
-	  tools/src/hfst-commandline.h, tools/src/hfst-common-cases.h,
-	  tools/src/hfst-common-options.h,
-	  tools/src/hfst-common-unary-cases.h,
-	  tools/src/hfst-common-unary-options.h,
-	  tools/src/hfst-common-unary-variables.h,
-	  tools/src/hfst-compare.cc, tools/src/hfst-compose.cc,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-conjunct.cc,
-	  tools/src/hfst-determinize.cc, tools/src/hfst-diff-test.cc,
-	  tools/src/hfst-disjunct.cc, tools/src/hfst-flag-diacritics.cc,
-	  tools/src/hfst-fst2fst.cc, tools/src/hfst-fst2pairstrings.cc,
-	  tools/src/hfst-fst2strings.cc, tools/src/hfst-fst2txt.cc,
-	  tools/src/hfst-head.cc, tools/src/hfst-invert.cc,
-	  tools/src/hfst-lookup-optimize.cc, tools/src/hfst-lookup.cc,
-	  tools/src/hfst-minimize.cc, tools/src/hfst-omor-evaluate.cc,
-	  tools/src/hfst-proc.cc, tools/src/hfst-program-options.cc,
-	  tools/src/hfst-project.cc, tools/src/hfst-push-weights.cc,
-	  tools/src/hfst-regexp2fst.cc, tools/src/hfst-remove-epsilons.cc,
-	  tools/src/hfst-repeat.cc, tools/src/hfst-reverse.cc,
-	  tools/src/hfst-split.cc, tools/src/hfst-strings2fst.cc,
-	  tools/src/hfst-strip-header.cc, tools/src/hfst-substitute.cc,
-	  tools/src/hfst-subtract.cc, tools/src/hfst-summarize.cc,
-	  tools/src/hfst-symbols.cc, tools/src/hfst-tail.cc,
-	  tools/src/hfst-txt2fst.cc, tools/src/hfst-unary-tool.cc,
-	  tools/src/inc/binary-check-params.h,
-	  tools/src/inc/check-params-binary.h,
-	  tools/src/inc/check-params-common.h,
-	  tools/src/inc/common-check-params.h,
-	  tools/src/inc/getopt-cases-common.h,
-	  tools/src/inc/getopt-cases-error.h,
-	  tools/src/inc/getopt-cases-unary.h,
-	  tools/src/inc/globals-unary.h: Convert some simpler command line
-	  tools to HFST3 (preliminary)
-
-2010-07-26 12:05  mie
-
-	* Makefile.am, configure.ac, lib, lib/Makefile.am,
-	  lib/arg-nonnull.h, lib/c++defs.h, lib/errno.in.h, lib/error.c,
-	  lib/error.h, lib/exitfail.c, lib/exitfail.h, lib/getdelim.c,
-	  lib/getline.c, lib/getopt.c, lib/getopt.h, lib/getopt.in.h,
-	  lib/getopt1.c, lib/getopt_int.h, lib/gettext.h, lib/intprops.h,
-	  lib/inttypes.h, lib/inttypes.in.h, lib/memchr.c,
-	  lib/memchr.valgrind, lib/progname.c, lib/progname.h,
-	  lib/realloc.c, lib/stdarg.in.h, lib/stdbool.in.h,
-	  lib/stddef.in.h, lib/stdint.h, lib/stdint.in.h,
-	  lib/stdio-write.c, lib/stdio.h, lib/stdio.in.h, lib/stdlib.h,
-	  lib/stdlib.in.h, lib/strerror.c, lib/string.h, lib/string.in.h,
-	  lib/strndup.c, lib/strnlen.c, lib/unistd.h, lib/unistd.in.h,
-	  lib/warn-on-use.h, lib/wchar.h, lib/wchar.in.h, lib/xalloc-die.c,
-	  lib/xalloc.h, lib/xmalloc.c, lib/xprintf.c, lib/xprintf.h,
-	  lib/xstrndup.c, lib/xstrndup.h, lib/xstrtod.c, lib/xstrtod.h,
-	  lib/xstrtol-error.c, lib/xstrtol.c, lib/xstrtol.h,
-	  lib/xstrtoul.c, test/tools/Makefile.am, tools/src/Makefile.am,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-common-cases.h, tools/src/hfst-common-options.h,
-	  tools/src/hfst-common-unary-cases.h,
-	  tools/src/hfst-common-unary-options.h,
-	  tools/src/hfst-concatenate.cc, tools/src/hfst-program-options.cc,
-	  tools/src/hfst-program-options.h, tools/src/inc,
-	  tools/src/inc/binary-check-params.h,
-	  tools/src/inc/common-check-params.h,
-	  tools/src/inc/getopt-cases-binary.h,
-	  tools/src/inc/getopt-cases-error.h,
-	  tools/src/inc/globals-binary.h, tools/src/inc/globals-common.h:
-	  Perhaps gnulib for portability problems? Temp. disabled few
-	  tools.
-
-2010-07-25 00:46  mie
-
-	* configure.ac, test/Makefile.am, test/tools/Makefile.am,
-	  test/tools/hfst-check-help.sh, test/tools/hfst-check-version.sh:
-	  Few sample tests for tools in automated tests
-
-2010-07-25 00:04  mie
-
-	* libhfst/m4, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/Makefile.am,
-	  libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/GlobalSymbolTable.cc,
-	  libhfst/src/implementations/GlobalSymbolTable.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/LogFstTrieFunctions.cc,
-	  libhfst/src/implementations/LogFstTrieFunctions.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/SymbolDefs.cc,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  tools/Makefile.am, tools/m4, tools/src/calculate_functions.h,
-	  tools/src/hfst-commandline.cc, tools/src/hfst-commandline.h,
-	  tools/src/hfst-common-cases.h, tools/src/hfst-common-options.h,
-	  tools/src/hfst-common-unary-cases.h,
-	  tools/src/hfst-common-unary-options.h,
-	  tools/src/hfst-common-unary-variables.h: Include licensing blurb
-	  in every single file since it's very important
-
-2010-07-24 23:37  mie
-
-	* HACKING, README, configure.ac, tools/Makefile.am: Update docs a
-	  bit
-
-2010-07-22 00:14  mie
-
-	* Makefile.am, configure.ac, libhfst/Makefile.am,
-	  libhfst/configure.ac, libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/foma/determinize.c,
-	  tools/Makefile.am, tools/configure.ac: First steps towards
-	  unbundling backend libraries
-
-2010-07-17 07:40  bcroom
-
-	* libhfst/src/implementations/optimized-lookup/convert.cc: Remove
-	  debug output inadvertently left enabled
-
-2010-07-17 07:39  bcroom
-
-	* libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Fix
-	  sign-problem causing format-guessing for OFST transducers to fail
-
-2010-07-16 20:52  bcroom
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/optimized-lookup/convert.cc,
-	  libhfst/src/implementations/optimized-lookup/convert.h,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h: Add
-	  support for converting to the HFST optimized-lookup format
-
-2010-07-14 19:45  bcroom
-
-	* tools/src/hfst-fst2fst.cc: Add support for the
-	  HFST-optimized-lookup implementation in the tool for format
-	  conversion
-
-2010-07-14 19:45  bcroom
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstOutputStream.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h: Add
-	  support for the new implementation in the interface files
-
-2010-07-14 19:45  bcroom
-
-	* libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: Modify
-	  the semantics of the InputStream function is_good in the OFST
-	  implementations to match those in the SFST and foma
-	  implementations
-
-2010-07-14 19:44  bcroom
-
-	* libhfst/src/implementations/Makefile.am: Update makefile for
-	  building the new backend
-
-2010-07-14 19:44  bcroom
-
-	* libhfst/src/implementations/ConvertTransducerFormat.cc,
-	  libhfst/src/implementations/ConvertTransducerFormat.h: Add
-	  conversion HFST-optimized-lookup -> OFST Tropical Weight
-
-2010-07-14 19:44  bcroom
-
-	* libhfst/src/implementations/HfstOlTransducer.cc,
-	  libhfst/src/implementations/HfstOlTransducer.h: Initial commit of
-	  bridge classes for the HFST-optimized-lookup backend
-
-2010-07-14 19:43  bcroom
-
-	* libhfst/src/implementations/optimized-lookup,
-	  libhfst/src/implementations/optimized-lookup/transducer.cc,
-	  libhfst/src/implementations/optimized-lookup/transducer.h:
-	  Initial commit of an HFST-optimized-lookup backend
-
-2010-07-05 06:24  bcroom
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Add
-	  is_cyclic to the transducer API and implementations
-
-2010-07-03 05:21  bcroom
-
-	* tools/configure.ac, tools/src/Makefile.am,
-	  tools/src/hfst-strip-header.cc: Add hfst-strip-header tool for
-	  removing any HFST3 headers from a file
-
-2010-07-03 05:13  bcroom
-
-	* tools/src/hfst-compare.cc: Port hfst-compare to the new library
-
-2010-07-03 05:11  bcroom
-
-	* tools/src/hfst-fst2fst.cc: Pass the correct output type when
-	  creating the output stream
-
-2010-07-02 11:49  eaxelson
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/HfstTokenizer.h:
-
-2010-06-30 14:28  bcroom
-
-	* tools/configure.ac, tools/src/hfst-fst2txt.cc: Port hfst-fst2txt
-
-2010-06-30 14:27  bcroom
-
-	* tools/src/hfst-concatenate.cc, tools/src/hfst-fst2fst.cc,
-	  tools/src/hfst-invert.cc: Fix the already-ported tools to
-	  properly handle IO using the standard streams
-
-2010-06-30 13:27  bcroom
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.h: Add
-	  ability to read the type of the first transducer in an
-	  HfstInputStream without first having created a transducer from it
-
-2010-06-30 12:53  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  tools/src/hfst-compiler.yy:
-
-2010-06-30 11:31  eaxelson
-
-	* libhfst/src/HfstCompiler.cc, libhfst/src/HfstCompiler.h,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SFST/src/Makefile,
-	  libhfst/src/implementations/SFST/src/interface.C,
-	  tools/src/hfst-compiler.yy: HfstCompiler class added
-
-2010-06-29 04:22  bcroom
-
-	* tools/src/hfst-fst2fst.cc: Fix fst2fst to correctly handle inputs
-	  with multiple transducers
-
-2010-06-29 04:21  bcroom
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.h:
-	  Teach HfstInputStream how to deal with inputs containing multiple
-	  transducers, of which none have HFST3 headers
-
-2010-06-29 03:46  bcroom
-
-	* tools/configure.ac, tools/src/hfst-invert.cc: Port hfst-invert to
-	  HFST3
-
-2010-06-28 19:53  bcroom
-
-	* tools/configure.ac, tools/src/hfst-fst2fst.cc: Port hfst-fst2fst
-	  to work with HFST3
-
-2010-06-28 19:51  bcroom
-
-	* libhfst/src/HfstInputStream.cc, libhfst/src/HfstTransducer.h: Add
-	  support in HfstInputStream for loading transducers lacking the
-	  HFST3 header
-
-2010-06-28 19:50  bcroom
-
-	* libhfst/src/implementations/FomaTransducer.cc: Make foma
-	  transducer type guesser able to detect non-gzipped transducers as
-	  well
-
-2010-06-28 19:48  bcroom
-
-	* tools/src/hfst-concatenate.cc: Add call to open the output stream
-	  so the tool doesn't crash
-
-2010-06-28 14:50  bcroom
-
-	* libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Add
-	  static methods to the InputStream implementations allowing to
-	  check whether a FILE* or istream contains a transducer of a give
-	  type
-
-2010-06-28 14:29  bcroom
-
-	* tools/src/hfst-commandline.cc: Remove HFST2 include from file
-	  with helper functions for tools
-
-2010-06-28 13:51  eaxelson
-
-	* configure.ac, libhfst/src/HfstTransducer.h,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/SFST/src/Makefile,
-	  libhfst/src/implementations/SFST/src/hfst-compiler.yy,
-	  tools/src/hfst-compiler.yy, tools/src/hfst-scanner.ll:
-	  hfst-calculate files updated to hfst version 3. At the moment,
-	  hfst-calculate only parses single transition expressions and
-	  produces a dummy transducer as a result.
-
-2010-06-24 13:00  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SFST/src/hfst-compiler.yy,
-	  libhfst/src/implementations/SFST/src/operators.C,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/libhfst/test.cc: anonymous transducer constructors added
-
-2010-06-18 10:26  mpsilfve
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h:
-	  Added HfstTransducer &operator=(const HfstTransducer &)
-
-2010-06-15 12:49  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/SFST/src/hfst-compiler.yy,
-	  test/libhfst/test.cc: hfst-compiler.yy added
-
-2010-06-14 14:32  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/libhfst/test.cc: more rule operator functions implemented
-
-2010-06-10 19:13  eaxelson
-
-	* libhfst/src/HfstRules.cc, test/libhfst/test.cc:
-
-2010-06-10 18:03  eaxelson
-
-	* libhfst/src/HfstRules.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/Makefile.am,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/libhfst/test.cc: 'HfstRules.cc' added.
-
-2010-06-09 14:43  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: rule
-	  functions added
-
-2010-06-08 19:42  mie
-
-	* doc/xerox-flag-diacritics.rst: stub for flag diacritic support
-	  doc
-
-2010-06-04 14:30  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/SymbolDefs.h: documentation added
-
-2010-06-03 15:01  eaxelson
-
-	* libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc: more
-	  Doxygen documentation added
-
-2010-06-03 12:47  moshagen
-
-	* libhfst/src/implementations/SFST/src,
-	  libhfst/src/implementations/foma: More files to ignore.
-
-2010-06-03 11:36  mie
-
-	* libhfst/src/implementations/HfstTokenizer.cc: Convert binary
-	  integers to decimal for old gcc support (OS X)
-
-2010-06-03 08:31  moshagen
-
-	* README: Tried to make the autoreconf text a bit clearer.
-
-2010-06-03 08:18  moshagen
-
-	* m4, tools/m4: Ignore the content of the m4 dirs, it is generated
-	  (by autoreconf -i, see the README file).
-
-2010-06-03 08:17  moshagen
-
-	* libhfst, libhfst/m4: The m4 dir needs to be in svn, otherwise
-	  autoreconf -i will bail out. The content of that dir can be
-	  ignored.
-
-2010-06-03 07:47  moshagen
-
-	* doc: Ignore generated files.
-
-2010-06-02 14:33  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/libhfst/test.cc: ImplementationType parameters removed from
-	  most functions
-
-2010-06-02 12:14  mie
-
-	* libhfst/configure.ac,
-	  libhfst/src/implementations/ConvertTransducerFormat.h,
-	  libhfst/src/implementations/LogFstTrieFunctions.h,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.h: Require
-	  fst/fstlib.h as <fst/fstlib.h> and include as such.
-
-2010-06-02 11:56  mie
-
-	* Makefile.am, configure.ac, libhfst/Makefile.am,
-	  libhfst/configure.ac, libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/openfst-1.1, tools/configure.ac: *
-	  Remove openfst from source directory because bundling Apache
-	  licenced
-	  software with GNU GPL softare is a bad thing
-	  * Add licence disclaimers to auxiliary files because FSF suggests
-	  so
-
-2010-05-31 15:23  eaxelson
-
-	* Doxyfile, libhfst/src/HfstApply.cc,
-	  libhfst/src/HfstTransducer.cc, libhfst/src/HfstTransducer.h,
-	  libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/SFST/src/generate.C,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  test/libhfst/test.cc: documentation added
-
-2010-05-27 14:34  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstExceptions.h,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SFST/src/expand.C,
-	  libhfst/src/implementations/SFST/src/fst.h,
-	  libhfst/src/implementations/SFST/src/generate.C,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/SymbolDefs.cc,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/libhfst/test.cc: Documentation and type handling added, some
-	  problems in type conversion.
-
-2010-05-26 11:19  mie
-
-	* libhfst/src/implementations/Makefile.am: add ofst include dir for
-	  compilation
-
-2010-05-26 10:59  mie
-
-	* configure.ac, libhfst/src/implementations/SFST/src/sgi.h,
-	  tools/configure.ac: sgi.h is visible outside libhfst
-
-2010-05-26 10:11  mie
-
-	* libhfst/configure.ac, libhfst/src/implementations/SFST/src/sgi.h:
-	  Work around problems with missing hash
-
-2010-05-26 06:11  mie
-
-	* Makefile.am, configure.ac, doc/Makefile.am: Add extra doc stuff
-	  to build tree
-
-2010-05-25 16:34  eaxelson
-
-	* libhfst/src/HfstTransducer.h,
-	  libhfst/src/implementations/ExtractStrings.h: more doxygen
-	  documentation added
-
-2010-05-25 14:21  eaxelson
-
-	* libhfst/src/HfstApply.cc, libhfst/src/HfstTransducer.cc,
-	  libhfst/src/HfstTransducer.h, libhfst/src/apply_schemas.h,
-	  libhfst/src/implementations/ExtractStrings.h,
-	  libhfst/src/implementations/FomaTransducer.cc,
-	  libhfst/src/implementations/FomaTransducer.h,
-	  libhfst/src/implementations/HfstTokenizer.cc,
-	  libhfst/src/implementations/HfstTokenizer.h,
-	  libhfst/src/implementations/LogWeightTransducer.cc,
-	  libhfst/src/implementations/LogWeightTransducer.h,
-	  libhfst/src/implementations/Makefile.am,
-	  libhfst/src/implementations/SFST/src/expand.C,
-	  libhfst/src/implementations/SFST/src/fst.h,
-	  libhfst/src/implementations/SFST/src/generate.C,
-	  libhfst/src/implementations/SfstTransducer.cc,
-	  libhfst/src/implementations/SfstTransducer.h,
-	  libhfst/src/implementations/SymbolDefs.cc,
-	  libhfst/src/implementations/SymbolDefs.h,
-	  libhfst/src/implementations/TropicalWeightTransducer.cc,
-	  libhfst/src/implementations/TropicalWeightTransducer.h,
-	  test/libhfst/test.cc: some typedefs in SymbolDefs.h and
-	  ExtractStrings.h renamed
-
-2010-05-24 21:51  mie
-
-	* tools/src/hfst-proc.cc: copy hfst-proc verbatim to 3
-
-2010-05-24 21:49  mie
-
-	* .: Swap stable old trunk to branches and proposition to trunk
-
-2010-05-24 19:09  eaxelson
-
-	* more doxygen documentation added
-
-2010-05-24 15:01  eaxelson
-
-	* some doxygen documentation added
-
-2010-05-21 15:18  moshagen
-
-	* Ignore generated files. Please check that I haven't ignored too
-	  much. There are probably also other generated files that are
-	  presently stored in svn.
-
-2010-05-20 14:23  eaxelson
-
-	* extract_strings implemented to SfstTransducer, comments added to
-	  the user interface (HfstTransducer.h)
-
-2010-05-19 16:48  eaxelson
-
-	* OpenFst's Minimize adds epsilons to the result. This bug should
-	  be fixed.
-
-2010-05-18 15:25  eaxelson
-
-	* 
-
-2010-05-17 17:09  eaxelson
-
-	* hfst interface updated
-
-2010-05-16 12:18  mie
-
-	* typoed TESTS in unit test makefile
-
-2010-05-15 17:47  mie
-
-	* converted hfst-concatenate to hfst3?
-
-2010-05-14 15:08  eaxelson
-
-	* more unit tests
-
-2010-05-14 13:38  eaxelson
-
-	* expand.C added
-
-2010-05-14 13:07  eaxelson
-
-	* unit testing should now work
-
-2010-05-14 10:54  mie
-
-	* add libhfst unit test makefile and missing att formats to
-	  transducer
-
-2010-05-13 21:18  mie
-
-	* Remove unnecessary sources from foma part and generated makefile
-
-2010-05-13 19:59  mie
-
-	* Remove generated files and use top-level subdir make for library
-	  like hfst2
-
-2010-05-13 17:44  eaxelson
-
-	* more unit tests added
-
-2010-05-11 14:04  eaxelson
-
-	* added test files
-
-2010-05-11 14:01  eaxelson
-
-	* added directory test again
-
-2010-05-11 13:58  eaxelson
-
-	* deleting file test from the repository
-
-2010-05-11 13:47  eaxelson
-
-	* Test file updated to new directory structure. Repeat and
-	  optionalize functions should now work.
-
-2010-05-11 05:34  mie
-
-	* One missing makefile am
-
-2010-05-11 05:23  mie
-
-	* Initial autocorrupted version
-
-2010-05-10 20:03  mie
-
-	* Add skeletal test dir
-
-2010-05-10 12:44  mie
-
-	* Remove some odd binary from the way of directory here
-
-2010-05-06 13:51  spectre360
-
-	* more stuff converted
-
-2010-05-06 13:05  eaxelson
-
-	* some problems in equivalence testing and sfst's kleene_star()
-
-2010-05-06 12:56  spectre360
-
-	* more
-
-2010-05-06 12:13  spectre360
-
-	* more
-
-2010-05-06 11:05  eaxelson
-
-	* writing and reading att text files implemented
-
-2010-05-06 09:23  spectre360
-
-	* more changes
-
-2010-05-05 13:38  eaxelson
-
-	* 
-
-2010-05-05 12:09  eaxelson
-
-	* basic constructors and conversions tested
-
-2010-05-05 11:55  spectre360
-
-	* add preliminary front end for hfst-proc
-
-2010-05-04 15:13  eaxelson
-
-	* 
-
-2010-05-04 12:55  spectre360
-
-	* add comment
-
-2010-04-29 14:29  eaxelson
-
-	* two-argument functions should now work for all transducer types
-	  with no fatal memory errors
-
-2010-04-28 14:21  eaxelson
-
-	* still something wrong with encoding/sorting in DifferenceFst
-
-2010-04-27 16:33  eaxelson
-
-	* reading/writing streams of transducers to/from file/stdin/stdout
-	  should now work on all transducer types
-
-2010-04-26 13:43  eaxelson
-
-	* writing and reading transducers to/from a file should now work
-
-2010-04-22 16:25  eaxelson
-
-	* Reading and writing streams of foma transducers should now work.
-	  However, reading foma transducers from stdin does not work as
-	  gzdopen returns NULL
-
-2010-04-21 14:36  eaxelson
-
-	* reading foma transducers implemented, not yet tested
-
-2010-04-20 14:58  eaxelson
-
-	* writing transducers works now
-
-2010-04-19 14:12  eaxelson
-
-	* writing works, in foma the foma_net_print must be declared
-	  correctly
-
-2010-04-19 14:11  eaxelson
-
-	* writing works, in foma the foma_net_print must be declared
-	  correctly
-
-2010-04-08 15:40  eaxelson
-
-	* Expanding unknowns should now work in SfstTransducers and
-	  TropicalOfstTransducers
-
-2010-04-07 13:19  eaxelson
-
-	* expanding unknowns/identities and harmonizing should now work in
-	  Tropical ofst
-
-2010-03-24 14:54  eaxelson
-
-	* foma's binary operations now do not delete their arguments
-
-2010-03-24 07:22  eaxelson
-
-	* Work on harmonizing and expanding unknowns started. There seems
-	  to be problems when ~HfstTransducer is called for transducers
-	  that are already deleted in operations such as foma's fsm_union.
-
-2010-03-22 13:22  eaxelson
-
-	* Converting formats of transducers with symbol tables should work
-	  now.
-
-2010-03-19 14:03  eaxelson
-
-	* symbol handling in transition iterators works now. for some
-	  reason the type of the transducer is lost in
-	  HfstTransducer::convert(type)
-
-2010-03-18 15:16  eaxelson
-
-	* foma-to-internal and internal-to-foma conversions added. Their
-	  symbol tables don't yet work because HfstMutableTransducer still
-	  uses the old key_table instead of fst::SymbolTable.
-
-2010-03-17 11:58  eaxelson
-
-	* foma_to_internal_format added, not yet tested
-
-2010-03-16 15:11  eaxelson
-
-	* harmonizing functions added
-
-2010-03-15 16:04  eaxelson
-
-	* some unknown expanding functions added, do not work yet
-
-2010-03-15 13:10  eaxelson
-
-	* HfstTransitionIterator added, not yet tested
-
-2010-03-15 10:51  eaxelson
-
-	* HfstMutableTransducer added and tested
-
-2010-03-11 16:05  eaxelson
-
-	* HfstMutableTransducer added
-
-2010-03-04 16:11  eaxelson
-
-	* HfstMutableTransducer tested
-
-2010-03-04 13:50  eaxelson
-
-	* class HfstMutableTransducer added
-
-2010-02-18 13:23  eaxelson
-
-	* 
-
-2010-02-18 09:36  eaxelson
-
-	* FomaInputStream implemented
-
-2010-02-15 16:25  eaxelson
-
-	* 
-
-2010-02-11 17:07  eaxelson
-
-	* linking to foma and using its functions should now work
-
-2010-02-10 15:09  eaxelson
-
-	* FomaTransducer.h now contains everything that is needed, but the
-	  implementations are missing
-
-2010-02-09 15:22  eaxelson
-
-	* FomaTransducer.h and FomaTransducer.cc must be implemented, but
-	  compiling seems to work. foma should maybe be in namespace
-	  hfst::implementations
-
-2010-02-09 13:23  eaxelson
-
-	* foma added
-
-2010-02-01 10:45  mpsilfve
-
-	* added using declaration for hfst::implementations::
-
-2010-02-01 08:51  mpsilfve
-
-	* Did A LOT of stuff... Sorry
-
-2010-01-24 13:28  mie
-
-	* The namespace changes and slight changes for few functions
-
-2010-01-11 17:19  mpsilfve
-
-	* Added LogWeightTransducer and fixed some memory issuses
-
-2009-12-18 18:43  mpsilfve
-
-	* Changed namespaces for the better
-
-2009-12-18 17:27  mpsilfve
-
-	* Fixed Makefile so it will actually construct a library hfst3
-
-2009-12-18 16:39  mpsilfve
-
-	* Added documentation
-
-2009-12-18 15:38  mpsilfve
-
-	* Added hfst3_proposition
-
+dd7d0be (HEAD -> master, origin/master, origin/HEAD) Merge pull request #309 from unhammer/pmatch-input-marks
+97b6e3f Merge pull request #308 from unhammer/tokenise-minor-cg-fix
+3781806 Make small modifications to documentation and typedefs used in function declarations/definitions, so that doxygen can generate documentation right.
+00d89ce Update Python and C++ API documentation files.
+4319b94 Move api documentation file under folder 'doc' too.
+67e1e8c Move C++ documentation file under folder 'doc'.
+8e2e651 Do not catch exceptions derived from HfstException inside the constructor of HfstInputStream and throw them as HfstException. Instead, throw them as such.
+56ffca8 pmatch: special symbol @PMATCH_INPUT_MARK@ for input marks
+90aa695 pmatch: on seeing a special symbol, mark the offset in the input string
+bc345c6 CG forms always go in "<>", not before the tab
+8dceb24 Merge pull request #307 from unhammer/tokenise-short-options-missing
+2c207de short option -m missing from getopt_long
+a9314ad Add m4 for older distros
+6c944ba Bump patch version since revision has decreased
+859f8da Add builting function Interpolate()
+c6f9908 Fixed condition for including symbols in exclusionary lists Rather than the printability vector, which may not be completely set yet, check the symbol itself for printability.
+780b9af Fix bug involving stale caches of function call results
+26d3d8f Change python3 into python in README as version 2 works now too.
+7af6f3f Move tools/src/hfst-string-conversions.[cc|h] under libhfst/src/.
+a1b5bb2 Update version number to 3.9.1.
+d23eb93 Do something useful in the case of a missing root rule
+9e4e663 Make Makefiles in openfst back-end licensed as LGPL.
+03e1949 Candidate for release 3.9.1.
+27f80ee Fix names of files whose names were changed.
+8e4f324 Set server based search to NO.
+5b2c698 Add word boundaries in xerox mode.
+6e78e1f Fix copypasted typo
+b6970ab Fix ToLower and ToUpper, which had transposed names and flawed implementations
+c939413 Use iterator instead of range-based loop on windows.
+e5897fb Fix a couple of typos inside 'ifdef _MSC_VER' detected when compiling on windows.
+7694ee0 License for the library code is now lgpl 3.
+b8a5b98 LGPL license
+a031526 Compatibility with python2.
+1baee13 Add exclusionary lists (eg. Exc(Whitespace) matches symbols not in Whitespace)
+a92e1d0 -X option fixed in hfst-pair-test. Additionally, the user gets an error message if unescaped :-symbols were found.
+8d0a028 Fix a bug in HfstTransitionGraph::find_replacements. Implement compile-replace without composition in XfstCompiler to avoid alignment issues in result.
+887381e Fix epsilon handling in compile-replace expressions.
+2891a27 Allow epsilons inside compile-replace expressions as xfst does.
+bcfea4a Warn about '@_EPSILON_SYMBOL_@' not being an ordinary symbol in hfst only in verbose mode.
+5fc456b Allow space after operator '^' in regular expressions.
+0758730 Fix binding precedence of :
+9f4628e Add throw to appease rpmlint no-return-in-nonvoid-function
+78efc5d Fix a bug in function 'fst'.
+23a5285 Print a blank line even if there were no results or if tokenization failed
+73d317b One && too many
+5f4a8fc Rename hfst-proc2 to hfst-tokenize, with hfst-proc2 and hfst-tokenise as aliases
+732e37e Add tests for python bindings.
+51cbc5e Complete rewrite of pmatch compilation This is a cleanup and rewrite of pmatch compilation, hopefully allowing easier extensibility and maintainability in the future. While this has been reasonably well tested, it is likely that there are some regressions; please report any. Various additional features are pending.
+31de91e Move scripts under subdirectories and remove scripts that are not needed.
+6156215 Move windows scripts under scripts/windows. Get rid of libhfst_win.i.
+0bf33d7 Remove HfstFastTransition.h also from dist.
+02fa326 Remove HfstException.cc and HfstException.h files, HfstExceptionDefs.cc and HfstExceptionDefs.h are used instead.
+9356517 Remove class HfstFastTransitionData and the template HfstFastTransducer that uses it. HfstBasicTransducer is the template of HfstTransitionGraph that is used everywhere and it is fast enough.
+dd6873e Remove tentative reentrant version of xre compiler. The normal xre compiler can handle expressions that the reentrant one was originally intended for.
+05c78d8 Update python API documentation.
+f933525 Remove old commented code. Add a warning about python bindings not being under autotools; advise users to see python/README.
+b127d48 Set -std=c++0x unless a higher standard is required with the -std option.
+f2738be Do not generate hfst-scanner header file. Make hfst-scanner depend on hfst-compiler header file to make sure they are generated in the right order.
+a44eb61 Check automake version in configure to determine whether header files generated by yacc/bison should use extension .h (automake < 1.12) or .hh (automake >= 1.12).
+7f206c0 call_counter is a member of the container, not the transducer
+2aeda9f Reweight arcs iff all conditions given with --input-symbol, --output-symbol and --symbol are met.
+fddc9ea Forgot to increment call counter
+a56089b Only call clock() every millionth time
+1c4c871 Add missing declarations
+a710ddd Only check clock() every million calls to get_analyses() to save time
+8cffb74 Move start_clock setting to where the line is read to make the time limit per-analysis
+6488877 Add short option for time cutoff (-t)
+b6fdeb6 In pmatch, make the time cutoff "soft" to ensure we at least return something (this was an issue for rulesets with RTNs only - all the time could be spent in one leaving nothing for anything else, causing needless failure)
+70e025f Ignore previous commit, I had some old library code confusing me
+8dfcd66 Add time cutoff options
+8a9f0c3 Fix what seems like a typo in hfst-lookup, &infinite_cutoff for infinite_cutoff It seems like the size_t and size_t* can substitute for each other, but the prototype is for size_t.
+2134ef4 Fix time cutoff check in ol library code
+8ff4aa3 Omit infinitely ambiguous check when we have a time cutoff
+969d479 Fix time cutoff handling
+dd30c33 Switch from !€ / !$ to !!€ / !!$ as the test case prefixes, to bring it in line with the conventions in the rest of the Giella infrastructure (where this testing setup is used).
+fd175f1 Fix option --to-transducer of hfst-substitute.
+d213839 Update HfstTransducer::priority_union declaration. It takes only one argument instead of three.
+0dec506 Add new test files to dist.
+7915ca0 Priority union bug solved.
+daee8f7 Update output of morphology tests.
+1148413 Add a check for hfst-ospell.
+a179a32 Add new replace markup tests to dist.
+c56d1f0 Markup rules completely changed
+cb9f08a Update installation check.
+5a174af Finally ready for release 3.9.0.
+0ec3e97 Add missing files to dist.
+61d1d14 fix for --xerox bug#328 introduced by weight fix
+b6e49fd Revert -r4579 "Revert changes to hfst-proc made in revision 4427. This will (temporarily) fix bug #328."
+f0e85c8 Remember to update the man pages, too.
+e31c5d9 Ready for release 3.9.0.
+64c985c Revert changes to hfst-proc made in revision 4427. This will (temporarily) fix bug #328.
+9ca8ab0 Change all pythoncode delimiters from '{' and '}' to '%{' and '%}'.
+128331b Add two missing %
+7b961c5 Add tests for hfst-substitute.
+67f3dce Add tests where one or both inputs are archives.
+26aa331 Set name of composition transducer after composition is called.
+1e2ed00 Add tests for binary tools that use input streams whose types differ.
+4c1e655 Make HfstTransducer::compose throw and exception if transducers have mismatching types.
+e21378d Implement conversion of mismatching transducers also in hfst-substitute.
+43e107d Make binary command line tools convert mismatching input streams into common format.
+573609f Make 'harmonize_flag_diacritics' throw an exception if transducer types differ. Make 'is_safe_conversion' public.
+d750847 Fix a bug in hfst-regexp2fst related to comments and remove support for legacy way of defining weights from regexp parser.
+ee3b02c Xre parser - added check if contexts in replace rules are automata
+d5258af Implement commands 'view net' and 'write dot' as system calls for non-windows platforms.
+7e041e8 Update windows scripts so that they will work with the latest changes in dot and pckimmo printing functions.
+8cb95f8 Move dot and pckimmo related functions in their own files.
+70199c8 Throw an exception in HfstTransducer::eliminate_flag if flag feature does not occur in the transducer or the flag includes a value or operator.
+6d723ca Add missing file
+aa6325f Move python tests to their own directory.
+bf0db23 Rename directory 'swig' to 'old_python' and directory 'new_python_api' to 'python'.
+da9b806 Add information about the possible values of option --xerox-composition to the help message.
+f068284 Modify infinite_cutoff and time_cutoff arguments in lookup functions.
+8645f60 Lexc, removed option -M + cosmetic changes to the alignment
+95e18d3 Handle standard and console streams when libhfst is run from IDLE.
+1275140 Throw a FunctionNotImplementedException in HfstTransducer::lookup_fd instead of converting HfstTransducer automatically into HfstBasicTransducer.
+7d11276 Update python interface.
+dc5a1f4 Added option -A to lexc, it aligns same input and output transitions
+1d3e8af Fix a minor bug in python interface on windows.
+897a7dd Fix LexcCompiler::printConnectedness const declaration.
+de59f0e Replace rules support flag diacritics (fixed lexc with -FM flags)
+6817b35 Use separate ostringstreams for standard output and standard error on Windows.
+f30e6e9 Improvements to error and output stream handling.
+1178005 Support printing to console on Windows.
+0f0dd44 Update foma back-end composition algorithm to fix a bug noticed in lexc tests.
+6e93227 Replace system exit calls with HfstFatalExceptions.
+c73aa33 Check for epsilon cycles with negative weights.
+4679a3a Optimize function 'has_negative_epsilon_cycles'.
+3bd5ce0 Add a test for checking that unknowns are not expanded into flag diacritics.
+6d803df Add option 'check-negative-epsilon-cycles' to hfst-txt2fst and tests for it.
+a678e81 Add function HfstTransitionGraph::has_negative_epsilon_cycles.
+4405b78 Improve performance of transducer harmonization.
+12d3d8e Time cutoff for the bundled standalone optimized-lookup tool too
+05e7b6b Add parameter to control output in 'compile_lexc_file'.
+879d01e Add function unsigned int LexcCompiler::getVerbosity().
+acd442e Allow user to control output in xre and xfst compilation.
+cf2a1d7 Improve error handling in lexc compiler.
+688823f Improve error handling mechanism in xre and xfst parsers.
+083f848 Add a missing period to the end of symbol lines when printing in prolog format.
+50f7ebf Added warning about very slow lookup when using HfstTransducer::lookup_fd.
+0cf9553 Added warning about very slow lookup when using HfstTransducer::lookup_fd.
+c8458dc Added possibility to transform individual transition weights in HfstTransitionGraph.
+fb50256 Add option to suppress multichar tokenization and default to on in proc2
+8e370a6 Replace part of XfstCompiler's FILE pointers with equivalent calls to ostream.
+5a773d1 Tentatively move towards o(string)streams instead of FILE pointers when printing output.
+b792ca8 Remove debug printing
+42585f5 Implement a time-based search cutoff for hfst-lookup in optimized-lookup mode only
+2aafec3 Make 'define_function_args' return a bool instead of calling exit on error in xre parser.
+18d6b12 Fix error handling in xre and xfst compilers.
+d1f2b2a Rewrite regular expression examples to be more informative.
+52dc82e Scale weights to be non-negative in function n_best.
+21d8577 Update documentation.
+5c71e4b Small fixes to read_att_string.
+727e74f Update documentation about special symbols. Add a function for reading AT&T strings.
+7b2e11d Add function start_xfst() that starts an interactive XFST compiler.
+ca3143c Update documentation between HFST and backend conversions and add the examples to tests.
+9ae4311 Fix issues related to level of verbosity when compiling xfst and regexps. Add missing documentation.
+94e7535 Merging of modified or added functionality from the xre parser
+116a076 Remove obsolete comment
+9130ba1 Revert HfstXeroxRules files to version 4484.
+04d3a64 Rewrite 'compile_lexc_file'.
+4988bb6 Improve handling of error and exit conditions in xfst.
+4ba4909 Add missing namespace: 'string' -> 'std::string'.
+b3c446d Greatly reduce memory leaks when using hfst-ol format
+f9b44a4 Update new python API.
+3239aa9 Update windows scripts after moving XfstCompiler.
+ba65f77 Move XfstCompiler from tools/src/parsers to libhfst/src/parsers.
+330447d Add three missing files to dist.
+2570d1f Add flushing to allow instrumentation of hfst-lookup
+5a1307d Replace rules now should support Flag diacritics.
+571878b Fixed lenient composition (it used to be unimplemented).
+209e969 Move HfstStrings2FstTokenizer from tools to libhfst directory.
+9105ea6 Use the actual transition data object when copying transitions in conversion.
+7b06fa5 Fix a warning about comparison of signed and unsigned value.
+4d67d87 Throw StateIndexOutOfBounds exception in get_final_weight, if state does not exist.
+4c4f56c Add examples used in documentation to the tests.
+8a37298 Test examples and fix them, if needed.
+12825fe Add missing documentation and functions.
+b2aa4b1 Add a function that takes tokenized input and returns a transducer.
+b3da97a Define new functions for creating transducers from string, string list and dictionary.
+c6ebab5 Fix some issues in the new python interface.
+4be6a9d Add more documentation and tests to the new python interface.
+3b312a3 Add aliases for different substitution functions.
+ca7834b Modify substitution functions to be more pythonic.
+21c7d01 Add more stuff to the new python interface.
+5c94995 Fix output of hfst-xfst's command 'help'.
+fb4d2ef Fix small bugs in hfst-xfst.
+21f9fbb Modify also determinization function so that negative weights are handled correctly.
+9b42c70 Added more documentation.
+833f6c6 Added more documentation.
+ceb8de6 fix NUL flush, bug #240
+5ed671d Add function __iter__() to libhfst.HfstBasicTransducer.
+323778a Modified libhfst files.
+6bc7b3f Create directory for new python API.
+d929a12 Update Doxygen HFST version number.
+39b7bd7 Update README and Doxygen documentation.
+a7efde8 Add some tests with negative weights for contain, merge and parallel rule operators.
+8bda879 Modify minimization of weighted transducers so that negative weights are handled correctly.
+e7f3b91 Always include 'generate-cc-files.sh' script in dist package.
+be9d1ad Do not allow omitting the question mark on either or both sides of colon in regular expressions. Xerox has also removed this feature from their regexp syntax. Interpret expressions such as [foo : bar], [foo: bar] and [foo :bar] as [foo:bar]. Expressions of type [foo:], [:bar] and [:] will yield an error.
+98c8423 Test if pmatch-tests.sh.* files exist before removing them to avoid 'rm: cannot remove:' messages.
+b8b1039 Remove foma license warning. The current license of foma has no compatibility issues.
+13553bd Make some changes for the python interface. Move HfstFile wrapper class to the swig interface file. Make HfstStates and HfstTransitions typedefs public. Add a destructor for HfstTransition. Update version number to 3.8.3.
+c64206b Handle a frequently encountered exception
+c48b828 Reverted changes done for class HfstFile in revision 4431.
+a8cf4ea Removed HfstFile wrapper class and functions using it. A better place for them is in the swig directory.
+65b418c Added destructor for class HfstException. It needs to be defined for SWIG.
+9965217 tests for --weight-classes 1 and ordering by weights in proc
+3e74d14 make tests pass again (only analysis order changed here)
+a882fef use std::vector as ProcResult to get output sorted by weight-class
+a0bcb70 fix --weight-classes, bug #308
+bd9ac6b Now the script generate-cc-files.sh creates also lexer files.
+c37b24c Add $(EXEEXT) for Windows
+2fa67a4 More Foma fixes for cross-building and clang
+aa58fe3 Small modifications to foma code: struct and variable had the same name.
+f0b6c85 Updated to foma version 0.9.18alpha.
+d566985 GNU address removal
+638efc5 Fixed some memory leaks in hfst-compare reported in bug #167.
+4a7ea0c Adding the renamed files.
+28182f1 Trying to rename README files...
+cdd1ad3 Updated scripts.
+6906e45 Now all files in this directory are listed in README
+ab78a6b Added a README file for the scripts directory.
+2374665 Fix help message
+445eeb1 Fix containment, implement some additional wanted operations
+892fdd8 Ready for release 3.8.3.
+4eab0f4 Updated windows scripts.
+9d0aba0 Now a warning message gets printed if stack contains transducers whose types differ (can happen if lookup-optimize is called before pushing another transducer onto stack).
+f7a8ce8 Added a windows README file for the package that contains eight command line tools.
+e4977d4 Added a Windows README file for hfst-xfst.
+9e2ef69 Added tests for windows. Made small fixes to hfst-proc and hfst-twolc for windows.
+3b3a397 Replaced alternative tokens for logical operators with the standard ones.
+65aa949 Checking for existence of config.h and getopt.h.
+f2f7fc3 Updated scripts.
+aa1f4df Added make scripts for twolc.
+e33968b Added twolc to windows compilation scripts.
+c9c02b9 Updated windows scripts.
+91a1945 Fixing again reading and writing to/from console on windows.
+3fd62f3 Using hex values for unicode characters when compiling with msvc to get rid of warnings (and possible segfaults).
+023e533 Terminator needs reading, and yes there are partial reads
+8575c6d std::string all the way
+4ba02e9 Added missing HAVE_CONFIG_H ifdef. Added globals-common.h header as some compilers complain about missing extern variables. Now creating variable size array 'next_u8' dynamically with operator 'new'.
+0a36470 Renamed help_message.cc into xfst_help_message.cc and added a header file xfst_help_message.h. Now XfstCompiler includes only the header file.
+e25e08d Fixed a typo and added explicit braces to an else statement.
+0061f6c Now option --pipe-mode takes an optional argument { input, output, both }, 'both' being the default.
+62f26f0 Install hfstdll.h
+d09ea9c Now hfst-lookup and hfst-optimized-lookup read from console and print to console by default on windows.
+09eaafb Commented out one debug print...
+cb24cf2 More improvements to utf-8 handling on windows.
+e29bdce Small modifications for better utf-8 support on windows.
+75a25d4 Small modifications for some command line tools for windows.
+b141560 Added tool compilation scripts for windows. Argument handling on windows is also supported for some tools needed for hfst-xfst testing.
+8b73295 Fixed a bug in argument handling.
+e516f16 Edited help messages and warnings of hfst-xfst and hfst-lexc on windows about character encodings.
+9d31b76 Moved getopt implementation to a separate file.
+57f9a81 Added an implementation for long options for windows.
+bb564a4 Fixed some issues noticed during msvc compilation. Renamed function 'min' to 'min_' to avoid collision with a macro with the same name. Changed arguments of comparison function given to qsort to (const void *, const void *). Added support for commandline arguments of type '--option=argument' to hfst-xfst for windows. Also changed hfst-xfst's option --print-to-console (default false) into --no-console (default false) on windows.
+34d1c54 Updated windows script files.
+b46445d Deleted getopt_long cc and h files. Processing command line arguments manually in hfst-xfst.cc on windows.
+88c44eb Added some ifdef _MSC_VER directives.
+eed630e Applied patch for musl libc compilation.
+f3ffa44 Fixed some bugs noticed when compiling on windows.
+0029101 Blank line between outputs in --finnpos mode
+5c3f801 Updated windows scripts. Added ifdefs for msvc compilation.
+1734803 Updated swig scripts for windows.
+1169774 Add FinnPos mode and reorganise
+d9c6038 Updated and added scripts for compiling python bindings on windows.
+5a00166 Fix harmonization issue and speed up the common case of only on top-level matcher
+4d8a4a6 Documented the tsv file format, added some linebreaks to make the helpt text easier to read.
+2871135 Always skip comment lines. Added verbose output for TSV file reweighting.
+3d2e4db Fixed bug #293 by initialising the line variable before using it.
+bfd227b Whitespace only.
+d850180 Added missing file 'hfstdll.h'.
+ed20de2 Edited and added scripts for windows compilation.
+25974b1 Added HFSTDLL's for some functions for windows compilation.
+9fd87e0 Added option --arcs-only to hfst-reweight. Now weights of all arcs and end states are modified unless --arcs-only or --end-states-only is used. Also fixed '--end-state-only' as '--end-states-only'.
+e8c1be4 Added some explicit type conversions.
+2a77392 Changed the short form of the xerox mode from -x to -X (upper case), to be more consistent with the other options, and to match the test on line 195.
+3ba83d9 Now it is checked if foma back-end and zlib are available before hfst-lexc-wrapper is generated. This also affects the way HfstTransducer::read_lexc_ptr is implemented for FOMA_TYPE: native HFST lexc compiler is used if lexc wrapper is not generated.
+8557d61 Updated hfst version number in the python setup file. Fixed the argument type of LexcCompiler::setVerbosity from bool to unsigned int.
+4a31565 Changed again some 'not' operators into \!.
+e1c0779 Added a missing // in the beginning of a comment line noticed during windows compilation.
+f4ecd94 Edited windows batch scripts and added a new one for creating python bindings.
+590d56c Changed declaration 'class yy_buffer_state' into 'struct yy_buffer_state'.
+1f83336 Fixed declared return type from 'void' into 'int' for functions hlexclex_destroy and pmatcherror.
+cfe7852 Xerox twolc test support in hfst-pair-test
+48dcdd7 Tentatively fixed missing paths problem in compose-intersect
+2f75bbc Moved definition of member 'static const HfstState START' of classes ComposeIntersectFst and ComposeIntersectRulePair from header to cc file.
+d4bdfb3 Add [].t() syntax for delimiting tagged (and context-checked!) regions
+5eb0069 Added new scripts for testing native windows compilation.
+982836a Added missing return values for some functions. Replaced ciso646 keywords for logical operators with standard ones.
+ad4273d Added make scripts for windows.
+e94301e Updated script.
+7fccd3a Removed unnecessary HfstUtf8.h and HfstStrings2FstTokenizer.h inclusions from libhfst/src/ files. Also moved HfstStrings2FstTokenizer into hfst namespace.
+d726d57 Now handling all stdbool definitions in foma headers.
+7137e4d Now HAVE_CONFIG_H is checked before including config.h. Removed inclusion of zlib.h that had no effect.
+b1ba306 Changed ifdef WINDOWS into _MSC_VER. Now zlib.h is included only when requested with -DZLIB.
+a16942d Using dynamic arrays instead of static ones to keep cl.exe happy. Also added definition for 'ssize_t' on windows.
+7203413 Replaced 'and' with '&&'.
+beb57e3 Replaced 'and' with '&&'. Also made a variable defining the size of an array const.
+9b26e06 Replaced ciso646 aliases and,or,not with &&,||,\!. Also changed sizeof(variable) into sizeof(variable_type) in ol transducer header because cl.exe complained about that for some reason.
+237842a Fixed a bug where operator '==' was used instead of '=' when setting the value of last element in a char array.
+dc51b2e Added missing files.
+83d7d32 Added scripts and headers for windows compilation.
+33409ad Changed operators {not,and,or} into {\!,&&,||} because cl.exe complains about them on windows.
+d3779cd Added a script for windows compilation
+1d327ca Added support for compiling openfst and foma back-ends with cl.exe on windows.
+27b6994 Include zero in signed and unsigned integers
+06517c7 Correction to handling trailing nonmatching material in locate_mode
+f03b162 Forgot to commit these files too...
+da83b10 Added xfsm support for some command line tools.
+3097ddf Now HfstTransducer functions throw a FunctionNotImplementedExeption if xfsm implementation is not available.
+4008054 Added more xfsm implementations.
+818ad51 Added more implementations for XFSM_TYPE for HfstTransducer functions.
+664573a Add ignoring
+7b7d13f Correct parsing order of PARALLEL_RULES
+40066a1 Added support for composition for xfsm transducers.
+3c11736 Added a variable to control if (xfsm) transducers that are already minimal are still minimized for profiling purposes.
+877c46f Fixed some bugs in escaping special symbols in prolog format. Added support for xfsm format in some command line tools.
+3cf0029 Fixed an error noticed when -Werror=format-security was enabled during compilation.
+d0ed632 Now xfsm conversion works in hfst-fst2fst and between prolog and binary format in hfst-fst2txt and hfst-txt2fst.
+f688567 Added XFSM initializer class.
+c803964 Added function minimize to xfsm interface
+4c4ca0b Now hfst-compose-intersect does NOT harmonize transducers by default, as harmonizing produces unexpected results with hyperminimized transducers. Option --harmonize turns on harmonization. This is a partial fix to bug #288.
+2e99ef0 Added a cross-build Windows patch given in bug report #289.
+4cd63b0 Added a missing #if HAVE_XFSM statement.
+e000b0c Fixed some bugs in xfsm stream handling.
+a478fb2 Added more functions for writing and reading xfsm transducers.
+fcc4c5d Tentatively added input and output stream functions for xfsm transducer.
+091ca1d Modified and added scripts for creating static binaries.
+8d6dd33 Fast compose intersect available using option -f
+1915dd1 Reorganized xfsm interface.
+ed7f448 Hopefully speed up compose_intersect by doing l .o. (l.2 .o. r) instead of l .o. r directly.
+4b965b7 Updated script.
+cc3632a Disable hfst-xfst's auto-complet with rl_insert instead of rl_abort, which is not found on Mac.
+c41e726 Added a script to generate static binaries.
+3a95772 Now xfsm conversion swaps the state numbers to make a more readable state numbering.
+b2348d7 Now special symbols should also work in xfsm conversion.
+b3af023 Xfsm conversion functions almost work, escaped symbols still need some attention.
+b15f184 Conversion functions between xfsm and HfstBasicTransducer formats implemented, alphabets and special symbols still need some work.
+5f79106 Autoindent entire file after removing tab characters to appease commit script
+68ffd8e Handle single-char ascii symbols shadowing multichar ones
+b1bdd27 Modified hfst to support xfsm format.
+05da3ff Fix cg quote interpolation
+38273d0 Clarify help string
+b3450b4 Add segmenting and cg mode; improve handling of special cases and weights
+5766bbf Tentatively modified hfst to handle xfsm implementation type.
+db747e7 Preserve nonmatching sequances in locate_mode and parse the appropriately downstream
+b7156e2 Tentatively added a skeleton implementation for xfsm library that can be included with configure option --with-xfsm (default is no). No linking to the library is performed, this is just a test version.
+7427081 Added a preprocessing directive that defines hfst-twols's Alphabet as TwolCAlphabet if HAVE_XFSM is on. This will prevent variable collisions.
+f579458 Changed hfst-txt2fst's read_prolog into read_prolog_format to avoid conflict with xfsm library function.
+424e9f2 Named tokens 'UPPER' and 'LOWER' in pmatch and xre parsers into 'XRE_UPPER', 'XRE_LOWER', 'PMATCH_UPPER' and 'PMATCH_LOWER' because the xfsm library (that might be added to hfst at some point) has an enumerator with the same name in C namespace.
+cc5e2fb Named foma's write_prolog into foma_write_prolog because the xfsm library (that might be added to hfst at some point) has a function with the same name in C namespace.
+b7b9a5b Took away unused token 'LOWER' from xfst parser.
+7701e12 Added an option --do-not-harmonize to hfst-compose-intersect.
+ae06cea Now hfst-compose-intersect harmonizes the rule transducers with the lexicon.
+3bfd0e8 Added option --beam to hfst-strings2fst.
+b96dd3b More accurately name set_locate_mode as set_extract_tags mode (locate vs. match is determined by function call)
+47ef7f0 Fix bug in compiling UNKNOWNs on the left side of pair separators
+b97a28c Fix bug affecting locate-mode where ?-matches were being seen as IDENTITIES in input.
+ec66bdd Added option --beam also to hfst-lookup. It is mostly untested for this tool.
+0057847 Tentatively added option --beam to hfst-optimized-lookup.
+e236dd2 Fixed a typo in warning message about missing symbols in input tapes of rule transducers ('output' changed to 'input').
+43d9948 In locate mode, zero-length hits could cause infinite loops. Commit fixes it.
+f5c1467 Now hfst-lookup checks it it is possible for an input to go through a transducer before calling is_infinitely_ambiguous. Should fix bug #278.
+b4e4655 Now reserved symbols are detected in composition if xerox-composition is ON. This will prevent symbol collisions by throwing an error message, giving at least a temporary solution to issues with reserved symbols.
+d2ef472 Fixed substitution operator in regexp, now flag diacritics are allowed both as substituting and subtituted symbols. Should fix bug #284.
+92d2bc0 Added better support for special symbols in hfst-xfst's substitute command.
+7cc650e Added two tests for hfst-xfst's substitute command. They are skipped until substitute can also handle them.
+1ff2f40 Fixed a bug in composition when xerox-composition is ON. Flag diacritics @SOMEFLAG@ were earlier transformed into $ and back into @SOMEFLAG@, but symbols of form $...$ are already reserved for lexc. Now diacritics are escaped as %SOMEFLAG% during composition. This creates a new set of reserved symbols which maybe needs more consideration though... Also added debug prints for LexcCompiler.
+ef9407e Removed xml checks from configure, since they cause unlinked xml references in hfst-edit-metadata on some platforms.
+791aeb4 Fixed flag diacritic recognition, now also flags of form e.g. '@D.FOO@' are accepted and an empty string is returned as their value. Also added full support for flag handling in hfst-xfst.
+94b723e Added some conversion functions between StringPairVectors and StringVectors. Added checks for flag diacritics in hfst-xfst non-optimized lookup.
+6df280c A small fix to hfst-summarize option handling.
+479630d Ready for release 3.8.2.
+d5c8545 Added option --print-symbol-pair-statistics(=N) to hfst-summarize.
+adff4fc Small fixes to compile-replace. Also restarting the char counter every time a new xre parsing is started. Removed the xml2 dependecy in configure.
+b8fd981 Omit unnecessary step in stringification
+adb2d91 Another slight speed improvement
+b8564f4 Some double free insurance related to previous commit
+786a502 Some more pmatch runtime speedup (around 5-10% in most cases)
+6c383b4 Remove commented-out lines (same ones I was intending in the previous commit)
+8c8be0b Remove extraenous index table fitting test
+c150b35 Further improvements to conversion to optimized lookup format
+ebb5d63 Large speedup in conversion to optimized-lookup format
+5eaf679 Added test cases for compile-replace.
+80059f5 Added test cases for merge operation.
+e8c709f Fixed an error in hfst-fst2strings --print-separator where two consecutive lines of -- were printed between non-empty transducers in some cases.
+9a30760 Now minimizing the merging automaton before merge operation so that epsilons do not cut a succesfull merge path. Also allowing epsilon-to-regexp-marker transitions in the merge filter.
+5d89aba Improvements to compile-replace function, now it should work for input and output sides of a transducer.
+372d184 Revert bungled change to precedence order
+06fa073 Now xre compiler of function merge does not increment the char counter, making it possible to have many merge operators inside one regex.
+bc32286 Added a constructor XreCompiler(XreConstructorArguments & args) to facilitate passing xre variables to merge function which needs them in its internal xre compiler.
+de47594 Now using internal starptr variables in functions hfst::xre::compile and hfst::xre::compile_first instead of global hfst::xre::startptr. This should fix the strange memory errors which occurred when calling merge operation inside a regular expression.
+e7c15a3 Now merge operation filters out non-optimal paths.
+e153281 Tentatively added a function 'tokenize_and_align_flag_diacritics' to HfstTokenizer.
+fe5cc6d Runtime speed improvements Prereserve table vectors, eliminate special_symbols map
+a62fe68 Profiling support with Counter() and --profile & a bunch of smaller changes
+09703ef Allowing 1-to-n composition of automata in archives. Fixes bug (or feature request) #277.
+035edcd Now passing verbosity to LexcCompiler as an unsigned integer via setVerbosity(uint). Also made small fixes to warning prints in lexc compiler.
+5fb6ba7 Added tests for one-sided flag diacritics for hfst-lexc.
+602ec80 Now lexc compiler warns about one-sided flag diacritics in verbose mode.
+fa95239 Added a tokenizing function that warns about symbol pairs, if needed.
+4ad8eb4 Added test case for previous lexc commit (sublexicon defined more than once treated as an error).
+4582622 Now multiple definitions of the same lexicon in lexc are treated as an error unless LexcCompiler::setAllowMultipleLexiconDefinitions(true) is called first.
+95f58f4 Now lexc parser updates the error status hlexcnerrs when hlexcerror is called. In case of warnings, the error status is nor updated.
+946bd68 Speed up list arc processing by replacing some maps and sets with vectors
+373721d Changed list to set in merge operation. Removed commented code.
+52fe564 Added option --encode-weights to hfst-lexc.
+038ebd2 Reinstate undefined symbols as valid tokens as per documentation
+212f177 Add defined lists
+25e7a02 Add Sigma()
+491d771 Added Lst() and support for list arcs in runtime
+fe95b0a Sync precedence rules
+482bad0 Switch order of precedence of concatenation and other binary operations
+93d2887 Added Lit()
+a5114b5 Modified the function merge, it now takes as an argument a map of list symbols.
+7ef0509 Fixed a bug in xre parser, now definitions and unknowns can be used together in expressions such as 'regex [def:?] ;'.
+ed742e9 Now the epsilon symbol is not added as a multichar symbol to hfst-lookup tokenizer if it is the empty string. Should fix bug #275.
+0fb0fdb Allow \U00NNNNNN syntax for code points in utf-8 but above U+FFFF
+2db8062 Allow \UNNNN as well as \uNNNN
+4954a40 Allow \uNNNN in range notation and make some fixes to utf-8 handling
+7784091 Added utf-8 character range expressions
+f2674b2 An untested implementation of the merge operation added to hfst-xfst.
+565d9bb Syntax-level completion of functions (arg placement still not completely free)
+9bb6843 Fixed a small bug in hfst tool tester.
+83312f7 Ready for release 3.8.1.
+bcae2c3 Fixed std::cout into &std::cout in stream pointer comparison.
+246258f Now using definitions USE_TR1_UNORDERED_(MAP|SET) when defining what unordered maps and sets to use.
+c7c5ee8 Fixed a typo tr2 -> tr1.
+97a3e59 Unordered maps and sets are used from std namespace if -std=gnu++11 is requested.
+a5a62cb Forgot to update version number in swig bindings.
+a578323 Various improvements and additions to function syntax, particularly empty args and string-args
+5fb9c8d Added functions for merge operation in HfstTransitionGraph.
+1df7d58 Modified weight handling in HfstTransitionGraph::intersect.
+1e5bbfc When the alphabet is constructed from a symbol table, set identity to NO_SYM this was supposed to always happen anyway but didn't matter until recently
+417bc81 Modified intersection algorithms in HfstTransitionGraph.
+67f0a92 Added functions to be used in xerox's merge operation.
+05651a4 Small fixes to list definitions in hfst-xfst.
+2e1b79d Added an implementation for compile-replace in hfst-xfst, it still needs lot of testing.
+244d6bf Yet some more functions added to compile-replace.
+e18a645 Added more functions for compile-replace.
+39800a1 Tentatively added functions in HfstTransitionGraph to be used in compile-replace.
+7b5981f Added function is_well_formed_for_compile_replace to be used in compile-replace command.
+c099596 Forgot to comment out debugging prints in tests.
+f695bb4 Added brackets around member calls 'Interval.end' and 'Interval.begin' to avoid them getting confused with std::end() and std::begin() templates in C++11.
+b0e0fe5 Rolled back earlier revision in interval-set.h
+d223f72 Made small modifications for better c++11/c++0x support.
+51ff0da Fix bug where identity wasn't being set to NO_SYMBOL when absent from alphabet
+c2ee587 Refuse to enter flag loops more than once fixes bug #250 bug - arguably this could be applied to epsilon loops too, pending discussion
+15f25c6 Fixed a typo in Makefile.
+1faecef Now hfst-xfst gives a warning (or exits) if a binary command tries to access a stack with less than 2 transducers.
+a7fe5d6 Now hfst-xfst exits if a command tries to access an empty stack if quit-on-fail is ON and hfst-xfst is not in interactive mode.
+25255de Comment explaining usage of hfst-fst2tesseract.xfst.
+ed8f040 Added script for converting morphological analyzers to Tesseract word models.
+61b43f5 Improvements to loop finding
+4d3bab0 Further corrections to loop detection slowdown back to ~10x but may be improved from here
+38bb11f Fix some cases of overdetecting infinite ambiguity, there's still some left
+f99de3f Forgot to keep adding the repeated states in the loop detection phase
+f327e83 Only try to catch infinite ambiguity at epsilon arcs This is the big speed win and presumably correct.
+aa0928d This order of comparison is a bit faster since sizes never differ
+90b4387 Speed up is_lookup_infinitely_ambiguous() somewhat
+3edea32 Try to avoid using negative indexes for arrays
+1eedad1 Optimised lookup tests
+a1eb3e1 Runtime handling of identity and unknown
+dd8a983 Forgot to remove one thing in the last commit
+e1db16f Take out our own harmonization hacks now that they're unneeded
+6b0a888 Don't use delimiters when they're not necessary, also don't insert everything to RTNs anymore and provide the is_special() function the previous commit required
+e6a35c3 Treat special pmatch symbols like flag diacritics for harmonization, also after harmonization add all symbols, including flags, to the alphabets
+40feabb Fix bug where delimiters were shadowing the named transducers' names also remove extraenous parsing path
+7432ed4 Updated pmatch functionality tests.
+6a89ad8 Add string literal syntax for standalone %-escaped chars (they used to be considered symbols which now have to be defined or cause an error)
+18b6039 Use minimization guards to keep multiple negative contexts separate in disjunctions
+817ec29 Fixed some more spelling errors noticed by lintian.
+dcb9e44 Fixed spelling errors found by lintian.
+727436d Added again hfst-train-tagger man page which is no more a symlink.
+ee79595 Added missing man pages.
+3e650c8 Now hfst-reweight-tagger --help returns EXIT_SUCCESS before trying to access uninitialized values.
+9665cdc Warn about shadowing definitions
+8608975 Alternate syntaxes regex for Define TOP and .#. for #
+1874455 Revamp LABEL parsing and introduce curly literal pairs
+7b2c44e Updated and added man pages.
+cbb4a40 Moved option checking after possible returning from program so that option --help will not generate error messages.
+7f69948 Require backslash character to be escaped as \\ in curly literals
+832d7b3 Fix bug in unescaping function
+6918fd0 Ready for release 3.8.0.
+9336e7a Added variable 'lexc-rename-flags' to hfst-xfst.
+73c2a33 Desperately fiddle with the way the minus operation expands things
+ee6d6fa Add lambda-like anonymous definitions for controlling subexpression boundaries
+9ef3676 Changed the flag handling behavior of hfst-xfst and hfst-lexc. Now both tools by default use Xerox's way when composing, i.e. flag diacritics match unknown and identity symbols. This can be controlled with variable 'xerox-composition' (the default is ON) in hfst-xfst and with option '--xerox-composition={ON,OFF}' (the default is also ON) in hfst-lexc. hfst-regexp2fst also has the option '--xerox-composition' which by default is OFF, as it was earlier.
+6a57210 Fixed a typo in hfst-regexp2fst option handling.
+a64b247 Now one-sided flag diacritics are allowed in composition when flag-is-epsilon is used.
+1dfbb23 Added option --log10 for 10-based logarithmic weights in hfst-strings2fst.
+0bcf18f Now an error is thrown if flags are not twosided in composition when xerox composition is used.
+a959c4b Added exception class FlagDiacriticsAreNotIdentitesException.
+6d8c1ab Add pmatch functionality test suite
+d5d441e Added option -X flag-is-epsilon to hfst-regexp2fst.
+33b17d7 Fix another symbol-leaking issue
+91d5ce0 Allow nested logical operations on contexts
+d4b01d2 We need to avoid symbol pollution for more than just special symbols (this doesn't completely resolve pollution issues, just some urgent ones)
+89149b0 Don't forget to pop the rtn stack when there's nothing matched
+6a3552f Minimize after adding delimiters, not before
+fdf46b1 Revert bracket-bounding behaviour
+fecbf54 Use brackets for extra delimiters to control tag and context boundaries more
+51382e2 add_delimiters was happening in the wrong place since recent syntax changes
+8467812 Fixed a too strict assertion.
+7ac7e49 Added a return value for a case that should never happen to make scan-build happy.
+09b1260 Reverted back to the buggy behaviour of function 'getMarkerNumber', since some HfstXeroxRules tests will fail if it works correctly...
+c7d12d4 Fixed an error in function 'getMarkerNumber' where istringstream was not properly initialized and returned random values. Also added a print method for class Rule.
+7b7f0fb Fixed a typo in filename in EXTRA_DIST.
+caad8cb Now alphabets are copied when encoding and decoding flags in composition. Fixes bug #267.
+ad47d32 Oops, forgot about restoring scope state afer entry arcs
+f325949 Add a scope facility for local context boundaries
+591c5b5 Fixed most scan-build issues other than dead store, memory leak and errors from foma back-end.
+d207568 Added implementation for twosided flag-diacritics in hfst-xfst.
+d3c0506 Now harmonize-flags and flag-is-epsilon are by default OFF in hfst-xfst. Also added a new, mostly untested variable xerox-composition that matches flags with unknowns and identities in composition (default is OFF). All flag-is-epsilon functionalitites are moved under HfstTransducer.
+ce348d2 Purge commented-out lines
+3752461 Major syntactic changes and additions (AND & OR) to bring in line with Karttunen's documentation - amazingly doesn't break backwards compatibility (brobably / mostly)! Function syntax still lags and is incomplete.
+79f7b42 Added missing return value to a function in openfst back-end.
+636451e Reverted back to version 3992.
+e0442ee Instead of NULL, return a new HfstTransducer in a condition that should never occur. This is for some compilers.
+0d7cdee Fixed errors reported in bug #265. Also tentatively added a switch --xfst-harmonization to hfst-xfst that treats flags as ordinary symbols in composition.
+08462a7 Resolved another rpmlint issue, hopefully the right way (A HfstTransitionGraph method returning nothing when it seemed to be meant to be returning *this)
+68ed253 Resolved some issues and nonissues revealeled by rpmlint
+0e2f676 Now xre parser compiles expressions of type foo:bar^{0,N} correctly.
+be1e33d A better way see if we have a better location than before
+ba31a12 It seems to be generally faster to defer minimization at [] boundaries
+17b833b Made 'harmonize-flags == ON' the default for hfst-xfst. Also hfst-xfst's xre parser now harmonizes flags according to variable 'harmonize-flags'.
+90cff75 Fixed some issues noticed on c+11 and reported in bug #258: a space between literal and identifier, missing cstdlib header and ostringstream conversions.
+9da1a0f hfst-fst2strings now gives an error message if option --nbest or --random is used with transducers in optimized lookup format.
+ddea524 Apparently older gcc's libstdc++ require operator< to be const
+f6df4d2 Added locate mode on the library side; support for multimatch, weight access and various internal changes
+084d1a6 Now all command line tools should give an error message and exit with >0 if they cannot process input in hfst optimized lookup format.
+1959537 Now hfst-invert prints an error message if given a transducer in optimized lookup format. This should be fixed in all command line tools.
+5a5a3e4 Function set_expand_definitions added to the python interface.
+d89d63b Updated HFST version number.
+26bad71 Updated HFST version number.
+78a7e30 Added option --renameFlags to hfst-lexc for testing purposes.
+9e7a3ff Added option --encode-weights to hfst-determinize.
+c9ae91f Now hfst-lexc has options --withFlags and --minimizeFlags and hfst-xfst variables lexc-with-flags and lexc-minimize-flags to control if hyperminimization is used when parsing lexc files. Flag minimization can be the default behaviour when it has been properly tested.
+57cc2df The Xerox output should have an empty line between each cohort.
+01928da Now flag minimization in should work in LexcCompiler. Commented the changes out until all expected results from lexc tests are changed accordingly.
+38b3724 Apparently failing to read a stream now throws HfstException so catch that instead
+c29a94e Tentatively added a piece of code that filters out multiple flags in lexc result. Currently commented out.
+8b0216c A hopefully temporary tool called proc2 for simple tokenization, to become part of something else or be renamed in the future
+ae42592 Some fixes to python wrapping of pmatch and showing original input in pmatch
+cee590b Make locate() return a simple data structure rather than a string
+3ad4e8e Convenience loader function for pmatch
+0cc41ab Fix outdated prototype of printConnectedness() and add pmatch prototypes
+125ed8a Added option --Werror to hfst-lexc that treats warnings as errors.
+2e28445 Added tests for the fixed bug #243 that will pass now.
+24e7b46 Now keyword LEXICON is allowed without a preceding newline in lexc parser. Should fix bug #243.
+a50dd1a Added a variable encode_epsilons to function priority_union whose default value (true) should fix bug #254. Function lenient composition still calls priority_union with a false value of encode_epsilons.
+94dc75b Added support for cross-products such as {foo}:[bar] and foo:[bar] in regexp parser. Tests still needed.
+d42799e .NOTPARALLEL for now
+85a69f9 Fix serious bug with epsilons in contexts - they were incorrectly moving the input tape.
+b04de37 with pipes
+941baa9 A super cool progress bar functionality \o/
+30cf7bd Fix context-related bug
+13c1904 Readability refactoring
+7f22c97 Comment fixes and some more deadwood elimination
+cf24a3b Remove more unneeded stuff
+8d58ce1 Remove some obsolete & commented out bits
+dd779dd Locatefy option
+93d00f8 Don't make noise about almost always harmless result truncation
+9abaa72 Large refactor of almost everything (mainly to better serve tokenization apps w/tape synchronisation)
+8f8d846 Undo previous commit, was confused by polluted automake cache
+df23ced It seems that newer toolchains don't like c++ classes being defined over multiple .cc files, or something..
+1958ec8 Don't count flag diacritics when locatefying
+516bf5c Remove obsolete bogus -> rule from when @-> had problems
+e5d943a Handle missing @bin files more nicely
+04cf7dd Autoconvert @bin arguments if necessary
+9ce5490 Remove obsolete dependency readme that hogs the svn trunk page
+c427c3d Add constructor option to make diacritic strings blank or not; make pmatch consider them blank
+2c2e664 Added file 'test' to EXTRA_DIST..
+b1f01a2 Fixed hfst-twolc test Makefile.am
+211935e Disabled outdated unit tests.
+6b74d9f Tentatively implemented variable 'flag-is-epsilon' in hfst-xfst.
+531acff Fixed issue with left arrow conflicts for contexts with impossible word boundaries.
+2881c9e Also added tests for regexps with different continuation lexicons in hfst-lexc.
+489474a Now regexps with different continuation lexicons are allowed in hfst-lexc. Should fix bug #247
+21db219 Fixed list center rules and conflict resolutions.
+6942188 Tests for list centers.
+cd1193b Tests for list centers.
+6e909fd Exit on parse error Once we've printed a parsing error, exit rather that print intimidating hfst exception messages
+efdd01b Pattern-locating mode
+9061298 Some changes to approach to avoiding stack overflow should fix problems with very long input lines
+2cbb071 Add harmonization
+1c1007c Add extract tags -option (this commit also includes a secret commented-out facility for profiling activity on the input tape by drawing a funky ascii histogram)
+79c629f Fix incorrect check for whether tokenization needs to respect a long symbol
+7633686 Allow epsilon-symbol pairs
+01eb211 Don't print huge data dumps when parsing fails
+2273237 Revert back to the original TropicalWeightTransducer.cc and forget splitting it..
+d7755c3 Moved minimize and push functionalities from TropicalWeightTransducer.cc to separate files. This will make compiling TropicalWeightTransducer faster and prevent 'File too big' errors on Windows.
+1c74930 While scanning for possible first symbols, don't accidentally go beyond the end of the input tape
+c50a51f Ready for release 3.7.1.
+f17327e Now removing CR characters from output of hfst-xfst so that tests will pass on windows too.
+f374022 Now an error message is thrown in HFST when reading a native SFST transducer that uses the empty symbol.
+6596539 Added option --encode-weights (-E) to hfst-minimize.
+e7d0c0e Added documentation to parallel replace and removed unnecessary marker insertions.
+1d1251a Modified conpilation of weighted parallel rules by inserting markers to keep same mappings with different weights separate. Also added a StringPair variant of insert_symbols_to_alphabet to HfstTransducer and HfstTransitionGraph. Added a test case for hfst-xfst. Updated NSIS installer.
+60b45cb Tentatively added a function for substituting weights with markers.
+fd29751 Remove spurious obsolete comment
+2925fb7 Bounds check accesses to ascii_symbols when reading input too (ascii_symbols used to have a NO_SYMBOL entry for any char, but now without a check some accesses were resulting in bogus keys)
+d23d42f Add -D_XOPEN_SOURCE=500 in order to prevent -std=c99 from preventing strdup() prototype being visible
+9f7311e Correct bounds check for ascii_symbols alterations
+988e259 Now checking that ascii_symbols vector index is not out of bounds when removing shadowing symbols. Should fix bug #235.
+7b89f3f Replace rules bug fix
+6bbf8bd Parallel rules bug solved
+4ad528d Ready for release 3.7.0.
+6fd6272 Added missing files to Makefile.
+180ebd2 Added option --encode-weights also to hfst-regexp2fst.
+04837d3 Added option --encode-weights (default false) to hfst-compose-intersect.
+ec55eab replace rules - weights are removed from calculating contexts (they were unnecessary there)
+34fcf5f Removed commented code.
+d469a2b Modified TropicalWeightTransducer::are_equivalent so that determinization is carried out in a way similar to 'intersect' and 'subtract'.
+aee1515 Updated configure.ac
+b4fbd3f Reverted hfst-ospell changes.
+edb752e Tentatively added hfst-ospell under tools/src, it is only enabled if --enable-ospell is requested.
+911b8a0 Use precision 1 in weighted tests.
+e45e2fc Reinstate special ascii tokenization while avoiding shadowing longer symbols
+5ad406c Disable ascii-lookup when tokenizing
+e45fc59 Set encode_weights off in tests to make sure that they work also if it is on.
+6f1b3de Fixed a bug in parsing regexps such as '?:{foo}'.
+95fcfa3 Make pair notations a bit more consistent; enable RIGHT_ARROW
+8b3f312 Now incompatible replace types in parallel rules yield an error.
+65884a7 Added variable 'att-epsilon' to hfst-xfst. Also added more weighted parallel replace tests.
+4f93231 Now epsilons, identities and unknowns are printed correctly.
+4e6f664 Fixed a bug in handling unknowns in hfst-xfst's 'look up'.
+b3ac973 Added more weighted parallel replace tests.
+2ca06d9 Allow runtime contexts anywhere to facilitate some efficiency strategies
+b628ccf Added rest of the replace tests.
+d28fef5 More tests...
+9cd39cb Added more hfst-xfst replace rule tests.
+77d98df Fixed weights in markup rules
+f62a2ce Added more tests.
+42c8ecb Added more replace tests.
+9ad639d Added replace tests, not all of them are yet performed.
+095ed97 Add tentatively new replace tests.
+8fb7cc9 Added tests for containment operators.
+e49b202 A couple of small fixes to containment operator.
+06ee31a Sorting arcs before subtraction in TropicalWeightTransducer::subtract.
+e2e71f5 Removed unnecessary determinization from TropicalWeightTransducer's intersection function. Added function HfstTransitionGraph::get_transition_pairs. Made some small modifications to xre parsers's containment operator.
+e46dcf9 Fix definition of curly literals
+0fa1896 More PAIR_SEPARATOR fluff (which should be completely refactored)
+8cb51e1 Build input scanner without using a stack guard; also refactor where runtime behaviour is stored
+8fb36bb Added tentatively new functions for implementing containment in xre parser. Removed determinization from intersection.
+0721534 Changed containment operators so that they also work with transducers that are not automata, i.e. '$.[a:b]'.
+c08ec08 Added documentation to TropicalWeightTransducer::intersect.
+8455c8a A simple stack guard for first-input -collection (only, for now)
+c0f23cf Now all containment operators work, at least with unweighted containment transducers.
+562e77f Fixed a bug in '$.' operator in xre parser.
+fcb43f5 Use a vector in the prescanner to make it slightly faster
+7790325 Add class-identifier to friend declarations; required by some compilers
+8623961 Remove extraneous debugging message
+be473f1 A very conservative and (for now) computed-at-runtime input prescanner
+fb8361c Added a test for empty context in replace rule.
+413741c Resorting to global variable 'encode_weights' instead of passing it around as a variable. Allowing empty contexts in replace rules, i.e. 'a -> b || _ '. Fixed a minor printing issue in hfst-xfst.
+9c6f3ab It's perhaps a little clearer if is_like_epsilon(epsilon) is false
+3c4f82e Fix bug where conversion from ol to basic transducers was missing @I.foo@ arcs in some situations
+834a129 Fix bug where weights on the insertion arc were being ignored
+0e7e0a6 Log insertions when verbose
+3cd1281 Added variables 'max-weight' and 'encode-labels' to hfst-xfst.
+981f3cb Tentatively added functions to control label and weight encoding in weighted minimization. Also added max_weight parameter to lookup_fd of HfstBasicTransducer.
+c265345 Fixed weighting in containment operators.
+ae39ecb Edited xfst tests.
+9765b5b Fixed a bug in parsing multiple parallel replace rules.
+fd0614c Fixed a bug in the contains one '$.' operator. Improvements to the xfst parser.
+700c746 Updated regexp2fst help message.
+53585c5 Use "" for special parsing and symbols, {} for tokenizable strings; also allow "define" alongside "Define" Future note: consider adding another syntax for "totally bare" symbols with no special parsing
+56d86bc Only print prompt in pipe mode if --verbose is used.
+5440fa9 Added yet more tests for weighted rules.
+f0abf04 Made xre parser ignore weights in rule contexts. A warning is given in non-silent mode.
+b481854 Added more tests for weighted replace rules.
+49fd9ba Added optional variants of replace right tests.
+17712e1 Forgot to apply weighted_rules -> weighted_replace_right renaming scheme to test.sh.
+a0566e4 Renamed weighted_rules_* to weighted_replace_right_*.
+54e62ac Addded more weighted rules tests.
+92b67e7 Added function HfstTransducer::is_infinitely_ambiguous() and command 'test infinitely-ambiguous' in hfst-xfst.
+6633e61 Copy the before-seen states so different paths to the same state don't conflict Reinstates a skipped test
+72955a8 Made hfst-summarize print whether transducer is infinitely ambiguous in verbose mode.
+946d841 Fixed a couple of typos causing errors when calling is_infinitely_ambiguous..
+ec80b66 Tentatively added function is_infinitely_ambiguous() to HfstTransitionGraph. Added variables 'lookup-cutoff', 'print-words-cutoff' and 'precision' to hfst-xfst. Added test cases for weighted rules. test_transducer_functions now returns a skip value until hfst optimized lookup transducer's function is_infinitely_ambiguous is fixed.
+9cf83ec A slight followup to the previous commit
+b26cd8f Fix stupid bug in tricky control flow part of loop checking
+2b0e3b5 Bugfix: distinguish between transitions and transition indexes when determining state equivalence when looking for epsilon loops for a given input.
+674b883 Remove extraneous debugging message
+9dba5e0 Fix bug where infinite ambiguity checking was polluting the flag diacritic state
+daad246 Reorder things so that we should usually run into max_results before running into the stack depth
+6bafb97 Respect result limits and implement a recursion depth guard so instead of blowing out the stack we discard overlong results and give a warning message
+1431848 Rip out empty main test function so there's only one in the ol compilation unit
+bec743d Add string version of is_lookup_infinitely_ambiguous() to HfstTransducer api too
+4845339 Added variant is_lookup_infinitely_ambiguous(const std::string &) in HfstTransitionGraph which is used in hfst-xfst to check infinitely ambiguous cases in lookup. Also added a variable precision in hfst-xfst to control the number of decimals shown.
+391c4c0 Add a facility for determining whether a given input produces an infinitely ambiguous lookup
+7a6fa36 Replace rules - weight now works on both sides, with context.
+e6b4af8 Insert special symbols into ?-containing transducers' alphabets right away, fixing some incorrect harmonization behaviour
+42dd77c Updated weight management in replace rules
+e903072 Finally ready for release 3.6.1.
+9db3ddd Better conflict warnings
+27a6627 Now it is possible to save and load a stack of transducers in hfst optimized lookup format.
+ae84501 Give a more informative error message if tranducer is not in hfst optimized lookup format in hfst-proc.
+eb61bef Added hand-written man page for hfst-foma.
+49e1c5f Updated man pages.
+415d8f0 Now removing symbolic links to command line tools when performing 'make uninstall'.
+eda041b A new candidate for release 3.6.1.
+6c6081a Updated installation check.
+e515805 Edited help messages of lexc and lookup tools.
+f2398e2 Made creating and checking flag results less verbose.
+dbb84a0 Changed 'return' to 'exit' in shell script.
+9dc775e Updated version numbers in NSIS and swig files. Also made lexc wrapper disabled by default.
+d76dfcd Fixed a typo.
+d2efde2 Corrected syntax error, typos.
+2f1296e Ready for release 3.6.1.
+672a2b4 Edited help message of hfst-lookup.
+86ca382 hfst-lookup now also handles a transducer archive.
+0a73c82 Added more options to print (random-)(upper-|lower-)words commands in hfst-xfst.
+9ae6bfb Fixed a bug in HfstTransitionGraph::remove_transition and added a test for it.
+1f12493 Fixed some reserved words in lexc parser. Added weights for command 'look up' in hfst-xfst.
+d98f5c2 Scaled down weights in replace rules.
+1d953fc Lex the left paren in function calls along with the function name to make a distinction between a symbol followed by an optionalized transducer and a function call
+c17b5be Added a lexc test that contains reserved words in lowercase. The test does not compile in the same way as in foma.
+247d365 Lexc weights fixed
+8e97a2f small lexc bugfix, tests enabled
+e4eb4c0 Allow underscore in symbols (couldn't discover a malignant side effect)
+2d0993d A lot more expressiveness involving DefFun()
+b251769 Fixed #227 hfst-lexc and multichars with zeros
+54bb1e4 Made hfst-xfst use foma's lexc. hfst-lexc-wrapper is enabled by default.
+06c35e9 Allow tsv input for reweights
+c2006bd Forgot to update -version-info in Makefile.am.
+cc52d4b Ready for release 3.6.0.
+c4bab38 Edited morphology tests so that they agree with changes in finnish-analyze.sh.
+cfbc028 Now checking in configure if tr1::unordered:map/set or std::unordered_map/set is available.
+a04fcb3 Replace rule longest match bug fix
+5c6d4ae Now hfst-xfst gives better error messages if a file cannot be opened. Removed h-files from SOURCES in tagger Makefile because they confuse some compilers on Mac.
+792a4af A preliminary version of DefFun(args...  and Map(fun, @txt...)
+6ed03ab Now apply up/down are done using HfstBasicTransducer if the transducer is not in optimized lookup format, which is relatively fast.
+9b8c298 Removed unnecessary comments.
+b610b50 Added prompt '>' to hfst-lookup, it can be disabled with option --pipe-mode. Added command 'convert net' to hfst-xfst to convert between optimized lookup and standard formats. Now also supporting 'apply up' for optimized lookup transducers.
+0f64569 Removed redundant declaration of SfstTransducer::harmonize that caused an error on Mac OS.
+501ef0f Added command 'load FILENAME'. Fixes bug #225. Also allowing a ';' after 'define VARNAME'.
+d8bb71d Now command 'define foo' is recognized. Fixes bug #224.
+dbcdbe9 Set permissions of flag check scripts. Fixed some typos in other tests and in flag diacritic handling (== instead of = in if condition).
+52eba53 Added hfst-xfst to the environment, help and version checks.
+8d65450 Made minor fixes to tests so that they work correctly on windows and mac too.
+0b5d709 Now HfstInputStream constructor throws an exception if file cannot be opened. This exception is also handled in the regexp parser.
+980ed3e Added experimental options --enable-no-tools and --with-openfst-log to configure.
+15c1ea2 Removed unnecessary warnings from hfst-lexc.
+f327366 Fixed a typo in configure file, extension should be 1, not 0.
+90a6953 Now creating a variable length array dynamically to avoid compilation errors.
+cb847d7 Renamed hfst-lexc2fst to hfst-lexc and hfst-lexc to hfst-lexc-wrapper.
+43f5303 Now att format is printed directly to the console in windows environment.
+11b0dcb Updated reading and printing functionalities based on tests in MinGW environment.
+a57a9b4 A more reasonable parse order for weights and special functions; fixes various bugs concerning weight placement that should be legal
+a0ee0c2 Added missing <stack> include to HfstTransitionGrap.h.
+f8fd3d1 new lexc2fst, with tests
+29d8cbe Fixed a bug in harmonization, now flag diacritics are not harmonized.
+9f5f620 Transition to weighted, prioritizing pmatch; recompilation of rulesets required at least for now
+b62bfd3 Removed a line from HfstTransitionGraph::substitute that printed debugging info to stderr..
+36699e0 Added function HfstTransitionGraph & HfstTransitionGraph::(std::map<HfstSymbol, HfstTransitionGraph> &, bool harmonize)
+08d4506 Now standard streams are defined as binary in command line tools when compiling on windows.
+03ed696 Updated batch, NSIS and swig scripts for windows.
+5b43fe8 Support \uXXXX with a codepoint -> utf-8 generator - this should probably be shared somewhere
+e325a0b Know about uppercase ẞ
+a207a50 Do not warn user about using foma type in hfst-lexc if they have explicitely requested it with --format foma.
+9c19e8f Now hfst-lexc obeys argument --format. Fixes bug #213. Also updated NSIS scripts.
+84b99fd Updated NSIS script. Added hfst-twolc and hfst-train-tagger bat files for windows compilation.
+882e7f4 Distribution package includes flex/bison-generated cc and hh files. Make check runs tests only for those command line tools that are enabled.
+66f323b Allowing tagger tools in mingw.
+caa6f26 Fixed a bug in xfst_getline, also added freeing the result from it.
+32c6b57 Fixed a memory error in hfst::xre::parse_quoted noticed during make check on MinGW.
+8d39597 Fixed some bugs noticed during MinGW compilation: added typedef 'off_t' and compiler definition '__NO_MINGW_LFS' when mings compilation is enabled, and escaped percent sign in fprintf as double percent. Also added tagger tools and hfst-xfst to NSIS installer script.
+158e8ef Allow plain input-output -replacement with tokenized quoted literals, like "this":"that"
+87a7276 Some refactoring & warn about unused definitions
+8ad5fe2 Ready for release 3.5.1.
+83d0dc0 Applied lexc patch (bug #208).
+4a95514 New lexc, but still incomplete
+b8907ea Removed directory fsmbook-examples as fsmbook-tests replaces it.
+5c0a757 Now using foma's lexc parser in hfst-xfst by default. Also using verbosity of hfst-xfst and tagger tools in lexc parsing. Also added an option --enable-all-tools in configure.
+1213bb0 Use flex's newline count as good-enough parsing error indicator
+3ab3a5d Actually fixing that bug this time
+6c720e2 Fix typo-bug in previous commit
+8a3e52c Much more verbose printing of time spent on harmonization and conversion & a speedup the the process of collecting a unified alphabet
+209a12d Small fixes to installation check.
+b2730bc Removed redundant command 'rm TMP' from pmatch test. Also removed verbose 'skipping some test cases' print from proc test, returning a skip value 77 is enough.
+d902787 Fixed a typo in test script.
+d7b4050 Changed temporary transducer name in test-hfst-xfst so that it does not conflict with any other transducers used in the tests.
+ce5564e Skipping pmatch_blanks.txt when creating binary transducers from att files. Also made check-tools.sh more verbose. Fixed a typo in make-dist.sh.
+3ebd13c Modified the call to 'nodeindexing' in SFST::Transducer::store as it seems to leave its argument unchanged sometimes. Noticed this effect when testing hfst-xfst and getting a segfault when trying to use a stored transducer.
+c41db2e Added disjunct_as_tries as a public function of TropicalWeightTransducer.
+7c3bd28 Remove ineffectual AM_LDFLAGS line
+cb52daa Try setting a toplevel LDFLAGS to standardise to the standards-compliant libstdc++
+a1d9ab8 A pmatch functionality test
+8fe00ae --flatten and make option passing a bit neater
+994689f Add DefIns and make LTR longest the default RIGHTARROW
+0b2a9f6 Added argument 'extra_link_args' to Extension constructor. By default it is empty, but when making the debian package it can be replaced by linker flags that make it use /usr/lib/ instead of /usr/local/lib/.
+432da48 Print transducer and function definitions as string pairs in the way they are defined by the user.
+7fc05b8 Made print paths observe whether obey-flags is set ON or OFF.
+0346f8c Now transducer names are saved.
+efded06 getline() doesn't return a newline-terminated string if one can't be found; in this case we mustn't erase the final character.
+000a25d Updated ChangeLog, maybe after a couple of bug fixes ready to make the actual release..
+efb77b7 Added variable 'print-foma-sigma' to the xfst parser.
+f279104 Add a pmatch2fst functionality test with a regression test
+6ebc08b Fix bug wrt unused networks were getting erased from their container during iteration, causing other networks to be skipped
+b911b35 A preliminary "true" negative context facility
+39d4db6 Transducer definitions are expanded without calling substitute in xre parser, the new way is faster and less prone to symbol/alphabet errors. Implemented 'print net NET_NAME' in xfst parser. Allowing variable names that can be parsed as numbers in xfst parser.
+7078c8f Ready for release 3.5.0.
+426e74b Added missing files in fsmbook-tests to distribution package. Edited READLINE conditional in hfst-commandline and lexc-readline-ui.
+9024224 Edited help messages of hfst-fst2txt, hfst-txt2fst and hfst-xfst. Added missing files to distribution package.
+64a536a Renamed hfst-xfst2fst to hfst-xfst and hfst-xfst to hfst-foma.
+3edfd46 Added variable harmonize-flags to xfst parser. A warning message is printed when composing transducers with flag diacritics if verbose in ON and harmonize-flags is OFF.
+ce71a8a Added missing variable 'print-weights' to the XfstCompiler constructor with impl argument. Added support for prolog format to hfst-fst2txt and a simple prolog test. Fixed a typo in configure.ac. Removed unnecessary commented text from HfstTransitionGraph.h.
+3ba662f Added support for weights when reading of writing in prolog format.
+6094847 Edited xre warning messages.
+a8a38ce Added a boolean argument 'increment' to function 'set_final_weights' which defines whether existing weights are summed with the new weight or overwritten, the default being overwritten for backwards compatibility. Also added warning messages about hfst-special symbols of form '@_.*_@' to the xre parser that are printed in verbose mode. Also added support for negative weights in xre parser.
+fe04740 Fix compilation time output at hundredth-of-a-second precision
+998f553 Make --verbose output somewhat neater
+7864401 Time individual compilations
+dc0dd3e More fine-grained information in --verbose
+b782c81 Added option --harmonize-flags to hfst-regex2fst. Also added a function 'set_harmonize_flags' to the xre parser.
+763aa83 Using result from foma in DateParser test.
+46ace60 Added angle bracket test for hfst-xfst2fst. Omitting it until we decide how symbols enclosed in alngle brackets should be handled.
+5efe9b4 Fix some problems wrt ?-expansion and symbol tables in RTN:d networks that have to be aware of each other. Also use dark, forbidden symbol magicks to prevent special markers in RTNs from being clobbered in this process.
+9493341 Make harmonize() a public member function (this changes the interface)!
+e713b45 Now lexc parser can handle epsilon '0' correctly.
+9cc8ad7 Fixed a bug in xfst parser, now semicolon is allowed after 'read lexc <filename>' command and verbosity of the xfst parser is also used when parsing a lexc file. Also added expected results for fsmbook Esperanto tests.
+9b7a8d4 Updated fsmbook tests so that they use ready-compiled xfst/foma results given in prolog format. Also fixed a typo in DateParser hfst script. Also checking that fsmbook-tests and xfst2fst are both enabled in configuration.
+e22ffb2 Fixed a bug in quoted literals, now ["foo""bar"] is parsed as in xfst: ["foo" "bar"]. Also using foma instead of xfst in fsmbook-tests when compiling Lingala because different interpretations of symbols enclosed in square brackets.
+f23f9c8 Now xre parser handles "[.#." and ".#.]", interpreting them as "[ .#." and ".#. ]".
+ef252ec Removed unnecessary zlib dependencies.
+15ac316 Updated cross product and apply boundary mark in replace rules.
+04ce2d3 Changed include of hfst-scanner.h to hfst-scanner.hh.
+fcab62f Changed include of xfst-parser.h to xfst-parser.hh
+bc5b1c4 Changed PmatchUtilityTransducers variable utils into a pointer and added a function get_utils() to avoid variable initialization issues.
+c67ec6c Reverted INTERNAL_EPSILON etc to internal_epsilon..
+5501ab9 Pop the local state stack too when exiting rtn calls
+966fd9f Changed internal_epsilon etc to INTERNAL_EPSILON also in pamtch utilities.
+22d93fa Use xfst instead of my local copy of it..
+90db8f4 Now using macro INTERNAL_EPSILON etc instead of string internal_epsilon to avoid variable initialization issues (noticed on cygwin).
+8f8f9a0 Now fsmbook and hfst-xfst2fst tests should work correctly whether they are enabled or not.
+cf28d27 Added condition WANT_XFST2FST to tools/src/Makefile.am. If it's true, directory parsers is included.
+4359279 Make parser even more messy by having bodyless tagging contexts at the toplevel - for now
+91a171c Added missing file.
+7ba73be Now using directory fsmbook-tests instead of the old fsmbook-examples. Renamed h2hh.sh script to generate-cc-files.sh.
+bdb4ca7 Roll back broken empty-bodied contexts for now
+9932c0c Removed the HH_EXTENSION_USED conditional from configure and makefiles since it didn't work. Now assuming that the flex/bison-generated header files have the extension hh. If this is not the case, the script scripts/h2hh.sh should be run between configure and make.
+ba5562b Added a script for cygwin compilation.
+f373aed Edited ifdef conditionals based on warnings when compiling on cygwin. Also added a script for handling errors in flex/bison header file naming.
+5c3fe43 HfstTransducer::cross_product should expand ?:? transitions to ?:?|?, added this but inside comments until a bug in xerox rule compilation is fixed.
+9bd6dcd Fixed a couple of typos.
+2ab61ee Added more tests to the xfst parser.
+9b4ec9b Finally full support for quoted literals in xre parser.
+8693d53 Tentatively adding quoted literals in xre parsing, this time step by step..
+6d2fcd9 Trying again to make quoted literals work better in xre parser..
+5f46435 Reverted recent changes to xre parser, noticed bugs in hfst-regexp2fst..
+26cc935 Symbols that contain quoted literals supported in xre parser.
+65f1798 Better support for quoted literals in xre parser.
+afd146a Now allowing '0' in symbol names.
+6c08400 Give verbose information about networks while parsing
+c9200d4 Merge from devbranch
+eba09c9 Added cstdio header, it isn't included in cygwin.
+15d6ecb Dynamically allocate input tapes in case of overlong input - in case of insufficient memory, truncate overlong lines.
+ea5ad01 Don't attempt to find regular arcs with symbols newly discovered from input.
+4641571 Added option --eliminate-flags to hfst-compare. Commented debug info printing from LexcCompiler that polluted its output. Edited command line tool tests accordingly.
+f4dd70e Fixed a bug in calling FomaOutputStream.
+068bd6a Added variable print-weight (default NO).
+11a3786 Added examples to hfst-regexp2fst help message. Now xre parser accepts also semicolon and one or more spaces as weight separator. Moved flag handling from FomaTransducer to HfstTransducer as it does not depend on foma backend.
+6089640 Restore tape state after processing rtns; this should fix leftmost greediness bugs wrt rtns. Also: do some checking and print errors in case of broken tags instead of hard crashing.
+db770ec Now make check passes also when some of the back-ends is disabled.
+ef59b18 Output symbol tables were missing when writing transducers in native OpenFst binary format. This is now fixed.
+626d023 Cosmetic changes to Xerox rules
+ab840e4 Removed HH_EXTENSION_USED conditional from configure as it still fails on some platforms. Added function HfstTransducer::get_first_input_symbols and using it in hfst-summarize.
+aa76b2c Ready for release 3.4.6.
+38c638e Now empty comments starting with one or more exclamation marks are also parsed right.
+ea40e35 Fixed errors noticed during hfst-xfst2fst tests.
+adfea76 One more special symbol spelling to rectify...
+3fb5812 Fixed a bug in fsmbook tests.
+1935b06 Forgot to make context markers non-special too!
+770efa4 Add a couple of useful combining accents
+1578436 Use (faster) string disjunction instead of full disjunction for word lists
+9fe2800 Make only TOP, networks with EndTag() and networks with Ins() get the special @PMATCH_ENTRY@ etc. delimiters. This should make various operations on networks that don't use these features work.
+c201bf6 Added missing file.
+3b4ae5e Now allowing several prolog networks in one file, separated by empty lines.
+e26899d Added tests to fsmbook test set.
+786baf3 Now Palindroms test works.
+7c635b5 Fsmbook test Esperanto is now divided in several script files.
+c165109 Now using prolog format to convert between transducer formats in fsmbook tests. Also added the option --prolog to hfst-txt2fst and fixed a small bug in prolog parsing in HfstTransitionGraph::read_in_prolog_format.
+864120d Remove generated files in hfst scripts.
+728b769 Correct internal endtag format in utils too
+84bccf9 Endtags look like @PMATCH_ENDTAG_foo@, not @PMATCH_ENDTAGfoo@
+c14098e Fixed a couple of bugs.
+5976146 Correct typo that was suppressing the functioning of CATENATE_N
+88455f1 Rename internal symbols not to match is_special_symbol() to let them pass through eg. composition operations
+88ae522 Added tentatively directory fsmbook-tests which will replace the directory fsmbook-examples.
+7f5ff0d Added the variant 'write att outfile isymfile osymfile' of 'write att' to the xfst parser.
+e4f2985 A hopefully working test for HH_EXTENSION_USED - unfortunately it appears that automake lines not in a make target are included regardless
+7d7a225 Eliminate else branch
+ee4e69d A better value for the HH_EXTENSION_USED variable?
+dc42b09 Eliminate references to .h targets when HH_EXTENSION_USED is unset, which was perhaps bothering automakes >=1.12
+6a89896 A (more) correct understanding of IDENTITY.
+510955c Switched the *.h - *.hh dependency around, from *.hh: *.h, to *.h: *.hh. This seems to have fixed the *.hh build issues on MacOSX. I have no idea whether this will work or break (on) other systems. Please test!
+0a1a72e Some systems need to be told that .ll files depend on .hh files so things get generated in the right order
+dc1d37e Added '@pl' operator to the xre parser. Testing it with hfst-xfst.
+9a7a132 Fixed the h/hh issue once again, now trying to copy instead of linking. Also added assertions when converting from sfst to basic transducer format.
+3b37bde Removed redundant filenames, added whitespace.
+de4fcde Changing the BUILT_SOURCES to list the cc files instead of the hh files seems to fix the header file issues for twolc.
+0d56127 Some support for identity transitions
+9bc40e0 Implemented '@txt' and '@stxt' operators in xre parser. Also testing them through the xfst parser.
+2f7e9a7 Make the alphabet know about IDENTITY
+9fc2d09 Uncomprehendingly fill in the blanks for the LEXC_BUILT target
+03cf074 When composing incompatible types, instead of throwing an exception, convert the latter type to the former for composition (as per hfst-compose's message).
+91db5fb --force symlink to .h/.hh target
+eeaf345 Add combining accents to the end of the capitalizing and lowercase-ifying utility transducers. Also more aggressive minimize utility transducers.
+bd1cd1b Character constants like \xNN are two hexadecimal numbers, not decimal
+df7f071 Allow escaped quotes on quoted literals
+479cff7 Implemented '@re' operation in xre parser. Added test cases for it in the regexp parser tests.
+b3a3c2a Fix bug with input tape initialization in certain circumstances.
+a0c966a Changed rm -f to ln -s in the Makefiles when handling the h/hh rules.
+327a83d ln instead of mv in .h/.hh rule
+1fc8b14 Check for .h/.hh yacc convention and mv accordingly
+faf3847 Made some modifications to the xfst print format, removed comments from xfst compiler.
+8b608d4 Added missing files.
+394603e Added substitute defined tests to xfst parser.
+b38ac6e Added -f to mv header files
+e441292 Fixed a bug in converting an empty foma transducer into an HfstBasicTransducer.
+3cc8efa Added more substitute tests for xfst parser and fixed some issues with alphabet in substitution functions.
+fd05f5f Fixes bug with Ins()erted transducers named "name"
+1b4b69c Add toplevel delimiters (in addition to ones associated with EndTags). Fixes a bug when endtags aren't used but insertions are.
+e91d560 ToLower, ToUpper and OptCap made (more) compatible with Karttunen's pmatch
+5613090 Fixed bug in LexcCompiler.cc, one that was causing wrong compilation of noflags in cases when there were only identities in lexicon
+9178deb Forgot to remove old test file.
+c757950 Divided xfst substitute tests to several files. Fixed a bug in printing unknowns in xfst format.
+479c64b Now allowing more variable names.
+4307079 Now substituting symbol with symbols(s) removes the original symbol from the alphabet.
+cf3fd28 Fixed a bug in xre substitution: disabled harmonization that caused unknown symbols to be expanded to temporary variables.
+9e1c4f9 Minor changes to lexc2fst and xfst rules
+9b45963 Not substituting a symbol pair with an empty set of symbols removes the transitions equivalent to the symbol pair.
+c222f0f Added tests for substitute functionalities.
+d9ba4ce Added 'substitute defined' to the xfst parser.
+afa6747 Now configure checks the version of automake and renames the header files generated by flex, if needed.
+de7b521 Now 'make clean' removes also files generated by flex/bison.
+7b6831d capitalisation modes: last on wins
+0fee2aa update
+a8383d4 Oops, forgot to exclude xfst testing from make check..
+5c2ce1b Added documentation.
+8c9f157 Now most of the keywords are interpreted as such unless they are at the beginning of the line.
+d488c08 Added substitute functionalities to xfst parser.
+cec7f36 Added function 'remove_from_alphabet' to HfstTransitionGraph.
+e4ae2b8 Added command 'assert' to xfst parser.
+f163569 Now all commands are given by tab if readline is used.
+961ff5d Added tests for writing and reading prolog files in hfst-xfst2fst. Also fixed a small typo in writing in prolog format.
+a24c10b Removed implicit readline requirements from hfst-xfst.cc and foma.c. Also edited prolog functions in HfstTransitionGraph.h.
+eab0624 Now reading and writing in prolog format works. Also addded some exceptions for prolog handling.
+1765035 Added prolog printing functions to HfstTransitionGraph.
+2cd5695 more header renaming (see commit for r3377)
+2c12e0c change header file names -- this will break compatibility with automake < 1.12 see http://lists.gnu.org/archive/html/automake/2012-09/msg00017.html
+055ff21 changes to names of generated header files --- pending testing
+77f5280 Now apropos and help messages work in xfst parser.
+d5fc1bd bump required versions of automake and libtool
+9feac55 Ready for release 3.4.5.
+c9b1cc5 Solved bug in replace rules with term complement in context, fsmbook tests are now completed.
+ea426a7 Edited help messages.
+d6b3866 Small fixes to the xfst parser.
+0286e7f Additions to apropos and help commands.
+21d49c1 Tentatively added enums and maps for xfst commands.
+cdc7f85 Now using variables outstream_ etc instead of stdout etc.
+1e43194 Tentatively added commands 'apropos' and 'help' to the xfst parser.
+ed0fe8e Backport pretty dot files from that better branch
+0fe1b1c Added more tests to xfst parser.
+8ccc79d Added new functions write_in_xfst_format(ostream/FILE*) to class HfstTransitionGraph. Using it now in the xfst parser when calling 'print net' instead of write_in_att_format.
+df3ab64 Added more documentation to the xfst parser.
+90d0462 Added documentation to xfst parser functions. Also fixed a bug in prompt handling when calling apply up/down.
+987fe0a Basic size indications in verbose mode
+b66c98d Xfst parser: now apply up and down work also in pipemode.
+dd5f2e1 Fixed some bugs in the xfst parser. Now readline/getline is used consistently in the command line tool and in the actual parser. Also the option quit-on-fail now works as it should.
+cc65d1e ToLower() and ToUpper() were missing from the rule parser
+5662445 Substituting symbol A with B on both levels now correctly removes A from the alphabet.
+4316ee7 Occasionally minimize while collecting large @txt lists (this is a significant efficiency improvement for those cases)
+de4c50d Fixed a couple of bugs in including back-end libraries noticed during cygwin compilation.
+648dd3e Tests for version and help checking as well as empty input now check only a set of listed tools instead of hfst-*.
+41f0dff Commented foma headers from hfst-file-to-mem.cc. Also fixed a bug in regex parsing in hfst-xfst2fst.
+c77d4ab Let's use malloc until we figure out where xxmalloc lives (and why we want to use it in the first place)?
+945c765 Error messages from xre parser are now handled through the function get_error_message instead of printing them directly to standard error stream. Also changed 'Transducer' to 'SFST::Transducer' in SfstTransducer tests to avoid ambiguousness.
+9898075 Some header files stil used installed back-end libraries instead of those in directory 'back-ends'. That is now fixed.
+d12c4da Now prefix xre is used when generating xre parsers. This should fix bug #185.
+19efda5 Now regex comments can contain semicolons. Partially fixes bug #177. There is still some ambiguousness in weighted mode, consider e.g. the input 'cat ; 3'.
+66ae905 Fixed a bug in function hfst_file_to_mem, when using stdin.
+1db3b53 lex joiner's format changed to special symbols which do get harmonized
+c4e5502 Moved function hfst_file_to_mem from hfst-xfst2fst.cc as a separate file.
+43006eb Fixed comment parsing in xre parser, hfst-regexp2fst still needs some fixing so that semicolons can be used in comments.
+3b8d538 Added facility for inserting undefined transducers as long as they are defined later
+78b697d stringify() can and should take a const parameter
+4c74eab If no boundary markers were used, we need to advance the input tape accordingly to where the real input starts
+a0171d9 Print newlines after printing match result
+b6798c7 Check for nonzero length before trying to omit final newlines
+f978c01 Omit final newlines from input
+be48f32 When in newline mode, no need to print final line because it's already been printed
+9ac5d42 Reworking of pmatch tool, added default of blank line as separator
+1d9d235 Tentatively added a function compile_first to the xre parser that allows compiling onely the first regex in a string.
+459a518 Now hfst-fst2strings obeys the -S flag. Also removing generated files after make check in xfst parser.
+6856a76 Added 'print defined' to xfst parser. Also temporarily commented the bison > 2.6 request in configure.ac until bison on hfst gets updated...
+ee6e8d0 Added a test for bison version 3.6+ - now it will stop if older versions are found. This seems to fix at least one of the build issues reported.
+18a9ff8 Added tests for defining functions in xfst parser. Also fixed a bug in function definition.
+acd3a94 Add diagnostic for rulesets that don't recognise anything
+a62e3f5 Avoid compiling transducers that "recognise" the empty string
+e196215 New insertion arc handling
+8301449 Move insertion arc checking out of flag diacritic handling after all
+692840f Collect and harmonize alphabets
+0e895a7 Detect inserted transducers and only pass them and TOP on from parsing
+5bcd4a2 Recognise insertion arcs as flag diacritics
+5904514 Skipping regexp tests that do not work. Also added new tests.
+62202a7 Changed regex.tab.c and regex.tab.h filenames to regex.c and regex.h because make distclean of some version of autotools removes tab.c files. Should fix bug #184.
+d829e21 Catenate functions were giving wrong results, now fixed
+0cf3e8d No flags part now seems to be working
+4155dd9 Don't treat automake warnings as errors.
+e568b99 Regexps that contained comments were skipped, now that is fixed. Fixes bug #182.
+8590e32 Reverted back to earlier version.
+c93a90c Changed bison-generated h-files to hh-files. Recent versions of bison and automake are needed for compilation.
+cbfe23e Now binary transducer operations don't modify their second argument. Fixes bug #180.
+bcbc96f Refactor ol conversion to allow giving a harmonization hint
+1219953 Fixed error messages.
+0bc38c1 Fixed error reporting in xre and xfst parsers.
+23eb58d Now reentrant parsers are used in all xre parsing.
+7ab97de Fixed replace rules with empty languages
+6f2b708 Added missing file.
+2fc9432 Added reentrant versions of all xre functionalitites.
+e1ac0fd Tentatively added reentrant versions of the xre functionalitites.
+7d683c4 Avoid extraneous copying and sorting
+707fe42 Now comment lines are correctly parsed by hfst-regexp2fst. Also added error diagnosticprints to proc test.
+8cb8ab2 Maybe fixed bison anf lfex header problem. Revert, if it doesn's work.
+9b22f58 Added more function handling to xre parser.
+31fcb4e Fix invert logic and remove debug print
+758a647 Added more function handling mechanisms to xfst and xre parsers.
+fb73e65 Now xfst parser recognizes function definitions.
+9d699fb Make the starting position of the input tape be before BOUNDARY_MARKER. This is to enable referring to the boundary in expressions, not just contexts. It should gracefully always fail to match and be ignored in the absence of boundaries in expressions.
+368efab Refactor parsing; rip out tool-specific parts (and, for the time being, some probably unnecessary control options)
+3267693 Debug printings and rearrange noflags part to first
+59bb75d xre parser now recognizes function calls. xfst parser supports command 'source'.
+185a9ea Add some noflags to parsers
+9aa9a7c Add support for selecting flagged and composed morphotaxis.
+6c6f4f0 Command 'source' implemented in xfst parser.
+65fc6de Added test case for bug https://sourceforge.net/p/hfst/bugs/177/ .
+57132d8 Added symbol substitution to xfst parser.
+f7bec38 Remove use of strndup to fix bug #175
+d63cd8c Added more functions to the xfst parser.
+c9048a3 Fix a bug caused by shifts in the input tape caused by entering left-hand contexts that weren't being undone.
+4945095 Added more functions to the xfst parser.
+16ef95d Removed WeightedString classes as they are replaced by HfstOneLevelPath etc datatypes. Also added new functions to the xfst parser.
+9962f1e Moved lookup_fd functionalities in hfst-lookup.cc to HfstTransitionGraph as member functions. Also moved HfstEpsilonHandler.cc and .h from tools/src/ to libhfst/src/. Removed is_flag_diacritic from hfst-lookup.cc and using FdOperation::is_diacritic instead.
+41c6f4e Removed extra code.
+5dfb71b Moved EpsilonHandler from hfst-lookup.cc to HfstEpsilonHandler.h and .cc.
+24c1781 Moved is_lookup_infinitely_ambiguous(HfstBasicTransducer ...) in hfst-lookup to member function of HfstTransitionGraph: is_lookup_infinitely_ambiguous(...).
+3aee716 Added flag tests for hfst-fst2strings.
+944e477 Use ANOTHER_EPSILON for tokenising
+b39c704 Now option combination --obey-flags --random works in hfst-fst2strings.
+6597da6 Insert epsilons to all lexicons
+5f8d5e2 Maybe align end flags
+66184c6 Now hfst-xfst warns about transducer type conversions. The state and arc information should also be correct.
+2ab6f01 Added missing test file.
+ff916bf Many changes to how utilities are handled, prepare to move all parsing away from the hfst-pmatch2fst tool
+6379325 Another bug in flag elimination fixed. Now flags that are not eliminated are included in the filter so that they are not blocked.
+2c0c535 'load stack' didn't print state and arc info for all transducers, this is now fixed. Should fix bug #171.
+37b640a Calling eliminate_flags for a transducer that has no flags to be filtered caused a segfault, this is now fixed.
+ecb18bc Updated eliminate flag tests.
+95c91cc Fixed a problem with default symbols and harmonization in compiling guessers.
+72040dc Ready for release 3.4.4.
+e0e9996 Now proc functionality test proceeds until compounds2.strings would be tested and instead returns a skip value 77.
+eef4bc1 Now tests for tools that are disabled by default are only carried out if the tools are enabled...
+e25f409 Fixed a couple of bugs noticed when installing HFST on Hippu.
+b7b567d hfst-xfst2fst tests are now skipped if --enable-xfst2fst is not specified. lexc-compiler-functionality-sh and proc-functionality.sh also return a skip value.
+dacc7d1 Now foma and sfst backends are enabled by default in configure.
+aea2aa0 Now hfst-lexc uses only foma. hfst-lexc2fst tests skipped as experimental. Flag tests in hfst-fst2strings are also skipped until flags are thoroughly tested.
+f0a52e9 Fixed missing parameter in fprintf in warning message in hfst-compose-intersect. It was causing a segfault on some systems.
+d374ccc At least unification flags are now handled correctly in hfst-fst2strings.
+0f5f715 Moved HfstLookupFlagDiacritics functionality from tools/src/ to libhfst/src/.
+60e6533 Tentatively added HfstTransducer::extract_random_paths_fd. Flags still need to be processed right.
+d55617c Now hfst-lookup warns about infinitely ambiguous transducers. Fixes bug #168.
+2c03ec7 Added missing files to Makefiles noticed during distcheck.
+c608af2 Added warnings to xfst compiler when using longest-string(-size) with flags.
+1fc3922 Tentatively added commands longest-string and longest-string-size to xfst parser.
+34771a9 Added function HfstTransitionGraph::longest_string_size.
+ec8a45d Tentatively added function HfstTransitionGraph::top_sort().
+3c946a6 Added option --version to hfst-pmatch.
+117677d Make sure minimization always gets done
+e93a1ca Added more test to xfst parser. Now comments are handled correctly in xfst. Edited documentation in HfstTransducer.h.
+c1e3447 Merge from pmatch dev branch, with a change related to read_lexc -> read_lexc_ptr.
+bd3e893 Now xre parser can parse expression '{foo}:{bar}' correctly. Also added variable tests to xfst parser.
+6a48024 Added a test for xfst's shortest-string. Also fixed a bug in including the epsilon string in HfstTransducer::extract_paths.
+c0d6df4 Added new xfst tests, also added function HfstTransducer::is_automaton.
+21b6858 Invert lexc flags
+2b3399e Renamed again some testfiles in xfst..
+6c55cb5 Edited xfst tests.
+fbe891e Documented flag elimination function. Fixed some bugs in using transducer definitions.
+d1a4df5 Added a new test for flag elimination.
+7e73c8e Added tests for xfst parser's function eliminate flags.
+4f1b6ed Wrote more flag elimination functionalitites.
+3ef35f3 Added x: center rules and tests for them.
+9bac4fc Restored long option name --resolve.
+2ddf6e2 Fixed problem where definitions in pair expression were caught too late which resulted in weird syntax warnings.
+dde58d7 Maybe use flags instead of joiners in legacy lexc compilation.
+855907f Started implementing flag elimination function.
+0417d5c Added new functions to xfst parser.
+37f8117 Added new test for xfst parser.
+f4117b7 Set property executable ON: test.sh.
+4f0096e Again doing flag diacritic filtering in flag diacritic harmonization, since it turned out not to be a problem after all.
+d7b530c insert_freely_missing_flags(...) no longer uses insert_freely(...) becauses successive invocations of insert_freely without intervening minimizations cause exponential state growth.
+9cc367a compose-call in hfst-compose now does flag filtering only if flag harmonization was done
+96db17f Changes that permit new filtering of illegal flag paths hopefully wothout affecting performance.
+1015c1e Added more tests for xfst.
+2626251 Added more tests for xfst parser.
+bb869de Now readline is disabled by default in xfst parser unless configure is run with --with-readline.
+e9df9dd Changed 'HFST_THROW' into 'HFST_THROW_MESSAGE' in HfstTransducer::eliminate_flag(s). Should fix bug #163.
+64baca6 Renamed some of the functions in xfst parser.
+b9fb1df Now readline history of 'inspect net' is ignored when returning from 'inspect net'.
+4e8a8d6 Commented code.
+2921e59 Now 'inspect net' should work for all cases.
+b3bda03 Tentatively added 'inspect net' to xfst parser.
+28fe040 Edited XfstCompiler
+281668c Added new tests to xfst parser and implemented interactive lookup mode.
+4d9d801 Added more tests to xfst parser.
+7461e46 Tentatively added functions HfstTransducer::eliminate_flag(s). Added function 'compose_net' to xfst parser.
+f40c185 Updated to foma version 0.9.17.
+c822503 Added test for HfstTransducer::remove_from_alphabet.
+03593c7 Changed bool static is_safe_conversion(...) to static bool is_safe_conversion(...) because syntax error.
+b708ce1 Now regex parser substitution does not add substituting symbols to the alphabet of the transducer to be substituted. It is not needed anymore since there is a parameter 'harmonize' in HfstTransducer::substitute(StringPair&, HfstTransducer&).
+ee00f6c Now HfstTransducer::n_best throws an HfstFatalException if OpenFst fails to allocate enough memory. Kind of fixes bug #159.
+2dd7fe5 Now hfst-regexp2fst and hfst-xfst2fst both give a warning message if the user writes a replace rule that contains special symbols.
+4f1842f Added more symbol harmonization tests.
+782cbb7 Commented code.
+1e7be91 Now the regex parser parses [x:?] so that it includes the transition [x:x]. This also happens in xfst and foma.
+2b62822 Now regex parser interprets ?:? in the same way as xfst or foma, i.e. as unknown-to-unknown OR identity-to-identity.
+19fddc2 Implemented substitution with an empty set in regex parser.
+5d3bcdc Fixed hfst-twolc.bug which inserted all diacritics into the first set that was declared.
+acdf5e8 Now xre parser never performs harmonization in substitution or ignoring.
+2a1e3d4 Fixed a bug in xre substitution.
+5a033b8 Added a bool parameter to control harmonization in HfstTransducer::substitute(SymbolPair, HfstTransducer). Fixed xre parser so that it doesn't harmonize when performing substitution. Also changed call to substitute function in twolc but preserved the harmonization.
+5282e25 Now binary operations never harmonize special symbols of form @_.*_ at . To make xerox rules work, the marker symbols @_SOME_MARKER_@ had to be changed to @SOME_MARKER@ so that they get harmonized as they did earlier.
+4312b8c Now insert_freely also takes a parameter that tells whether harmonization is carried out.
+e979ac2 Now there is an option --do-not-harmonize for all binary command line tools.
+72d8c60 Fixed some bugs in harmonization.
+b7ad8b6 Fixed missing bool parameter problem.
+5890a60 Added a flag -H to hfst-compare and hfst-regexp2fst that turns off unknown harmonization.
+004dfbd Added a bool argument to binary transducer functions that controls whether harmonization is carried out. Also added harmonization tests.
+12c3111 Now hfst-lexc writes all messages to stderr. Fixes bug #68.
+cdf4d16 Now FomaTransducer::define_transducer(symbol1, symbol2) works also if symbol1 == symbol2 == identity. Fixes bug #110.
+20dfb3f SfstTransducer.h no longer uses generic word 'Transducer'. Fixes bug #130.
+4aa59f6 Now hfst-sfstpl2fst finds included files in the same directory where its input file is located. Fixes bug #145.
+aea2877 Now hfst-fst2txt prints an error message instead of segfaulting when given an input stream whose transducers do not have the same type. Fixes bug #115.
+1cefd4e Implemented functions number_of_states and number_of_arcs.
+b081353 Now all xfst files are read in a buffer and parsed with XfstCompiler.parse_line.
+0c08820 Now xfst parser can parse regexps that are on several lines.
+d2f3f2e Edited xfst parser.
+9c5a616 Added tests for hfst-xfst2fst.
+721c603 Added main program from XfstCompiler.cc to hfst-xfst2fst.cc.
+21981c9 More command line options added to hfst-xfst2fst.
+f036bab Parameter handling added to hfst-xfst2fst.
+fea1693 Now hfst-xfst2fst works with readline functionalities if a temporary file is used for buffering commands.
+e2fa01a Replace rules compilation - boundary marker added to begining/end of all contexts which don't containt it
+f674390 Added more functions to the xfst interface.
+51d468d Added more functions to the xfst interface.
+d806ad2 Added variable undefinition to xfst parser.
+21d5809 Now definition expansion can be controlled in XreCompiler through a function set_expand_definitions. If they are always expanded, lexc syntax is not parsed correctly.
+48adbe9 Added definition expansion to the xre parser.
+6ee87cc Made a couple of fixes to xfst parser.
+bcc413b Tentatively added tools/src/parsers as a part of the automake build.
+87e7cf8 Updated morphology installation tests, now omorfi is included.
+0f1d6b3 Updated version number in swig setup file.
+dce9471 Now installation tests skip sfst or foma if they are not found.
+9dd6577 New apertium proc space handling test from bug [#153].
+5092648 Small fixes to swig and installation checks.
+f28cddb Added documentation.
+ad582a8 Made small fixes to swig tests.
+daeca5d Made permutate-file-params test silent. Edited check-tools.sh so that it handles --prefix parameter right.
+a34e969 Updated hfst tool checks-
+cb402e9 Fixed Lingala and MonishGuesserAnalyzer fsmbook tests, minor changes in regexp
+bec768d Updated installation checks.
+1b414e4 In substitute (symbol_pair, transducer) added harmonization with the symbol_par. Also, updated substitute in regexp
+da8b67f Ready for release 3.4.3.
+ce48e9e Prune alphabet added to regexp, also ? -> x rules fixed
+310a1e1 Added a couple of fixes to swig tests.
+9ecc837 Now tests pass on MinGW, file handling still has some problems.
+4b8f264 Disabled tagger tools if HFST is compiled on MinGW. They are also skipped in tool tests.
+fbad2ce Added tests for hfst-xfst and hfst-twolc in installation tests.
+a7a109a Added 'AUTOMAKE_OPTIONS=std-options' to foma Makefile so that foma wrapper gets installed right on Cygwin.
+6fb4082 Renamed option --enable-windows as --enable-mingw.
+6430247 Edited configure.ac so that setting executable mode on script files should finally work. Added missing windows conditional to foma Makefile.
+3e49944 Prune alphabet changed for easier use in parser
+04dbf51 Removed local versions of hfst-xfst as well as hfst-xfst tests.
+4dc1af2 Setting executable mode on scripts.
+fcd3abf Fixed a typo in Makefile.am.
+4451854 Fixed a bug in foma wrapper. Also added missing test file to EXTRA_DIST.
+6ae0cb3 Set executable mode on scripts.
+57f2152 Made a local version of hfst-xfst that is used in tests.
+9afcfd1 Ignore generated files.
+280ff8c Added a test for hfst-xfst. Modified permutate-file-params.sh so that it doesn't use curly braces which are not expanded correctly on all environments. Also modified hfst-compose-intersect.cc so that it doesn't use dollar signs when specifying how strings are printed as they don't work on Cygwin.
+ae57f52 Now swig tests use libhfst.hfst_get_exception() instead of catching HFST exception classes. This should make the tests compatible with python 3 where catching exceptions that do not inherit from BaseException is not allowed.
+6849b3e Disabled fsmbook tests from 'make check' by default (enable with --enable-fsmbook-tests) because they currently depend on foma command line tool.
+c08fbcc Added function HfstTransducer::prune_alphabet which is also used in the tool hfst-prune-alphabet.
+c23504b Added filtering to harmonize_flag_diacritics. It will filter out superfluous flag diacritic paths, which are created during harmonization.
+be0e3fd Prevented foma from harmonizing id- and unk-symbols with flag diacritics in insert_freely.
+8cecacd Removed 'words.txt' from EXTRA_DIST as it is not found in svn repository and make check passes without it.
+653b608 Added a function 'std::string hfst_get_exception()' that can be used to get the name of the latest exception thrown by HFST library. This is useful if the version of Python used does not support catching exceptions that do not inherit from BaseException.
+d4ceb69 Making sure that flag diacritics are added to the alphabets of both arguments in harmonize and harmonize_
+9e56f9f Changed id- and unk-symbols harmonization so that flag diacritics are no longer harmonized.
+2d801c6 Fixed a bug in flag diacritic harmonization yet again. This time actually using the parameter bool harmonize in freely_insert.
+b2139f2 Fixed problem which resulted from changing the insert_freely-function in the library.
+65f17f0 Re-fixed flag diacritic harmonization problem, where identity and unknown symbols were expanded by flag diacritics. To prevent expansion in this case, I added a bool parameter harmonize to the insert_freely library function.
+220b78c Now configure gives warning on missing hfst-xfst correctly.
+8499a59 Added a new tool, hfst-prune-alphabet. Also added a new bool parameter to HfstTransitionGraph::prune_alphabet.
+0de2ffe Changed variable name 'infinity' to 'infinity_' to avoid compilation error on Cygwin.
+58531f1 Added -D switch to enable reading from file in htwolcpre2 and htwolcpre3 (for debug purposes).
+aa1f445 Now tagger and twolc tools also pass version and help checks.
+edc2f45 Added a missing <cstdio> header that caused an error on cygwin (FILE was not defined).
+0e0d644 Now all back-end files are included in the distribution package.
+626ae88 Fsm-book test FinnishProsody
+40ae452 Fsm-book test Palindromes updated
+157ee16 All back-end directories are now included in the distribution package.
+bafa96d Added PlusOrMinus fsm-book test
+5534b00 Updated README. Fixed hfst-info so that it passes version and help checks.
+14b7427 Changed the order of paragraphs in README. Added a todo comment about XreCompiler.compiler conflicting with a built-in name 'compile' in python.
+b4c8b7b Updated README.
+52eff40 Ready for release 3.4.2.
+b38adb5 Now -lncurses is used in foma instead if -ltermcap is not found.
+dd13b4c Fixed a bug in foma wrapping-
+eaa693c Added regexp substitution
+55d2750 regex parser - added left replace epenthesis rule
+145ac04 Added note to remind people to also increment the HFST_LONGVERSION. This is important to ensure consistent behaviour between different types of version checks. The different types of version info returned by hfst-info --version should be consistent, the long version should just be a representational variant of the other values.
+d2ff139 Longversion.
+9d02b3e Ready for release 3.4.1.
+7741485 fsmbook examples change
+d73849e Epenthesis rules fixed
+557c7bf Updated results of morphology tests.
+251f753 Now hfst_foma is called directly from where it is installed.
+533a2d0 Bring the long version string in sync with the other version numbers.
+95f8764 hfst-xfst now uses hfst_foma instead of installed foma.
+70c60e9 Added test sentences for all morphologies.
+eb0a148 Renamed a duplicate symbol.
+7bcb083 A variable was shadowed by a another variable with the same name, renamed the previous.
+2939cf2 Made the names of the tests scripts shorter.
+4334be5 Tentatively added tests for installed HFST morphologies.
+b7a55de Added lower priority union to regex parser
+2eaa8ba Added foma script under back-ends/foma. It is now used by hfst-xfst. Fixes bug #147.
+999b9c5 Fixed a couple of typos in swig test file.
+5db5e5a Updated the installation check script.
+e754a74 Tentatively added tests for installed swig bindings.
+c6763af Now installation tests pass on Hippu.
+1bb3ebc Updated tests.
+faca499 Now installation tests should pass. Also fixed a cople of minor bugs in test/tools.
+7b55aac Added new tests.
+ecffb8d Tentatively added a test for all installed HFST functionalities.
+7844d8a Another warning-silencer flag that had to be removed to get hfst to build on MacOSX.
+8dceaad Made hfst build on MacOSX again, by removing the -Wno-unused-result GCC flag. Sorry about the additional warnings, but I really need it to build.
+3825fab Suppressed warnings caused by back-end libraries.
+b087ac1 Ignored generated files.
+ac73af7 SWIG bindings should now work with both Python version 2 and 3. As FILE* conversions are no longer supported in Python 3, added more wrapper functions that use an HfstFile argument instead.
+1a71ed7 Priority union bug fix
+52a9da3 Fsmbook tests updated
+b151760 Removed old command line tool hfst-strip-header from tests.
+d4e491c Removed old command line tool hfst-preprocess-for optimized-lookup-format from tests.
+f0fbd83 Removed old command line tool hfst-duplicate from tests.
+921e328 Revert previous unintended change to unrelated files
+bb4a001 The header from r2888 that accidentally didn't get re-committed with the most recent bugfix in this directory..
+5bcd481 Fix typo-bug wrt tape movement
+6c8fc3d Roll back previous changes pending bug fixes
+7e449db Avoid reallocations in the input tape
+55d96ea New scheme for input and output tapes to allow them to be arbitrarily large
+86942e1 Handle the case where we want to take a default transition when it's the only transition
+7a27e64 Changed all includes of type <backend-header.h> to "backend-header.h". Made small modifications to NSIS installer.
+34355d9 Added more information to swig/README.
+a29cb34 Ready for release 3.4.0.
+049de83 Fixed some bugs noticed when making distcheck-
+a66c16d Fixed a couple of bugs that occurred during installing a dist package..
+809b5e7 Fixed a small bug in HfstTransducer::read_lexc, suppressed some warnings from openfst headers.
+6daff3e Updated python tests.
+85104fb Added all python examples given in the doxygen documentation to tests.
+d41d5b3 Added more tests to the Python interface and added throw statements to functions.
+1113a6c Renamed hfst-duplicate as hfst-multiply.
+2ab080e Now tests remove extra files that they generate.
+b7d3c8c Moved Python tests to a separate directory.
+173566e Python documentation is now in a separate directory.
+48a0405 Now all functions in Python interface are documented.
+14a3048 Added documentation on rule functions of the Python interface.
+b648563 Added new internal documentation to the Python interface.
+0093e29 More documentation on the Python interface.
+dcd281c More swig documentation...
+2b97711 Added more documentation for class libhfst.HfstTransducer.
+33c493e Updated swig documentation.
+964d693 Added - as a comment - parts of my attempts at building all version info from only one definition. No success so far.
+23b3cbd Added missing directory 'openfst'.
+61e0e19 Added a new constructor to HfstTransitionGraph, also added it to swig interface.
+75891d8 Updated swig documentation.
+3624f88 Updated python documentation.
+43a3301 Added more documentation of the python interface.
+7145563 Tentatively added doxygen documentation for Python interface.
+f888bfc Now all back-ends (SFST, OpenFst and foma) are moved under HFST and statically linked to the HFST library.
+5835516 Forgot to change the directory name to opefstwin in Makefile.am.
+f617fb6 Renamed directory 'windows' as 'back-ends'.
+35cccd1 Added a variant of HfstBasicTransducer::add_symbols_to_alphabet that takes a StringSet as an argument.
+46143e2 Added all substitute functions to swig.
+1a742cf Added XreCompiler functionalities to Swig.
+009986e Now enumerators can be used normally in python, e.g. libhfst.SFST_TYPE.
+53db94f Added Lexc functions to Swig.
+417ecba Added more tests.
+0d90bbb Fixed a typo in configure file.
+3b8de30 Bring the HFST_LONGVERSION in sync with the other version strings (again - is there a way to calculate some version strings from others? I.e. change once, update everywhere?).
+dc6f3df More updates to tests.
+4146e0f Updated swig tests.
+49df758 Fixed MonishAnalysis fsmbook-examples test
+2468270 Added before and after to HfstXeroxRules
+99ce678 Added new test for tokenizer.
+0b4a0c8 Fixed restriction in HfstXeroxRules
+b375541 Updated restriction in HfstXeroxRules
+4b4e102 Small updates and added documentation to tests and swig bindings.
+eace5f2 Added new test cases and functions to the Swig interface. Also moved HfstFile to HfstTransitionGraph.h.
+c262db7 Added restriction to HfstXeroxrules
+ddf3b77 Added one more test.
+79d2758 Updated tests, added some throw statements to the interface file.
+7de5e18 Tentatively added a new test for swig bindings.
+d7e0b48 Added HfstTokenizer to the python interface.
+1676fda Added some files to _BUILT that probably should have been there all along (is this the cause of those build problems on some platforms?)
+1a14d8f Tentatively added python version of libhfst test.
+8328757 Added yet one missing lexc file.
+77eda4a Added a missing file in lexc tests.
+22ae13f Ready for release 3.3.15.
+8164899 Fixed a re-introduced bug in insert_freely(SymbolPair&), now unknown and identity symbols are expanded during the operation. Also made svn ignore some generated files in swig directory.
+f3e79ad Fix unnecessary shell call that breaks portability
+e008efd Fixed bug in flag diacritic handling. Transducers were harmonized before insertion of missing flags, which lead to undesired behavior when identity/unknown symbols mixed with flag diacritics.
+0fe8065 Updated doxygen documentation. Made svn ignore some generated files.
+9944411 Removed bashisms from scripts.
+012e4d9 Fixed some GNUisms ans bashisms in twolc and tagger scripts to make them work also on non-Linux platforms.
+4075404 Fixed some GNUisms ans bashisms in tests to make them work also on non-Linux platforms.
+7a9c6c7 Enabled hfst-tagger when compiling on Windows. Excluded the Windows versions of tagger and twolc tools from hfst-check-help.sh. Also updated Doxygen documentation.
+5b310da Added versions of hfst-twolc and hfst-train-tagger that use system calls instead of shell commands.
+a5e86c5 Made small modifications to hfst-optimized-lookup so that it works on Windows. Now the transducer file is opened in binary mode and carriage returns are removed from the input strings.
+16e7620 Just a test commit, nothing to see here
+e4f6871 Parse 0 within @ flags as if it was known multichar symbol
+d389a29 Fix escaped 0 at the end
+c22c68d Warn users about wrong case in keywords
+c1e59ec Removed hfst-strip-header from tools, use hfst-fst2fst instead.
+77c82f3 Removed hfst-preprocess-for-optimized-lookup-format tool.
+5d6f85e Updated swig bindings, edited NSIS scripts.
+126e4b8 Parse version vector with serial strtouls
+ff4d11e Bring the HFST_LONGVERSION in sync with the other version strings (?).
+1cc8a0e Changed HfstTransducer(FILE*, ...) so that epsilon symbol is an obligatory argument and added a new obligatory argument that keeps track of the line number in the AT&T file. Did the same to HfstBasicTransducer::read_in_att_format.
+92e7a51 Added a directory for NSIS installer scripts.
+685194f Now FomaTransducer::read_net accepts also files with CR+LF newlines.
+9844e68 Added wrapper class HfstFile for FILE* that can be used in Python.
+4198158 upper- and lowercase versions of convenience acceptors
+6d8f659 Added missing files to test/tools, fixed a typo in libhfst.i.
+6ed258d Ready for release 3.3.14.
+e7f7786 Added new testing scripts.
+047964b Now HfstTransitionGraph::read_in_att_format throws an EndOfFileException if the argument FILE is exhausted. Also fixed a typo in HfstOutputStream.
+791ead1 Added an alias for HfstOutputStream::operator<<, HfstOutputStream::redirect. Also added a Python test test_streams.py.
+6b162d9 Fixed a namespace issue in libhfst.i, now omor_query.py works.
+3536086 Added HFST exceptions to the Python interface. Renamed HfstBasicTransducer::at(HfstState) to transitions(HfstState).
+7918308 Added more functionalities to the swig interface.
+7300635 Fixed missing symbol table in optionalization bug for tropical weight type transducers.
+56211a1 Added wrappers for operators [], = and << so that they can be used in swig bindings.
+8610408 Added the function write_in_att_format(char * buffer, bool) to HfstTransducer. This makes it possible to call python's print() to a transducer.
+cf19853 Tentatively added HfstBasicTransducer to the swig interface.
+3fb1743 Changed Replace rules interface
+923eb25 Fallback utf-8 tokenization
+13e36ea Tokenize string literals for pmatch parsing
+f1319a3 Now hfst-lookup handles the '\r' character right when parsing input strings on Windows.
+f9b9344 HfstOlTransducer streams are now opened in binary mode.
+5380f65 Added dlfcn include path to Makefiles.
+65e903e Remove mentions of apertium and xml stuff
+89ad025 Multiline handling like regexp2fst
+ccfccde Fixed a typo in Makefile.am.
+0902aaf Tentative names for charclasses
+56e9149 Semicolon separation is default
+0166e9e Context-checking markers in pmatch2fst parsing
+29b863a Make , reserved. Fixes [#134].
+f0a7795 print yacc debug traces if hidden sekrit debug mode is on.
+6e9dbd0 Added missing file sfst/interface.h
+a359eb1 Changed ../../tools/src to  in fsmbook-examples to make tests more flexible.
+55b39ed Changed the pathname ../../tools/src to . This makes testing more flexible.
+bfba7cb Fixed a couple of typos.
+b75728a Renamed .c files to .cc so that c++-compiler is used.
+06fdbfa Fixed sfst include path.
+e30d3a0 Tentatively added SFST under directory windows.
+d300ea2 #include <stack> (seems to be necessary when compiling without openfst at least)
+0285685 Some compilers don't believe in universal characters given from the ASCII range, so instead of \u000D, have \r
+3ab2f3a Fixed format specifiers when printing long long on Windows. Also specified windows/foma as include directory in Makefiles.
+6c9ef91 Added regex test case from the GT/Divvun sources that presently does not compile with hfst-regexp2fst.
+a40bd43 Made fixes to foma compilation.
+16309e0 Add charset-defining hardcoded transducers to pmatch utilities for now
+85e6ba7 Foma's io functions are now skipped.
+7593089 Fixed left replace rule
+3270f5d Stateful context-checking mechanism; remove recursive functions for same
+8c59f9e OpenFst library check is now skipped and flag -D_MSC_VER is used when compiling on Windows.
+9bde6a2 Fixed a typo in library name.
+dfeb54c Tentatively added foma under directory windows.
+30a6942 Added generate_threshold parameter to prevent generating suboptimal forms.
+9baaaeb Generate several forms if several forms can be generated.
+67950e5 Added missing --format flag in hfst-strings2fst functionality test.
+1a53070 Modified guessify to handle gradation in omofi.
+898af0b ACX tool disabled by default, requires libxml/tree.h and -lxml2
+94a22e0 Temporary file - does not belong in svn.
+e666602 Test parallel left arrows [#132] part 2.
+9053c67 Ignore expressions that _only_ contain whitespace. Fixes [#132]?
+5d48615 Test not contains and multiline expressions with comments and emptylines, Bug [#132]
+d92fb74 Bail on parse errors
+fe31f8c No semicolons, huh
+8c7725c Allow windows or mac legacy \r's to end strings
+3e51123 Stop recording input data to headers until header support for longer data gets fixed
+5189a69 Only test fsmbook-examples if other tools actually work...
+33aedf5 Do not use AC_PACKAGE_URL or resp. parameter to support autoconf's older than 2.63 or so
+4ade921 Test that dos strings compile like unix
+635fa08 tests should pass 77 if tool is not available
+3d32324 Test that strings2fst handles M$-strings
+335c414 Fixed a bug in testing if compilation is done on Windows.
+58d3876 Disabled using hfst-lexc with multiple input files on Windows.
+2076847 Fixed some problems with automatic LF-to-CRLF conversion on Windows.
+3843896 Now hfst-twolc test uses 'uname' to find out if Windows is used.
+a0d41f4 Added excutable file extension '.exe' to tests when running them on Windows.
+1da9324 Disabled tagger tools on Windows until they work there too.
+3d2c49b hfst-substitute now recognizes '@0@' as epsilon, fixes bug #133.
+4ff55bd Noticed missing files and tests that should be skipped during distcheck.
+d7576d0 make dist revealed an extra file listed in Makefile, skipped that
+348deb6 Ready for release 3.3.13.
+970f355 Merged changes from old repository.
+5bf1aa1 Undo conditional compilation of pmatch compiling stuff
+004ee60 Limit memory consumption a bit by clearing SequenceModelComponentPair state tables between tagging sentences.
+73a589c Make pmatch parsing code conditional on WANT_PMATCH2FST
+805b765 Changed sizeof(input_symbol) and so on to sizeof(SymbolNumber) since sizeof can only be applied to static data members according to standard (though not all versions of gcc).
+c08e4ec Changed WeightedStringVectorCollection test so that it takes into account the model penalty weight line.
+e7567b3 Fixed incorrect loop condition in previous commit to this file
+0691b07 Added newline between results for different words.
+2205e95 Recommit fix to ol -> basic conversion bug (hopefully)
+634912e missing part of %0 handling
+c931c66 Option --enable-windows is passed to Makefiles.
+58812ce hfst-twolc test is currently skipped on Windows. hfst-twolc is a bash script that will be replaced by a batch file on Windows.
+60f72ef Fixed multiple defintions of SequenceModelComponent::START_STATE in make check
+8e66c75 Comment out xre-specific tests for the time being
+8c0cb26 Merge missing header file
+d8f8aca Merge changes to tools pmatch2fst and pmatch
+87cc83a Merge pmatch parser changes
+b51a7be Merge inclusion of hfst.h in HFST_HDRS
+b6d5c39 Merge pmatch library parts from devbranch
+786ec44 Improved error messages and fixed help message.
+8e887c8 Maybe fixed undefined ref. to SequenceModelComponent::START_STATE problem.
+b7caa51 Set revision for info
+ffbd4f2 Newlines are now handled correctly when testing command line tools on Windows. Version and help checks also skip the tool hfst-info.
+849f3df Further porting for info
+d65900a Missing square bracket in define
+536ebc8 Port basic info app to trunk.
+2ab0507 Fix conversion bug where when converting to BasicTransducer, we would stop looking for a particular flag diacritic when seeing symbols that aren't epsilon or this flag. This caused misses of flags when they weren't arranged in a lucky way.
+fc0dca3 Uh, actually declare hfst.hpp in headers and not files to get the meta
+cdddfe1 Port some versioning and meta from branch
+6f2af57 Replaced size_t format specifier %zu with a macro that is expanded to %zu or %Iu (Windows).
+a86675b Removed debugging prints from HfstTransitionGraph.h. Added --help information to hfst-summarize.
+d5084f0 Fixed python and utf-8 related problems.
+126e249 Added preprocessing flag -DWINDOWS to Makefiles if HFST is compiled on Windows.
+afc1e60 Streams to files in TropicalWeightInputStream and TropicalWeightOutputStream are now opened in binary mode. The global variable _CRT_fmode is also set to binary mode in file globals-common.h when compiling on Windows. This makes sure that streams are always processed in binary mode on Windows, with no extra or missing carriage return or line feed characters.
+fe9eab0 Add Mac OS X abort trap to faqs
+8218c9b Move "stuff that is next to colons" to another level to support quoted literals and some other constructs maybe
+375ee88 Provide more info about itnae's in lexc for mac users
+cba4f88 A convenience header file including HFST headers necessary for doing practically anything
+ea4342f Added OpenFst and dlfcn functionalities as a part of HFST (at least when it is compiled on Windows).
+afc1c34 Added a script for Monish guesser-analyzer test.
+81c654e Installation instructions for dependencies that are not in our control...
+223b5fb No alphas in trunk
+3c0d30d retab!
+86115d2 Add port and gentoo installation instructions
+1d50ca0 Added reweighting tool.
+e5cc768 Added config-file.
+1be6c2b Added size() function.
+0d8cfdd Added dummy-tags to guesser and lexicon entries without real tags, so that the could be parsed in the same way as regular lexicon and guesser entries.
+4813945 Fixed output file, so that output is printed to stdout, when no output file is given instead of file "<stdout>".
+93d16de Changed guesser tags.
+2826e47 Some default-transitions were missing. Added them.
+999fb85 Another #include <hfst/HfstTransducer.h> -> #include "HfstTransducer.h"
+68a396b Added case sensitivity to suffix counts.
+b9123f8 Added 'MonishGuesserAnalyzer' test for parser
+8778016 Continued adventures in unsigned short reading: cast to unsigned char, not unsigned short, before shifting and adding the bytes.
+aa6d431 (Regular) containment fixed in 'Regexp2fst'
+c975b5f Fixed kitwiki addresses in the help-messages of hfst-guess and hfst-guessify.
+c4e6d9e Fixed printouts so that they match for guesses and generated forms. Fixed printing of guesses, so that they're not printed reversed.
+2bca1a1 Fixed hfst-guess help-message and exit value.
+34be6db Implement a little-endian unsigned short stream-reader on top of the char-reader. Use it to read the header size rather than fiddle around with signed shorts.
+429f813 Initial commit of hfst-guess utility.
+bfb86fa Initial commit of the hfst-guessify utility.
+ed7b61d Complement added to the 'regexp'
+167a297 When reading header size, which on the disk is a two-byte unsigned number, we need to call stream_get(short &) because it's not implemented for unsigned short. Then cast it to unsigned short.
+73db847 header_size needs to be able to handle MAX_HEADER_LENGTH=65535 bytes, so make it an int instead of a short
+ab3de48 Excluded source files under windows directory from distribution.
+f6b281f Curly brackets added to regexp
+2e53d41 Appended $(EXEEXT) to program names in Makefile.
+18a5340 Temporarily disabled 'hfst_mkstemp' in windows compilation, because it uses 'mkstemp' that is not standard C++.
+92e33ad Fixed a typo in Makefile.
+f3eaf25 Complete purge of trap_transition in try_epsilon_transitions
+0165a14 When following epsilon index, set found_index *after* returning. Added rather verbose comment to try_epsilon_transitions to clarify when transition-taking needs to be trapped and when it doesn't.
+9090b55 if -> endif in Makefile
+6dbeb66 Now all Makefiles should be aware of windows compilation.
+838b7d9 Added include flags to Makefiles when using windows compilation.
+a1e0022 Made autotools more aware of windows compilation.
+25dae67 Edited Makefiles.
+17599d9 Added directories to windows/openfst and a script to fetch openfst.
+b870284 Added a script to retrieve dlfcn.
+216f22b Tentatively added support for windows compilation.
+79cb942 Implement PCKIMMO output mode for fst2txt
+b898898 Ready for release 3.3.12.
+519d798 Tentatively added the possibility to compile hfst in Windows to configure.ac.
+a2f1970 Maded changes in tests required by previous edit in WeightedStringVectorCollection.
+5c7f95a Changed a bool to weighted_string_type in add_sequence function.
+9dd0f5e Changed the bool lexical_model parameter in the constructor of WeightedStringVectorCollection to an enum.
+9b684a7 Fixed comments
+5f89671 Fixed initial comments
+01daf8d Fixed statistics.
+7a6ac4c Fixed statistics.
+a644eb1 Added documentation.
+d49bd99 Use convenient STL set constructor with InputIterator objects for returning alphabet sets
+9bd0833 Maybe find unit_test_aux.cc now...
+f4da277 Support StringSet get_alphabet() for hfst_ol(w) types
+e09ccf7 use am_prog_ar for automake >= 1.12
+2ef3838 include unistd for systems where it does not leak in
+38af24a Handle the "only default transitions in state" case
+39979b4 Now perhaps building unit_test_aux.o properly...
+1ba1277 Build tagger tools only if the enable-tagger flag has been used during configure.
+a3441eb Changed NewLexicalModel.h so that it includes the local header before instllation.
+1f098c5 Added unit_test_aux.h to the sources of the test for string_handling.cc
+692544e Added DataTypes.h to the sources of appropriate testa and hfst-tag.
+62b23b0 Added version of hfst-tag.cc that compiles.
+accb745 Tidied up code in use_model_src.
+655db72 Now we pass all use_model_src/ tests.
+ca283ad #include "HfstTransducer.h" instead of <hfst/HfstTransducer.h>, since often people will be building this without having headers already installed
+7c8a1d6 Remove lexc tests as long as parser is not reusable
+fc6488f Added skeleton for hfst-tag.cc and got all tests in use_model_src compiling. Some tests still fail.
+dda2e74 Removed printout from the unit test of FstBuilder.cc
+9d1942b Fixed WeightedStringVectorCollection.cc and string_handling.cc
+0dc17bc Tidied Makefile.am.
+e165644 Tests are now run using make check.
+5e922c6 Added invert parameter to compose_intersect in HfstTransducer
+b501a64 Added hfst-open-input-file-for-tagger.cc, which was missing.
+cc9b901 Use intree headers for intree build
+8f32733 Added some printouts to verbose mode.
+278e9b1 Fixed issue with exit value.
+017d653 Updated build files so that tagger tools can be built. They are not built by default.
+fc1c501 Fixed some in input handling bugs.
+c9f5a01 Changed comput_data_statistics.py to hfst_tagger_data_statistics.py
+fcf3028 Some changes that actually allow compiling and installing hfst-train-tagger
+3897533 Added test dependencies.
+ebbf67f Fixed test defines in build_model_src/.
+6cd2357 Added unit tests to hfst-tagger.
+0fa55e4 Added Makefile.am files to hfst-tagger.
+84f7434 Added src and test subdirs to hfst-tagger.
+ba485b6 Initial commit of new tagger lib architecture.
+e705d55 Copy input to output for default transitions
+268a4b9 Allow reserved chars between quotation marks, avoid one more segfault on parser error
+bae41c7 Add quotation example that breaks the legacy parser; use all tests on both lexc front-ends
+f944ea5 Emit parse error on unopenable file...
+df6fb6e Pass parse errors upwards from LexcCompiler
+b8e33d7 Remove temporary lexc concatenations on successful exit
+c948c23 Reword -q to "print only fatal errors and requested output" as it does
+30a2947 Notice @_DEFAULT_SYMBOL_@ in other Alphabet contructors than the copying one as well
+7a0372e Add an internal boolean found_index to keep track of whether an index has been successfully hit in the current iteration, and try to find a default symbol otherwise
+8cbdcfa Make alphabet know about default
+5a95634 @_DEFAULT_SYMBOL_@ and hfst::is_default()
+16d45a5 Remove warning messages and XFAIL tests that may confuse users. Fixes bug #3525179
+9e9e421 Added READMEs under BrazilianPortuguese 1 and 2 to EXTRA_DIST.
+cbd7431 Updated Doxygen documentation.
+a9e2b8a Ready for release 3.3.11.
+6cc30cf Now hfst-shuffle is disabled by default.
+4f3fcee Added the command line tool hfst-shuffle and functionality tests for that.
+b455911 Tentatively added function shuffle under HfstTransducer.
+eb6581f A nicer single production for INSERT
+c560a0f Fixed a bug in SfstTransducer::random_path that happened when indexing states of the argument transducer.
+bd37642 Introduction of semifunctional pmatch2fst
+7870bf5 No plus sign in front of tags in CG mode, not even the special carry-through tag.
+24449d5 Added experimental support for printing the raw analysis tag as part of the Xerox analysis. It is printed as a tag with a special prefix, and with the full analysis string enclosed in quotes. The idea is that vislcg, if enhanced to read the Xerox format, should carry  this "tag" through the disambiguation (and possibly analysis), and print it out on the other end. The tag can then be used as input to morphological generation.
+9646a73 Print the raw analysis string as a specially prefixed tag at the end, instead of as a sub-reading in the beginning of the analysis.
+92ee0bd Now hfst-fst2txt functionality test tests whether the program dot exists before using it.
+d4a39a7 Changed call to the installed hfst-regexp2fst to the one in tools/src/.
+22d4fcd Changed call to the installed hfst-regexp2fst to the one in tools/src/.
+ab7257c Add containments and term negation, remove nasty windows formatting markers
+f321bb3 Added the option --print-separator in hfst-fst2strings. The option will print a separating line "--" after each input transducer is processed.
+70fe665 FomaInputStream::write_transducer and SfstInputStream::write_transducer now call fflush after writing the transducer. Now the command line tools should work correctly when pipelined.
+f6c6432 The regexp [?] was parsed as [?|?:?] by FomaTransducer::define_transducer(const &string, const &string). This is now circumvented by using FomaTransducer::define_transducer(const &string) instead. This bug will be reported and fixed soon.
+e4d291d Manpages are not created unless 'make man' is executed in directory man.
+e47d8c0 Added support for inverting the composition i.e. computing intersect(rules) .o. lexicon instead of lexicon .o. intersect(rules).
+37684b7 Added possibility to invert the composition in compose_intersect i.e. to compute intersect(rules) .o. lexicon instead of lexicon .o. intersect(rules). Also added added support for indetity symbols in the lexicon to compose_intersect.
+71a2579 Removed HfstConstantTransducer as it is not used.
+a9cbc17 Removed FinnishOTProsody from tests as it does not yet work. Also added HfstXeroxRulesTest.cc to EXTRA_DIST.
+7cdf97c Temporarily excluded hfst-lookup from man page creation (due to a bug in help2man?). Also updated hfst-tail and hfst-head man pages.
+4d54a06 Heads and tails with plusses and minuses
+6b15fcf Test negative heads and positive tails
+58723c3 Added Brazilian Portuguese tests to fsmbook-examples, they now work because missing files were added.
+72d1a80 adding missing files
+9daa986 Added missing files
+31d424e Ready for release 3.3.10.
+9bc5df7 Brazilian Portuguese tests disabled in fstmbook-examples to get a working release. They probably had missing files.
+afce28b Updated man pages of binary tools as their help messages were changed.
+70d24a5 Added documentation to the binary tools about the restored feature that the first input can have several transducers while the second has only one.
+7c2399f TropicalWeightTransducer::extract_random_paths now also calculates the weight of each path. Fixes bug ID 3514912.
+67a377e All binary tools now handle the case where the first input contains several transducers and the second input exactly one transducer.
+e23d373 BrazilianPortuguese2 fmsbook example added to tests
+f941d02 BrazilianPortuguese1 test should pass now
+6ad4d9a hfst-compare now handles the case where the first input contains several transducers and the second input exactly one transducer.
+c55bc43 hfst-compose now handles the case where the first input contains several transducers and the second input exactly one transducer.
+abbff8c hfst-summarize now prints at the end how many transducers it has read in total.
+d765699 Added documentation to different cases that are gone through when checking binary parameters.
+e32b8a2 Changed the variable name stdout to stdout_ to avoid namespace conflicts.
+1bc12a0 forgotten Makefile.am
+8672375 Configure file had to be changed to compile fsm book examples
+84850a8 Fsmbook examples update
+c1f2510 Fsmbook examples update
+7eb574c In xfstRules, removed TMP marker from the result alphabet
+610da46 Updated hfst-compose-intersect help message.
+dad67cc Appended namespace std:: in front of vector and pair where avoiding it might cause compilation problems. Also changed calls to 'rindex' to 'strrchar'.
+74fe14d Doxygen for the speller and some ol internals
+c3f629e Forgot to commit ChangeLog and NEWS, now ready for release 3.3.9.
+e55c21a Ready for release 3.3.9
+34460a6 Fixed help messages of tools.
+814a1a9 Changed hfst-lexc so that the implementation format defaults to openfst-tropical.
+7b97b48 Changed expected output to reflect current cg printing
+97a0786 Integrate ospell, first commit
+2624bf6 updated so that tests don't fail
+20ab796 updated one fsmbook example, still not working properly
+9b826c1 Double greek PI met opposition in #apertium, hereby changed to double dagger instead (‡). It is still open whether the raw analysis string should end up in this position at all.
+03772d6 Fixed a bug in command-line option parsing, where -e conflicted with all case-handling options.
+c96e52e Fixed bug wrt option counting
+a708855 Added a new option to turn on printing of raw analysis string in CG format output. Default is to not print it.
+7c8830a Replaced triple ] (]]]) with double ∏ (∏∏ - capital greek PI) as the CG sub-reading separator. It turned out that inserting +]]] into the transducer was not working very well.
+f06aac3 Deleting the + char in front of GT/Divvun tags for the CG output. Also, there is no problem with printing the raw analysis string, all is fine (contrary to what I said in my previous commit). This tool is now pretty close to what we need in the Divvun work :)
+990581e Experimenting with the CG output mode. Using the -C option, the output will now include the original lemma+tags string, including all tags within compounds etc. It is printed before the CG-formatted tag list, and separated with ]]] (suggested CG sub-reading separator). For some reason, the tags have lost their initial + sign at this point, so the result is pretty ugly and unusable. I don't know why or where - feedback appreciated.
+f3c746f Make sure the outputs are sorted before filtering and printing
+4905d54 Corrected key string for getopt_long
+05fe312 Corrected condition in LookupPathW::operator< (or at least made it more understandable)
+58c61e5 Correct terminating condition
+ec52c63 Stop before end of output iterator
+ae8461f Clarified comment
+074a25e Added an option to only print analyses belonging to N equal-weight classes
+6844c9d Typo in error message
+9792641 Adding identification and processing of GT-style tags beginning with +. When formatting for CG output, this is important, otherwise the output is more or less useless. This change should probably be enhanced with tests for the requested output format, so that it does not contaminate the Apertium analyser. Please have a look.
+756d724 indentation
+3e37af1 Added a quietFlag variable, which makes the -s/-q flags actually useful. Using either -s or -q the warning "Warning: Transducer contains one or more multi-character symbols made up of ASCII characters which are also available as single-character symbols." will be suppressed. There might be other output that should also be suppressed, but that is not implemented yet.
+784bd21 Removed "e.g." to avoid ambiguity in the interpretation of the output.
+cdb80a2 Boundary mark in contexts is beeing handled now.
+e999674 Xfst rules parser should be working now
+8d53567 regexp updated, precedance seems to be fine now, but parallel rules with one comma and context still don't work.
+9359776 FomaTransducer::extract_paths bug fixed, now it does not produces duplicate paths.
+76e4f7a Ready for release 3.3.8.
+b55429b Add expected arcs per symbol statistic
+410a9ec Ready for releasing version 3.3.7.
+8292ce4 Updated tool man pages.
+939b6a9 Updated hfst-regexp2fst help message.
+3df0bcb Fixed an error in composition introduced by the newest version of OpenFst (1.3.1).
+bb6e2fd Fixed identities in regexp parser, now [?] is parsed as identity pair.
+8f950ad Updated regexp2fst parser - rules work fine for themselves, but there remains precedance issue.
+2512805 Ready for HFST release 3.3.6.
+3d290d3 Changed include directives of implementation headers (foma, sfst, openfst) so that they search for headers in default include path first. Also modified memory leak script.
+69f0619 Updated memory leak test.
+5ece7d7 Tentatively added a script for testing memory leaks.
+cb48f49 Fixed memory leaks caused by hfst_get_name in command line tools.
+679d8ca Fixed a bug in hfst-lookup man page generation, now option --no-discard-stderr is used in help2man. (However, cannot figure out why this helps..)
+942a563 Removed yet some extra code.
+b50e384 Removed commented code.
+6e87a25 Fixed some compilation warnings and removed commented code.
+bf0508d Fixed some more compilation warnings.
+1ebf3aa Fixed more compilation warnings.
+3fd5aee Fixed some compilation warnings.
+b802621 Ready for HFST release 3.3.5.
+e096676 Man pages updated.
+1aa5686 Modified Makefile.am.
+2de5917 Added some comments
+d155bca Fixed a small bug in hfst-fst2txt functionality test.
+e6560e2 Output dot/graphviz
+967a5be Maybe finally the reversion is working..
+5373734 Made yet some changes to revert to the older revision.'
+b4318de Reverted to revision 2076.
+1101e6a Forgot to add the new files for BooleanWeightTransducer.
+21b3949 Tentatively added a new HfstTransducer type, BOOLEAN_WEIGHT_TYPE.
+6e99a0b Fixed a small error in the options handling part of the help message for hfst-strings2fst.
+8514c03 Added new man pages for hfst-name and hfst-format and links to man pages for tool aliases.
+76d8934 Now the man pages also have a short description of the tool, i.e. the one given by hfst-foo --help.
+4f996f5 Added a test case for the bug fixed in revision 2016 (out_of_range thrown by substitute function).
+5e80597 De-spanishify hint string ("argumentes" -> "arguments")
+d29274e Now HfstTransitionGraph:substitute(const HfstSymbolSubstitutions & subs) adds all symbols in subs to the global alphabet before relabeling, thus avoiding the out_of_range exceptions thrown earlier by this function.
+467599e Changed hfst-compose-intersect so that it gives a warning (1) when the rule does not contain the identity symbol and the output tape of the lexicon contains a symbol not found on the input tape of the first rule, and (2) when the output tape of the lexicon contains multi character symbols not found on the input tape of the first rule.
+6bbf8e1 Removed spurious consts from optimized lookup conversion functions. Fixes bug ID 3469227.
+7315fe4 Bug on mac os caused by its sort order (bug ID: 3462485) fixed.
+e9f37ff Added function write_in_att_format_number. Also fixed hfst-optimized-lookup so that --version and --help print to standard output instead of standard error.
+2284d13 hfst-optimized-lookup softlink and some package strings for hfst-optimized-lookup.h
+4821cdf Heavy-handed bundling of the hfst-optimized-lookup standalone
+a7e3dd1 Rules parser - added epenthesis
+4f70b1d Still needed to fix some errors caused by in-place sed.. Now everything should work in commandline tools tests.
+33130ab Fixed problems in test/tools that came after updating the Makefile.
+bc413c7 Removed commas from filename suffixes (e.g. .hfst.sfst -> .sfst) in test/tools. Also replaced compilation rules using %-symbol in Makefile.am with old-fashioned suffix rules. Now commandline tool tests should work with older versions of make as well.
+43082be Ready for HFST release 3.3.4.
+5b163cb Added some documentation for HfstSymbolSubstitutions and HfstSymbolPairSubstitutions. Also updated the doxygen documentation.
+53c7b7c Now HfstTransducer supports making several substitutions at the same time. Also made a test for these functions. Adding documentation soon.
+7aa7026 Tentatively added a symbol-to-symbol substitution function to HfstTransitionGraph.
+e9db3ce newer version of the rules parser
+31446ff weighted expressions
+668878f added some xerox rules to xre_parser (hfst-regexp2fst). Also,  slightly modified xerox rules
+aed6b50 Remove some debugging printout
+45c7b45 Merge xre precedence fixes
+81ba993 Now const_cast<char*> is used instead of strdup/free in ConvertFomaTransducer::hfst_basic_transducer_to_foma. Also modified hfst-substitute so that the alphabet is not pruned after substitution.
+cff563a hfst-substitute now implements the option --in-order.
+5020e2d Fixed bug, which prevented compilation of grammars with both set constructions and : or ?.
+0aa972c Unit test for grammars which have both set constructions and : or ?
+0183928 FomaTransducer::repeat_n now takes a copy of its argument transducer to avoid double delete caused by new foma interface. Fixes bug 3468373.
+253b0fe OpenFst linking bug is fixed in 1.2.10; also gqipped some paras
+db1e066 Warn end users about disabled "important" tools
+93c0be8 Xerox rules added to the library
+a6b1982 more alphabet hacks
+2f13574 more alphabet hacks
+d41ccd2 Added new substitution functions. Now it is possible to perform many string pair-to-string pair mappings at the same time on a transducer. Also tentatively added a functions that performs many string-to-string mappings at the same time.
+b19e466 Now the test EinsteinsPuzzle uses local tools instead of the installed ones.
+f574cae Now the test FinnishNumerals uses local tools, no the installed ones.
+dfcd75d Conversions between HfstTropicalTransducer and HfstBasicTransducer also made more modular.
+e64a2eb Made conversion functions more modular by moving code to subroutines. Also removed commented code from files.
+ab8c339 Now conversions between transducer formats openfst-tropical, sfst and foma are carried out using numbers always when possible.
+4defd16 Tentatively added functions for fast conversion between transducer formats.
+90fd45f Now also conversion from foma to basic transducer uses numbers. Some commented code also removed.
+45cfa97 Some conversion functions are not carreid out using numbers directly.
+0335646 Renamed HfstTropicalTransitionData variable 'number2symbol_vector' to 'number2symbol_map' to avoid a strange linking error. Also removed transducer conversion functions that are not used.
+d964d9c Removed some extra code.
+1f9516e Tentatively added alphabet pruning to substitute functions, it still has to be removed from hfst-substitute.
+6e4838f Conversion between HfstBasicTransducer and TropicalOpenfstTransducer is now more efficient as it is done using numbers directly.
+fc65b31 Changed conversion from HfstTropicalTransducer to HfstTransitionGraph so that it uses transition numbers directly. This improves the performance greatly.
+6fe2006 Fixed bug which made tests always pass.
+7f0d49a Ready for HFST release 3.3.3. Also disabled DateParser test because it relies on hfst-calculate.
+a2b7ede Fixed speces so that the space symbol is used in the transition instead of @_SPACE_ at .
+8bceff5 Skip copying the foma transducer name to the net, leaving an empty string. Rationale: foma has a limiting 40 char ceiling on names, and we might as well use HFST3-style names for everything.
+e90d002 Removed hard tab indentation from hfst-txt2fst.cc
+5d4e1ab Replaced tabs with spaces in hfst-lexc.cc
+932a780 Fixed HfstTransitionGraph:swap_states so that the variable new_target is no longer used uninitialized.
+b85d91d DateParser test fixed, the path os hfst-calculate was not correct.
+7de913d Fixed ComposeIntersectLexicon test
+97e620d Now the escape '% ' should work everywhere.
+abebc48 Added test for rules with space symbols.
+f7341b2 Added a conversion test and made the LIBHFST_TST actually run, causing test failure for the time being
+69b7b7b Optimized HfstTropicalTransducerTransitionData::get_symbol(...)
+aabea1c Call sizeof() on type names, not variable names due to OSX compilation thinking the variables are non-static uninitialized fields. Fixes #3445592.
+5024ecd Fixed (serious) typo
+f8f2dfd (re-)added a char* constructor for tables, made it the default to only read disk once per table
+6754159 Eliminate use of non-portable strdupa(const char *). Fixes #3444950.
+43cc4e9 Removed some garbage
+5ffe969 Removed some of the unnecessary work done in tokenizing for ol-lookup
+0c09d91 Fixed a name shadowing bug
+bca34ef Added a lookup_fd(char *), reduced code duplication in interface functions
+c9ff453 Added note about current OpenFst / Ubuntu problems.
+0ce433e Fixed error message.
+c289dcd Now terminating compilation, if an empty pair is found in a defintion, rule center or rule context.
+652f927 Ready for release 3.3.2
+aefa028 Use NumArcs as a member function instead of using NumArcs from the OpenFst internal namespace.
+366a483 OpenFst has moved NumArcs into the namespace ::internal. This commit reflects that, fixing compilation with the newest version of OpenFst. NOTE: THIS BREAKS BACKWARDS COMPATIBILITY, you need the newest OFST to compile after this commit.
+67a5402 Fixed svn properties of executables in fsmbook-tests.
+128e390 Remove PKG_ macros from end user builds since they do not work nicely on all platforms.
+0deefb7 Tentatively added to fsmbook-examples tests where the results from foma and xfst are compared.
+fff58c2 Now all tests in fsmbook-examples use the tools in tools/src/ instead of installed tools.
+955e760 Tentatively fixed parts of fsmbook-tests where intalled commandline tools are used instead of tools in tools/src/.
+b6a2bd3 Ready for release 3.3.1
+3a9f7c8 Fixed memory leak in HfstTransducer::get_property
+48232c1 Remove escape sequence __HFST_TWOLC_ from symbols in rule names.
+37800e6 Changed flag diacritics handling in hfst-compose, hfst-conjunct, hfst-concatenate and hfst-subtract. Now flags are harmonized using HfstTransducer::harmonize_flag_diacritics(...).
+9313133 Added a function for querying if a transducer has flag diacritics and added a parameter in harmonize_flag_diacritics for diabling insertion of missgin flags (needed for hfst-concatenate).
+e207282 Added function bool HfstTransducer::has_flag_diacritics(void) const
+47f9d3e When looking for indexes with a particular symbol (which is used for converting to other transducer types), handle flag diacritics specially as per their indexing rules.
+8eb758b Added HfstTransducer::hamonize_flag_diacritcs(HfstTransducer &another)
+f2c0a98 1) Report the correct indexing offset for epsilon as 0 even when there aren't     any epsilons 2) Put the exception about trying to find the offset of absent symbols in     the proper scope so it actually gets thrown
+cafa28f Tentatively added to fsmbook-examples tests where results from foma and xfst are compared. Also fixed a small bug in remove-complement.sh.
+3431ec3 Extra files created during tests are no ignored by svn.
+5f9386f Added flag diacritics to the epsilon filter.
+0780530 Added missing file.
+f76ac72 Added a note on configure enable/disable switches to README. Changed fsmbook-examples so that now all examples that can be compiled with the current HFST tools are included in the tests.
+9c006b5 Forgot to commit configure.ac last time, now automake should work.
+e437010 Made some modifications to fsmbook tests.
+a651082 Same leak issue as in r1846
+b2b4ba8 free() char*'s that get strdup'd in a loop (which leaks memory if not free()'d).
+edcc8e6 Added missing file.
+f24568b Made small changes to the tests under fsmbook-examples, now make distcheck should work also when scripts in an upper-level directory are used.
+e167573 Tentatively added one subdirectory of fsmbook-examples to the tests performed in make check.
+31af546 Tentatively added some testing scripts to fstbook-examples
+23978b1 Remove spurious space character from error message
+26fac37 Give more guidance when ejecting the user for having a non-UTF-8 charset
+a4981ce Comment out fsmbook-subdir; it's broken
+47a618d fsmbook-examples are now included in tests.
+08e8edd Ready for HFST release 3.3.0.
+e3819ad missing  added to some tests so that they pass distcheck
+3b0667c lexc-functionality updated
+511b33b make distcheck should now find the missing files
+b4f2e58 remove hfst2 broken flags from main tree
+dccfa4f Remove experimental, hard to compile and dependent programs from main compilation
+1bad1e8 Added missing files to Makefiles. Also replaced HfstExceptions.h with HfstExceptionsDefs.h in include declarations.
+f29786a Option -s in hfst-lexc and hfst-substitute now suppresses warnings as it should.
+a0e51bd Made yet some tests less verbose.
+fdaba54 The option -s in hfst-lookup now suppresses warnings as they should.
+6a4461e Made tests less verbose.
+0c79b59 Testing if a library exists is now done with the command 'hfst-format --test-format'.
+a29cc4f Now all tests in test/tools should pass.
+667fb48 Fixed a bug in hfst-format. Also fixed some tests so that they don't assume that all backend libraries are available.
+9522737 Indicate whether apertium2fst is enabled
+32d7528 A spurious space was apparently preventing libhfst.la from getting built (!!)
+9fe6a3d Fixed some small bugs.
+373ab19 Added a missing file.
+87d5c05 Now all Esperanto tests work.
+311297f Now EsperantoNounsAndAdjectivesWithTags passes.
+5703bf4 Mention both forms of <SFST-1.4.6 error messages
+1ccdbf2 Fixed some bugs.
+1a85f7d EsperantoNounsAndAdjectives works now.
+dbe3858 Remove hfst-lexc and feature check that requires newer autotools from default builds
+c8bc7d0 Updated the tests.
+3dab55c New tests.
+1158256 HFST scripts for Monish tests ready.
+fd3adfe Fixed a bug in the xfst file.
+1f57439 Adding a new test.
+3cb051d Added files to MonishAnalysis
+5275de0 Adding a new test case
+f306463 Added an alternative solution to Brazilian Portuguese.
+65521fb Now unicode characters are transformed correctly from xfst att format to hfst att format.
+6f3e3f2 Added new test
+bb769eb Added a new test
+7b5175a Fixed some tests so that they work when only openfst is installed.
+e44b704 use const char * in bison's error handler
+2a8afa1 Fixed tests in test/libhfst so that they also pass when only OpenFst is installed. Also changed HfstTransducer::convert so that exceptions are handled correctly.
+4e85a00 Ultimate fix to implementation type availability checking in twolc unit-testmake check
+9df0c5f Tentatively fixed unit-test in OtherSymbolTransducer.cc
+ba60bbe Added checks for existence of implementation types to unit tests.
+3a313b0 Added support for new backend format strings in commandline arguments.
+7007722 Added check for existence of backend formats to tests.
+3465429 HfstTransducer::is_implementation_type_available changed from protected to public. HfstTransducer and HfstRules tests now work also when all backend libraries are not available.
+298d1f7 Only respond to nick + , or nick + :. Fixed flood-handling.
+d04b936 Update instructions for easier svn source
+e38782a Disable problematic backend libraries from default build
+3157352 Remove all version requirements and dependencies and tools that require versions, features, or dependencies to support older tool chains and systems
+bbb40b1 allow modifying only end state
+65e2029 Fixed character coding in Finnish examples.
+7ed6905 YaleShooting test complete, rules must be implemented in HFST commandline tools before it can be tested.
+48bc808 Changed 'Palindroms' into 'Palindromes'.
+ca49d0c Add tool for modifying weights
+e737f9d Now the test passes also for foma implementation type when revision 47 of foma is used.
+47696bd Added test files.
+5952156 A bug in HfstTransitionGraph::swap_states fixed, now final states are swapped too.
+f41b96e Added documentation
+42e26a2 alias old proc
+098f6a3 add bugs
+32eb73d Missing -r option
+1b3e724 document input format requirements in the beginning
+fc22386 few less apertiums in directories
+d01f072 s/proc/apertium-proc/g
+62c5a1f Added a test case, Lingala. The test is not included until an issue with writing transducers in AT&T format with the limited licence of xfst.
+cc616c6 Added a new test, FinnishOTProsody
+3fd80a9 Added a new test, PlusOrMinus
+a5b9ea0 Fixed a bug that occurred in binary operators when the calling transducer and the argument transducer were the same.
+ef31d2f Added more fsmbook examples. The tests have to wait until we get rules in hfst-regexp2fst.
+00da234 Terminate xre parsed quoted string, fixes 3400657
+444dffd Declare BUILT_SOURCES
+5ccdf40 We are one step closer to get the tests in test/tools/fsmbook-examples under autotools..
+33db26f Added Makefiles to fsmbook-examples. The tests in fsmbook-examples are not executed until they use autotools.
+97d473c Now the tests do not depend on the tool hfst-xfst. Instead, they use hfst-txt2fst and a transducer in att format.
+0d6b28e A bug in FomaTransducer::write_net fixed. Now the the function fsm_count is called before writing the transducer so that the number of lines is always correct.
+8d28394 A testfile added.
+cd193f6 Use basic transducer and trie disjunction
+91754de Works minus regexps
+1b73d6e dl before openfst though
+86921ca do we still need pthreads and m?
+0c4b53f Yet another missing header and using
+b5671cd Removed file training_data, which was accidentally added.
+60e4777 Initial add of hfst-tagger. A lot of stuff is still missing and the tool needs to be integrated in the build system.
+c284259 tests modified
+9799eb2 some of the tests rewritten
+01f60b6 Now the tests are performed for sfst, openfst-tropical and foma types.
+f60e580 typedef HfstTransducerPairSet removed from HfstDataTypes.h because it is not used anywhere and would cause problems because HfstTransducer::operator< is not defined
+9c47fc1 Now HfstTransducer::operator= works for the case of optimized lookup transducers and copies the name of the transducer for all cases.
+efa33f5 copy props in copy constructor (excepting type); fixes bug #3405831
+02e7be9 make compilation work without inclusions leaking from backend headers
+16b4d3c add include for std::map
+461af24 add include for std::set
+2f44bbc apertium2fst tool added
+ca39ff3 Avoid writing name, version or type twice
+8119d69 Added necessary std::qualifiers. (With --without-sfst some using-directives apparently disappear.)
+1917eee Fix UTF-8 bugs in strings: * use error_at_line instead of error when linens are known * remove bogus double try blocks * throw UTF-8 errors with messages
+9e80b3e Fix formulae for filenames and data starting with non-ASCII
+62ce06d Revert tab-containing commit r1576
+b3f24d8 fix missing paths in tests (would've used $PATH instead of newly builts)
+7e11d85 Use new metadata handling in tools * fix signedness in -grep * fix erroneous error printout in -compose-intersect * add few features to summarize
+b2b3010 * common practices headers and utils for metadata in cli tools * a simple cli tool to edit metadata
+9829fce metadata header name registry
+ab02d03 Make use of HFST3 transducer format metadata: This is basically upwards and downwards compatible change with HFST3 automata and header parsing, but be cautious that everything may break at random
+0857f80 Added Beesley and Karttunen's fsmbook examples to the tests. The fsmbook tests are not yet run when doing make check.
+5fe1844 Fixed bug that caused hfst-twolc to segfault when variable rules with keyword matched had unequal value lists. Now it will give an error message and terminate compilation.
+6fd297d Cross product added to the library
+cc5671e Universal pair update and added identity pair
+459bcaa A bug in transducer conversion fixed.
+711df75 Don't do foma-SFST conversion if we don't HAVE_SFST
+7317a58 Warning about broken foma handling
+09419fa More accurate comment
+3993996 Do foma-sfst -conversion for substitute also (not just pruning); HfstTransducer doesn't know about foma's substitute.
+c3c3dbc Typo
+687639e Swing foma substitutions through sfst to prevent horrible leaks
+24a982d Don't leak 1 (!!) byte of empty string when constructing foma transducer
+727bcd3 Fixed mismatched free/delete when freeing foma transducers.
+f199f2b Don't leak "fallback" transducer for each label
+a53ea7f Strip server junk from username reply
+f66229d Fixed wrong exception name
+3894ab1 Make composition with OL throw a Mismatch exception, which compose is looking for (it still needs to know about the second tranducer being OL)
+2029017 add 'using std::set' to fix compilation problem in hfst-affix-guessify.cc
+78a820a Standardized the transducer format options of commandline tools.
+544cc06 MAde ComposeIntersectRulePair::get_transitions virtual.
+5c6e7e4 made size_t size(void) a const method.
+de981e7 Added method ComposeIntersectFst::get_symbol_number, because HfstTropicalTransducerTransitionData::get_number is not accessible from outside the library.
+86d4582 Edited Makefile.am so that it installs compose intersect headers properly
+5330f22 Fixed bug in tokenizing string with lonely backslashes. Backslash can now escape any symbol and it is ignored when it occurs as the last symbol in the input.
+719f6db Updated Rules - left replace down karttunen + tests
+16dc6a6 Whitespace, punctuation, cleaned double conjunction.
+2c63a89 Updates on building on the Mac.
+f5d1d51 iterators can no longer be used...
+921c6ab Update SFST requirements
+00217c4 Resurrect the affix guesser maker
+6c5a5fb Flood protection for channel messages
+3cf20f7 Improved message finding and private messaging
+2518451 autoconf doesn't understand dnl without space?
+72f9a36 apparently mac os x "readline" does not support rl_completion_matches...
+c1c9e07 HfstTransitionGraph::iterator is now protected, the public HfstTransitionGraph::const_iterator should be used instead.
+894ef7b Replaced all mentions of HfstBasicTransducer::iterator with HfstBasicTransducer::const_iterator in OtherSymbolTransducer.cc.
+75f4158 Changed syntax of negative context rules.
+e7bbb19 Modified OtherSymbolTransducer::harmonize_diacritics, so HfstBasicTransducer::add_transition is used instead of adding transitions directly to the transition vector.
+5bf71cb Enabled sfst tests.
+9712ab8 untabify recent changes
+5a7c0e8 Updated HFST so that it works with the newest version of SFST, 1.4.6.
+feee342 detab hfst3 tree - feel free to revert (and report) if this causes any problems
+fb6ae1c add few trivial features to list
+1084eab Be more verbose about type mismatch
+4e99e3c check for empty strings
+53ba386 Modified test script so that it runs tests for all backend formats. Disabled tests for sfst and log-openfst formats, since sfst segaults and log-openfst gives weird results. These are errors from the library.
+495b307 Added test for negative rule contexts in rules with variables.
+251fd1d Added negative context rules.
+f6a78c2 Added tests for negative contexts in twolc rules.
+22e60a9 Now HfstTransducer::operator= throws a FunctionNotImplementedException instead of a TransducerHasWrongTypeException.
+6fe2113 Fallback to anything or nothing from settings; resolves bug #1061990
+3323325 kind reminder about importance of the README
+c7e5b9f Some logging changes
+25d4d18 end readme in nl
+25d328a Save misses to logfile
+bd2ec42 Send notice if word is unknown
+29b3b9c Don't print ugly weights
+f67e60c Just dump privmsg to console and don't do anything for now..
+3bec150 hfst-bot demo
+ba26d48 Lookup demo
+e36e700 Full api and distutils-based build & install
+453163e clarify SFST libraries relation to HFST; thanks to spectie for the suggestion
+7803cb8 * Save temporary files for foma in /tmp/ * import old readline UI from 2nd branch * deprecation warning if input = stdin * error if output = stdout
+a03e3a2 Another readline editline libedit fix maybe
+bd5472b CHECK_DECLs to support mac os X's fake cripple readline
+2ce7d2d Tests of replace functions now work for transducers of foma type as well.
+0b8ab2c A new function rules::replace_down_karttunen added. This function returns the actual downward replacement rule transducer instead of rules::replace_down that returns a downward rule transducer as defined in SFST-PL.
+b113008 New target for root makefile: valgrind
+aaf0734 >=autoconf-2.62 not 2.22
+b942a23 Remove libtool 1 support tricks, more trouble than it's worth
+86718c2 Mark version requirements in autogen
+c5094f1 Move version requirement to beginning of the line to be sure...
+95bd525 debugging tool
+063de32 A bug in function random_path fixed
+77c7bed help messages to message_out instead of stderr
+a9faa38 Do not cut unknown word forms from first non-alphabetic character in analysis, test case added
+700c106 Fixed a piece of documentation on HfstTransitionGraph and added a test case too.
+e9f9a79 Now extract_random_paths works for an empty tropical transducer. A test case also added.
+89e4743 print more than fstinfo only if verbose
+0b38d0b Fix arc-based leak in conversion
+68c0d39 Make old lexc default lexc again; fixes: 100000000 Mac OS X bugs
+637ea55 allow options to be passed via env.var. HFST_OPTIONS
+3cf23c8 works but leaks
+77a1c0d and default to glib to test if end users are ready for that in next rel
+20c88c9 Release changes
+6ccfd1c delete created test files
+ec44172 include new proc tests in dist
+25d6530 extra dist m4 macros
+ce67ad2 fix how compound words are generated
+6c78061 try generating first without compound interpretations; possible fix for bug #3290585
+b71cb2e do not pipe error messages from tests to /dev/null
+a8b0720 fix some -a tests
+267a212 add valgrind to stress test targets
+4af5dca Add a blurb about Unicode support requirements
+b2f03ac calculate spaces in length of print forms; fixes #3296854
+0bd58aa Allow use of glib for proc unicode casing (most likely breaks all Macs because of pkg-config and all that)
+0662084 Implement type mismatch error messages for all binary tools
+dec54f2 add quotation and neat printing in twolc tests
+6048824 incompatible format messages in composition
+f43dfaf document new tests in troubleshooting with examples.
+dc5c1c5 Move latin-1 string tests to XFAIL
+c30f3d3 Neat error output when incompatible formats; bug #3287458
+eb6e0ed Troubleshooting for Mac OS X's getopt
+0325c9f Check for GNU compatible getopt, try to fallback to broken getopts more aggressively on Mac OS X
+23223af Implement print-sigma and acceptor
+4a279dd include new command line option in man pages
+8e4177d Disable reserved characters and escapes in raw mode.
+3b5d30f remove roundtrip test: mac os x sed does not support new lines
+6ce1996 hfst-lexc around lexc_read
+df3b87e more alphabet hacks, i should really fix this properly as opposed to just patching the bugs i find
+83fe100 New analysis mode for finntreebank people: * no lowercase * no uppercases * no compounds * probably some ohter things
+c46b8e8 Detail all external backend libraries in troubleshooting section also...
+332fb8d here here
+0a94bbc possibly hippu-compatible alias installation
+917ae73 Now HfstTransducer::substitute(StringPair, HfstTransducer) does not modify the argument transducer. A test for this case also added.
+795926d Provide preliminary autoconf scripts for HFST
+52f0884 Replaced HfstFastTransducer with HfstBasicTransducer in conversions. This might make HFST slower, but it is needed until the bugs in alphabet handling are fixed.
+2fd9cfb When performing transducer conversion through HfstFastTransducer, symbols leaked from one alphabet to another. Now HfstBasicTransducer is used instead and a test case is added that will fail if HfstFastTransducer is used instead. The original bug is to be fixed at some point.
+9779c9b Added a test case for replace_up with FOMA_TYPE that fails. Currently it is commented so that make check will pass, but it will be fixed soon.
+12dfacf Now binary operations HfstTransducer::disjunct etc. do not modify the argument transducer.
+f933bbb HfstTransducer::insert_to_alphabet and HfstTransducer::remove_from_alphabet now pass the tests.
+25fd77f Added function HfstTransducer::remove_from_alphabet. Currently throws FunctionNotImplementedException because it does not pass all tests.
+5447d49 verbose test failures
+1085c4f Documentation updated.
+c6d0e14 Removed check for null-termination of string in the test of string_mainpultion.cc, because it fails on Mac.
+49f1dff Now distcheck passes the tests but still complains about att files..
+e884243 Reverted r1418 - these files are supposed to be here, and 'make clean' is over-cleaning.
+e7725b4 Deleted supposedly generated files - they were removed by the make clean target in test/.
+6225431 assert fopen != NULL
+cf16a6f Modified compose-intersect, so that it will treat only flg diacritics not found in the alphabet of the rules as epsilons.
+80c2c7a A small bug fixed in the newest version of foma in the foma svn. Now the FomaTransducer test works correctly.
+ea2f619 Code reorganized. There seems to be some errors in openfst's minimization, temporarily fixed the situation by pushing weights before minimization.
+5aca45b Retain root joiners while applying morphotax
+afa9e11 kill some warnings by settings
+16eabd9 New NEWS
+ae3d193 New releasenum (3.1.1) and libvector (6:0:0)
+aa7bf17 Changed the test script so that it removes temp.twolc.hfst0, when it's done
+97268c2 Fixed typo where $SRCDIR wasn't getting assigned to the file we want to test
+077da45 Changed [[ ... ]] in regular expression center rules to <[ ... ]> to avoid introducing syntax errors in previously working twolc-grammars.
+7d9a60d Added new tests in Makefile.am.
+97963cf Added support for rules which have centers that are regular expressions of pairs.
+9ebc8b9 Added tests for rules with regular expression centers.
+b583a0c Improved test script so it won't exit normally if hfst-twolc crashes.
+e358dbe The public and protected interface of HfstTransitionGraph revised. Unnecessary comments and debugging code removed from HfstTransducer.
+e1ef196 class HfstTransition moved to file 'HfstTransition.h'
+147b99d Substitute functions in HfstTransitionGraph should now be easier to read.
+add8e68 Code of HfstTransitionGraph made clearer, a bug in including HfstTransitionData.h fixed.
+dc9da7b Code simplified.
+4ad9718 Transducer conversion done through HfstTransitionGraph.
+f23ba67 Included <algorithm>...
+3856fdc Changed member const HfstBasicTransducer &t to HfstBasicTransducer t in ComposeIntersectFst
+96e5e02 Fixed bug in ComposeIntersectFst which forced all states in a transducer to have the same final weight as the initial state.
+6b74eb4 Sorting the arcs of the argument transducer in the constructor of ComposeIntersectFst, because they need not be sorted nowadays.
+0a5bcef Added arc_sort member function to HfstTransitionGraph.
+2f9d3a9 Some additional experimental container-hacking layer stuff
+e238723 left arrow rules
+f49a6e1 some more hacks to alphabet.cc
+6a3b642 Added support for rule centers which have the form 'X:a' where 'X' is a set and 'a' is a symbol.
+972561a Added tests for rules with centers 'X:a' where 'X' is a set and 'a' is a symbol.
+475b6f9 Undid some changes that stopped working after the interface of HfstBasicTransducer apparently changed. Also changed HfstTransducer OtherSymbolTransducer::get_transducer(void) to const and added the function void OtherSymbolTransducer::get_initial_transition_pairs(SymbolPairVector &pair_container) const.
+48487f2 Made max() and is_subset() static functions.
+83cfb8a hfst-twolc unit tests added.
+3bdda4e New NEWS
+d04a96b New release number, 3.1.0 release and 5:0:0 libvector
+420e273 Removed an extra debugging print
+c23e919 HfstTransducer::insert_freely(HfstTransducer&) now uses HfstFastTransducer
+1bc6962 check locale in some tools
+f063366 HfstTransducer::insert_freely now uses HfstFastTransducer for foma type. More tests also added for insert_freely.
+5490095 Conversion functions between HfstFastTransducer and backend implementations added. Now HfstTransducer::convert also converts through HfstFastTransducer. HfstFastTransducer will gradually replace HfstBasicTransducer for HfstTransducer functions that require conversion.
+79722bf HfstTransitionGraph now has a vector of states instead of a set. All programs and functions updated accordingly.
+3b908de Reword slow lookup warning
+ccad335 An apparently functional way to expose sets by copying them in order to vectors
+8708944 Fixed typo
+92ef298 Fixed includes in XreCompiler.h and LexcCompiler.h
+8fa2481 added some functions to ConversionFunctions that will be used in fast conversion between transducer types instead of HfstConstantTransducer
+0aea7c9 Fixed test script so that it should work in distcheck
+6ee3d24 Made lookdown functions consistent with lookup ones, updated docs
+1c9307d Updated doxygen to reflect changes in lookup functions
+5f28355 simple archive tool for duplicating repeats
+a43ca61 Added a faster version of lexc compiler for a transducer of foma type.
+228feee decrease stress by order of 8
+b15d21d Keep information about the parent FdTable of an FdState in the class to avoid invalid reads if it gets deleted
+153862d Changed lookup functions to return pointer to HfstOneLevelPaths, and take no argument for it. Calling functions are (still) responsible for freeing memory.
+577e62c Add more common problems
+cd64166 Added HfstTransducer::get_symbol_number, it will be used in faster conversion between transducer formats.
+5588a3b A small bug in testing the EmptyStringException fixed.
+bda6a25 EmptyStringException is now thrown if the empty string is used as a transition symbol.
+6923dc2 Universal pair function added
+92ece0d Need more inclusions and usings when they don't leak in from backend libraries
+ed3be66 Pathnames of testfiles in test/libhfst are now given as getenv("pwd") + "/tesfilename"
+a5e5bce Tests in test/libhfst now create the test files in EXTRA_DIST, so that distcheck works. This is a temporary solution.
+7c1efd3 Remove obvious memory leaks
+e8bb168 Added missing test files.
+2241e2d Prepare 3.0.3
+552dadf New NEWS
+0bf8b35 LexC and regexp functionalities moved from tools/src/parsers under the HFST interface at libhfst/src/parsers.
+f13146e Link with libhfst/src/libhfst.la (is this portable?)
+5c8d213 allow debianised names for libraries and headers
+348aaed Global wrapper - could it be this easy?
+e8d8870 Fetch headers from srcdir instead and assume libhfst is installed in the sense of ldconf
+34f8ddf Fetch headers and libraries from a (presently) hardcoded /usr/local
+81cd53b Testing a simple swig module
+9fb915e SWIG generates files with .cxx extensions
+52949a7 Removed debugging message
+a3e829a Initial framework
+f08623e stress test for proc
+99c1d62 Optional stress tests now
+09baeff Move stress tests out
+8dada87 Priority union function and unit tests
+e095ef1 Starting to implement a faster conversion, added file HfstFastTransitionData.h for that purpose. Also separated HfstTropicalTransducerTransitionData into its own file.
+50deff4 HfstTropicalTransducerTransitionData moved to a separate file from HfstTransitionGraph.h.
+0d2bda5 The pathname of HfstDataTypes.h fixed in HfstTransitionGraph.h
+13e5805 A non-existing file removed from Makefile and an include command.
+b91dcd8 Including HfstTransducer.h and HfstTransitionGraph.h into header files avoided in most cases by using HfstDataTypes.h instead.
+fbcb690 Made some changes to header files in order to avoid cyclic dependencies.
+3b54b9d A bug in TropicalWeightTransducer::determinize fixed. The weights must not be encoded, only the label pairs.
+f723fba Typo in license conflict warning
+d23279b Now the subtraction of two empty transducers works also for SfstTransducer. A test case also added for all transducer implementations.
+e6549a3 Now read_in_att_format and hfst-txt2fst also accept a single newline as an empty transducer, if that is the only transducer in a stream.
+373523d The library now uses is_epsilon, internal_epsilon etc. instead of string literals.
+ceb1942 Added pkgconfig definitions
+06fbbe0 Fixed variable LIBHFST_VERSION
+40fde0e HfstTransducer::get_alphabet declared public. Now the foma implementation returns also special symbols that are not included in the sigma of foma, but foma is still aware of them. Some unit tests also added.
+9069af7 Added some unit test for SfstTransducer that test if the alphabet is pruned in operations.
+6d7f356 Fixed possible bug in ComposeIntersectUtilities and the find member function of SpaeSavingSet.
+d3170ff Put stl sort function in stl namespace (which for unknown reasons is apparently unnecessary but it's probably clearer this way).
+2d5c8d5 Added more test cases for hfst-subtract that test if the identities and symbols are handled right. Now subtraction seems to work for SfstTransducer, too.
+430ab83 Print --version and --help to stdout in standard style
+faa9758 clean generated scripts
+c5381c7 Remove all binaries and texts after tests
+693e2d6 remove generated files on expected failures
+ded09b1 remove generated files after testing
+dd1143e Skip broken aliases
+da774c3 exempt scripts and tools with broken option parsing from distcheck
+014ad55 Use $srcdir in tests and include all sources
+26aeef9 Missing text file reconstructed by guessing
+6aedb92 Now input and output projections keep all symbols in the alphabet and have unknowns replaced with identities. Subtraction of tropical transducers handles weights correctly, all paths in the second transducer are subtracted from the first one.
+41d2454 Comment out failing test prereq for now (it broke make dist).
+9e69826 Unit tests reinstated for .cc files under implementations, compose_intersect forced under same regimen (whether MAIN_TEST is #defined).
+6d8743b Dummy unit tests for every .cc file in libhfst/src except HfstExceptionDefs.cc
+693540f Tests added for hfst-lookup with transducers that contain identitites.
+0dc5bd2 Document openfst version requirements in troubleshooting also
+c7a37f1 An error in harmonization fixed: now flags are excluded when expanding unknowns. A test also added that checks this case.
+b5c65bd Missing lexc test cases
+b9c7075 Reinstate final weights (they've apparently been absent since the missing state -relabeling code was added...)
+7677a39 Added overloaded lookup functions passing untokenized strings
+f354be5 print verbosely tokenization and blocked flags unless ol
+faeb874 use GNU getopt if available
+3248829 declare more built sources
+008db77 More weight tests
+e772be3 More sanity checks for escaped colons
+c68e38b Give weighted example
+38440f9 partial fix for 3269636
+0cc3569 remove debug printout
+70af6e0 filenames and line numbers in error reporting again
+339413e Build obsolete lexc compiler by default: * remove handbuilt lexicon combinatorics and revert to sfcm2009 algo * use pretty name for lexicons * more verbose printing instead of xerox style again
+a75d492 Now hfst-twolc rule names are unquoted.
+72ca575 Add missing files with likely sources
+5f924ab Now composition should work correctly
+2b052f5 Changed population of symbols sets in HarmonizeUnknownAndIdentitySymbols.cc so that it relies on the get_alphabet method in HfstTransitionGraph. get_alphabet sometimes returns an empty set, so that needs to be fixed in order for unknown and identity symbols harmonization to be reliable.
+492ddf3 Added HarmonizeUnknownAndIdentitySymbols.{cc,h} to Makefile.am
+08d99b5 Unknown and identity symbols should now work correctly in composition. Still some errors in other tools in test/tools, trying to get them pass all.
+ec358ec HarmonizeUnknownAndIdentitySymbols.{h,cc}: A model for how identity and unknown symbol harmonization can be done...
+8ab38b4 New NEWS for 3.0.2 rerelease
+0bcd861 Added missing ComposeIntersectUtilities.cc
+d5d1a14 Added missing ComposeIntersectUtilities.h to Makefile.am
+e8c4fd6 Prepare 3.0.2 release
+2e151c7 s/warning: Warning/warning: /
+d108e8d Moved the #ifdef HAVE_SFST a bit higher..
+a9645b3 Fix ; separated regexps: * add compatibility function for mac OS X missing getdelim * use delim for all cases in regexp2fst
+bdc8a29 Converting to and from SFST format is now faster because function 'check_visited' is used instead of a set of visited states.
+32a3161 Conversions between tropical, sfst and foma transducers are now carried out through HfstConstantTransducer, which is faster than using HfstBasicTransducer.
+893c4eb Make fallback dependent on fnie
+25b8f73 Removed some unused code..
+8711cbc Reduced hfst-compose-intersect memory consumption a bit.
+0d9c166 Added hfst-pair-test for testing hfst-twolc rule files.
+7594c1a HfstConversionTransducer renamed to HfstConstantTransducer, most functions in ConvertTransducerFormat.cc splitted to separate files
+bcc537f Some optimizations done on conversion functions. Class HfstConversionTransducer added, it will be soon used in a more efficient conversion.
+4e74b65 Note that we have licence exception for foma and warn if foma is missing
+3fd96ed Epsilon filter compose intersect
+77f9748 Only ascii-tokenize a-zA-Z to avoid breaking eg. generating transducers
+3155440 3.0.1 release news
+24b0883 Prepare bugfix release 3.0.1
+4d7a04d Use library function to check for epsilon in to_ol
+78f7e60 Pass strings to internal representation checking functions by reference
+6a5608c More control over floor lift behaviour
+aeee89f Clean up conflict resolution mess
+47f3823 Better floor jumping + relabel non-contiguous states (could slowdown in extreme cases, possibly revisit)
+eaa606b Alias hfst-optimized-lookup -> hfst-lookup for compatibility
+04d7b57 use default names to trace hfst operations neatly
+f6fecd5 Allow name truncation for neater names
+af00906 describe input/output formats in man pages
+2b9fa09 Extend example to contain all sections and stuff --Denn och nedanstående rader kommer inte med i loggmeddelandet--
+da36afc New tool for preprocessing automata before optimizing
+8bcd08b A state in an HfstTransitionGraph now has a vector of transitions intead of a set of transitions.
+eeb7acc ...I meant HfstException
+0a73c66 Catch HfstFatalException in convertion
+e6a8e3d HFST_CATCH macro
+456a02e hfst-lookup now handles flag diacritics correctly
+35ea903 Added functions to check for equality to internal reserved strings
+9f4d70b a bug in printing epsilons in hfst-fst2strings for sfst transducers fixed
+ab54f89 Add custom error message and README blurb for ::malloc errors
+618d064 When the floor sticks for (even) a single round, jump up to most recent successful allocation. This makes things a lot faster, at the cost of some waste of space. --quick should not be necessary for most purposes now.
+ff86e49 hfst-fst2strings now implements option --random for sfst and openfst transducers
+bcc68cd Misc. speed improvements, in particular removed the need to separately track which indices begin states
+17007d8 Actually write the index table finality markers
+f436f9a see previous commit message
+9d863c2 Fixed oopsie wrt removed profiling variables
+51049ce Run twolc tests in numerical order.
+b9bdc86 Fixed problem with word boundries breaking the alphabet.
+5234e0e Added tests for ensuring that word boundary conversions wonät break the alphabet.
+b532c93 Changed word boundaries so that they perhaps emulate what xerox does. A "#" in a rule file is always compiled to both an absolute word boundary (which is an internal symbol in hfst-twolc) and a relative word boundary "#". The absolute word boundary will always correspond to zero in output strings and the relative one will correspond to whatever it corresponded to in the rule file.
+f9788b0 Word bounadry tests added.
+d797484 Major improvements to --quick and some speed cases
+0062cd4 option --random added to hfst-fst2strings, not yet implemented
+724121b Removed trailing whitespace that broke make
+c45ba6b Fix lexc tests: * make script in build dir +x * put script dir in beginning of PATH in tests
+6621d1c git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@1181 941e2c2b-deac-454f-805a-451daa25f33c
+b4d68df Missing files added to Makefiles, make distcheck still fails.
+fface6c Turned option passing back on for convert function
+a31e269 test-script fixed. Previously it required installed hfst-compare, hfst-txt2fst and hfst-fst2txt
+94b2b83 fix partial commit of portability c xfunctions
+71b3bcd remove unnecessary read
+3091271 use pretty names by default
+c122b04 Fix name tool installation
+45f3fda Use automata names from metadata instead of filenames
+a3e6bcd Fixed a bug with %-escaped variable values, which weren't properly unescaped previously.
+39651a4 Added tests for %-escaped variable values.
+f59a7e9 hfst-fst2strings help message and special character printing fixed
+584c57c hfst-fst2strings fixed
+3c0acb5 filter flags should've defaulted true
+7e4b6cd Typo in usage message
+8f464a9 Added some files for a transducer testing environment.
+c53f605 fix spacing in examples and describe
+28680a9 update version
+38108b8 "environment" variables fed to configure get saved
+c35977b Added note about local libraries
+8077e3e Fixed a bug in compiling <=>-rules with list centers.
+97dd6fc Added test for compiling <=>-rules with list centers.
+c748ca3 Changed target to first release version
+35fb221 hfst-lookup should now work correctly
+5d4421d Added deprecated (and undocumented) -w switch to hfst-calculate for backwards compatibility
+d8842d4 Update substitute documentation
+d4c7e58 hfst-lookup should now work, still some problems in printing strings
+d7773da A more organized version of lookup function added to hfst-lookup. It will soon replace the original function.
+f850e58 Don't expect hfst-lexc-compiler to have a proper help and version string because it's just a humble wrapper.
+09adc46 Added a way for ol-conversion to be done really lazily (for when you want it done quickly - should still be faster, honestly). Also to pass a string parameter to conversion functions if they ever want a hint about something.
+d4f4c94 Don't run obsolete tests that break when run after make clean
+252e225 more distcheck fixes
+53d54a4 small changes made to hfst-lookup
+200b383 Added single quotes around and space after the filename for file-not-found errors. Makes it easier to read the filename (earlier the cause of the error was printed flush after the filename, with no space between).
+63b19be be explicit explicit about foma requirement for lexc and xfst
+9b1f9c2 Only claim to convert files that test -f
+df545ae Small changes made to helps and arguments in tools that convert between text, string and binary formats.
+65bebfd Maybe INFINITY will be defined more portably this way
+a9183a2 INFINTY in hfst-lookup was not defined properly. fixed it.
+b97ed62 string::npos changed to std::string::npos
+105b4b3 Generate binaries needed to test hfst-proc correctly
+65b4602 More utf-8 checks added. Command line tool helps also updated.
+2342e28 Fixed Makefile.am so that make dist works.
+59e6347 Initialise weight
+3f70a6d Missing std qualifier
+49eaf2b Added HfstTokenizer utf-8 validation tests.
+4991081 Enlightened hfst-proc as to the true nature of HFST3 headers
+de50e34 made HfstTokenizer::check_utf8_correctness a public static
+1850f9f Added utf-8 validation to the tokenizer and added the exception IncorrectUtf8CodingException.
+6361b29 Fix brokentests
+3a4ce96 remove coding style requirements and unit tests since they aren't followed anyways
+7752960 Do not print all multicharacter symbols unless in verbose mode
+206bef0 Update man pages
+92a9924 mark 3.0_rc1
+3d3e70b Fixed a bug in compiling rules with word boundaries and added test45.
+7ff8200 Don't use sed in scripts since it's broken on MacOS
+cb7b1ee Fixed bug in compose_intersect which discarded the second rule systematically.
+948b372 @_SPACE_@, @_TAB_@ and @_COLON_@ added to HfstStrings2FstTokenizer.cc
+7ad47d7 hfst-lookup now uses HfstFst2StringsTokenizer to tokenize the input strings.
+9ab6592 Don't convert same stack more than once
+b9dbb3a fisx some warnings
+fa5dd09 workaround mac''s missing strndup
+6870c09 Allow pair substitutions...
+01d746d Fix test for Mac OS
+677ddde Replace tabs with random number of spaces
+0990ea4 More tests limited to available formats
+8ee702b Only test available automata formats
+96af3b2 Test all string formats in strings2fst
+834cf29 Fixed hfst-string2fst parsing of input strings and reading of multichar symbols.
+e188081 hfst-strings2fst should now be able to handle all kind of string formats.
+ecc96f2 # is no longer a special symbol, because it is not a special symbol in xerox twolc.
+2ca9026 Fixed print in left arrow rule conflict warnings.
+3d41fc2 Fixed word boundaries in compose-intersect, again...
+b4270dd Special symbol handling changed in the commandline tools.
+0e1bea8 Fixed word boundaries in compose_intersect. When HfstBasicTransducer substitute starts working correctly, this can be done more efficiently.
+161d903 Fixed word boundaries in compose_intersect.
+f507cee Added printing the conflicting context in left a row rule conflict warnings.
+2851f19 Unknown and identity symbols are now correctly handled in composition. AT&T format now allows spaces in symbols if they are ascaped as '@_SPACE_@'
+caaf109 Tests for ? symbols
+a57fcaa Use unknowns and identities in regexp2fst
+a6c9834 Documentation added. Exceptions now throw a message.
+dfceeee Modified test so that the script does not have to be changed when new tests are added.
+71f1022 Removed a unnecessary newline printed when not reporting left arrow conflicts.
+6b311ec Added a rule for compiling a local version of hfst-twolc used in tests.
+d08533d Added hfst-twolc tests.
+e032ace Added hfst-twolc tsts.
+98a5402 Added hfst-twolc tests.
+aacbe75 Cahnged order of arguments so that 'cat fst1 | hfst-binary-tool fst2' will treat fst1 as the first and fst2 as the second argument.
+262d19e Fixed compose-intersect
+1bb5dec Handle the empty transducer in ->ol
+34d3577 Now hfst-compare does not print anything in silent mode. More tests added to test/libhfst.
+ea10912 Fixed definitions
+232b892 Fixed d:0 where d is a diacritic.
+58836d2 Fixed symbol offset calculation in certain flag diacritic-concerning cases
+d2a766d Fixed problem with diacritic pair syntax. Now d d: and d:0 are equivalent for the diacritic d and d:x will give a warning.
+a5505dc Remove debugging strings
+0590acd Properly copy flag state vector on stack
+25a5b9e Fixed a bug with definitions
+32e01ec Add tests for UTF-8 and latin-1 encoded strings
+ef669e3 follow print-epsilons in all formats
+9331c51 format options like other tools have them
+5b8b2b1 More documentation added.
+6197f2f More careful quotation and informative error messages for foma scripts
+5d6a2ff Use "HfstTransducer.hh" instead of <hfst/HfstTransducer.hh> for in tree builds
+49db47a hfst-strings2fst fixed
+6bf1608 Now hfst-strings2fst should handle escaping correctly.
+2825f8d A bug in hfst-strings2fst fixed: now the backslash is reserved for escaping characters. Now the library also throws more informative exceptions.
+54aaa9e Fixed operation retrieval
+1a0485a Fixed problem wrt subtracting from an end() iterator of an empty state_placeholder index placeholder map
+85d0602 Removed some more debug prints.
+fe95ee7 Removed some debugging prints
+28844b5 Fixed bug in defining lista using other lists and another bug which prevented variable rules unless there was a Definitions section.
+613d39f Fixed diacritics handling.
+86c8335 Fixed output file handling.
+103d9b2 Gave up on making }, ] and ) literal if they are not preceeded by opening {, [ and [, since this is too difficult in flex when brackets get nested. Fixed commandline argument handling properly and separated { and } from [ and ] i.e. they get their own bison symbols.
+52ebbb7 Fixed handling of commandline paramters so that the input filename can be given as a free argument without -i or --input.
+d630caf Fixed syntax so that a lonely }, ] or ) is not interpreted as abracket, parenthesis and so on. Fixed numbers so that they need not be quoted unless preceeded by ^
+ade6ed8 nore quotation and script guessing
+60c8023 Added hfst-compose-intersect.cc
+2b7a964 Changes needed for libhfst/src/implementations/compose_intersect
+5718b7b Added fiels needed in compose_intersect
+803e57e configure.ac changed because hfst-twolc was added.
+51b9cd2 Removed file hfst-twolc/.txt_fst which was added by mistake.
+cfa3c5c Removed geerated dir hfst-twolc/src/.deps which was added by mistake
+38ec61e Added hfst-twolc.
+e195be6 Miscellaneous packing tricks & fixed a typo
+7815222 Correction to flag indexing
+51cdc7a Corrected alphabet ordering (eps-input-flag-other)
+a07a6e4 Small changes done in documentation.
+f8658bb More refactoring
+20e8d36 Miscellaneous improvements and refactoring
+4e9475f Fixed bug wrt finding the largest used index
+859a1b2 missing test file added
+b4ecec5 Parametrized packing aggression. Packing is still a little slow for decent levels of aggression. Consider adding a mechanism to ask conversion to be maximally aggressive (eg. for binary distribution).
+fcaea64 Redo flag handling in ol-conversion
+dfb2690 A bug in hfst-lookup fixed: reading input strings in spaced format now works.
+7856fc9 Fix stupid mistake in previous fix to optimized-lookup internals
+2f32111 More coding style conformism
+bc68f4c Coding style conformism
+7d828ce Fixes to optimized-lookup internals and conversion
+d53894f Exception classes refined
+844d881 All exceptions changed to HFST_THROW(HfstException).
+66ebc7d Renamed TWROW HFST_THROW in HfstExceptionDefs.h
+661b615 Added some macro definitions, which make it easy to declare, define and throw informative exceptions.
+829953a Free memory earlier and do some less work in ol-conversion
+3c70901 The order of weight and string/string pair changed in HfstOneLevelPath and HfstTwoLevelPath. Now the elements of a set are sorted in ascending weight order.
+44f919c HfstLookupPath(s) is now replaced with HfstOneLevelPath(s)
+ae4f393 Flag diacritics should now be handled right in functions lookup and extract_strings
+95eca27 HfstTransducer::lookup now takes a StringVector as argument and HfstTransducer::extract_strings stores its results in an 'HfstTwoLevelPaths'
+38c5e2b Now coding-style.sh should pass.
+7470a48 Overlong lines separated on several lines.
+525715b More more more OFST->OPENFST renaming
+bd8523a More more OFST->OPENFST renaming
+1a56267 more OFST -> OPENFST name renaming
+645f7af HfstTransducer::read_in_att_format is now protected
+4b37099 A bug in tests fixed.
+b106796 test.cc renamed to test_rules.cc and only tests for functions in namespace hfst::rules preserved
+708daa6 TROPICAL_OFST_TYPE and LOG_OFST_TYPE changed to TROPICAL_OPENFST_TYPE and LOG_OPENFST_TYPE.
+4a1fd2f Fixed a bug in reading binary SFST and FOMA transducers.
+80e53b4 update requirements and reorganise
+44a7d7a Fixed bug in reading and writing transducer binary headers.
+d9ac6ec AT&T format now accepts all whitespace characters as field separators.
+6fd24d8 Added a const-version of HfstTransitionGraph::operator[], so that it is possible to access the transitions of a const HfstTransitionGraph.
+3cae2e6 Added appropriate type checks in a HfstTransducer constructor - probably many more needed...
+af09e6f Fixed typo and clarified help message
+ce45fb5 Represent epsilon as blank string when returning representations from ol-library
+13f7061 More tests added. Substitute bugs fixed in TropicalWeightTransducer.
+5632573 New tests added. Substitution functions cause a segfault in TropicalWeightTransducer, debugging under way.
+2c7c03e More tests added.
+91ab109 Fixed some problems (due to epsilon symbol) in SfstTransducer functions that take a String or StringPair as argument. FomaTransducer::is_cyclic now works correctly, function 'fsm_topsort' must be called before 'is_loop_free'.
+2ea6659 More tests added.
+ebfd3f9 File test_transducer_functions fixed.
+47066b2 Extra debugging messages removed.
+e48223d Test for tokenizer added.
+8ff3b25 FomaTransducer::define_transducer(char*) now calls fsm_count(struct *fsm) on its return value. In this way the number of fsm lines is correct when the transducer is written to file.
+8485a6d More tests added.
+10901e1 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@925 941e2c2b-deac-454f-805a-451daa25f33c
+a68b3e3 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@924 941e2c2b-deac-454f-805a-451daa25f33c
+0df13e9 File test_constructors.cc added
+e1e8ffe Documentation added.
+7e81b7b Documentation updated. Tool hfst-name added.
+ab09fac Now conversion from OpenFst and SFST to HFST handles special symbols correctly. How special symbols should be handled in the reverse case is still an open question.
+aaa59d3 remove deprecated conversions and unused parameters
+8cbe4a2 ol-basic -conversion
+b3a201a Function HfstTransducer::insert_freely(const HfstTransducer &tr) added.
+63eb030 Now the output symbol table of a tropical or log HFST transducer is assigned a copy of the input symbol table when the transducer is written. This should make conversions between OpenFst and HFST transducers easier.
+473157e Fixed two typedefs in trunk/hfst3/tools/src/hfst-summarize.cc
+c8c1af8 Fixed an #include in trunk/hfst3/libhfst/src/implementations/ConvertTransducerFormat.h and a typedef in trunk/hfst3/libhfst/src/implementations/convert.h
+25fc8e1 Fix verbose messages about HFST3 headers
+e856b97 epsilon tests
+0e91640 hfst-lookup now prints the results in the FILE requested instead of stderr
+758a956 hfst-lookup has two options more. It is possible to print results in pairstring format (not implemented for optimized lookup format) and defined how the epsilon is printed.
+76acf98 extract_strings and WeightedPath changed so that it is possible to include a StringPairVector representation of the extracted paths
+d17c308 implement flags and epsilons and xfst options print-space print-flag obey-flags etc.
+290b861 Avoid testing missing backends if possible
+843e8d6 Documentation added. Thrown exception types changed for some functions.
+ed4c9af Documentation improved and added. Keyword 'const' added to functions and their arguments when appropriate.
+532d9e9 Documentation added.
+026a095 Documentation changed.
+a76fccf HfstFileException changed to HfstStreamException
+740219f Missing flag diacritics now yield a warning in hfst-compose, hfst-conjunct and hfst-subtract, unless freely inserted by option -F.
+fbd97a1 One more portability fix... could be the last one!
+200fae1 Yet another without-openfst portability fix
+da6dfc8 Another without-openfst portability fix
+beae820 Another without-openfst portability fix
+b8f670a Added using-directives to hfst-lookup.cc - apparently they don't get included from somewhere else when not HAVE_OPENFST, so this is necessary for portability
+e9a2fa5 More optimized-lookup conversion fixes... produces correct results at least for trivial cases now.
+37717b2 Various bits of format correctness for optimized-lookup conversion (lookup still doesn't give correct results)
+1e51ff9 Documentation added.
+c929f0b HfstAlphabet, HfstBasic and HfstUtf8 cc and h files moved to tools/src. Some functions in HfstTransducer decalred as protected.
+3e5198b #if HAVE_HFST_OL perhaps not working correctly - in any case HFST_OL-writing is now enabled, although the results still don't appear to be quite correct
+70441e4 Oops, forgot to remove some debugging messages
+c930115 Fixed hanging hfst-ol conversion, still doesn't get written
+4b3123b Ol-conversion (untested as yet)
+7f0965a Added parsers/xre_utils.h to noist_HEADERS in tools/src/Makefile.am
+52ba7b8 Added parsers/XreCompiler.h to noinst_HEADERS in tools/src/Makefile.am
+0382dde Documentation added.
+3210012 Documentation added.
+94820cd Intersecting composition functionalities removed, they will be implemented using HfstBasicTransducer format in the future.
+90253d69 Updated configure.ac to reflect dropping of tools/src/parsers/Makefile.am
+081c986 Deleted unneeded Makefile.am in tools/src/parsers
+aa3fcaa Substituting unknowns and identities now works correctly in composition.
+3e96e8f A bug in reading transducers in AT&T format fixed. Also an alphabet bug in converting HfstBasicTransducers into SFST transducers fixed.
+7c9ed80 Corrected documentation link.
+7bd61df Documentation added.
+b03365d Redundant code removed from class HfstTransitionGraph.
+ee7689a HfstNet renamed to HfstTransitionGraph, HfstFsm to HfstBasicTransducer and HfstArc to HfstBasicTransition
+9c3b6a6 extra_dist all scripts
+b930429 fix VPATH _build_
+324cd91 Substitute functions of HfstNet updated.
+366b783 HfstCompiler.h in noinst_HEADERS
+d545f77 Added items to noinst_HEADERS in tools/src/parsers/Makefile.am, evidently needed for building
+150715f Remove intermediate files and be selectively verbose to avoid confusion
+e2e9e79 YAUH: HfstUtf8.h
+4c75eab YAUH: HfstBasic.h
+f0e1f0c Another unshipped header (HfstGrammar.h)
+c9d913a oops
+b258f1f HAVE_OPENFST guards
+ab00fb4 A bug in transducer conversion functions fixed.
+ab4c840 Missing \ in another header shipping directive in libhfst/src/implementations/Makefile.am
+8bb83a4 Another missing header, TropicalWeightComposeIntersect.h included for shipping (this is probably temporary and the header shouldn't be needed anymore, but for now building fails without it on clean machines)
+558f4f3 The alpha testing instructions
+cc748cc skip all tests that might fail
+1ac0e16 * some new autoconfiscate features (silent make!) * misc. stylistic changes
+e8b5ac0 Made HfstNet::get_final_weight(...) a const member function.
+eafc2e8 Added missing headers to Makefile
+2427785 changed void HfstNet::add_state(HfstState s) so that it returns s and added HfstState HfstNet::add_state(void), which adds a new state.
+51d9a4a HfstNet.cc added
+6468e7f Conversions between transducer formats updated so that they use HfstFsm
+236c20d Fix the missing includes and linkage
+5a74f1f Remove hfst's lexc, xfst and xre parsers and use foma's instead of reinventing wheel and doubling update burden
+f569bf3 New transducer conversion functions added.
+b1b2c7c git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@841 941e2c2b-deac-454f-805a-451daa25f33c
+569ec24 A bug in FomaTransducer::define_transducer fixed.
+bb4aa6b A bug fixed in HfstNet::substitute(StringPair, HfstNet)
+7b4516e More functions added to HfstNet
+c80a341 More functions added to HfstNet
+59c60c3 Use local compare for all tests
+4babf62 don't fclose infile too early
+f4ecf79 * Separate bug report from further info by newline * remove old and deprecated tools
+7db67bb * intersect has been called conjunct since forever * move external links in SEE ALSO
+c49c6c7 enforce coding style in make check :-)
+a5774a9 File new-ConvertTransducerFormat.cc added, it will soon replace ConvertTransducerFormat.cc
+3c75438 testing results of parameter vcombinations
+1c76cc0 add hfst-lexc script
+1fe743b Update xfst/foma scripts
+9259bbe Added a substitute function to class HfstNet.
+ea06012 HfstNet.h has now a function write_in_att_format
+a0e38e2 HfstNet.h updated and tested.
+692777c Added file HfstNet.h that will soon replace file HfstInternalTransducer.h.
+8bd8247 Fix internal tests
+a988bf9 HfstInternalTransducer_ updated.
+d511822 A new HfstInternalTransducer class HfstInternalTransducer_ added.
+5105bb2 class HfstTransition changed to struct HfstTransition
+de7d5ce A bug in converting empty transducers between internal and OpenFst's formats fixed.
+b2b1ee8 use #if's on backend specific code
+75bc715 LogFstTrieFunctions .cc and .h removed and their functions moved to LogWeightTransducer .cc and .h and copied also to TropicalWeightTransducer .cc and .h
+e5cacc1 Files renamed and deleted.
+19e3b71 Including headers should now work correctly. Doxygen documentation also added.
+871e1e0 The minimal lexc compiler functionality tests and minor fixes to compilation formula
+4d00374 implementations unit tests
+4233b9d Add unit tests for extensions
+e7213c6 don't test default input stream since it requires stdin
+135c50f EXIT_* needs cstdlib on newere gcc's/glibc's
+f008438 main interface unit tests 3/6
+7923d45 It's a verbose test suite
+3fdf3ea hfst-strings2fst now tokenizes multicharacter symbols
+4280623 A bug in hfst-strings2fst with (not pairstrings && not spaces) fixed.
+dc4b60b hfst-strings2fst now uses the internal trie transducer format and converts to the format requested before writing the output. This should make hfst-strings2fst faster.
+178b960 Documentation added.
+39f6553 Added a simple example transducer library, MFSTL,  that can be included by command './configure --with-mfstl=true'
+37fa173 An implementation type FOO_TYPE added for testing, by default it is not included in HFST.
+779e27e Fix lookup_printf and test it
+91cbdca Reading hfst version 2 transducers whose implementation type is OpenFst should work now.
+7248131 Documentation added. A bug in hfst version 2 transducer handling detected, fixing started.
+8a0f692 Full-ish HfstTransducer unit test
+f65f228 A bug in hfst-strings2fst fixed, now the newline character is discarded before converting the weight string into a float. More Doxygen documentation also added.
+76ebbd1 Lookup implemented for optimized-lookup API with new style headers, though hfst-lookup doesn't print anything due to commented-out printing function (it seems to break when I uncomment it..?)
+606ddf6 This could be unit test
+8887df6 hfst-lookup should now work correctly for transducers having epsilon input cycles. Also added some documentation.
+da33a15 fix more of mac os x getline substitute
+b88d9ff skip hfst-proc dir for empty input tst
+b41e574 Revert man bootstrapping stuff and add stubs for rest of the tools
+539ef76 add set and use zu for size_t prints
+100123f hfst-lookup fixed, still allows too many cycles although limits the results to a finite number
+0aeebd2 A bug in hfst-lexc-compiler fixed, still some errors in help2man and tool tests.
+1e97875 File added.
+b185125 Outputs of help commands of commandline tools fixed.
+12ff3ef A bug in HfstTransducer(StringPairVector&, type==FOMA_TYPE) fixed.
+edbb55d A version of infinitely_ambiguous (necessary for at least lookup)
+d7f8ba0 Removed conditional compilation guards from non-template lookup-performing function (which way do we want it to be?)
+d9efbee enable lexc, missing ) added
+64c686b Some additional HFST_OL functionality
+75934b3 Update man pages for release :-)
+2dc49a3 Tests added.
+209fd04 Some fixes to make the right names defined down the line, plus a first attempt at the lookup API
+39692d3 Lookup for hfst_ol in hfst3
+4887fe9 More documentation added.
+07b4838 Files documented, a skeleton file added for adding a new backend implementation
+2831646 Files renamed
+cc61692 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@769 941e2c2b-deac-454f-805a-451daa25f33c
+185380b Now libhfst/src/implementations contains files that modify backend transducers directly and libhfst/src other files
+a98715a Files moved
+636599b Files moved
+a373e2d Set executable bit + line endings.
+fcf17ac Fake hfst-xfst using foma-wrapper hacks
+2158187 HfstCompiler.cc and HfstCompiler.h added to tools/src/
+485406c Files moved.
+b7d01a8 hfst-lookup updated, handling flag diacritics and multiple paths with the same weights not yet implemented
+bccb155 hfst-lookup no works on unweighted acyclic transducers
+565d990 set type after exiting error for mac compiler
+4cba1aa Fix -o handling
+a62adc6 hfst-lookup implementation continued, works not yet
+edd084b beginning to implement hfst-lookup
+cb1cd03 Recover from make-breaking stupid mistake
+2b402e5 Standardization of HfstOlTransducer's iostreams
+b10fc11 just testing that everything works
+d20527d Clean up few minor details
+d1968d9 Documentation added.
+0fd33bd More documentation added, exceptions divided into subclasses.
+f55820f Documentation added.
+bac207d Catch stuff to provide meaningful error messages, provide better error replacement
+7bec3d4 Small changes done, documentation added.
+ddaf962 Lookup and related functions
+94bb62d Update string_to_format and some polishing
+3067f9f A bug in reading transducers with old header format fixed.
+8bde7d5 harmonization function optimized
+29c3abc don't use bsd err functions
+19df4c8 return paths even if !HAVE_SFST
+cba810b using std::map, have SFST stuff ifdef'd
+218faa6 A name field added to hfst header. Doxygen documentation updated.
+7a3b473 HfstInputStream changed
+c7509d0 Missing restriction rule operators added.
+fd80271 A bug in HfstRules fixed. FEXPORT must be added in front of foma functions 'sigma_create', 'xxmalloc' and 'sigma_max' in file fomalibconf.h until new version of foma is released.
+1a306b5 A bug in HFST header handling fixed. Todo: update HFST code to work with the newest version of SFST.
+42e2594 Fix lexc compiler
+8739b07 Detail GNU bison version and feature requirements
+801ad20 Use obsolete syntax for name-prefix to support slightly older bisons
+2d9b05b More checks for backend installation sanity§
+da681d1 Make compiler tools dependent on relevant features in library
+a6f4b68 Also include current foma diffs
+322b7f8 Function open() removed from HfstInputStream and HfstOutputStream. HFST transducer header structure changed.
+5d197d0 Added MacOS X notes.
+6532861 Remove bundled foma and SFST
+bf5053e Mergefail→delete duplicate lines
+cba481f Add preliminary xfst compiler for offline compilation of static files
+ea740e3 Add autogen.sh for problematic oses and systems
+2ce19e8 Document library backend requirements
+d911ae3 add replacement strndup and error_at_line for mac again
+dbcfbf1 commandline tool hfst-compose-intersect and test added
+45290c5 more tests added to tools, SFST_TYPE transducer header now has an optional field that tells if the transducer is minimal
+0db6a0b more tests added to test/tools and small bugs fixed in commandline programs
+ce7f006 HfstInputStream and HfstOutputStream now work correctly with tropical and log weight transducers if their file argument is an empty string
+b36fd19 Alphabet definition in HfstCompiler is now not done through internal format when using SfstTransducers. This optimization makes hfst-calculate slightly faster.
+aaa2eae tropical transducer harmonization code optimized
+5421e3d Moved the #endif to the actual correct place...
+3a950b7 Moved #endif to correct place. Suggestion: when there's a lot of distance between #if and #endif, consider placing a comment after #endif to indicate what it's ending (emacs can't figure it out).
+8ab00a7 Removed obsolete definitions
+15369a7 transducer harmonization code optimized
+bf6dfa1 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@692 941e2c2b-deac-454f-805a-451daa25f33c
+7eb10ec missing files added
+3d244cb git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@690 941e2c2b-deac-454f-805a-451daa25f33c
+3bc4705 HfstCompiler's code optimized
+0a590ff git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@685 941e2c2b-deac-454f-805a-451daa25f33c
+dfd5143 replace_in_context's code optimized
+0ba8366 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@683 941e2c2b-deac-454f-805a-451daa25f33c
+2cad021 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@682 941e2c2b-deac-454f-805a-451daa25f33c
+e1f264b Class 'HfstTrie' added for quick disjunction of words in hfst-calculate
+41328b3 reading words from a file should now be faster in hfst-calculate
+c973556 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@679 941e2c2b-deac-454f-805a-451daa25f33c
+c075ba7 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@678 941e2c2b-deac-454f-805a-451daa25f33c
+256cd2d a bug in hfst-calculate's 'make_mapping' fixed
+f46a184 now hfst-calculate does not unnecessarily handle unknown symbols in composition
+f2a5359 A bug in alphabet definition in hfst-calculate fixed. It seems that handling unknown and identity symbols in composition is very slow for some reason.
+d194e80 A bug in HfstCompiler::complement_range fixed
+a489950 HfstCompiler::new_transducer is now faster
+e74f90f some bugs in command line programs fixed
+d78c45a some bugs fixed in tests and hfst library
+2a64259 4cats.txt now contains a transducer accepting 4 consecutive 'cat's, and 4_cats.txt contains 4 consecutive transducers that each accept 'cat'.
+acd96ec a bug in function 'harmonize' fixed
+553674c Commit missing inputNamed
+d9f9551 hfst now compiles with all combinations of available backend libraries
+c5e0973 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@661 941e2c2b-deac-454f-805a-451daa25f33c
+68b326b Make --without-foma work
+71d08c4 optimized-lookup bigfix wrt weights in flagged transducers
+41a235e Function HfstTransducer::push_weights added. Foma is now dynamically linked to hfst, option -fvisibility must not be used when compiling foma, because then some of foma's functions will not be visible to hfst.
+fbe2969 Tentatively implement HFST 2 format
+9d4aeed move things around
+917827d Add space separated strings2fst; parse - as filename in hfst_fopen
+6c69309 hfst now works without making any changes in sfst files
+11f5420 Configuring out broken parts
+17cd8d3 Add preliminary lexc compiler
+ab50a96 HfstMutableTransducer defined in namespace hfst, small bugs fixed in TropicalWeightTransducer
+226ae4c unknown and identity symbols are now handled correctly in composition
+c016a92 HfstMutableTransducer replaced with HfstInternalTransducer
+792dfb3 Document the XRE compiler
+a2d0367 functions that read and write in AT&T format now use HfstInternalFormat
+6f0770d some modifications made to HfstInternalTransducer
+0d5c47d freely_insert and substitute functions now do not depend on any specific library. They must still be tested.
+2bf97cb some functions added to HfstInternalTransducer
+f26af42 invert XRE autoconf logic
+1a8a586 missing files added
+b2da1a4 conversions between internal transducers and sfst, tropical and foma transducers implemented
+9b896d2 Enable XRE parser
+058a409 conversions between SFST and internal transducers added
+66cdf07 summarize more statistics
+3260a0a Wrap backends around autoconf have_
+2c140fa Enable basic compose-intersect again; no flags, no #'s
+ef39e84 HFST code updated so that it works with OpenFst version 1.2. New internal transducer format added.
+47cdd70 fix signs when wno-sign-compare fails
+00e079b Delete generated files
+4590274 Now hfst-calculate does not depend on SFST.
+1a56a05 hfst-calculate now does not depend on SFST, function implementations not yet written
+ea974ba a bug in substitute(StringPair, HfstTransducer) fixed, agreement variables added to hfst-calculate
+90d6275 Add some functionality tests for hfst-proc
+a884b27 Remove obsolete source files of hfst-proc predecessors
+4ebe348 Fix bug causing final weights not to be included in weight calculations
+32abdec Remove obsolete flag diacritics code from hfst-proc
+b5a8fe8 Add license information to hfst-proc and optimized-lookup files
+eeedf41 Modify the extract_strings algorithm to avoid the non-standard std::vector::data() for older GCCs
+2cad922 Perform initial migration of hfst-proc into its new home in the proper HFST tools directory, while refactoring to share as much code as possible with the optimized-lookup library backend
+0fc222e Add 'exclude' option to hfst-fst2strings
+af172ca git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@616 941e2c2b-deac-454f-805a-451daa25f33c
+c457724 Fixed memory leaks in harmonize
+fb3fab5 Added libhfst/src/implementations/TropicalWeightComposeIntersect.h and libhfst/src/implementations/TropicalWeightComposeIntersect.cc
+ebef427 Composition can soon handle identity and unknown symbols correctly. Substitute can now also modify symbol pairs through a function pointer.
+0207962 Refactor extract_strings to invoke a callback on paths, allowing neat features in hfst-fst2strings
+25b747a Credit self in AUTHORS
+fddd8b2 SFST updated to new test version, some modifications still needed to HFST library so that it will work with the new version
+17125a4 error_at_line for parsing errors
+5df88b5 Allow empty lines and comment lines starting with # except when followed by a tab.
+b8da331 Add the basic summarize functionality and the test
+5ff805e rule operators added to hfst-calculate
+3618b20 More functionlaity tests
+1daa938 Reimplement extract_strings in all backends with cycle-limiting functionality
+8ebdabe substitute and test
+4c2697a Add test for fst2stings
+3c0db1e more functions added to hfst-calculate
+527b7cf Ubuntu (dash?) workaround
+07c8832 Make string pair implementation work
+5a1646a Add lexc compiler's old skeleton
+768cc07 Reverse how the upper and lower strings are stored during string extraction in the SFST backend
+d822832 Implement string extraction in the optimized-lookup backend
+3901e85 Fix a compiler warning about missing a return statement
+e55cdab Remove debug output that should never have been committed
+5238401 Fix calculation of several header properties during conversion
+7130a07 more functions added to hfst-calculate
+35c3e57 Start a document on formats
+dbf650c test strings2fst and fail
+bc5f85d Rollback bogus repeat throw
+23f95bc comment out broken repeats
+84d6b26 Fix bug in binary op parameter handling and add test for it
+5f3b317 Invert upper and lower to follow upside-down terminology of HFST
+8cb2196 Fix no parameters parsing for unary tools and project
+72cb416 Test basic algebra
+8ce8483 functionality test for concatenate
+cbecff2 Add text based transducers for functionality tests
+124df37 Fix fst2strings to use set_program_name and rest of the basic tools
+893186f small changes done in functions that are needed for hfst-calculate
+8e30ba1 Check handling of empty input file for all tools
+11692b2 Default to -Wall -Wextra -Werror for developers
+041c510 Convert txt2fst; * use const for global char-* * default stdin, stdout for global FILE*
+58dff6e Add initial support for evaluating and filtering flag diacritics when extracting transducer paths
+90f49d9 Add a class for dealing with flag diacritics in string extraction
+7f8204c Port and enable fst2strings
+44154e0 Hook up is_cyclic for the optimized-lookup backend
+74dcdfc Use warn and err if warnc, errc, error are not available
+a425f2b Instead of gnulib-tool, handle gnulib manually
+aaa4a7f Missing file
+34e3ecb Gnulib weirdness?
+075e63c Convert some simpler command line tools to HFST3 (preliminary)
+e535c05 Perhaps gnulib for portability problems? Temp. disabled few tools.
+c49af70 Few sample tests for tools in automated tests
+02a08ed Include licensing blurb in every single file since it's very important
+721ee49 Update docs a bit
+56b426a First steps towards unbundling backend libraries
+caa7704 Remove debug output inadvertently left enabled
+6296b07 Fix sign-problem causing format-guessing for OFST transducers to fail
+9444698 Add support for converting to the HFST optimized-lookup format
+39bc89e Add support for the HFST-optimized-lookup implementation in the tool for format conversion
+134c6ea Add support for the new implementation in the interface files
+0fd24ab Modify the semantics of the InputStream function is_good in the OFST implementations to match those in the SFST and foma implementations
+4883d03 Update makefile for building the new backend
+ec67b18 Add conversion HFST-optimized-lookup -> OFST Tropical Weight
+41d7301 Initial commit of bridge classes for the HFST-optimized-lookup backend
+f8b849b Initial commit of an HFST-optimized-lookup backend
+3532dca Add is_cyclic to the transducer API and implementations
+532c668 Add hfst-strip-header tool for removing any HFST3 headers from a file
+c7a64f3 Port hfst-compare to the new library
+96b6ca7 Pass the correct output type when creating the output stream
+29dc489 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@471 941e2c2b-deac-454f-805a-451daa25f33c
+5834ac0 Port hfst-fst2txt
+9d0ade8 Fix the already-ported tools to properly handle IO using the standard streams
+5cc5100 Add ability to read the type of the first transducer in an HfstInputStream without first having created a transducer from it
+ab1d96c git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@465 941e2c2b-deac-454f-805a-451daa25f33c
+714fc13 HfstCompiler class added
+7580d1d Fix fst2fst to correctly handle inputs with multiple transducers
+e34e30c Teach HfstInputStream how to deal with inputs containing multiple transducers, of which none have HFST3 headers
+50d5686 Port hfst-invert to HFST3
+1a86ae3 Port hfst-fst2fst to work with HFST3
+de1feba Add support in HfstInputStream for loading transducers lacking the HFST3 header
+a5e7ec0 Make foma transducer type guesser able to detect non-gzipped transducers as well
+7f785cf Add call to open the output stream so the tool doesn't crash
+dc85825 Add static methods to the InputStream implementations allowing to check whether a FILE* or istream contains a transducer of a give type
+1e6b6cd Remove HFST2 include from file with helper functions for tools
+0ab49ed hfst-calculate files updated to hfst version 3. At the moment, hfst-calculate only parses single transition expressions and produces a dummy transducer as a result.
+fbe8acb anonymous transducer constructors added
+ef4f1c5 Added HfstTransducer &operator=(const HfstTransducer &)
+e352b9a hfst-compiler.yy added
+544c418 more rule operator functions implemented
+6886485 git-svn-id: svn://svn.code.sf.net/p/hfst/code/trunk@409 941e2c2b-deac-454f-805a-451daa25f33c
+13ec682 'HfstRules.cc' added.
+d72acf3 rule functions added
+cfe73d0 stub for flag diacritic support doc
+916c12d documentation added
+dbd6d6e more Doxygen documentation added
+9759312 Convert binary integers to decimal for old gcc support (OS X)
+0067fa6 Tried to make the autoreconf text a bit clearer.
+7ded1cc ImplementationType parameters removed from most functions
+91ac6d0 Require fst/fstlib.h as <fst/fstlib.h> and include as such.
+55b3eb5 * Remove openfst from source directory because bundling Apache licenced    software with GNU GPL softare is a bad thing * Add licence disclaimers to auxiliary files because FSF suggests so
+c695e9a documentation added
+4905303 Documentation and type handling added, some problems in type conversion.
+7d5dbb0 add ofst include dir for compilation
+f76eb45 sgi.h is visible outside libhfst
+7bf66dd Work around problems with missing hash
+c618bd7 Add extra doc stuff to build tree
+df2f412 more doxygen documentation added
+8804a38 some typedefs in SymbolDefs.h and ExtractStrings.h renamed
+a05ba5d copy hfst-proc verbatim to 3
+ce06b13 Swap stable old trunk to branches and proposition to trunk
diff --git a/NEWS b/NEWS
index dbedeb1..8ddd163 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,62 @@
 This file contains all noteworthy changes in HFST development between releases.
 For full listing of changes see ChangeLog.
 
+Noteworthy changes in 3.10.0
+----------------------------
+
+* Swap directions of 'apply up' and 'apply down' in hfst-xfst, so that these commands work in the same way as in foma and xfst.
+
+* Add a new tool called hfst-flookup. It does lookup from right to left, in the same way as foma's flookup and xerox's lookup. The tools hfst-lookup and hfst-optimized-lookup stay as they are.
+
+* Improvements to pmatch and optimized lookup
+
+* Make hfst-fst2fst print a more informative error message if a gzipped native foma transducer is given as input.
+
+* Changes and improvements in Python interface:
+
+  * Transducer functions returning a reference to the transducer now return void.
+
+  * Tentatively add some pmatch functions.
+
+  * Add some two-level rule functions.
+
+  * Support lookup for transducers not in optimized-lookup format.
+
+  * Support Python 2 unicode strings in lookup.
+
+
+Noteworthy changes in 3.9.2
+---------------------------
+
+* Improvements to tokenization and pmatch tools
+
+
+Noteworthy changes in 3.9.1
+---------------------------
+
+* License for the library code (under libhfst and python directories) is now LGPL 3
+
+* Make python bindings compatible also with python2
+
+* Add time cutoff option to hfst-pmatch and hfst-proc2
+
+* Rename hfst-proc2 to hfst-tokenize, with hfst-proc2 and hfst-tokenise as aliases
+
+* Use standard c++0x when compiling unless a higher standard is required with -std
+
+* Check automake version during configuration to determine whether header files generated by yacc/bison should use extension .h (automake < 1.12) or .hh (automake >= 1.12)
+
+* Omit infinitely ambiguous check in hfst-lookup when time cutoff is defined
+
+* Improvements in Xerox markup rules
+
+* A bugfix in compile-replace in hfst-xfst
+
+* Improvements in pmatch tools, hfst-optimized-lookup, hfst-reweight, hfst-pair-test and hfst-substitute
+
+* A bugfix in priority union
+
+
 Noteworthy changes in 3.9.0
 ---------------------------
 
@@ -26,6 +82,8 @@ Noteworthy changes in 3.9.0
 
 * Support flag diacritics in replace rules
 
+* Rewrite markup rules
+
 * Make command line tools perform automatic conversion when processing transducers whose types differ
 
 
diff --git a/NSIS/AddHfstLibrary.nsi b/NSIS/AddHfstLibrary.nsi
deleted file mode 100644
index 5814a9a..0000000
--- a/NSIS/AddHfstLibrary.nsi
+++ /dev/null
@@ -1,2 +0,0 @@
-
-        File libhfst-36.dll
diff --git a/NSIS/CheckLibraries.nsi b/NSIS/CheckLibraries.nsi
deleted file mode 100644
index 5711290..0000000
--- a/NSIS/CheckLibraries.nsi
+++ /dev/null
@@ -1,33 +0,0 @@
-
-        ## Check that kernel32 and msvcrt dlls are found
-        ## ---------------------------------------------
-
-        SearchPath $R0 "kernel32.dll"
-        ${If} $R0 == ""
-              messageBox MB_OK "ERROR: kernel32.dll not found."
-              return
-        ${EndIf}
-
-        SearchPath $R0 "msvcrt.dll"
-        ${If} $R0 == ""
-              messageBox MB_OK "ERROR: msvcrt.dll not found."
-              return
-        ${EndIf}
-
-
-        ## Check if libstdc++ and libgcc dlls are found and, if needed
-        ## install them to the HFST directory
-        ## -----------------------------------------------------------
-
-        SearchPath $R0 "libstdc++-6.dll"
-        ${If} $R0 == ""
-              File libstdc++-6.dll
-        ${EndIf}
-
-        SearchPath $R0 "libgcc_s_dw2-1.dll"
-        # SearchPath $R0 "libgcc_s_seh-1.dll"
-        ${If} $R0 == ""
-              File libgcc_s_dw2-1.dll
-              # File libgcc_s_seh-1.dll
-        ${EndIf}
-
diff --git a/NSIS/MoveFileFolder.nsh b/NSIS/MoveFileFolder.nsh
deleted file mode 100644
index 0b8820c..0000000
--- a/NSIS/MoveFileFolder.nsh
+++ /dev/null
@@ -1,256 +0,0 @@
-;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-; MoveFile and MoveFolder macros
-;
-; Author:  theblazingangel at aol.com (for the AutoPatcher project - www.autopatcher.com)
-; Created: June 2007  
-;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 
-;==================
-; MoveFile macro
-;==================
- 
-    !macro MoveFile sourceFile destinationFile
- 
- !define MOVEFILE_JUMP ${__LINE__}
- 
- ; Check source actually exists
- 
-     IfFileExists "${sourceFile}" +3 0
-         SetErrors
-             goto done_${MOVEFILE_JUMP}
- 
- ; Add message to details-view/install-log
- 
-     DetailPrint "Moving/renaming file: ${sourceFile} to ${destinationFile}"
- 
- ; If destination does not already exists simply move file
- 
-     IfFileExists "${destinationFile}" +3 0
-         rename "${sourceFile}" "${destinationFile}"
-             goto done_${MOVEFILE_JUMP}
- 
- ; If overwriting without 'ifnewer' check
- 
-     ${If} $switch_overwrite == 1
-           delete "${destinationFile}"
-                  rename "${sourceFile}" "${destinationFile}"
-                         delete "${sourceFile}"
-                                goto done_${MOVEFILE_JUMP}
-                                    ${EndIf}
- 
- ; If destination already exists
- 
-     Push $R0
-         Push $R1
-             Push $R2
-                 push $R3
- 
-     GetFileTime "${sourceFile}" $R0 $R1
-         GetFileTime "${destinationFile}" $R2 $R3
- 
-     IntCmp $R0 $R2 0 older_${MOVEFILE_JUMP} newer_${MOVEFILE_JUMP}
-         IntCmp $R1 $R3 older_${MOVEFILE_JUMP} older_${MOVEFILE_JUMP} newer_${MOVEFILE_JUMP}
- 
-     older_${MOVEFILE_JUMP}:
-         delete "${sourceFile}"
-             goto time_check_done_${MOVEFILE_JUMP}
- 
-     newer_${MOVEFILE_JUMP}:
-         delete "${destinationFile}"
-             rename "${sourceFile}" "${destinationFile}"
-                 delete "${sourceFile}" ;incase above failed!
- 
-     time_check_done_${MOVEFILE_JUMP}:
- 
-     Pop $R3
-         Pop $R2
-             Pop $R1
-                 Pop $R0
- 
- done_${MOVEFILE_JUMP}:
- 
- !undef MOVEFILE_JUMP
- 
-    !macroend
- 
-;==================
-; MoveFolder macro
-;==================
- 
-    !macro MoveFolder source destination mask
- 
- !define MOVEFOLDER_JUMP ${__LINE__}
- 
- Push $R0
- Push $R1
- 
- ; Move path parameters into registers so they can be altered if necessary
- 
-     StrCpy $R0 "${source}"
-         StrCpy $R1 "${destination}"
- 
- ; Sort out paths - remove final backslash if supplied
- 
-     Push $0
- 
-     ; Source
-         StrCpy $0 "$R0" 1 -1
-             StrCmp $0 '\' 0 +2
-                 StrCpy $R0 "$R0" -1
- 
-     ; Destination
-         StrCpy $0 "$R1" 1 -1
-             StrCmp $0 '\' 0 +2
-                 StrCpy $R1 "$R1" -1
- 
-     Pop $0
- 
- ; Create destination dir
- 
-     CreateDirectory "$R1\"
- 
- ; Add message to details-view/install-log
- 
-     DetailPrint "Moving files: $R0\${mask} to $R1\"
- 
- ; Push registers used by ${Locate} onto stack
- 
-     Push $R6
-         Push $R7
-             Push $R8
-                 Push $R9
- 
- ; Duplicate dir structure (to preserve empty folders and such)
- 
-     ${Locate} "$R0" "/L=D" ".MoveFolder_Locate_createDir"
- 
- ; Locate files and move (via callback function)
- 
-     ${Locate} "$R0" "/L=F /M=${mask} /S= /G=1" ".MoveFolder_Locate_moveFile"
- 
- ; Delete subfolders left over after move
- 
-     Push $R2
-         deldir_loop_${MOVEFOLDER_JUMP}:
-             StrCpy $R2 0
-                 ${Locate} "$R0" "/L=DE" ".MoveFolder_Locate_deleteDir"
-                     StrCmp $R2 0 0 deldir_loop_${MOVEFOLDER_JUMP}
-                         Pop $R2
- 
- ; Delete empty subfolders moved - say the user just wanted to move *.apm files, they now also have a load of empty dir's from dir structure duplication!
- 
-     Push $R2
-         delnewdir_loop_${MOVEFOLDER_JUMP}:
-             StrCpy $R2 0
-                 ${Locate} "$R1" "/L=DE" ".MoveFolder_Locate_deleteDir"
-                     StrCmp $R2 0 0 delnewdir_loop_${MOVEFOLDER_JUMP}
-                         Pop $R2
- 
- ; Pop registers used by ${Locate} off the stack again
- 
-     Pop $R9
-         Pop $R8
-             Pop $R7
-                 Pop $R6
- 
- ; Delete source folder if empty
- 
-     rmdir "$R0"
- 
- Pop $R1
- Pop $R0
- 
- !undef MOVEFOLDER_JUMP
- 
-    !macroend
- 
-;==================
-; MoveFolder macro's ${Locate} callback functions
-;==================
- 
- Function .MoveFolder_Locate_createDir
- 
-     ${If} $R6 == ""
-           Push $R2
-                StrLen $R2 "$R0"
-                       StrCpy $R2 $R9 '' $R2
-                              CreateDirectory "$R1$R2"
-                                              Pop $R2
-                                                  ${EndIf}
- 
-     Push $R1
- 
- FunctionEnd
- 
- Function .MoveFolder_Locate_moveFile
- 
-     Push $R2
- 
-     ; Get path to file
- 
-        StrLen $R2 "$R0"
-               StrCpy $R2 $R9 '' $R2
-                      StrCpy $R2 "$R1$R2"
- 
-     ; If destination does not already exists simply move file
- 
-        IfFileExists "$R2" +3 0
-                     rename "$R9" "$R2"
-                            goto done
- 
-     ; If overwriting without 'ifnewer' check
- 
-        ${If} $switch_overwrite == 1
-                  delete "$R2"
-                             rename "$R9" "$R2"
-                                        delete "$R9"
-                                                   goto done
-                                                        ${EndIf}
- 
-     ; If destination already exists
- 
-        Push $0
-             Push $1
-                  Push $2
-                       push $3
- 
-        GetFileTime "$R9" $0 $1
-                    GetFileTime "$R2" $2 $3
- 
-        IntCmp $0 $2 0 older newer
-               IntCmp $1 $3 older older newer
- 
-        older:
-                delete "$R9"
-                       goto time_check_done
- 
-        newer:
-                delete "$R2"
-                       rename "$R9" "$R2"
-                              delete "$R9" ;incase above failed!
- 
-        time_check_done:
- 
-        Pop $3
-            Pop $2
-                Pop $1
-                    Pop $0
- 
-     done:
- 
-     Pop $R2
- 
-     Push $R1
- 
- FunctionEnd
- 
- Function .MoveFolder_Locate_deleteDir
- 
-     ${If} $R6 == ""
-           RMDir $R9
-                 IntOp $R2 $R2 + 1
-                     ${EndIf}
- 
-     Push $R1
- 
- FunctionEnd
diff --git a/NSIS/README b/NSIS/README
deleted file mode 100644
index 1751488..0000000
--- a/NSIS/README
+++ /dev/null
@@ -1,19 +0,0 @@
-Files to update before creating the installer:
-
- - copy_files.sh      (update library version number)
- - AddHfstLibrary.nsi (update library version number)
- - CheckLibraries.nsi (define which exception library is used)
-
-Exception library can be checked with
- grep [dw2|seh] libhfst-NN.dll
-
-First, copy the relevant files:
- ./copy_files.sh
-
-If you want hfst-ospell installer, you need to copy files
- 
-
-Create the installer(s):
- /c/hyapp/NSIS/makensis.exe [hfst|xfst|lexc|twolc]_installer.nso
- mv install-FOO-XX-bit.exe install-[hfst|xfst|lexc|twolc]-[32|64]-bit.exe
-
diff --git a/NSIS/README.hfst.txt b/NSIS/README.hfst.txt
deleted file mode 100644
index 594f2e8..0000000
--- a/NSIS/README.hfst.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-
-There are about 50 different HFST command line tools installed in this
-directory. To be able to use the tools in any location, execute
-
-  start hfst.bat
-
-which will open up a new command window and temporarily add this directory to
-the PATH environment variable so that you can freely move between directories.
-If you chose to create a shortcut during HFST installation, there should be
-one in the Start Menu (All Programs -> HFST -> hfst) which does the same thing.
-
-
-To get information on the purpose of a tool and how it is used, run
-
-  hfst-some-tool --help
-
-which will print a help message. To test the tools, you can run for example
-
-  echo a:b | hfst-calculate | hfst-invert | hfst-minimize | hfst-fst2strings
-
-that should print
-
-  b:a
-
-
-Note that if a tool outputs directly to Windows console (i.e. not to the next
-tool in a pipe or to a file), you need to use the switch --console or -k to 
-make it sure that all unicode symbols are correctly printed.
-
-
-For more information on HFST tools, see
-<http://kitwiki.csc.fi/twiki/bin/view/KitWiki/HfstCommandLineTools>
-
diff --git a/NSIS/README.lexc.txt b/NSIS/README.lexc.txt
deleted file mode 100644
index 63ad6e0..0000000
--- a/NSIS/README.lexc.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-
-The tool hfst-lexc is installed in this directory. To be able to use the tool
-in any location, execute
-
-  start hfst-lexc-window.bat
-
-which will open up a new command window and temporarily add this directory to
-the PATH environment variable so that you can freely move between directories.
-If you chose to create a shortcut during HFST installation, there should be
-one in the Start Menu (All Programs -> HFST-LEXC -> hfst-lexc) which does the
-same thing.
-
-
-To get information on the purpose of the tool, run
-
-  hfst-lexc --help
-
-which will print a help message. To test the tool, you can run for example
-
-  echo LEXICON Root > tmp.lexc
-  echo lexicon # ; >> tmp.lexc
-  echo léxico # ; >> tmp.lexc
-  echo лексикон # ; >> tmp.lexc
-  echo λεξικό # ; >> tmp.lexc  
-
-and then 
-
-  hfst-lexc tmp.lexc -o tmp.hfst
-  type tmp.lexc | hfst-lexc > tmp.hfst
-
-both of which write an HFST transducer that contains the four words listed
-in file tmp.lexc.
-
-Known bugs:
-
- - the tool doesn't work in interactive mode, you must either give a
-   filename or catenate the file in standard input
-   
-
-For more information on hfst-lexc, see
-<http://kitwiki.csc.fi/twiki/bin/view/KitWiki/HfstLexc> [TODO check]
-
diff --git a/NSIS/README.ospell.txt b/NSIS/README.ospell.txt
deleted file mode 100644
index ca5f45d..0000000
--- a/NSIS/README.ospell.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-
-The tool hfst-ospell is installed in this directory. To be able to use the tool
-in any location, execute
-
-  start hfst-ospell-window.bat
-
-which will open up a new command window and temporarily add this directory to
-the PATH environment variable so that you can freely move between directories.
-If you chose to create a shortcut during HFST installation, there should be
-one in the Start Menu (All Programs -> HFST-OSPELL -> hfst-ospell) which does the
-same thing.
-
-To get information on the purpose of the tool, run
-
-  hfst-ospell --help
-
-which will print a help message. To test the tool, you can open it
-
-For more information on hfst-ospell, see
-<http://kitwiki.csc.fi/twiki/bin/view/KitWiki/HfstOspell>
-
diff --git a/NSIS/README.proc.txt b/NSIS/README.proc.txt
deleted file mode 100644
index 5939203..0000000
--- a/NSIS/README.proc.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-
-The tool hfst-proc is installed in this directory. To be able to use the tool
-in any location, execute
-
-  start hfst-proc-window.bat
-
-which will open up a new command window and temporarily add this directory to
-the PATH environment variable so that you can freely move between directories.
-If you chose to create a shortcut during HFST installation, there should be
-one in the Start Menu (All Programs -> HFST-PROC -> hfst-proc) which does the
-same thing.
-
-
-To get information on the purpose of the tool, run
-
-  hfst-proc --help
-
-which will print a help message. To test the tool, you can open it in
-interactive mode (just writing 'hfst-proc') and write for example
-
-  regex Ä:é;
-  print net
-
-which should output something like
-
-  Ss0:    <Ä:é> -> fs1.
-  fs1:    (no arcs).
-
-If the unicode characters are not shown correctly, try running
-
-  hfst-proc -k
-
-The option -k (or --output-to-console) tells hfst-proc that the output is not
-going to be redirected to a file or given to next command in pipe but printed
-directly to the Windows console.
-
-You can also try non-interactive mode:
-
-  echo regex Ä:é; > tmp
-  echo print net >> tmp
-
-and then
-
-  type tmp | hfst-proc --pipe-mode (-k)
-  hfst-proc -F tmp (-k)  
-
-both of which should print the same thing as above.
-
-
-For more information on hfst-proc, see
-<http://kitwiki.csc.fi/twiki/bin/view/KitWiki/HfstProc>
-
diff --git a/NSIS/README.twolc.txt b/NSIS/README.twolc.txt
deleted file mode 100644
index f505a9e..0000000
--- a/NSIS/README.twolc.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-
-The tool hfst-twolc is installed in this directory. To be able to use the tool
-in any location, execute
-
-  start hfst-twolc-window.bat
-
-which will open up a new command window and temporarily add this directory to
-the PATH environment variable so that you can freely move between directories.
-If you chose to create a shortcut during HFST installation, there should be
-one in the Start Menu (All Programs -> HFST-TWOLC -> hfst-twolc) which does the
-same thing.
-
-
-To get information on the purpose of the tool, run
-
-  hfst-twolc --help
-
-which will print a help message. To test the tool, you can run for example
-
-  [TODO]
-
-that should print
-
-  [TODO]
-
-
-Note that if the tool outputs directly to Windows console (i.e. not to the next
-tool in a pipe or to a file), you need to use the switch --output-to-console or
--k to make it sure that all unicode symbols are correctly printed. [TODO check]
-
-
-For more information on hfst-twolc, see
-<http://kitwiki.csc.fi/twiki/bin/view/KitWiki/HfstTwolC> [TODO check]
-
diff --git a/NSIS/README.xfst.txt b/NSIS/README.xfst.txt
deleted file mode 100644
index 5259189..0000000
--- a/NSIS/README.xfst.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-
-The tool hfst-xfst is installed in this directory. To be able to use the tool
-in any location, execute
-
-  start hfst-xfst-window.bat
-
-which will open up a new command window and temporarily add this directory to
-the PATH environment variable so that you can freely move between directories.
-If you chose to create a shortcut during HFST installation, there should be
-one in the Start Menu (All Programs -> HFST-XFST -> hfst-xfst) which does the
-same thing.
-
-
-To get information on the purpose of the tool, run
-
-  hfst-xfst --help
-
-which will print a help message. To test the tool, you can open it in
-interactive mode (just writing 'hfst-xfst') and write for example
-
-  regex Ä:é;
-  print net
-
-which should output something like
-
-  Ss0:    <Ä:é> -> fs1.
-  fs1:    (no arcs).
-
-If the unicode characters are not shown correctly, try running
-
-  hfst-xfst -k
-
-The option -k (or --output-to-console) tells hfst-xfst that the output is not
-going to be redirected to a file or given to next command in pipe but printed
-directly to the Windows console.
-
-You can also try non-interactive mode:
-
-  echo regex Ä:é; > tmp
-  echo print net >> tmp
-
-and then
-
-  type tmp | hfst-xfst --pipe-mode (-k)
-  hfst-xfst -F tmp (-k)  
-
-both of which should print the same thing as above.
-
-
-For more information on hfst-xfst, see
-<http://kitwiki.csc.fi/twiki/bin/view/KitWiki/HfstXfst>
-
diff --git a/NSIS/ReplaceInFile.nsh b/NSIS/ReplaceInFile.nsh
deleted file mode 100644
index 17f9ec0..0000000
--- a/NSIS/ReplaceInFile.nsh
+++ /dev/null
@@ -1,68 +0,0 @@
-Function RIF
- 
-  ClearErrors  ; want to be a newborn
- 
-  Exch $0      ; REPLACEMENT
-  Exch
-  Exch $1      ; SEARCH_TEXT
-  Exch 2
-  Exch $2      ; SOURCE_FILE
- 
-  Push $R0     ; SOURCE_FILE file handle
-  Push $R1     ; temporary file handle
-  Push $R2     ; unique temporary file name
-  Push $R3     ; a line to sar/save
-  Push $R4     ; shift puffer
- 
-  IfFileExists $2 +1 RIF_error      ; knock-knock
-  FileOpen $R0 $2 "r"               ; open the door
- 
-  GetTempFileName $R2               ; who's new?
-  FileOpen $R1 $R2 "w"              ; the escape, please!
- 
-  RIF_loop:                         ; round'n'round we go
-    FileRead $R0 $R3                ; read one line
-    IfErrors RIF_leaveloop          ; enough is enough
-    RIF_sar:                        ; sar - search and replace
-      Push "$R3"                    ; (hair)stack
-      Push "$1"                     ; needle
-      Push "$0"                     ; blood
-      Call StrRep                   ; do the bartwalk
-      StrCpy $R4 "$R3"              ; remember previous state
-      Pop $R3                       ; gimme s.th. back in return!
-      StrCmp "$R3" "$R4" +1 RIF_sar ; loop, might change again!
-    FileWrite $R1 "$R3"             ; save the newbie
-  Goto RIF_loop                     ; gimme more
- 
-  RIF_leaveloop:                    ; over'n'out, Sir!
-    FileClose $R1                   ; S'rry, Ma'am - clos'n now
-    FileClose $R0                   ; me 2
- 
-    Delete "$2.old"                 ; go away, Sire
-    Rename "$2" "$2.old"            ; step aside, Ma'am
-    Rename "$R2" "$2"               ; hi, baby!
- 
-    ClearErrors                     ; now i AM a newborn
-    Goto RIF_out                    ; out'n'away
- 
-  RIF_error:                        ; ups - s.th. went wrong...
-    SetErrors                       ; ...so cry, boy!
- 
-  RIF_out:                          ; your wardrobe?
-  Pop $R4
-  Pop $R3
-  Pop $R2
-  Pop $R1
-  Pop $R0
-  Pop $2
-  Pop $0
-  Pop $1
- 
-FunctionEnd
-
-!macro _ReplaceInFile SOURCE_FILE SEARCH_TEXT REPLACEMENT
-  Push "${SOURCE_FILE}"
-  Push "${SEARCH_TEXT}"
-  Push "${REPLACEMENT}"
-  Call RIF
-!macroend
diff --git a/NSIS/StrRep.nsh b/NSIS/StrRep.nsh
deleted file mode 100644
index 03d7b9d..0000000
--- a/NSIS/StrRep.nsh
+++ /dev/null
@@ -1,66 +0,0 @@
-!define StrRep "!insertmacro StrRep"
-!macro StrRep output string old new
-    Push `${string}`
-    Push `${old}`
-    Push `${new}`
-    !ifdef __UNINSTALL__
-        Call un.StrRep
-    !else
-        Call StrRep
-    !endif
-    Pop ${output}
-!macroend
- 
-!macro Func_StrRep un
-    Function ${un}StrRep
-        Exch $R2 ;new
-        Exch 1
-        Exch $R1 ;old
-        Exch 2
-        Exch $R0 ;string
-        Push $R3
-        Push $R4
-        Push $R5
-        Push $R6
-        Push $R7
-        Push $R8
-        Push $R9
- 
-        StrCpy $R3 0
-        StrLen $R4 $R1
-        StrLen $R6 $R0
-        StrLen $R9 $R2
-        loop:
-            StrCpy $R5 $R0 $R4 $R3
-            StrCmp $R5 $R1 found
-            StrCmp $R3 $R6 done
-            IntOp $R3 $R3 + 1 ;move offset by 1 to check the next character
-            Goto loop
-        found:
-            StrCpy $R5 $R0 $R3
-            IntOp $R8 $R3 + $R4
-            StrCpy $R7 $R0 "" $R8
-            StrCpy $R0 $R5$R2$R7
-            StrLen $R6 $R0
-            IntOp $R3 $R3 + $R9 ;move offset by length of the replacement string
-            Goto loop
-        done:
- 
-        Pop $R9
-        Pop $R8
-        Pop $R7
-        Pop $R6
-        Pop $R5
-        Pop $R4
-        Pop $R3
-        Push $R0
-        Push $R1
-        Pop $R0
-        Pop $R1
-        Pop $R0
-        Pop $R2
-        Exch $R1
-    FunctionEnd
-!macroend
-!insertmacro Func_StrRep ""
-!insertmacro Func_StrRep "un."
diff --git a/NSIS/copy_files.sh b/NSIS/copy_files.sh
deleted file mode 100644
index 36cc7d5..0000000
--- a/NSIS/copy_files.sh
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/bin/sh
-#
-# Copy HFST dll, command line tools and swig bindings to the current directory
-#
-
-# (1) HFST dll file
-
-HFST_DLL_DIRECTORY=../libhfst/src/.libs
-HFST_DLL=libhfst-36.dll
-cp $HFST_DLL_DIRECTORY/$HFST_DLL .
-strip $HFST_DLL
-
-# (2) dependency dll files
-
-DEPENDENCY_DLL_DIRECTORY=/mingw/bin/
-DEPENDENCY_DLLS="libgcc_s_dw2-1.dll libgcc_s_seh-1.dll libstdc++-6.dll \
-libbz2-2.dll libiconv-2.dll liblzma-5.dll zlib1.dll"
-for dll in $DEPENDENCY_DLLS;
-do
-    if (test -e $DEPENDENCY_DLL_DIRECTORY/$dll); then
-        cp $DEPENDENCY_DLL_DIRECTORY/$dll .;
-    fi
-done
-
-# (3) Python bindings
-
-#SWIG_DIRECTORY=../SWIG/
-#SWIG_FILES="_libhfst.pyd libhfst.py"
-
-#for swigfile in $SWIG_FILES;
-#do
-#    cp $SWIG_DIRECTORY/$swigfile .;
-#done
-
-# (4) tagger tools
-
-#TAGGER_SCRIPT_DIRECTORY=../tools/src/hfst-tagger/src/
-#TAGGER_SCRIPT="hfst-train-tagger.bat"
-#TAGGER_BINARY_DIRECTORY=../tools/src/hfst-tagger/src/.libs/
-#TAGGER_BINARIES="hfst-open-input-file-for-tagger.exe hfst-build-tagger.exe hfst-tag.exe"
-#TAGGER_PYTHON_FILES="../tools/src/hfst-tagger/src/hfst_tagger_compute_data_statistics.py  \
-#../tools/src/hfst-tagger/src/build_model_src/tagger_aux.py"
-
-#cp $TAGGER_SCRIPT_DIRECTORY/$TAGGER_SCRIPT .
-#for binary in $TAGGER_BINARIES;
-#do
-#    cp $TAGGER_BINARY_DIRECTORY/$binary .
-#    strip $binary;
-#done
-#for pyfile in $TAGGER_PYTHON_FILES;
-#do
-#    cp $pyfile .;
-#done
-
-# (5) twolc tools
-
-TWOLC_SCRIPT_DIRECTORY=../tools/src/hfst-twolc/src/
-TWOLC_SCRIPT="hfst-twolc.bat"
-TWOLC_BINARY_DIRECTORY=../tools/src/hfst-twolc/src/.libs/
-TWOLC_BINARIES="htwolcpre1.exe htwolcpre2.exe htwolcpre3.exe"
-
-cp $TWOLC_SCRIPT_DIRECTORY/$TWOLC_SCRIPT .
-for binary in $TWOLC_BINARIES;
-do
-    cp $TWOLC_BINARY_DIRECTORY/$binary .
-    strip $binary;
-done
-
-# (6) XFST tool
-
-XFST_DIRECTORY=../tools/src/parsers/.libs/
-XFST_BINARY=hfst-xfst.exe
-cp $XFST_DIRECTORY/$XFST_BINARY .
-strip $XFST_BINARY
-
-# (7) proc tool
-
-PROC_DIRECTORY=../tools/src/hfst-proc/.libs/
-PROC_BINARY=hfst-apertium-proc.exe
-PROC_NAME=hfst-proc.exe
-cp $PROC_DIRECTORY/$PROC_BINARY $PROC_NAME
-strip $PROC_NAME
-
-# (8) other tools
-
-TOOL_DIRECTORY=../tools/src/.libs/
-TOOLS="hfst-affix-guessify.exe \
-hfst-calculate.exe \
-hfst-compare.exe \
-hfst-compose.exe \
-hfst-compose-intersect.exe \
-hfst-concatenate.exe \
-hfst-conjunct.exe \
-hfst-determinize.exe \
-hfst-disjunct.exe \
-hfst-edit-metadata.exe \
-hfst-format.exe \
-hfst-fst2fst.exe \
-hfst-fst2strings.exe \
-hfst-fst2txt.exe \
-hfst-grep.exe \
-hfst-guess.exe \
-hfst-guessify.exe \
-hfst-head.exe \
-hfst-info.exe \
-hfst-invert.exe \
-hfst-lexc.exe \
-hfst-lookup.exe \
-hfst-pair-test.exe \
-hfst-minimize.exe \
-hfst-multiply.exe \
-hfst-name.exe \
-hfst-optimized-lookup.exe \
-hfst-pmatch.exe \
-hfst-pmatch2fst.exe \
-hfst-project.exe \
-hfst-push-weights.exe \
-hfst-regexp2fst.exe \
-hfst-remove-epsilons.exe \
-hfst-repeat.exe \
-hfst-reverse.exe \
-hfst-reweight.exe \
-hfst-shuffle.exe \
-hfst-split.exe \
-hfst-strings2fst.exe \
-hfst-substitute.exe \
-hfst-subtract.exe \
-hfst-summarize.exe \
-hfst-tail.exe \
-hfst-txt2fst.exe"
-
-for tool in $TOOLS; 
-do
-    cp $TOOL_DIRECTORY/$tool .
-    strip $tool;
-done
diff --git a/NSIS/hfst.bat b/NSIS/hfst.bat
deleted file mode 100644
index c3ca188..0000000
--- a/NSIS/hfst.bat
+++ /dev/null
@@ -1 +0,0 @@
-start cmd.exe /K "setlocal & SET PATH=%PATH%;HFST_INSTALLATION_DIRECTORY\; & chcp 65001 > nul & echo HFST_WELCOME_MESSAGE"
diff --git a/NSIS/hfst_installer.nsi b/NSIS/hfst_installer.nsi
deleted file mode 100644
index 1fe2e47..0000000
--- a/NSIS/hfst_installer.nsi
+++ /dev/null
@@ -1,141 +0,0 @@
-!include LogicLib.nsh
-!include StrRep.nsh
-!include ReplaceInFile.nsh
-!include 'FileFunc.nsh'
-!insertmacro Locate
-
-# Var /GLOBAL switch_overwrite
-# StrCpy $switch_overwrite 0
-!include 'MoveFileFolder.nsh'
-
-outfile "install-FOO-XX-bit.exe"
-
-section
-
-	## Tell the user what is going to be installed 
-	## -------------------------------------------
-	
-	messageBox MB_OK "This program will install HFST command line tools locally to a chosen directory. After installation, you can use the functionalities by opening Command Prompt and moving to that directory. There you will also find a README.txt file that gives more information on the functionalities and some simple examples."
-
-
-	## Define the installation directory
-	## ---------------------------------
-
-	nsDialogs::SelectFolderDialog "Select a directory where HFST functionalities will be installed" "c:\HFST"
-	Pop $0
-	messageBox MB_OK "Installing HFST to directory: $0."
-	setOutPath $0
-
-
-!include CheckLibraries.nsi
-
-
-	## Install the README file
-	## -----------------------
-
-	File README.hfst.txt 
-        !insertmacro MoveFile README.hfst.txt README.txt
-
-
-	## Install tagger tools
-	## --------------------
-
-#	${If} ${FileExists} "C:\Python27\Lib\site-packages"
-#	      setOutPath "C:\Python27\Lib\site-packages\"
-#	${Else}
-#              ${If} ${FileExists} "C:\Python26\Lib\site-packages"
-#	                      setOutPath "C:\Python26\Lib\site-packages\"
-#              ${Else}
-#	                      messageBox MB_OK "Did not find Python, so omitting hfst-train-tagger tool"
-#              ${EndIf}
-#	${EndIf}
-
-#        ${If} $OUTDIR == $0
-#              File hfst-tag.exe
-#        ${Else}
-#              File tagger_aux.py
-#              setOutPath $0
-#              File hfst-tag.exe
-#              # Use installation directory in scripts
-#              !insertmacro _ReplaceInFile hfst-train-tagger.bat HFST_INSTALLATION_DIRECTORY $0
-#	      File hfst-open-input-file-for-tagger.exe
-#	      File hfst_tagger_compute_data_statistics.py
-#	      File hfst-build-tagger.exe
-#	      File hfst-train-tagger.bat              
-#        ${EndIf}
-
-
-	## Install libhfst dll and HFST command line tools
-	## -----------------------------------------------
-
-!include AddHfstLibrary.nsi
-
-        File hfst-affix-guessify.exe
-        File hfst-calculate.exe
-        File hfst-compare.exe
-        File hfst-compose.exe
-        File hfst-compose-intersect.exe
-        File hfst-concatenate.exe
-        File hfst-conjunct.exe
-        File hfst-determinize.exe
-        File hfst-disjunct.exe
-        File hfst-edit-metadata.exe
-        File hfst-format.exe
-        File hfst-fst2fst.exe
-        File hfst-fst2strings.exe
-        File hfst-fst2txt.exe
-        File hfst-grep.exe
-        File hfst-guess.exe
-        File hfst-guessify.exe
-        File hfst-head.exe
-        File hfst-info.exe
-        File hfst-invert.exe
-        File hfst-lexc.exe
-        File hfst-lookup.exe
-        File hfst-pair-test.exe
-        File hfst-minimize.exe
-        File hfst-multiply.exe
-        File hfst-name.exe
-        File hfst-optimized-lookup.exe
-        File hfst-pmatch.exe
-        File hfst-pmatch2fst.exe
-        File hfst-project.exe
-        File hfst-push-weights.exe
-        File hfst-regexp2fst.exe
-        File hfst-remove-epsilons.exe
-        File hfst-repeat.exe
-        File hfst-reverse.exe
-        File hfst-reweight.exe
-        File hfst-shuffle.exe
-        File hfst-split.exe
-        File hfst-strings2fst.exe
-        File hfst-substitute.exe
-        File hfst-subtract.exe
-        File hfst-summarize.exe
-        File hfst-tail.exe
-        File hfst-txt2fst.exe
-        File hfst-xfst.exe
-
-	File htwolcpre1.exe
-	File htwolcpre2.exe
-	File htwolcpre3.exe
-	File hfst-twolc.bat
-
-        # Use installation directory in scripts
-        !insertmacro _ReplaceInFile hfst-twolc.bat HFST_INSTALLATION_DIRECTORY $0
-
-	# Install hfst command line script
-
-	File hfst.bat
-
-        !insertmacro _ReplaceInFile hfst.bat HFST_INSTALLATION_DIRECTORY $0
-        !insertmacro _ReplaceInFile hfst.bat HFST_WELCOME_MESSAGE "Welcome to the HFST interface!"
-
-	messageBox MB_OK "Installation complete. HFST functionalities are in directory $0."
-
-        messageBox MB_YESNO "Do you want to create a shortcut to HFST tools in Start Menu?" IDYES true
-        true:
-		CreateDirectory "$SMPROGRAMS\HFST"
-                CreateShortCut "$SMPROGRAMS\HFST\hfst.lnk" "$0\hfst.bat";
-	
-sectionEnd
diff --git a/NSIS/hfst_python_installer.nsi b/NSIS/hfst_python_installer.nsi
deleted file mode 100644
index 0e2ac0f..0000000
--- a/NSIS/hfst_python_installer.nsi
+++ /dev/null
@@ -1,193 +0,0 @@
-!include LogicLib.nsh
-!include EnvVarUpdate.nsh
-!include StrRep.nsh
-!include ReplaceInFile.nsh
-# !include x64.nsh
-
-
-outfile "HfstPythonInstaller.exe"
-
-section
-
-	## Tell the user what is going to be installed 
-	## -------------------------------------------
-	
-	messageBox MB_OK "This program will install HFST Python bindings."
-
-
-	## Define the installation directory
-	## ---------------------------------
-
-	nsDialogs::SelectFolderDialog "Select a directory where HFST functionalities will be installed" "c:\HFST"
-	Pop $0
-	messageBox MB_OK "Installing HFST to directory: $0."
-	setOutPath $0
-
-!include CheckLibraries.nsi
-
-	## Install the README file
-	## -----------------------
-
-	File README
-
-
-	## Install Python bindings and tagger aux module
-	## ---------------------------------------------
-
-        #  Python version 2
-        #  ----------------
-
-	${If} ${FileExists} "C:\Python27\Lib\site-packages"
-	      messageBox MB_OK "Found Python directory, installing Python bindings there (to C:\Python27\Lib\site-packages)."
-	      setOutPath "C:\Python27\Lib\site-packages\"
-	${Else}
-              ${If} ${FileExists} "C:\Python26\Lib\site-packages"
-                    	      messageBox MB_OK "Found Python directory, installing Python bindings there (to C:\Python26\Lib\site-packages)."
-	                      setOutPath "C:\Python26\Lib\site-packages\"
-              ${Else}
-	                      messageBox MB_OK "Did not find Python, so installing Python bindings only locally (to $0)."
-              ${EndIf}
-	${EndIf}
-
-        ${If} $OUTDIR == $0
-              File python2-_libhfst.pyd
-              File python2-libhfst.py
-        ${Else}
-        # Remove prefix 'python2-' if installation is not local 
-              File /oname="_libhfst.pyd" python2-_libhfst.pyd 
-	      File /oname="libhfst.py" python2-libhfst.py
-        ${EndIf}
-
-        File tagger_aux.py
-
-        # rest of tagger utilities are installed to $0
-
-	setOutPath $0
-
-        #  Python version 3
-        #  ----------------
-
-	${If} ${FileExists} "C:\Python33\Lib\site-packages"
-	      messageBox MB_OK "Found Python directory, installing Python bindings there (to C:\Python33\Lib\site-packages)."
-	      setOutPath "C:\Python33\Lib\site-packages\"
-	${Else}
-              ${If} ${FileExists} "C:\Python32\Lib\site-packages"
-                    	      messageBox MB_OK "Found Python directory, installing Python bindings there (to C:\Python32\Lib\site-packages)."
-	                      setOutPath "C:\Python32\Lib\site-packages\"
-              ${Else}
-	                      messageBox MB_OK "Did not find Python, so installing Python bindings only locally (to $0)."
-              ${EndIf}
-	${EndIf}
-
-        ${If} $OUTDIR == $0
-              File python3-_libhfst.pyd
-              File python3-libhfst.py
-        ${Else}
-        # Remove prefix 'python3-' if installation is not local 
-              File /oname="_libhfst.pyd" python3-_libhfst.pyd 
-	      File /oname="libhfst.py" python3-libhfst.py
-        ${EndIf}
-
-        setOutPath $0
-
-
-	## Install libhfst dll and HFST command line tools
-	## -----------------------------------------------
-
-	File libhfst-36.dll
-
-        File hfst-affix-guessify.exe
-        File hfst-calculate.exe
-        File hfst-compare.exe
-        File hfst-compose.exe
-        File hfst-compose-intersect.exe
-        File hfst-concatenate.exe
-        File hfst-conjunct.exe
-        File hfst-determinize.exe
-        File hfst-disjunct.exe
-        File hfst-edit-metadata.exe
-        File hfst-format.exe
-        File hfst-fst2fst.exe
-        File hfst-fst2strings.exe
-        File hfst-fst2txt.exe
-        File hfst-grep.exe
-        File hfst-guess.exe
-        File hfst-guessify.exe
-        File hfst-head.exe
-        File hfst-info.exe
-        File hfst-invert.exe
-        File hfst-lexc.exe
-        File hfst-lookup.exe
-        File hfst-pair-test.exe
-        File hfst-minimize.exe
-        File hfst-multiply.exe
-        File hfst-name.exe
-        File hfst-optimized-lookup.exe
-        File hfst-pmatch.exe
-        File hfst-pmatch2fst.exe
-        File hfst-project.exe
-        File hfst-push-weights.exe
-        File hfst-regexp2fst.exe
-        File hfst-remove-epsilons.exe
-        File hfst-repeat.exe
-        File hfst-reverse.exe
-        File hfst-reweight.exe
-        File hfst-shuffle.exe
-        File hfst-split.exe
-        File hfst-strings2fst.exe
-        File hfst-substitute.exe
-        File hfst-subtract.exe
-        File hfst-summarize.exe
-        File hfst-tail.exe
-        File hfst-txt2fst.exe
-        File hfst-xfst.exe
-
-        # Use installation directory in scripts
-        !insertmacro _ReplaceInFile hfst-train-tagger.bat HFST_INSTALLATION_DIRECTORY $0
-
-	File hfst-open-input-file-for-tagger.exe
-	File hfst_tagger_compute_data_statistics.py
-	# tagger_aux.py is in the same location as python (version 2) bindings
-	File hfst-build-tagger.exe
-	File hfst-train-tagger.bat
-	File hfst-tag.exe
-
-        # Use installation directory in scripts
-        !insertmacro _ReplaceInFile hfst-twolc.bat HFST_INSTALLATION_DIRECTORY $0
-
-	File htwolcpre1.exe
-	File htwolcpre2.exe
-	File htwolcpre3.exe
-	File hfst-twolc.bat
-
-        # Use installation directory in scripts
-        !insertmacro _ReplaceInFile hfst.bat HFST_INSTALLATION_DIRECTORY $0
-
-        File hfst.bat
-
-	messageBox MB_OK "Installation complete. HFST functionalities are in directory $0."
-
-        messageBox MB_YESNO "Do you want to create a shortcut to HFST tools?" IDYES true
-        # Use installation directory in scripts
-        !insertmacro _ReplaceInFile hfst.bat HFST_INSTALLATION_DIRECTORY $0
-
-        File hfst.bat
-
-        messageBox MB_OK "Installation complete. HFST functionalities are in directory $0."
-
-        messageBox MB_YESNO "Do you want to create a shortcut to HFST tools?" IDYES true
-        true:
-                CreateShortCut "$SMPROGRAMS\HFST\hfst.lnk" $0"\hfst.bat";
-        true:
-                CreateShortCut "$SMPROGRAMS\HFST\hfst.lnk" $0"\hfst.bat";
-        
-
-
-	## Add HFST directory to the PATH environment variable
-	## ---------------------------------------------------
-
-	# ${EnvVarUpdate} $1 "PATH" "A" "HKCU" "$0"
-	#  messageBox MB_OK "Test: path is: $1."
-	
-
-sectionEnd
diff --git a/NSIS/lexc_installer.nsi b/NSIS/lexc_installer.nsi
deleted file mode 100644
index 5891817..0000000
--- a/NSIS/lexc_installer.nsi
+++ /dev/null
@@ -1,63 +0,0 @@
-!include LogicLib.nsh
-!include StrRep.nsh
-!include ReplaceInFile.nsh
-!include 'FileFunc.nsh'
-!insertmacro Locate
-
-# Var /GLOBAL switch_overwrite
-# StrCpy $switch_overwrite 0
-!include 'MoveFileFolder.nsh'
-
-
-outfile "install-FOO-XX-bit.exe"
-
-section
-
-	## Tell the user what is going to be installed 
-	## -------------------------------------------
-	
-	messageBox MB_OK "This program will install hfst-lexc locally to a chosen directory. After installation, you can use the functionalities by opening Command Prompt and moving to that directory. There you will also find a README.txt file that gives more information on the functionalities and some simple examples."
-
-
-	## Define the installation directory
-	## ---------------------------------
-
-	nsDialogs::SelectFolderDialog "Select a directory where hfst-lexc will be installed" "C:\HFST-LEXC"
-	Pop $0
-	messageBox MB_OK "Installing hfst-lexc to directory: $0."
-	setOutPath $0
-
-
-!include CheckLibraries.nsi
-
-
-	## Install the README file
-	## -----------------------
-
-	File README.lexc.txt
-        !insertmacro MoveFile README.lexc.txt README.txt
-
-	## Install libhfst dll and hfst-lexc
-	## ---------------------------------
-
-!include AddHfstLibrary.nsi
-
-        File hfst-lexc.exe
-
-	# Install hfst command line script
-
-	File hfst.bat
-
-        !insertmacro _ReplaceInFile hfst.bat HFST_INSTALLATION_DIRECTORY $0
-        !insertmacro _ReplaceInFile hfst.bat HFST_WELCOME_MESSAGE "Welcome to the hfst-lexc directory!"
-
-        !insertmacro MoveFile hfst.bat hfst-lexc-window.bat
-
-	messageBox MB_OK "Installation complete. The tool hfst-lexc is in directory $0."
-
-        messageBox MB_YESNO "Do you want to create a shortcut to hfst-lexc in Start Menu?" IDYES true
-        true:
-		CreateDirectory "$SMPROGRAMS\HFST-LEXC"
-                CreateShortCut "$SMPROGRAMS\HFST-LEXC\hfst-lexc.lnk" "$0\hfst-lexc-window.bat";
-	
-sectionEnd
diff --git a/NSIS/ospell_installer.nsi b/NSIS/ospell_installer.nsi
deleted file mode 100644
index 467ecf2..0000000
--- a/NSIS/ospell_installer.nsi
+++ /dev/null
@@ -1,83 +0,0 @@
-!include LogicLib.nsh
-!include StrRep.nsh
-!include ReplaceInFile.nsh
-!include 'FileFunc.nsh'
-!insertmacro Locate
-
-# Var /GLOBAL switch_overwrite
-# StrCpy $switch_overwrite 0
-!include 'MoveFileFolder.nsh'
-
-outfile "install-FOO-XX-bit.exe"
-
-section
-
-	## Tell the user what is going to be installed 
-	## -------------------------------------------
-	
-	messageBox MB_OK "This program will install hfst-ospell locally to a chosen directory. After installation, you can use the functionalities by opening Command Prompt and moving to that directory. There you will also find a README.txt file that gives more information on the functionalities and some simple examples."
-
-
-	## Define the installation directory
-	## ---------------------------------
-
-	nsDialogs::SelectFolderDialog "Select a directory where hfst-ospell will be installed" "C:\HFST-OSPELL"
-	Pop $0
-	messageBox MB_OK "Installing hfst-ospell to directory: $0."
-	setOutPath $0
-
-
-!include CheckLibraries.nsi
-
-        ## Check for dlls
-        ## --------------
-
-        SearchPath $R0 "libbz2-2.dll"
-        ${If} $R0 == ""
-              File libbz2-2.dll
-        ${EndIf}
-
-        SearchPath $R0 "libiconv-2.dll"
-        ${If} $R0 == ""
-              File libiconv-2.dll
-        ${EndIf}
-
-        SearchPath $R0 "liblzma-5.dll"
-        ${If} $R0 == ""
-              File liblzma-5.dll
-        ${EndIf}
-
-        SearchPath $R0 "zlib1.dll"
-        ${If} $R0 == ""
-              File zlib1.dll
-        ${EndIf}
-
-
-	## Install the README file
-	## -----------------------
-
-	File README.ospell.txt
-        !insertmacro MoveFile README.ospell.txt README.txt
-
-	## Install hfst-ospell
-	## -------------------
-
-        File hfst-ospell.exe
-
-	# Install hfst command line script
-
-	File hfst.bat
-
-        !insertmacro _ReplaceInFile hfst.bat HFST_INSTALLATION_DIRECTORY $0
-        !insertmacro _ReplaceInFile hfst.bat HFST_WELCOME_MESSAGE "Welcome to the hfst-ospell directory!"
-
-        !insertmacro MoveFile hfst.bat hfst-ospell-window.bat
-
-	messageBox MB_OK "Installation complete. The tool hfst-ospell is in directory $0."
-
-        messageBox MB_YESNO "Do you want to create a shortcut to hfst-ospell in Start Menu?" IDYES true
-        true:
-		CreateDirectory "$SMPROGRAMS\HFST-OSPELL"
-                CreateShortCut "$SMPROGRAMS\HFST-OSPELL\hfst-ospell.lnk" "$0\hfst-ospell-window.bat";
-	
-sectionEnd
diff --git a/NSIS/proc_installer.nsi b/NSIS/proc_installer.nsi
deleted file mode 100644
index b87e4ea..0000000
--- a/NSIS/proc_installer.nsi
+++ /dev/null
@@ -1,62 +0,0 @@
-!include LogicLib.nsh
-!include StrRep.nsh
-!include ReplaceInFile.nsh
-!include 'FileFunc.nsh'
-!insertmacro Locate
-
-# Var /GLOBAL switch_overwrite
-# StrCpy $switch_overwrite 0
-!include 'MoveFileFolder.nsh'
-
-outfile "install-FOO-XX-bit.exe"
-
-section
-
-	## Tell the user what is going to be installed 
-	## -------------------------------------------
-	
-	messageBox MB_OK "This program will install hfst-proc locally to a chosen directory. After installation, you can use the functionalities by opening Command Prompt and moving to that directory. There you will also find a README.txt file that gives more information on the functionalities and some simple examples."
-
-
-	## Define the installation directory
-	## ---------------------------------
-
-	nsDialogs::SelectFolderDialog "Select a directory where hfst-proc will be installed" "C:\HFST-PROC"
-	Pop $0
-	messageBox MB_OK "Installing hfst-proc to directory: $0."
-	setOutPath $0
-
-
-!include CheckLibraries.nsi
-
-
-	## Install the README file
-	## -----------------------
-
-	File README.proc.txt
-        !insertmacro MoveFile README.proc.txt README.txt
-
-	## Install libhfst dll and hfst-proc
-	## ---------------------------------
-
-!include AddHfstLibrary.nsi
-
-        File hfst-proc.exe
-
-	# Install hfst command line script
-
-	File hfst.bat
-
-        !insertmacro _ReplaceInFile hfst.bat HFST_INSTALLATION_DIRECTORY $0
-        !insertmacro _ReplaceInFile hfst.bat HFST_WELCOME_MESSAGE "Welcome to the hfst-proc directory!"
-
-        !insertmacro MoveFile hfst.bat hfst-proc-window.bat
-
-	messageBox MB_OK "Installation complete. The tool hfst-proc is in directory $0."
-
-        messageBox MB_YESNO "Do you want to create a shortcut to hfst-proc in Start Menu?" IDYES true
-        true:
-		CreateDirectory "$SMPROGRAMS\HFST-PROC"
-                CreateShortCut "$SMPROGRAMS\HFST-PROC\hfst-proc.lnk" "$0\hfst-proc-window.bat";
-	
-sectionEnd
diff --git a/NSIS/twolc_installer.nsi b/NSIS/twolc_installer.nsi
deleted file mode 100644
index c5bac1d..0000000
--- a/NSIS/twolc_installer.nsi
+++ /dev/null
@@ -1,72 +0,0 @@
-!include LogicLib.nsh
-!include StrRep.nsh
-!include ReplaceInFile.nsh
-!include 'FileFunc.nsh'
-!insertmacro Locate
-
-# Var /GLOBAL switch_overwrite
-# StrCpy $switch_overwrite 0
-!include 'MoveFileFolder.nsh'
-
-
-outfile "install-FOO-XX-bit.exe"
-
-section
-
-	## Tell the user what is going to be installed 
-	## -------------------------------------------
-	
-	messageBox MB_OK "This program will install hfst-twolc locally to a chosen directory. After installation, you can use the functionalities by opening Command Prompt and moving to that directory. There you will also find a README.txt file that gives more information on the functionalities and some simple examples."
-
-
-	## Define the installation directory
-	## ---------------------------------
-
-	nsDialogs::SelectFolderDialog "Select a directory where hfst-twolc will be installed" "C:\HFST-TWOLC"
-	Pop $0
-	messageBox MB_OK "Installing hfst-twolc to directory: $0."
-	setOutPath $0
-
-
-!include CheckLibraries.nsi
-
-
-	## Install the README file
-	## -----------------------
-
-	File README.twolc.txt
-        !insertmacro MoveFile README.twolc.txt README.txt
-
-	## Install libhfst dll and hfst-twolc
-	## ---------------------------------
-
-!include AddHfstLibrary.nsi
-
-        # File hfst-twolc.exe
-
-        File htwolcpre1.exe
-        File htwolcpre2.exe
-        File htwolcpre3.exe
-        File hfst-twolc.bat
-
-        # Use installation directory in scripts
-        !insertmacro _ReplaceInFile hfst-twolc.bat HFST_INSTALLATION_DIRECTORY $0
-
-
-	# Install hfst command line script
-
-	File hfst.bat
-
-        !insertmacro _ReplaceInFile hfst.bat HFST_INSTALLATION_DIRECTORY $0
-        !insertmacro _ReplaceInFile hfst.bat HFST_WELCOME_MESSAGE "Welcome to the hfst-twolc directory!"
-
-        !insertmacro MoveFile hfst.bat hfst-twolc-window.bat
-
-	messageBox MB_OK "Installation complete. The tool hfst-twolc is in directory $0."
-
-        messageBox MB_YESNO "Do you want to create a shortcut to hfst-twolc in Start Menu?" IDYES true
-        true:
-		CreateDirectory "$SMPROGRAMS\HFST-TWOLC"
-                CreateShortCut "$SMPROGRAMS\HFST-TWOLC\hfst-twolc.lnk" "$0\hfst-twolc-window.bat";
-	
-sectionEnd
diff --git a/NSIS/xfst_installer.nsi b/NSIS/xfst_installer.nsi
deleted file mode 100644
index f4d54a4..0000000
--- a/NSIS/xfst_installer.nsi
+++ /dev/null
@@ -1,62 +0,0 @@
-!include LogicLib.nsh
-!include StrRep.nsh
-!include ReplaceInFile.nsh
-!include 'FileFunc.nsh'
-!insertmacro Locate
-
-# Var /GLOBAL switch_overwrite
-# StrCpy $switch_overwrite 0
-!include 'MoveFileFolder.nsh'
-
-outfile "install-FOO-XX-bit.exe"
-
-section
-
-	## Tell the user what is going to be installed 
-	## -------------------------------------------
-	
-	messageBox MB_OK "This program will install hfst-xfst locally to a chosen directory. After installation, you can use the functionalities by opening Command Prompt and moving to that directory. There you will also find a README.txt file that gives more information on the functionalities and some simple examples."
-
-
-	## Define the installation directory
-	## ---------------------------------
-
-	nsDialogs::SelectFolderDialog "Select a directory where hfst-xfst will be installed" "C:\HFST-XFST"
-	Pop $0
-	messageBox MB_OK "Installing hfst-xfst to directory: $0."
-	setOutPath $0
-
-
-!include CheckLibraries.nsi
-
-
-	## Install the README file
-	## -----------------------
-
-	File README.xfst.txt
-        !insertmacro MoveFile README.xfst.txt README.txt
-
-	## Install libhfst dll and hfst-xfst
-	## ---------------------------------
-
-!include AddHfstLibrary.nsi
-
-        File hfst-xfst.exe
-
-	# Install hfst command line script
-
-	File hfst.bat
-
-        !insertmacro _ReplaceInFile hfst.bat HFST_INSTALLATION_DIRECTORY $0
-        !insertmacro _ReplaceInFile hfst.bat HFST_WELCOME_MESSAGE "Welcome to the hfst-xfst directory!"
-
-        !insertmacro MoveFile hfst.bat hfst-xfst-window.bat
-
-	messageBox MB_OK "Installation complete. The tool hfst-xfst is in directory $0."
-
-        messageBox MB_YESNO "Do you want to create a shortcut to hfst-xfst in Start Menu?" IDYES true
-        true:
-		CreateDirectory "$SMPROGRAMS\HFST-XFST"
-                CreateShortCut "$SMPROGRAMS\HFST-XFST\hfst-xfst.lnk" "$0\hfst-xfst-window.bat";
-	
-sectionEnd
diff --git a/README b/README
index a5395c1..0e4d847 100644
--- a/README
+++ b/README
@@ -23,24 +23,26 @@ versions, development and non-supported operating systems and versions you
 will have to perform `installation from the sources`_.
 
 Installation packages for Debian and Ubuntu 
---------------------------------------------
+-------------------------------------------
 
-HFST and related software can be downloaded from `HFST download directory 
-<https://sourceforge.net/projects/hfst/files/hfst/>`_. This folder contains
-sources and debian packages for HFST API library and tool packages.
+Debian packages for HFST are distributed via `Apertium project 
+<http://apertium.projectjj.com/apt/nightly/pool/main/h/hfst/>`_. This folder 
+contains debian packages for HFST API library and tool packages.
 The debian packages are experimental; the requirements of debian or ubuntu
 installations are same as main packages. SFST is excluded from the packages
 as it has portability issues with hash_maps and hash_sets. The python packages
 contain binaries for swig-generated Python bindings for HFST. 
 
-Installation packages for Windows
----------------------------------
+Binaries for Windows
+--------------------
 
-`HFST download directory <https://sourceforge.net/projects/hfst/files/hfst/>`_
-contains an experimental installer for Windows, HfstInstaller.exe. It has 
-ready-compiled HFST library, tools and Python bindings. Performing 
+Binaries for Windows are distributed via `Apertium project 
+<http://apertium.projectjj.com/win32/nightly/>`_. This folder contains
+ready-compiled HFST library and command line tools. Performing 
 `installation from the sources`_ is also possible on Windows with MinGW 
-and Cygwin.
+and Cygwin. Python bindings for Windows are currently available only for 64-bit
+Python versions 3.3 and 3.4 on our `download page
+<https://hfst.github.io/downloads/index.html>`_.
 
 Installation for MacPorts
 -------------------------
@@ -107,7 +109,7 @@ Compilation requirements
     GCC version and pthread and m libraries
 
   - to disable OpenFST support, configure switch ``--without-openfst`` may
-    be used
+    be used (however, this seriously limits the use of HFST)
 
 - To use the SFST_ backend (default):
 
@@ -131,7 +133,7 @@ Compilation requirements
 
   - to disable foma backend, configure switch ``--without-foma`` may be used
 
-  - the *hfst-xfst* frontend currently does not require foma binary or foma library
+  - the *hfst-xfst* frontend does not require foma binary or foma library
 
 - For proper Unicode support in corpus tools:
 
@@ -143,7 +145,14 @@ Compilation requirements
     operations such as *case-folding* properly (default)
 
   - To compile corpus processing tool ``hfst-proc``, you need to use the
-    ``configure`` switch ``--enable-proc`` ??
+    ``configure`` switch ``--enable-proc`` (or ``--enable-all-tools``)
+
+- To use the Python interface:
+
+  - Compiling the bindings requires swig (tested with versions 2.0.4 and 3.0.0)
+
+  - *NOTE:* the Python API is not under autotools, you must compile it yourself;
+    for more information, see file ``python/README``
 
 Note that if you did install dependent libraries, such as libxml or glib
 to your home directory instead of using your system's package manager 
@@ -215,7 +224,6 @@ Installation from the sources
 INSTALL describes the GNU build system in detail, but for most users the usual::
 
     ./configure
-    ./scripts/generate-cc-files.sh
     make
     (as root) make install
 
@@ -223,9 +231,7 @@ should result in a local installation and::
 
     (as root) make uninstall
 
-in its uninstallation. The script *generate-cc-files.sh* compiles all 
-flex/bison-generated files and makes sure that the generated header 
-files have the right extension, i.e. hh and not h.
+in its uninstallation.
 
 If you aren't going to be linking to the library after
 building it and don't need to be able to send debugging information, you can
@@ -264,9 +270,8 @@ Troubleshooting
 ===============
 
 In this section we list the errors that pop up commonly on `our support channel
-<irc://FreeNode/#hfst>`_, in `our bug tracker
-<https://sourceforge.net/tracker/?group_id=224521&atid=1061990>`_ or `on our
-development mailing list <hfst-development at lists.sf.net>`_.
+<irc://FreeNode/#hfst>`_ or in `our issue tracker
+<https://github.com/hfst/hfst/issues>`_,
 
 \::malloc has not been declared
 -------------------------------
@@ -443,8 +448,8 @@ Reporting bugs
 
 Bugs can be reported via email to `HFST team bug mail address
 <hfst-bugs at helsinki.fi>`_, or preferably to `HFST's bug tracking system
-at sourceforge
-<https://sourceforge.net/tracker/?atid=1061990&group_id=224521&func=browse>`_
+at Github
+<https://github.com/hfst/hfst/issues>`_
 When reporting, please include at least following:
 
 * version of software used, if command-line tool (hfst-toolname --version)
diff --git a/back-ends/openfst/Makefile.am b/back-ends/openfst/Makefile.am
index eaa0fb6..1871217 100644
--- a/back-ends/openfst/Makefile.am
+++ b/back-ends/openfst/Makefile.am
@@ -1,19 +1,13 @@
 ## Process this file with automake to produce Makefile.in
 
-## Copyright (C) 2012 University of Helsinki
-
-## 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.
-
-## You should have received a copy of the GNU General Public License
-## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# Copyright (c) 2016 University of Helsinki
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 3 of the License, or (at your option) any later version.
+# See the file COPYING included with this distribution for more
+# information.
 
 AUTOMAKE_OPTIONS=subdir-objects
 SUBDIRS=src
diff --git a/back-ends/openfst/src/lib/Makefile.am b/back-ends/openfst/src/lib/Makefile.am
index c22cd98..6ab2c4f 100644
--- a/back-ends/openfst/src/lib/Makefile.am
+++ b/back-ends/openfst/src/lib/Makefile.am
@@ -1,19 +1,13 @@
 ## Process this file with automake to produce Makefile.in
 
-## Copyright (C) 2012 University of Helsinki
-
-## 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.
-
-## You should have received a copy of the GNU General Public License
-## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# Copyright (c) 2016 University of Helsinki
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 3 of the License, or (at your option) any later version.
+# See the file COPYING included with this distribution for more
+# information.
 
 AUTOMAKE_OPTIONS=subdir-objects
 AM_CPPFLAGS = -I $(srcdir)/../include $(ICU_CPPFLAGS)
diff --git a/check_installation/check-morphologies.sh b/check_installation/check-morphologies.sh
deleted file mode 100755
index ac74731..0000000
--- a/check_installation/check-morphologies.sh
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/sh
-
-#
-# Check all installed HFST morphologies. 
-#
-
-prefix=
-if [ "$1" = "--prefix" ]; then
-    prefix=$2
-fi
-
-
-extension=.sh
-languages="english finnish french german italian omorfi swedish turkish"
-directions="analyze generate"
-format=xerox
-morph_folder=morphology_tests
-
-function exit_prog {
-    rm -f input tmp
-    exit 1
-}
-
-echo "---------------------------- "
-echo "Testing HFST morphologies... "
-echo "---------------------------- "
-
-for lang in $languages;
-do
-    for dir in $directions;
-    do
-	prog=$lang-$dir$extension
-
-	# test that the program exists
-        if [ "$prefix" = "" ]; then
-	    if (! which $prog 2>1 > /dev/null); then
-                printf "%-32s%s\n" $prog "FAIL: program not found"
-                exit_prog
-	    fi    
-        else
-            if ! [ -x $prefix$prog ]; then
-                printf "%-32s%s\n" $prog "FAIL: program not found or executable"
-                exit_prog
-            fi
-        fi  
-
-	# test that the program handles a non-word 
-        rm -f input 
-        echo "foo" > input 
-        if (! $prefix$prog $format input 2>1 > /dev/null); then
-	    printf "%-32s%s\n" $prog "FAIL: program cannot handle input 'foo' (given as first argument)"
-            exit_prog 
-        fi
-
-	if (! cat input | $prefix$prog $format 2>1 > /dev/null); then
-	    printf "%-32s%s\n" $prog "FAIL: program cannot handle input 'foo' (given via standard input)"
-            exit_prog
-	fi
-
-	# test that the program handles a real word
-	if (! $prefix$prog $format $morph_folder/$lang-$dir.input > tmp); then
-	    printf "%-32s%s\n" $prog "FAIL: program cannot handle valid input (given as first argument)"
-            exit_prog
-	fi
-	if (! diff tmp $morph_folder/$lang-$dir.output); then
-	    printf "%-32s%s\n" $prog "FAIL: wrong result for input (given as first argument)"
-            exit_prog
-	fi
-
-	if (! cat $morph_folder/$lang-$dir.input | $prefix$prog $format > tmp); then
-	    printf "%-32s%s\n" $prog "FAIL: program cannot handle valid input (given via standard input)"
-            exit_prog
-	fi
-	if (! diff tmp $morph_folder/$lang-$dir.output); then
-	    printf "%-32s%s\n" $prog "FAIL: wrong result for input (given via standard input)"
-            exit_prog
-	fi
-
-	printf "%-32s%s\n" $prog "PASS"
-    done
-done
-
-rm -f input tmp
-
-echo "-----------------"
-echo "All tests passed."
-echo "-----------------"
diff --git a/check_installation/check-ospell.sh b/check_installation/check-ospell.sh
deleted file mode 100755
index 03f70e0..0000000
--- a/check_installation/check-ospell.sh
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/bin/sh
-
-#
-# Perform tests in ./ospell_tests.
-#
-
-PREFIX=
-
-if [ "$1" = "-h" -o "$1" = "--help" ]; then
-    echo ""
-    echo "  Usage:  "$0" [--prefix PREFIX]"
-    echo ""
-    exit 0;
-elif [ "$1" = "--prefix" ]; then
-    PREFIX=$2"/";
-fi
-
-TESTDIR=ospell_tests
-
-if [ ! -d "$TESTDIR" ]; then
-    echo "ERROR: directory" $TESTDIR "does not exist"
-    exit 1;
-fi
-
-echo "---------------------- "
-echo "Testing hfst-ospell... "
-echo "---------------------- "
-
-echo ""
-echo "Moving to directory" `pwd`"/"$TESTDIR"..."
-echo ""
-cd $TESTDIR
-
-if ! ($PREFIX/hfst-ospell --help > /dev/null 2> /dev/null); then
-    echo "FAIL: hfst-ospell tests did not pass: hfst-ospell was not found"
-    echo ""
-    echo "Exiting directory" `pwd`"..."
-    echo ""
-
-    cd ..
-    exit 1
-fi
-
-if ! (ls test.zhfst > /dev/null 2> /dev/null); then
-    echo "SKIP: file test.zhfst not found"
-    echo ""
-    echo "Exiting directory" `pwd`"..."
-    echo ""
-
-    cd ..
-    exit 1
-fi
-
-if ! (cat ospell_input.txt | $PREFIX/hfst-ospell test.zhfst --suggest --time-cutoff=1.0 > /dev/null 2> /dev/null); then
-    echo "FAIL: hfst-ospell tests did not pass:"
-    echo ""
-    echo "Exiting directory" `pwd`"..."
-    echo ""
-
-    cd ..
-    exit 1
-fi
-
-if ! (cat ospell_input.txt | $PREFIX/hfst-ospell test.zhfst --suggest > /dev/null 2> /dev/null); then
-    echo "FAIL: hfst-ospell tests did not pass:"
-    echo ""
-    echo "Exiting directory" `pwd`"..."
-    echo ""
-
-    cd ..
-    exit 1
-fi
-
-if ! (cat ospell_input.txt | $PREFIX/hfst-ospell test.zhfst > /dev/null 2> /dev/null); then
-    echo "FAIL: hfst-ospell tests did not pass:"
-    echo ""
-    echo "Exiting directory" `pwd`"..."
-    echo ""
-
-    cd ..
-    exit 1
-fi
-
-
-echo "PASS: hfst-ospell tests passed"
-echo ""
-echo "Exiting directory" `pwd`"..."
-echo ""
-
-cd ..
-
-
-
diff --git a/check_installation/check-python.sh b/check_installation/check-python.sh
deleted file mode 100755
index 56a3b29..0000000
--- a/check_installation/check-python.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh
-
-#
-# Perform tests in ./python_tests. Before executing this script,
-# run copy-python-tests.sh to create ./python_tests.
-#
-
-TESTDIR=python_tests
-
-if [ ! -d "$TESTDIR" ]; then
-    echo "ERROR: directory" $TESTDIR "does not exist, try running ./copy-python-tests.sh first."
-    exit 1;
-fi
-
-echo "----------------------------------- "
-echo "Testing Python bindings for HFST... "
-echo "----------------------------------- "
-
-echo ""
-echo "Moving to directory" `pwd`"/"$TESTDIR"..."
-echo ""
-cd $TESTDIR
-
-# ./test.sh --python python3
-if ! (python3 test_hfst.py > /dev/null 2> /dev/null && python3 examples.py > /dev/null 2> /dev/null); then
-    echo "FAIL: Python tests did not pass"
-    echo ""
-    echo "Exiting directory" `pwd`"..."
-    echo ""
-
-    cd ..
-    exit 1
-fi
-
-echo "PASS: Python tests passed"
-echo ""
-echo "Exiting directory" `pwd`"..."
-echo ""
-
-cd ..
-
-
-
diff --git a/check_installation/check-tools.sh b/check_installation/check-tools.sh
deleted file mode 100755
index 135c687..0000000
--- a/check_installation/check-tools.sh
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/bin/sh
-
-#
-# Perform tests in ./tool_tests. Before executing this script,
-# run copy-tool-tests.sh to create ./tool_tests.
-#
-
-PREFIX=
-
-if [ "$1" = "-h" -o "$1" = "--help" ]; then
-    echo ""
-    echo "  Usage:  "$0" [--prefix PREFIX]"
-    echo ""
-    exit 0;
-elif [ "$1" = "--prefix" ]; then
-    PREFIX=$2"/";
-fi
-
-TESTDIR=tool_tests
-
-if [ ! -d "$TESTDIR" ]; then
-    echo "ERROR: directory" $TESTDIR "does not exist, try running ./copy-tool-tests.sh first."
-    exit 1;
-fi
-
-echo "---------------------------------- "
-echo "Testing HFST command line tools... "
-echo "---------------------------------- "
-
-echo ""
-echo "Moving to directory" `pwd`"/"$TESTDIR"..."
-echo ""
-cd $TESTDIR
-
-# Make the transducers needed by the tests.
-# Overgenerating some files here..
-for txt_file in *.txt;
-do
-    if ! (echo $txt_file | grep 'pmatch_' > /dev/null 2> /dev/null); then
-        echo "generating binary transducers from file "$txt_file"..."
-        file=`echo $txt_file | sed 's/\.txt//'`
-        $PREFIX/hfst-txt2fst -e '@0@' $file.txt > $file.hfst
-        if ($PREFIX/hfst-format --list-formats | grep 'sfst' > /dev/null); then
-	    $PREFIX/hfst-txt2fst -f sfst -e '@0@' $file.txt > $file.sfst
-        else
-	    echo "warning: sfst back-end not available, assumed skipped off and continuing"
-        fi
-        $PREFIX/hfst-txt2fst -f openfst-tropical -e '@0@' $file.txt > $file.ofst
-        if ($PREFIX/hfst-format --list-formats | grep 'foma' > /dev/null); then
-	    $PREFIX/hfst-txt2fst -f foma -e '@0@' $file.txt > $file.foma
-        else
-	    echo "warning: foma back-end not available, assumed skipped off and continuing"
-        fi
-        $PREFIX/hfst-txt2fst -e '@0@' -i $file.txt | $PREFIX/hfst-fst2fst -w -o $file.hfstol
-        $PREFIX/hfst-txt2fst -e '@0@' -i $file.txt | $PREFIX/hfst-invert | $PREFIX/hfst-fst2fst -w -o $file.genhfstol
-    else
-        echo "generating pmatch transducer from file "$txt_file"..."
-        if ! [ -x $PREFIX/hfst-pmatch2fst ]; then
-            echo "tool hfst-pmatch2fst not found, assumed skipped off and continuing"
-        else
-            file=`echo $txt_file | sed 's/\.txt//'`
-            $PREFIX/hfst-pmatch2fst $file.txt > $file.pmatch
-        fi
-    fi
-done
-
-
-# Perform the tests
-echo ""
-echo "performing tests..."
-echo ""
-for tooltest in *.sh;
-do
-    if [ "$tooltest" != "copy-files.sh" -a \
-	"$tooltest" != "lexc2fst-stress.sh" -a \
-	"$tooltest" != "valgrind.sh" -a \
-	"$tooltest" != "lookup-stress.sh" ]; then
-	if (./$tooltest $PREFIX) ; then
-	    printf "%-40s%s\n" $tooltest "PASS"
-	elif [ "$?" -eq "77" ] ; then
-            printf "%-40s%s\n" $tooltest "** SKIP **"
-        else
-	    printf "%-40s%s\n" $tooltest "*** FAIL ***"
-	fi
-    fi
-done
-
-echo ""
-echo "Exiting directory" `pwd`"..."
-echo ""
-
-cd ..
diff --git a/check_installation/copy-python-tests.sh b/check_installation/copy-python-tests.sh
deleted file mode 100755
index 18b9cff..0000000
--- a/check_installation/copy-python-tests.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-#
-# Copy tests for HFST swig/Python bindings under ../swig/test to ./swig_tests.
-# The copied tests are modifed so that they use the installed versions
-# of swig bindings instead of the ones in ../swig.
-#
-
-TESTDIR=./python_tests/
-
-# Copy hfst3/swig/test
-cd ../python/test
-files_to_copy=`svn list`
-cd ../../check_installation
-
-if [ -d "$TESTDIR" ]; then
-    rm -fr $TESTDIR;
-fi
-mkdir $TESTDIR
-
-for file in $files_to_copy;
-do
-    cp ../python/test/$file $TESTDIR
-done
-
-cd $TESTDIR
-
-# Not needed
-rm Makefile.am
-
-# TODO Modify the tests so that
-
-cd ..
diff --git a/check_installation/copy-tool-tests.sh b/check_installation/copy-tool-tests.sh
deleted file mode 100755
index 4261572..0000000
--- a/check_installation/copy-tool-tests.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/sh
-
-#
-# Copy HFST command line tool tests under ../test/tools to ./tool_tests.
-# The copied tests are modifed so that they use the installed versions
-# of command line tools instead of the ones in ../tools/src.
-#
-
-TESTDIR=./tool_tests/
-
-# Copy hfst3/test/tools/
-cd ../test/tools
-files_to_copy=`svn list`
-cd ../../check_installation
-
-if [ -d "$TESTDIR" ]; then
-    rm -fr $TESTDIR;
-fi
-mkdir $TESTDIR
-
-for file in $files_to_copy;
-do
-    cp ../test/tools/$file $TESTDIR
-done
-
-cd $TESTDIR
-
-# Modify the tests so that they use the installed version of tools
-# and refer to right files.
-for file in *.sh symbol-harmonization-functionality.sh;
-do
-    if [ "$file" != "copy-files.sh" ]; then
-	sed -i 's/$\TOOLDIR\//$1/g' $file
-	sed -i 's/\$srcdir\//.\//g' $file
-	sed -i 's/hfst-proc\/hfst-apertium-proc/hfst-apertium-proc/g' $file
-	sed -i 's/test -x \(.*\);/which \1 2>1 > \/dev\/null;/g' $file
-	sed -i 's/\$SCRIPTDIR\//$1/g' $file
-	sed -i 's/-loc / /g' $file
-    fi
-done
-# this file uses 'tooldir' instead of 'TOOLDIR'
-# sed -i 's/$\tooldir\//$1/g' pmatch-tester.sh
-
-
-
-# These tests are rewritten in directory check_installation
-rm empty-input.sh
-cp ../test-empty-input.sh .
-rm hfst-check-version.sh
-cp ../test-version.sh .
-rm hfst-check-help.sh
-cp ../test-help.sh .
-
-# These tests are excluded from test/tools/Makefile.am
-rm incompatible-formats.sh
-rm latin-1-strings.sh
-rm lexc-compiler-functionality.sh
-rm lexc-compiler-flags-functionality.sh
-
-# These tests are not included in basic check
-cp ../test-hfst-xfst.sh .
-cp ../test-hfst-twolc.sh .
-
-# TODO: add pmatch tests
-rm pmatch-tests.sh
-rm pmatch-tester.sh
-rm pmatch-functionality.sh
-
-# The tagger tools are experimental so they are not tested
-
-cd ..
diff --git a/check_installation/dist-README b/check_installation/dist-README
deleted file mode 100644
index 4a837cb..0000000
--- a/check_installation/dist-README
+++ /dev/null
@@ -1,30 +0,0 @@
-
-To test that installed HFST functionalities work as they should, run one 
-or more of the tests below:
-
-  ./check-tools.sh             # Command line tools
-  ./check-python.sh            # Python bindings
-  ./check-morphologies.sh      # Morphology scripts
-  ./check-ospell.sh            # hfst-ospell tool
-
-The tool check-tools.sh accepts the option '--prefix PREFIX' which tells
-where the HFST tools to be tested are found. 
-
-The tool check-python.sh accepts the option '--python PYTHON' which defines
-the python program to be used (e.g. python2, python3).
-
-By default, the python program and HFST command line tools are searched
-in the locations defined the environment variable PATH.
-
-If you use check-python.sh before installation, you need to add
-'/path/to/hfst-top-dir/python/' to PYTHONPATH and 
-'/path/to/hfst-top-dir/libhfst/src/.libs/' to LD_LIBRARY_PATH. If this is
-not enough, you have to add the following lines before 'import libhst' to
-files 'test_hfst.py' and 'examples.py' in directory 'python_tests'
-
-  import sys
-  sys.path.insert(1, '/path/to/hfst-top-dir/python/')
-
-The tool check-ospell.sh accepts the option '--prefix PREFIX' which tells
-where hfst-ospell tool is found.
-
diff --git a/check_installation/make-dist.sh b/check_installation/make-dist.sh
deleted file mode 100755
index 20cfc73..0000000
--- a/check_installation/make-dist.sh
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/bin/sh
-
-#
-# Make a distribution tarball check-hfst[-VERSIONNUMBER].tar.gz that
-# contains tools for testing installed hfst tools and morphologies.
-#
-
-VERSION=
-if [ "$1" = "-h" -o "$1" = "--help" ]; then
-    echo ""
-    echo "  Usage:  "$0" [--version VERSIONNUMBER]"
-    echo ""
-    exit 0;
-elif [ "$1" = "--version" ]; then
-    VERSION=$2;
-fi
-
-echo "  Copying command line tool tests..."
-./copy-tool-tests.sh
-echo "  Copying tests for python bindings..."
-./copy-python-tests.sh
-
-if [ ! "$VERSION" = "" ]; then
-    DISTDIR=check-hfst"-"$VERSION;
-else
-    DISTDIR=check-hfst
-fi
-
-if [ -d "$DISTDIR" ]; then
-    rm -fr $DISTDIR;
-fi
-mkdir $DISTDIR
-
-for dir in tool_tests python_tests morphology_tests ospell_tests;
-do
-    if [ ! -d $dir ]; then
-	echo "ERROR: directory 'tool_tests' does not exist."
-	exit 1;
-    fi
-done
-
-cp dist-README $DISTDIR/README
-cp ./check-tools.sh $DISTDIR/
-cp --parents ./tool_tests/* $DISTDIR/
-cp ./check-python.sh $DISTDIR/
-cp --parents ./python_tests/* $DISTDIR/
-cp ./check-morphologies.sh $DISTDIR/
-cp --parents ./morphology_tests/* $DISTDIR/
-cp ./check-ospell.sh $DISTDIR
-cp --parents ./ospell_tests/* $DISTDIR/
-
-echo "  Creating the package..." 
-tar -cvf $DISTDIR.tar $DISTDIR
-gzip $DISTDIR.tar
-
-rm -fr $DISTDIR
-echo "  Distribution package "$DISTDIR".tar.gz"" created."
diff --git a/check_installation/morphology_tests/english-analyze.input b/check_installation/morphology_tests/english-analyze.input
deleted file mode 100644
index 9ad122d..0000000
--- a/check_installation/morphology_tests/english-analyze.input
+++ /dev/null
@@ -1 +0,0 @@
-All human beings are born free and equal in dignity and rights.They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood.
diff --git a/check_installation/morphology_tests/english-analyze.output b/check_installation/morphology_tests/english-analyze.output
deleted file mode 100644
index 3f4c638..0000000
--- a/check_installation/morphology_tests/english-analyze.output
+++ /dev/null
@@ -1,159 +0,0 @@
-All	
-All	All[ADJ]+ADJ
-All	All[ADV]+ADV
-All	All[DET]
-
-human	
-human	hum[N]+AN[N/N]+N
-human	human[ADJ]+ADJ
-human	human[N]+N
-human	hume[N]+AN[N/N]+N
-
-beings	
-beings	be[N]+ING[N/N]+N+PL
-beings	being[N]+N+PL
-beings	bey[N]+ING[N/N]+N+PL
-
-are	
-are	A+re[N]+N
-are	are[N]+N
-are	be[V]+V+PRES
-
-born	
-born	bear+V+PPART
-born	bear[V]+V+PPART
-born	born[ADJ]+ADJ
-born	born[N]+N
-born	born[V]+V+PAST
-
-free	
-free	free[ADJ]+ADJ
-free	free[ADV]+ADV
-free	free[N]+N
-free	free[V]+V
-free	free[V]+V+INF
-
-and	
-and	A+nd[N]+N
-and	and[ADV]+ADV
-and	and[CNJ]+COORD
-
-equal	
-equal	equal[ADJ]+ADJ
-equal	equal[N]+N
-equal	equal[V]+V
-equal	equal[V]+V+INF
-
-in	
-in	in[ADJ]+ADJ
-in	in[ADV]+ADV
-in	in[N]+N
-in	in[PRP]
-in	in[V]+V+3sg+PRES
-
-dignity	
-dignity	dignity[N]+N
-
-and	
-and	A+nd[N]+N
-and	and[ADV]+ADV
-and	and[CNJ]+COORD
-
-rights	
-rights	right[N]+N+PL
-rights	right[V]+V+3sg+PRES
-
-.	
-.	.[PUN]
-
-They	
-They	They[PN]+PERS
-
-are	
-are	A+re[N]+N
-are	are[N]+N
-are	be[V]+V+PRES
-
-endowed	
-endowed	endow[V]+V+PAST
-endowed	endow[V]+V+PPART
-endowed	endowed[ADJ]+ADJ
-
-with	
-with	with[CNJ]+COORD
-with	with[PRP]
-
-reason	
-reason	reason[N]+N
-reason	reason[V]+V
-reason	reason[V]+V+INF
-
-and	
-and	A+nd[N]+N
-and	and[ADV]+ADV
-and	and[CNJ]+COORD
-
-conscience	
-conscience	conscience[N]+N
-
-and	
-and	A+nd[N]+N
-and	and[ADV]+ADV
-and	and[CNJ]+COORD
-
-should	
-should	should[V]+V+INF
-
-act	
-act	A+ct[N]+N
-act	act[N]+N
-act	act[V]+V
-act	act[V]+V+INF
-
-towards	
-towards	towards[PRP]
-
-one	
-one	one[ADJ]
-one	one[ADJ]+ADJ
-one	one[N]+N
-one	one[PN]
-one	one[PN]+INDEF
-one	one[V]+V+INF
-
-another	
-another	another[ADJ]+ADJ
-another	another[DET]
-
-in	
-in	in[ADJ]+ADJ
-in	in[ADV]+ADV
-in	in[N]+N
-in	in[PRP]
-in	in[V]+V+3sg+PRES
-
-a	
-a	a[ADV]+ADV
-a	a[ART]
-a	a[N]+N
-a	a[PART]+INF
-a	a[PN]+PERS
-a	a[PRP]
-
-spirit	
-spirit	spirit[N]+N
-spirit	spirit[V]+V
-spirit	spirit[V]+V+INF
-
-of	
-of	have[V]+V+INF
-of	of[ADV]+ADV
-of	of[PRP]
-
-brotherhood	
-brotherhood	brother[N]+HOOD[N/N]+N
-brotherhood	brotherhood[N]+N
-
-.	
-.	.[PUN]
-
diff --git a/check_installation/morphology_tests/english-analyze.output.old b/check_installation/morphology_tests/english-analyze.output.old
deleted file mode 100644
index 640b125..0000000
--- a/check_installation/morphology_tests/english-analyze.output.old
+++ /dev/null
@@ -1,114 +0,0 @@
-All	
-All	All[ADJ]+ADJ
-All	All[ADV]+ADV
-
-human	
-human	hum[N]+AN[N/N]+N
-human	human[ADJ]+ADJ
-human	human[N]+N
-human	hume[N]+AN[N/N]+N
-
-beings	
-beings	be[N]+ING[N/N]+N+PL
-beings	being[N]+N+PL
-beings	bey[N]+ING[N/N]+N+PL
-
-are	
-are	A+re[N]+N
-are	are[N]+N
-
-born	
-born	bear+V+PPART
-born	born[ADJ]+ADJ
-born	born[N]+N
-
-free	
-free	free[ADJ]+ADJ
-free	free[ADV]+ADV
-free	free[N]+N
-free	free[V]+V+INF
-
-and	
-and	A+nd[N]+N
-
-equal	
-equal	equal[ADJ]+ADJ
-equal	equal[N]+N
-equal	equal[V]+V+INF
-
-in	
-in	in[ADJ]+ADJ
-in	in[ADV]+ADV
-in	in[N]+N
-
-dignity	
-dignity	dignity[N]+N
-
-and	
-and	A+nd[N]+N
-
-rights	
-rights	right[N]+N+PL
-rights	right[V]+V+3sg+PRES
-
-They	+?
-
-are	
-are	A+re[N]+N
-are	are[N]+N
-
-endowed	
-endowed	endow[V]+V+PAST
-endowed	endow[V]+V+PPART
-endowed	endowed[ADJ]+ADJ
-
-with	+?
-
-reason	
-reason	reason[N]+N
-reason	reason[V]+V+INF
-
-and	
-and	A+nd[N]+N
-
-conscience	
-conscience	conscience[N]+N
-
-and	
-and	A+nd[N]+N
-
-should	
-should	should[V]+V+INF
-
-act	
-act	A+ct[N]+N
-act	act[N]+N
-act	act[V]+V+INF
-
-towards	+?
-
-one	
-one	one[ADJ]+ADJ
-one	one[N]+N
-
-another	
-another	another[ADJ]+ADJ
-
-in	
-in	in[ADJ]+ADJ
-in	in[ADV]+ADV
-in	in[N]+N
-
-a	
-a	a[N]+N
-
-spirit	
-spirit	spirit[N]+N
-spirit	spirit[V]+V+INF
-
-of	+?
-
-brotherhood	
-brotherhood	brother[N]+HOOD[N/N]+N
-brotherhood	brotherhood[N]+N
-
diff --git a/check_installation/morphology_tests/english-generate.output b/check_installation/morphology_tests/english-generate.output
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/morphology_tests/finnish-analyze.input b/check_installation/morphology_tests/finnish-analyze.input
deleted file mode 100644
index 5249712..0000000
--- a/check_installation/morphology_tests/finnish-analyze.input
+++ /dev/null
@@ -1 +0,0 @@
-Kaikki ihmiset syntyvät vapaina ja tasavertaisina arvoltaan ja oikeuksiltaan. Heille on annettu järki ja omatunto, ja heidän on toimittava toisiaan kohtaan veljeyden hengessä.
diff --git a/check_installation/morphology_tests/finnish-analyze.output b/check_installation/morphology_tests/finnish-analyze.output
deleted file mode 100644
index ae5bc53..0000000
--- a/check_installation/morphology_tests/finnish-analyze.output
+++ /dev/null
@@ -1,103 +0,0 @@
-Kaikki	
-Kaikki	Kaikki Pron Qnt Nom Sg
-
-ihmiset	
-ihmiset	ihminen N Nom Pl
-
-syntyvät	
-syntyvät	syntyä PrsPrc Act Pl
-syntyvät	syntyä PrsPrc Act Pos Nom Pl
-syntyvät	syntyä V Prs Act Pl3
-
-vapaina	
-vapaina	vapaa A Pos Ess Pl
-vapaina	vapaa N Ess Pl
-
-ja	
-ja	ja Adv
-ja	ja CC
-
-tasavertaisina	
-tasavertaisina	tasa#vertainen A Pos Ess Pl
-tasavertaisina	tasa#vertainen N Ess Pl
-
-arvoltaan	
-arvoltaan	arvo N Abl Sg Px3
-
-ja	
-ja	ja Adv
-ja	ja CC
-
-oikeuksiltaan	
-oikeuksiltaan	oikeus N Abl Pl Px3
-
-.	
-.	. Abbr Nom Sg
-.	. Punct
-
-Heille	
-Heille	He N Prop All Pl
-Heille	He Pron Pers All Pl
-
-on	
-on	olla V Prs Act Sg3
-
-annettu	
-annettu	annettu A Pos Nom Sg
-annettu	antaa PrfPrc Pass Pos Nom Sg
-annettu	antaa PrfPrc Pass Sg
-annettu	antaa V Pst Pass Pe4 ConNeg
-
-järki	
-järki	järki N Nom Sg
-
-ja	
-ja	ja Adv
-ja	ja CC
-
-omatunto	
-omatunto	omatunto N Nom Sg
-
-,	
-,	, Abbr Nom Sg
-,	, Punct
-
-ja	
-ja	ja Adv
-ja	ja CC
-
-heidän	
-heidän	he Pron Pers Gen Pl
-
-on	
-on	olla V Prs Act Sg3
-
-toimittava	
-toimittava	toimia PrsPrc Pass Pos Nom Sg
-toimittava	toimia PrsPrc Pass Sg
-toimittava	toimittaa PrsPrc Act Pos Nom Sg
-toimittava	toimittaa PrsPrc Act Sg
-
-toisiaan	
-toisiaan	toinen N Par Pl Px3
-toisiaan	toinen Num Ord Par Pl Px3
-toisiaan	toinen Pron Par Pl Px3
-toisiaan	toinen Pron Qnt Par Pl Px3
-
-kohtaan	
-kohtaan	kohdata V Prs Act Sg1
-kohtaan	kohta N Ill Sg
-kohtaan	kohtaan Adp Po
-kohtaan	kohtaan Adp Pr
-kohtaan	kohtaan Adv
-
-veljeyden	
-veljeyden	veljeys N Gen Sg
-
-hengessä	
-hengessä	henki N Ine Sg
-
-.	
-.	. Abbr Nom Sg
-.	. Punct
-
diff --git a/check_installation/morphology_tests/finnish-analyze.output.old b/check_installation/morphology_tests/finnish-analyze.output.old
deleted file mode 100644
index 031045b..0000000
--- a/check_installation/morphology_tests/finnish-analyze.output.old
+++ /dev/null
@@ -1,92 +0,0 @@
-Kaikki	
-Kaikki	Kaikki<Pron><sg><nom>
-
-ihmiset	
-ihmiset	ihminen<N><pl><nom>
-
-syntyvät	
-syntyvät	syntyä<V><act><indv><pres><pl3>
-syntyvät	syntyä<act><pcpva><pl><nom>
-
-vapaina	
-vapaina	vapaa<A><pl><ess>
-vapaina	vapaa<N><pl><ess>
-
-ja	
-ja	ja<CC>
-
-tasavertaisina	
-tasavertaisina	tasa#vertainen<A><pl><ess>
-tasavertaisina	tasa#vertainen<N><pl><ess>
-tasavertaisina	tasavertainen<A><pl><ess>
-
-arvoltaan	
-arvoltaan	arvo<N><sg><abl><pxpl3>
-arvoltaan	arvo<N><sg><abl><pxsg3>
-
-ja	
-ja	ja<CC>
-
-oikeuksiltaan	
-oikeuksiltaan	oikeus<N><pl><abl><pxpl3>
-oikeuksiltaan	oikeus<N><pl><abl><pxsg3>
-
-.	
-.	.<Punct><sent>
-
-Heille	
-Heille	He<Pron><pl><all>
-
-on	
-on	olla<V><act><indv><pres><sg3>
-
-annettu	
-annettu	annettu<A><sg><nom>
-annettu	antaa<V><pss><indv><past><conneg>
-annettu	antaa<pss><pcpnut><sg><nom>
-
-järki	
-järki	järki<N><sg><nom>
-
-ja	
-ja	ja<CC>
-
-omatunto	
-omatunto	omatunto<N><sg><nom>
-
-,	
-,	,<Punct>
-
-ja	
-ja	ja<CC>
-
-heidän	
-heidän	he<Pron><pl><gen>
-
-on	
-on	olla<V><act><indv><pres><sg3>
-
-toimittava	
-toimittava	toimia<pss><pcpva><sg><nom>
-toimittava	toimittaa<act><pcpva><sg><nom>
-
-toisiaan	
-toisiaan	toinen<N><pl><par><pxpl3>
-toisiaan	toinen<N><pl><par><pxsg3>
-toisiaan	toinen<Num><pl><par><pxpl3>
-toisiaan	toinen<Num><pl><par><pxsg3>
-
-kohtaan	
-kohtaan	kohdata<V><act><indv><pres><sg1>
-kohtaan	kohta<N><sg><ill>
-kohtaan	kohtaan<Adv>
-
-veljeyden	
-veljeyden	veljeys<N><sg><gen>
-
-hengessä	
-hengessä	henki<N><sg><ine>
-
-.	
-.	.<Punct><sent>
-
diff --git a/check_installation/morphology_tests/finnish-generate.input b/check_installation/morphology_tests/finnish-generate.input
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/morphology_tests/finnish-generate.output b/check_installation/morphology_tests/finnish-generate.output
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/morphology_tests/french-analyze.input b/check_installation/morphology_tests/french-analyze.input
deleted file mode 100644
index c1ed673..0000000
--- a/check_installation/morphology_tests/french-analyze.input
+++ /dev/null
@@ -1 +0,0 @@
-Tous les êtres humains naissent libres et égaux en dignité et en droits. Ils sont doués de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternité.
diff --git a/check_installation/morphology_tests/french-analyze.output b/check_installation/morphology_tests/french-analyze.output
deleted file mode 100644
index 5609956..0000000
--- a/check_installation/morphology_tests/french-analyze.output
+++ /dev/null
@@ -1,123 +0,0 @@
-Tous	
-Tous	Tous+functionWord
-Tous	Tout+functionWord
-
-les	
-les	le+functionWord
-les	les+functionWord
-
-êtres	
-êtres	être+commonNoun+masculine+plural
-êtres	êtres+commonNoun+masculine+plural
-
-humains	
-humains	humain+adjective+plural+masculine
-humains	humain+commonNoun+masculine+plural
-
-naissent	
-naissent	naître+verb+plural+indicative+present+thirdPerson
-naissent	naître+verb+plural+subjunctive+present+thirdPerson
-
-libres	
-libres	libre+adjective+plural+feminine
-libres	libre+adjective+plural+masculine
-
-et	
-et	et+functionWord
-
-égaux	
-égaux	égal+adjective+plural+masculine
-égaux	égal+commonNoun+masculine+plural
-
-en	
-en	en+functionWord
-
-dignité	
-dignité	dignité+commonNoun+feminine+singular
-
-et	
-et	et+functionWord
-
-en	
-en	en+functionWord
-
-droits	
-droits	droit+adjective+plural+masculine
-droits	droit+commonNoun+masculine+plural
-
-Ils	
-Ils	Il+functionWord
-Ils	Ils+functionWord
-
-sont	
-sont	être+verb+plural+indicative+present+thirdPerson
-
-doués	
-doués	douer+verb+plural+participle+masculine+past
-doués	doué+adjective+plural+masculine
-
-de	
-de	de+functionWord
-
-raison	
-raison	raison+commonNoun+feminine+singular
-
-et	
-et	et+functionWord
-
-de	
-de	de+functionWord
-
-conscience	
-conscience	conscience+commonNoun+feminine+singular
-
-et	
-et	et+functionWord
-
-doivent	
-doivent	devoir+verb+plural+indicative+present+thirdPerson
-doivent	devoir+verb+plural+subjunctive+present+thirdPerson
-
-agir	
-agir	agir+verb+infinitive
-
-les	
-les	le+functionWord
-les	les+functionWord
-
-uns	
-uns	un+functionWord
-uns	uns+functionWord
-
-envers	
-envers	envers+commonNoun+masculine+plural
-envers	envers+commonNoun+masculine+singular
-envers	envers+functionWord
-
-les	
-les	le+functionWord
-les	les+functionWord
-
-autres	
-autres	autre+adjective+plural+feminine
-autres	autre+adjective+plural+masculine
-autres	autre+commonNoun+feminine+plural
-autres	autre+commonNoun+masculine+plural
-autres	autre+functionWord
-
-dans	
-dans	dan+commonNoun+masculine+plural
-dans	dans+functionWord
-
-un	
-un	un+functionWord
-
-esprit	
-esprit	esprit+commonNoun+masculine+singular
-
-de	
-de	de+functionWord
-
-fraternité	
-fraternité	fraternité+commonNoun+feminine+singular
-
diff --git a/check_installation/morphology_tests/french-generate.input b/check_installation/morphology_tests/french-generate.input
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/morphology_tests/french-generate.output b/check_installation/morphology_tests/french-generate.output
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/morphology_tests/german-analyze.input b/check_installation/morphology_tests/german-analyze.input
deleted file mode 100644
index 986b5f5..0000000
--- a/check_installation/morphology_tests/german-analyze.input
+++ /dev/null
@@ -1 +0,0 @@
-Alle Menschen sind frei und gleich an Würde und Rechten geboren. Sie sind mit Vernunft und Gewissen begabt und sollen einander im Geist der Brüderlichkeit begegnen.
diff --git a/check_installation/morphology_tests/german-analyze.output b/check_installation/morphology_tests/german-analyze.output
deleted file mode 100644
index cfe693e..0000000
--- a/check_installation/morphology_tests/german-analyze.output
+++ /dev/null
@@ -1,226 +0,0 @@
-Alle	
-Alle	<CAP>alle<+INDEF><attr><Fem><Akk><Sg><mD>
-Alle	<CAP>alle<+INDEF><attr><Fem><Nom><Sg><mD>
-Alle	<CAP>alle<+INDEF><pro><NoGend><Akk><Pl><mD>
-Alle	<CAP>alle<+INDEF><pro><NoGend><Nom><Pl><mD>
-Alle	Alle<+INDEF><attr><Fem><Akk><Sg><mD>
-Alle	Alle<+INDEF><attr><Fem><Nom><Sg><mD>
-Alle	Alle<+INDEF><pro><NoGend><Akk><Pl><mD>
-Alle	Alle<+INDEF><pro><NoGend><Nom><Pl><mD>
-
-Menschen	
-Menschen	Mensch<+NN><Masc><Akk><Pl>
-Menschen	Mensch<+NN><Masc><Akk><Sg>
-Menschen	Mensch<+NN><Masc><Dat><Pl>
-Menschen	Mensch<+NN><Masc><Dat><Sg>
-Menschen	Mensch<+NN><Masc><Gen><Pl>
-Menschen	Mensch<+NN><Masc><Gen><Sg>
-Menschen	Mensch<+NN><Masc><Nom><Pl>
-
-sind	
-sind	sein<+V><1><Pl><Pres><Ind>
-sind	sein<+V><3><Pl><Pres><Ind>
-
-frei	
-frei	frei<+ADJ><Pos><Adv>
-frei	frei<+ADJ><Pos><Pred>
-
-und	
-und	und<+KONJ><Kon>
-
-gleich	
-gleich	gleich<+ADJ><Pos><Adv>
-gleich	gleich<+ADJ><Pos><Pred>
-gleich	gleichen<+V><Imp><Sg>
-
-an	
-an	an<+CIRCP>
-an	an<+PREP><Akk>
-an	an<+PREP><Dat>
-
-Würde	
-Würde	<CAP>werden<+V><1><Sg><Past><Konj>
-Würde	<CAP>werden<+V><3><Sg><Past><Konj>
-Würde	Werden<+V><1><Sg><Past><Konj>
-Würde	Werden<+V><3><Sg><Past><Konj>
-Würde	Würde<+NN><Fem><Akk><Sg>
-Würde	Würde<+NN><Fem><Dat><Sg>
-Würde	Würde<+NN><Fem><Gen><Sg>
-Würde	Würde<+NN><Fem><Nom><Sg>
-
-und	
-und	und<+KONJ><Kon>
-
-Rechten	
-Rechten	<CAP>recht<+ADJ><Pos><Fem><Dat><Sg><Sw/Mix>
-Rechten	<CAP>recht<+ADJ><Pos><Fem><Gen><Sg><Sw/Mix>
-Rechten	<CAP>recht<+ADJ><Pos><Masc><Akk><Sg>
-Rechten	<CAP>recht<+ADJ><Pos><Masc><Dat><Sg><Sw/Mix>
-Rechten	<CAP>recht<+ADJ><Pos><Masc><Gen><Sg>
-Rechten	<CAP>recht<+ADJ><Pos><Neut><Dat><Sg><Sw/Mix>
-Rechten	<CAP>recht<+ADJ><Pos><Neut><Gen><Sg>
-Rechten	<CAP>recht<+ADJ><Pos><NoGend><Akk><Pl><Sw/Mix>
-Rechten	<CAP>recht<+ADJ><Pos><NoGend><Dat><Pl>
-Rechten	<CAP>recht<+ADJ><Pos><NoGend><Gen><Pl><Sw/Mix>
-Rechten	<CAP>recht<+ADJ><Pos><NoGend><Nom><Pl><Sw/Mix>
-Rechten	Recht<+ADJ><Pos><Fem><Dat><Sg><Sw/Mix>
-Rechten	Recht<+ADJ><Pos><Fem><Gen><Sg><Sw/Mix>
-Rechten	Recht<+ADJ><Pos><Masc><Akk><Sg>
-Rechten	Recht<+ADJ><Pos><Masc><Dat><Sg><Sw/Mix>
-Rechten	Recht<+ADJ><Pos><Masc><Gen><Sg>
-Rechten	Recht<+ADJ><Pos><Neut><Dat><Sg><Sw/Mix>
-Rechten	Recht<+ADJ><Pos><Neut><Gen><Sg>
-Rechten	Recht<+ADJ><Pos><NoGend><Akk><Pl><Sw/Mix>
-Rechten	Recht<+ADJ><Pos><NoGend><Dat><Pl>
-Rechten	Recht<+ADJ><Pos><NoGend><Gen><Pl><Sw/Mix>
-Rechten	Recht<+ADJ><Pos><NoGend><Nom><Pl><Sw/Mix>
-Rechten	Recht<+NN><Neut><Dat><Pl>
-Rechten	Recht<ADJ><SUFF><+NN><Fem><Dat><Sg><Sw/Mix>
-Rechten	Recht<ADJ><SUFF><+NN><Fem><Gen><Sg><Sw/Mix>
-Rechten	Recht<ADJ><SUFF><+NN><Masc><Akk><Sg>
-Rechten	Recht<ADJ><SUFF><+NN><Masc><Dat><Sg><Sw/Mix>
-Rechten	Recht<ADJ><SUFF><+NN><Masc><Gen><Sg>
-Rechten	Recht<ADJ><SUFF><+NN><Neut><Dat><Sg><Sw/Mix>
-Rechten	Recht<ADJ><SUFF><+NN><Neut><Gen><Sg>
-Rechten	Recht<ADJ><SUFF><+NN><NoGend><Akk><Pl><Sw/Mix>
-Rechten	Recht<ADJ><SUFF><+NN><NoGend><Dat><Pl>
-Rechten	Recht<ADJ><SUFF><+NN><NoGend><Gen><Pl><Sw/Mix>
-Rechten	Recht<ADJ><SUFF><+NN><NoGend><Nom><Pl><Sw/Mix>
-
-geboren	
-geboren	geboren<+ADJ><Pos><Adv>
-geboren	geboren<+ADJ><Pos><Pred>
-geboren	gebären<+V><PPast>
-geboren	gebären<V><PPast><SUFF><+ADJ><Pos><Adv>
-geboren	gebären<V><PPast><SUFF><+ADJ><Pos><Pred>
-
-.	
-.	.<+IP><Norm>
-
-Sie	
-Sie	<CAP>sie<+PPRO><pers><3><Pl><NoGend><Akk>
-Sie	<CAP>sie<+PPRO><pers><3><Pl><NoGend><Nom>
-Sie	<CAP>sie<+PPRO><pers><3><Sg><Fem><Akk>
-Sie	<CAP>sie<+PPRO><pers><3><Sg><Fem><Nom>
-Sie	Sie<+PPRO><pers><3><Pl><NoGend><Akk>
-Sie	Sie<+PPRO><pers><3><Pl><NoGend><Nom>
-Sie	Sie<+PPRO><pers><3><Sg><Fem><Akk>
-Sie	Sie<+PPRO><pers><3><Sg><Fem><Nom>
-
-sind	
-sind	sein<+V><1><Pl><Pres><Ind>
-sind	sein<+V><3><Pl><Pres><Ind>
-
-mit	
-mit	mit<+PREP><Dat>
-
-Vernunft	
-Vernunft	Vernunft<+NN><Fem><Akk><Sg>
-Vernunft	Vernunft<+NN><Fem><Dat><Sg>
-Vernunft	Vernunft<+NN><Fem><Gen><Sg>
-Vernunft	Vernunft<+NN><Fem><Nom><Sg>
-
-und	
-und	und<+KONJ><Kon>
-
-Gewissen	
-Gewissen	<CAP>gewiss<+ADJ><Pos><Fem><Dat><Sg><Sw/Mix>
-Gewissen	<CAP>gewiss<+ADJ><Pos><Fem><Gen><Sg><Sw/Mix>
-Gewissen	<CAP>gewiss<+ADJ><Pos><Masc><Akk><Sg>
-Gewissen	<CAP>gewiss<+ADJ><Pos><Masc><Dat><Sg><Sw/Mix>
-Gewissen	<CAP>gewiss<+ADJ><Pos><Masc><Gen><Sg>
-Gewissen	<CAP>gewiss<+ADJ><Pos><Neut><Dat><Sg><Sw/Mix>
-Gewissen	<CAP>gewiss<+ADJ><Pos><Neut><Gen><Sg>
-Gewissen	<CAP>gewiss<+ADJ><Pos><NoGend><Akk><Pl><Sw/Mix>
-Gewissen	<CAP>gewiss<+ADJ><Pos><NoGend><Dat><Pl>
-Gewissen	<CAP>gewiss<+ADJ><Pos><NoGend><Gen><Pl><Sw/Mix>
-Gewissen	<CAP>gewiss<+ADJ><Pos><NoGend><Nom><Pl><Sw/Mix>
-Gewissen	Gewiss<+ADJ><Pos><Fem><Dat><Sg><Sw/Mix>
-Gewissen	Gewiss<+ADJ><Pos><Fem><Gen><Sg><Sw/Mix>
-Gewissen	Gewiss<+ADJ><Pos><Masc><Akk><Sg>
-Gewissen	Gewiss<+ADJ><Pos><Masc><Dat><Sg><Sw/Mix>
-Gewissen	Gewiss<+ADJ><Pos><Masc><Gen><Sg>
-Gewissen	Gewiss<+ADJ><Pos><Neut><Dat><Sg><Sw/Mix>
-Gewissen	Gewiss<+ADJ><Pos><Neut><Gen><Sg>
-Gewissen	Gewiss<+ADJ><Pos><NoGend><Akk><Pl><Sw/Mix>
-Gewissen	Gewiss<+ADJ><Pos><NoGend><Dat><Pl>
-Gewissen	Gewiss<+ADJ><Pos><NoGend><Gen><Pl><Sw/Mix>
-Gewissen	Gewiss<+ADJ><Pos><NoGend><Nom><Pl><Sw/Mix>
-Gewissen	Gewiss<ADJ><SUFF><+NN><Fem><Dat><Sg><Sw/Mix>
-Gewissen	Gewiss<ADJ><SUFF><+NN><Fem><Gen><Sg><Sw/Mix>
-Gewissen	Gewiss<ADJ><SUFF><+NN><Masc><Akk><Sg>
-Gewissen	Gewiss<ADJ><SUFF><+NN><Masc><Dat><Sg><Sw/Mix>
-Gewissen	Gewiss<ADJ><SUFF><+NN><Masc><Gen><Sg>
-Gewissen	Gewiss<ADJ><SUFF><+NN><Neut><Dat><Sg><Sw/Mix>
-Gewissen	Gewiss<ADJ><SUFF><+NN><Neut><Gen><Sg>
-Gewissen	Gewiss<ADJ><SUFF><+NN><NoGend><Akk><Pl><Sw/Mix>
-Gewissen	Gewiss<ADJ><SUFF><+NN><NoGend><Dat><Pl>
-Gewissen	Gewiss<ADJ><SUFF><+NN><NoGend><Gen><Pl><Sw/Mix>
-Gewissen	Gewiss<ADJ><SUFF><+NN><NoGend><Nom><Pl><Sw/Mix>
-Gewissen	Gewissen<+NN><Neut><Akk><Pl>
-Gewissen	Gewissen<+NN><Neut><Akk><Sg>
-Gewissen	Gewissen<+NN><Neut><Dat><Pl>
-Gewissen	Gewissen<+NN><Neut><Dat><Sg>
-Gewissen	Gewissen<+NN><Neut><Gen><Pl>
-Gewissen	Gewissen<+NN><Neut><Nom><Pl>
-Gewissen	Gewissen<+NN><Neut><Nom><Sg>
-
-begabt	
-begabt	be<PREF>geben<+V><2><Pl><Past><Ind>
-begabt	begabt<+ADJ><Pos><Adv>
-begabt	begabt<+ADJ><Pos><Pred>
-begabt	begeben<+V><2><Pl><Past><Ind>
-
-und	
-und	und<+KONJ><Kon>
-
-sollen	
-sollen	sollen<+V><1><Pl><Pres><Ind>
-sollen	sollen<+V><1><Pl><Pres><Konj>
-sollen	sollen<+V><3><Pl><Pres><Ind>
-sollen	sollen<+V><3><Pl><Pres><Konj>
-sollen	sollen<+V><Inf>
-
-einander	
-einander	einander<+PPRO><rez>
-
-im	
-im	im<+PREP/ART><Masc><Dat><Sg>
-im	im<+PREP/ART><Neut><Dat><Sg>
-
-Geist	
-Geist	Geist<+NN><Masc><Akk><Sg>
-Geist	Geist<+NN><Masc><Dat><Sg>
-Geist	Geist<+NN><Masc><Nom><Sg>
-
-der	
-der	der<+ART><Def><Masc><Nom><Sg>
-der	der<+DEM><subst><Masc><Nom><Sg>
-der	der<+REL><subst><Masc><Nom><Sg>
-der	die<+ART><Def><Fem><Dat><Sg>
-der	die<+ART><Def><Fem><Gen><Sg>
-der	die<+ART><Def><NoGend><Gen><Pl>
-der	die<+DEM><subst><Fem><Dat><Sg>
-der	die<+DEM><subst><Fem><Gen><Sg>
-der	die<+REL><subst><Fem><Dat><Sg>
-
-Brüderlichkeit	
-Brüderlichkeit	Bruder<NN>lich<ADJ><SUFF>keit<SUFF><+NN><Fem><Akk><Sg>
-Brüderlichkeit	Bruder<NN>lich<ADJ><SUFF>keit<SUFF><+NN><Fem><Dat><Sg>
-Brüderlichkeit	Bruder<NN>lich<ADJ><SUFF>keit<SUFF><+NN><Fem><Gen><Sg>
-Brüderlichkeit	Bruder<NN>lich<ADJ><SUFF>keit<SUFF><+NN><Fem><Nom><Sg>
-Brüderlichkeit	Brüderlich<ADJ>keit<SUFF><+NN><Fem><Akk><Sg>
-Brüderlichkeit	Brüderlich<ADJ>keit<SUFF><+NN><Fem><Dat><Sg>
-Brüderlichkeit	Brüderlich<ADJ>keit<SUFF><+NN><Fem><Gen><Sg>
-Brüderlichkeit	Brüderlich<ADJ>keit<SUFF><+NN><Fem><Nom><Sg>
-
-begegnen	
-begegnen	begegnen<+V><1><Pl><Pres><Ind>
-begegnen	begegnen<+V><1><Pl><Pres><Konj>
-begegnen	begegnen<+V><3><Pl><Pres><Ind>
-begegnen	begegnen<+V><3><Pl><Pres><Konj>
-begegnen	begegnen<+V><Inf>
-
-.	
-.	.<+IP><Norm>
-
diff --git a/check_installation/morphology_tests/german-generate.input b/check_installation/morphology_tests/german-generate.input
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/morphology_tests/german-generate.output b/check_installation/morphology_tests/german-generate.output
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/morphology_tests/italian-analyze.input b/check_installation/morphology_tests/italian-analyze.input
deleted file mode 100644
index 9f6a947..0000000
--- a/check_installation/morphology_tests/italian-analyze.input
+++ /dev/null
@@ -1 +0,0 @@
-Tutti gli esseri umani nascono liberi ed eguali in dignità e diritti. Essi sono dotati di ragione e di coscienza e devono agire gli uni verso gli altri in spirito di fratellanza.
diff --git a/check_installation/morphology_tests/italian-analyze.output b/check_installation/morphology_tests/italian-analyze.output
deleted file mode 100644
index 61f1424..0000000
--- a/check_installation/morphology_tests/italian-analyze.output
+++ /dev/null
@@ -1,124 +0,0 @@
-Tutti	
-Tutti	Tutti#PRO-INDEF-M-P
-Tutti	Tutto#ADJ:pos+m+p
-Tutti	Tutto#DET-INDEF:m+p
-
-gli	
-gli	gli#PRO-PERS-CLI-3-M-S
-gli	il#ART-M:p
-
-esseri	
-esseri	essere#NOUN-M:p
-
-umani	
-umani	umano#ADJ:pos+m+p
-
-nascono	
-nascono	nascere#VER:ind+pres+3+p
-
-liberi	
-liberi	liberare#VER:ind+pres+2+s
-liberi	liberare#VER:sub+pres+1+s
-liberi	liberare#VER:sub+pres+2+s
-liberi	liberare#VER:sub+pres+3+s
-liberi	libero#ADJ:pos+m+p
-
-ed	
-ed	ed#CON
-
-eguali	
-eguali	eguale#ADJ:pos+f+p
-eguali	eguale#ADJ:pos+m+p
-
-in	
-in	in#PRE
-
-dignità	
-dignità	dignità#NOUN-F:p
-dignità	dignità#NOUN-F:s
-
-e	
-e	e#CON
-
-diritti	
-diritti	diritto#ADJ:pos+m+p
-diritti	diritto#NOUN-M:p
-
-.	
-.	.#SENT
-
-Essi	
-Essi	Essi#PRO-PERS-3-M-P
-
-sono	
-sono	essere#AUX:ind+pres+1+s
-sono	essere#AUX:ind+pres+3+p
-sono	essere#VER:ind+pres+1+s
-sono	essere#VER:ind+pres+3+p
-
-dotati	
-dotati	dotare#VER:part+past+p+m
-dotati	dotato#ADJ:pos+m+p
-
-di	
-di	di#PRE
-
-ragione	
-ragione	ragione#NOUN-F:s
-
-e	
-e	e#CON
-
-di	
-di	di#PRE
-
-coscienza	
-coscienza	coscienza#NOUN-F:s
-
-e	
-e	e#CON
-
-devono	
-devono	dovere#MOD:ind+pres+3+p
-devono	dovere#VER:ind+pres+3+p
-
-agire	
-agire	agire#VER:inf+pres
-
-gli	
-gli	gli#PRO-PERS-CLI-3-M-S
-gli	il#ART-M:p
-
-uni	
-uni	uno#NOUN-M:p
-
-verso	
-verso	versare#VER:ind+pres+1+s
-verso	verso#ADJ:pos+m+s
-verso	verso#NOUN-M:s
-verso	verso#PRE
-
-gli	
-gli	gli#PRO-PERS-CLI-3-M-S
-gli	il#ART-M:p
-
-altri	
-altri	altri#PRO-INDEF-M-P
-altri	altro#ADJ:pos+m+p
-altri	altro#DET-INDEF:m+p
-
-in	
-in	in#PRE
-
-spirito	
-spirito	spirito#NOUN-M:s
-
-di	
-di	di#PRE
-
-fratellanza	
-fratellanza	fratellanza#NOUN-F:s
-
-.	
-.	.#SENT
-
diff --git a/check_installation/morphology_tests/italian-generate.input b/check_installation/morphology_tests/italian-generate.input
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/morphology_tests/italian-generate.output b/check_installation/morphology_tests/italian-generate.output
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/morphology_tests/omorfi-analyze.input b/check_installation/morphology_tests/omorfi-analyze.input
deleted file mode 100644
index 5249712..0000000
--- a/check_installation/morphology_tests/omorfi-analyze.input
+++ /dev/null
@@ -1 +0,0 @@
-Kaikki ihmiset syntyvät vapaina ja tasavertaisina arvoltaan ja oikeuksiltaan. Heille on annettu järki ja omatunto, ja heidän on toimittava toisiaan kohtaan veljeyden hengessä.
diff --git a/check_installation/morphology_tests/omorfi-analyze.output b/check_installation/morphology_tests/omorfi-analyze.output
deleted file mode 100644
index d13f688..0000000
--- a/check_installation/morphology_tests/omorfi-analyze.output
+++ /dev/null
@@ -1,95 +0,0 @@
-Kaikki	
-Kaikki	[BOUNDARY=LEXITEM][LEMMA='kaikki'][POS=PRONOUN][SUBCAT=QUANTOR][NUM=SG][CASE=NOM][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-ihmiset	
-ihmiset	[BOUNDARY=LEXITEM][LEMMA='ihminen'][POS=NOUN][KTN=38][NUM=PL][CASE=NOM][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-syntyvät	
-syntyvät	[BOUNDARY=LEXITEM][LEMMA='syntyä'][POS=VERB][KTN=52][KAV=J][VOICE=ACT][MOOD=INDV][TENSE=PRES][PRS=PL3][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-syntyvät	[BOUNDARY=LEXITEM][LEMMA='syntyä'][POS=VERB][KTN=52][KAV=J][VOICE=ACT][PCP=VA][CMP=POS][NUM=PL][CASE=NOM][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-vapaina	
-vapaina	[BOUNDARY=LEXITEM][LEMMA='vapaa'][POS=ADJECTIVE][KTN=17][CMP=POS][NUM=PL][CASE=ESS][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-vapaina	[BOUNDARY=LEXITEM][LEMMA='vapaa'][POS=NOUN][KTN=17][NUM=PL][CASE=ESS][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-ja	
-ja	[BOUNDARY=LEXITEM][LEMMA='ja'][POS=CONJUNCTION][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-tasavertaisina	
-tasavertaisina	[BOUNDARY=LEXITEM][LEMMA='tasa'][POS=NOUN][KTN=9][NUM=SG][CASE=NOM][BOUNDARY=COMPOUND][GUESS=COMPOUND][LEMMA='vertainen'][POS=ADJECTIVE][KTN=38][CMP=POS][NUM=PL][CASE=ESS][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-tasavertaisina	[BOUNDARY=LEXITEM][LEMMA='tasa'][POS=NOUN][KTN=9][NUM=SG][CASE=NOM][BOUNDARY=COMPOUND][GUESS=COMPOUND][LEMMA='vertainen'][POS=NOUN][KTN=38][NUM=PL][CASE=ESS][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-tasavertaisina	[BOUNDARY=LEXITEM][LEMMA='tasa'|'vertainen'][POS=ADJECTIVE][KTN=38][CMP=POS][NUM=PL][CASE=ESS][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-arvoltaan	
-arvoltaan	[BOUNDARY=LEXITEM][LEMMA='arvo'][POS=NOUN][KTN=1][NUM=SG][CASE=ABL][POSS=PL3][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-arvoltaan	[BOUNDARY=LEXITEM][LEMMA='arvo'][POS=NOUN][KTN=1][NUM=SG][CASE=ABL][POSS=SG3][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-ja	
-ja	[BOUNDARY=LEXITEM][LEMMA='ja'][POS=CONJUNCTION][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-oikeuksiltaan	
-oikeuksiltaan	[BOUNDARY=LEXITEM][LEMMA='oikeus'][POS=NOUN][KTN=4%0][NUM=PL][CASE=ABL][POSS=PL3][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-oikeuksiltaan	[BOUNDARY=LEXITEM][LEMMA='oikeus'][POS=NOUN][KTN=4%0][NUM=PL][CASE=ABL][POSS=SG3][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-.	
-.	[BOUNDARY=LEXITEM][LEMMA='.'][SUBCAT=PUNCTUATION][BOUNDARY=SENTENCE][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-Heille	
-Heille	[BOUNDARY=LEXITEM][LEMMA='he'][POS=PRONOUN][SUBCAT=PERSONAL][NUM=PL][CASE=ALL][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-on	
-on	[BOUNDARY=LEXITEM][LEMMA='olla'][POS=VERB][KTN=67][VOICE=ACT][MOOD=INDV][TENSE=PRES][PRS=SG3][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-annettu	
-annettu	[BOUNDARY=LEXITEM][LEMMA='annettu'][POS=ADJECTIVE][KTN=1][KAV=C][CMP=POS][NUM=SG][CASE=NOM][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-annettu	[BOUNDARY=LEXITEM][LEMMA='antaa'][POS=VERB][KTN=56][KAV=J][VOICE=PSS][MOOD=INDV][TENSE=PAST][NEG=CON][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-annettu	[BOUNDARY=LEXITEM][LEMMA='antaa'][POS=VERB][KTN=56][KAV=J][VOICE=PSS][PCP=NUT][CMP=POS][NUM=SG][CASE=NOM][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-järki	
-järki	[BOUNDARY=LEXITEM][LEMMA='järki'][POS=NOUN][KTN=7][KAV=L][NUM=SG][CASE=NOM][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-ja	
-ja	[BOUNDARY=LEXITEM][LEMMA='ja'][POS=CONJUNCTION][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-omatunto	
-omatunto	[BOUNDARY=LEXITEM][LEMMA='oma'][POS=ADJECTIVE][KTN=1%0][CMP=POS][NUM=SG][CASE=NOM][BOUNDARY=COMPOUND][GUESS=COMPOUND][LEMMA='tunto'][POS=NOUN][KTN=1][KAV=J][NUM=SG][CASE=NOM][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-omatunto	[BOUNDARY=LEXITEM][LEMMA='oma'|'tunto'][POS=NOUN][KTN=51][NUM=SG][CASE=NOM][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-omatunto	[BOUNDARY=LEXITEM][LEMMA='omatunto'][POS=NOUN][KTN=51][KAV=J][NUM=SG][CASE=NOM][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-,	
-,	[BOUNDARY=LEXITEM][LEMMA=','][SUBCAT=PUNCTUATION][BOUNDARY=CLAUSE][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-ja	
-ja	[BOUNDARY=LEXITEM][LEMMA='ja'][POS=CONJUNCTION][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-heidän	
-heidän	[BOUNDARY=LEXITEM][LEMMA='he'][POS=PRONOUN][SUBCAT=PERSONAL][NUM=PL][CASE=GEN][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-on	
-on	[BOUNDARY=LEXITEM][LEMMA='olla'][POS=VERB][KTN=67][VOICE=ACT][MOOD=INDV][TENSE=PRES][PRS=SG3][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-toimittava	
-toimittava	[BOUNDARY=LEXITEM][LEMMA='toimia'][POS=VERB][KTN=61][GUESS=DERIVE][DRV=TTAA][POS=VERB][KTN=53][KAV=C][VOICE=ACT][PCP=VA][CMP=POS][NUM=SG][CASE=NOM][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-toimittava	[BOUNDARY=LEXITEM][LEMMA='toimia'][POS=VERB][KTN=61][VOICE=PSS][PCP=VA][CMP=POS][NUM=SG][CASE=NOM][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-toimittava	[BOUNDARY=LEXITEM][LEMMA='toimittaa'][POS=VERB][KTN=53][KAV=C][VOICE=ACT][PCP=VA][CMP=POS][NUM=SG][CASE=NOM][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-toisiaan	
-toisiaan	[BOUNDARY=LEXITEM][LEMMA='toinen'][POS=NOUN][KTN=38][NUM=PL][CASE=PAR][ALLO=IA][POSS=PL3][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-toisiaan	[BOUNDARY=LEXITEM][LEMMA='toinen'][POS=NOUN][KTN=38][NUM=PL][CASE=PAR][ALLO=IA][POSS=SG3][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-toisiaan	[BOUNDARY=LEXITEM][LEMMA='toinen'][POS=NUMERAL][KTN=38][SUBCAT=ORD][NUM=PL][CASE=PAR][ALLO=IA][POSS=PL3][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-toisiaan	[BOUNDARY=LEXITEM][LEMMA='toinen'][POS=NUMERAL][KTN=38][SUBCAT=ORD][NUM=PL][CASE=PAR][ALLO=IA][POSS=SG3][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-kohtaan	
-kohtaan	[BOUNDARY=LEXITEM][LEMMA='kohdata'][POS=VERB][KTN=73][KAV=F][VOICE=ACT][MOOD=INDV][TENSE=PRES][PRS=SG1][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-kohtaan	[BOUNDARY=LEXITEM][LEMMA='kohta'][POS=NOUN][KTN=1%0][KAV=F][NUM=SG][CASE=ILL][ALLO=VN][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-kohtaan	[BOUNDARY=LEXITEM][LEMMA='kohtaan'][POS=ADVERB][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-veljeyden	
-veljeyden	[BOUNDARY=LEXITEM][LEMMA='veljeys'][POS=NOUN][KTN=4%0][NUM=SG][CASE=GEN][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-hengessä	
-hengessä	[BOUNDARY=LEXITEM][LEMMA='henki'][POS=NOUN][KTN=7][KAV=G][NUM=SG][CASE=INE][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
-.	
-.	[BOUNDARY=LEXITEM][LEMMA='.'][SUBCAT=PUNCTUATION][BOUNDARY=SENTENCE][BOUNDARY=LEXITEM][CASECHANGE=NONE]
-
diff --git a/check_installation/morphology_tests/omorfi-generate.input b/check_installation/morphology_tests/omorfi-generate.input
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/morphology_tests/omorfi-generate.output b/check_installation/morphology_tests/omorfi-generate.output
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/morphology_tests/swedish-analyze.input b/check_installation/morphology_tests/swedish-analyze.input
deleted file mode 100644
index da860ab..0000000
--- a/check_installation/morphology_tests/swedish-analyze.input
+++ /dev/null
@@ -1 +0,0 @@
-Alla människor äro födda fria och lika i värde och rättigheter. De äro utrustade med förnuft och samvete och böra handla gentemot varandra i en anda av broderskap.
diff --git a/check_installation/morphology_tests/swedish-analyze.output b/check_installation/morphology_tests/swedish-analyze.output
deleted file mode 100644
index d132ce4..0000000
--- a/check_installation/morphology_tests/swedish-analyze.output
+++ /dev/null
@@ -1,108 +0,0 @@
-Alla	
-Alla	Alla<pronomen>
-
-människor	
-människor	människa<substantiv><utrum><pl><obest><nom>
-
-äro	+?
-
-födda	
-födda	föda<verb><perfekt_particip><best/pl>
-födda	född<adjektiv><pos><pl>
-födda	född<adjektiv><pos><sg><best>
-
-fria	
-fria	fri<adjektiv><pos><pl>
-fria	fri<adjektiv><pos><sg><best>
-fria	fria<verb><imperativ><aktiv>
-fria	fria<verb><infinitiv><aktiv>
-
-och	
-och	och<konjunktion>
-
-lika	
-lika	lik<adjektiv><pos><pl>
-lika	lik<adjektiv><pos><sg><best>
-lika	lika<adjektiv><pos><pl>
-lika	lika<adjektiv><pos><sg><best>
-lika	lika<adjektiv><pos><sg><neutrum>
-lika	lika<adjektiv><pos><sg><utrum>
-lika	lika<adverb>
-lika	lika<verb><imperativ><aktiv>
-lika	lika<verb><infinitiv><aktiv>
-
-i	
-i	i<adverb>
-i	i<preposition>
-
-värde	
-värde	värde<prefix>
-värde	värde<substantiv><neutrum><sg><obest><nom>
-
-och	
-och	och<konjunktion>
-
-rättigheter	
-rättigheter	rättighet<substantiv><utrum><pl><obest><nom>
-
-De	
-De	De<pronomen>
-
-äro	+?
-
-utrustade	
-utrustade	utrusta<verb><perfekt_particip><best/pl>
-utrustade	utrusta<verb><preteritum><aktiv>
-
-med	
-med	med<adverb>
-med	med<preposition>
-med	med<substantiv><utrum><sg><obest><nom>
-
-förnuft	
-förnuft	förnuft<substantiv><neutrum><sg><obest><nom>
-
-och	
-och	och<konjunktion>
-
-samvete	
-samvete	samvete<substantiv><neutrum><sg><obest><nom>
-
-och	
-och	och<konjunktion>
-
-böra	
-böra	böra<verb><infinitiv><aktiv>
-
-handla	
-handla	handla<verb><imperativ><aktiv>
-handla	handla<verb><infinitiv><aktiv>
-
-gentemot	
-gentemot	gentemot<adverb>
-gentemot	gentemot<preposition>
-
-varandra	
-varandra	varandra<pronomen>
-
-i	
-i	i<adverb>
-i	i<preposition>
-
-en	
-en	en<pronomen>
-en	en<rakneord>
-en	en<substantiv><utrum><sg><obest><nom>
-
-anda	
-anda	anda<substantiv><utrum><sg><obest><nom>
-
-av	
-av	av<adverb>
-av	av<preposition>
-
-broderskap	
-broderskap	broders<prefix>kap<substantiv><neutrum><pl><obest><nom>
-broderskap	broders<prefix>kap<substantiv><neutrum><sg><obest><nom>
-broderskap	broderskap<substantiv><neutrum><sg><obest><nom>
-
diff --git a/check_installation/morphology_tests/swedish-generate.input b/check_installation/morphology_tests/swedish-generate.input
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/morphology_tests/swedish-generate.output b/check_installation/morphology_tests/swedish-generate.output
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/morphology_tests/turkish-analyze.input b/check_installation/morphology_tests/turkish-analyze.input
deleted file mode 100644
index ced4468..0000000
--- a/check_installation/morphology_tests/turkish-analyze.input
+++ /dev/null
@@ -1 +0,0 @@
-Bütün insanlar hür, haysiyet, ve haklar bakımından eşit doğarlar. Akıl ve vicdana sahiptirler ve birbirlerine karşı dostluk zihniyeti ile hareket etmelidirler.
diff --git a/check_installation/morphology_tests/turkish-analyze.output b/check_installation/morphology_tests/turkish-analyze.output
deleted file mode 100644
index b658bb6..0000000
--- a/check_installation/morphology_tests/turkish-analyze.output
+++ /dev/null
@@ -1,117 +0,0 @@
-Bütün	
-Bütün	Bütün<adj>
-Bütün	Bütün<adj><Djn_0><n>
-Bütün	Bütün<adj><Djn_0><n><3s>
-Bütün	Bütün<n>
-Bütün	Bütün<n><3s>
-
-insanlar	
-insanlar	insan<n><3p>
-insanlar	insan<n><D_lA><v><t_aor><3s>
-insanlar	insan<n><pl>
-insanlar	insan<n><pl><3s>
-
-hür	
-hür	hür<n>
-hür	hür<n><3s>
-hür	hür<np>
-hür	hür<np><3s>
-
-haysiyet	
-haysiyet	haysiyet<n>
-haysiyet	haysiyet<n><3s>
-haysiyet	haysiyet<np>
-haysiyet	haysiyet<np><3s>
-
-ve	
-ve	ve<cnj>
-
-haklar	
-haklar	hak<n><3p>
-haklar	hak<n><D_lA><v><t_aor><3s>
-haklar	hak<n><pl>
-haklar	hak<n><pl><3s>
-haklar	hak<np><3p>
-haklar	hak<np><D_lA><v><t_aor><3s>
-haklar	hakla<v><t_aor><3s>
-
-bakımından	
-bakımından	bakım<n><p2s><abl>
-bakımından	bakım<n><p2s><abl><3s>
-bakımından	bakım<n><p3s><abl>
-bakımından	bakım<n><p3s><abl><3s>
-
-eşit	
-eşit	eşit<n>
-eşit	eşit<n><3s>
-
-doğarlar	
-doğarlar	doğ<v><t_aor><3p>
-
-Akıl	
-Akıl	Ak<v><pass><t_imp><2s>
-Akıl	Akıl<n>
-Akıl	Akıl<n><3s>
-
-ve	
-ve	ve<cnj>
-
-vicdana	
-vicdana	vicdan<n><dat>
-vicdana	vicdan<n><dat><3s>
-
-sahiptirler	
-sahiptirler	sahip<n><dir><3p>
-
-ve	
-ve	ve<cnj>
-
-birbirlerine	
-birbirlerine	birbir<n><p3p><dat>
-birbirlerine	birbir<n><p3p><dat><3s>
-birbirlerine	birbir<n><pl><p2s><dat>
-birbirlerine	birbir<n><pl><p2s><dat><3s>
-birbirlerine	birbir<n><pl><p3s><dat>
-birbirlerine	birbir<n><pl><p3s><dat><3s>
-
-karşı	
-karşı	karşı<adj>
-karşı	karşı<adj><Djn_0><n>
-karşı	karşı<adj><Djn_0><n><3s>
-karşı	karşı<adv>
-karşı	karşı<adv><Dan_0><n>
-karşı	karşı<adv><Dan_0><n><3s>
-karşı	karşı<n>
-karşı	karşı<n><3s>
-karşı	karşı<postp>
-karşı	karşı<postp><3s>
-
-dostluk	
-dostluk	dost<adj><D_lIK><n>
-dostluk	dost<adj><D_lIK><n><3s>
-dostluk	dost<adj><Djn_0><n><D_lIK><n>
-dostluk	dost<adj><Djn_0><n><D_lIK><n><3s>
-dostluk	dost<n><D_lIK><n>
-dostluk	dost<n><D_lIK><n><3s>
-
-zihniyeti	
-zihniyeti	zihniyet<n><acc>
-zihniyeti	zihniyet<n><acc><3s>
-zihniyeti	zihniyet<n><p3s>
-zihniyeti	zihniyet<n><p3s><3s>
-
-ile	
-ile	il<n><dat>
-ile	il<n><dat><3s>
-ile	ile<cnj>
-ile	ile<postp>
-ile	ile<postp><3s>
-
-hareket	
-hareket	hareket<n>
-hareket	hareket<n><3s>
-
-etmelidirler	
-etmelidirler	et<v><D_mA><n><D_lI><adj><Djn_0><n><dir><3p>
-etmelidirler	et<v><D_mA><n><D_lI><n><dir><3p>
-
diff --git a/check_installation/morphology_tests/turkish-generate.input b/check_installation/morphology_tests/turkish-generate.input
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/morphology_tests/turkish-generate.output b/check_installation/morphology_tests/turkish-generate.output
deleted file mode 100644
index e69de29..0000000
diff --git a/check_installation/ospell_tests/ospell_input.txt b/check_installation/ospell_tests/ospell_input.txt
deleted file mode 100644
index eccf3d0..0000000
--- a/check_installation/ospell_tests/ospell_input.txt
+++ /dev/null
@@ -1 +0,0 @@
-aaamu
diff --git a/check_installation/ospell_tests/test.zhfst b/check_installation/ospell_tests/test.zhfst
deleted file mode 100644
index 3460521..0000000
Binary files a/check_installation/ospell_tests/test.zhfst and /dev/null differ
diff --git a/check_installation/test-empty-input.sh b/check_installation/test-empty-input.sh
deleted file mode 100755
index 524c996..0000000
--- a/check_installation/test-empty-input.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-TOOLSDIR=$1
-for f in $TOOLSDIR/hfst-* ; do
-    if ! (echo "$f" | grep "hfst-twolc-loc" > /dev/null); then 
-	if ! (echo "$f" | grep "tagger" > /dev/null); then
-	if ! (echo "$f" | grep "hfst-lexc-wrapper" > /dev/null); then
-	    if [ -x "$f" -a ! -d "$f" ] ; then
-		$f < empty-file > /dev/null 2>&1
-		rv=$?
-		if [ $rv -eq 139 ] ; then
-		    echo $f received SEGV on empty input file
-		    exit 1
-		elif [ $rv -gt 1 ] ; then
-		    echo $f did not die with SUCCESS nor FAILURE on empty input
-		    exit 1
-		fi
-	    fi
-        fi
-	fi
-    fi
-done
-
diff --git a/check_installation/test-help.sh b/check_installation/test-help.sh
deleted file mode 100755
index d7daf9f..0000000
--- a/check_installation/test-help.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-TOOLSDIR=$1
-
-EXT=
-if (uname | egrep "MINGW|mingw" 2>1 > /dev/null); then
-    EXT=".exe";
-fi
-
-for file in $TOOLSDIR/hfst-* ; do
-    f=`echo $file | sed 's/.*\(hfst-.*\)/\1/'`
-    if [ "$f" != "hfst-lexc2fst""$EXT" -a \
-        "$f" != "hfst-xfst2fst""$EXT" -a \
-	"$f" != "hfst-lexc-compiler""$EXT" -a \
-	"$f" != "hfst-info""$EXT" -a \
-	"$f" != "hfst-twolc-system""$EXT" -a \
-	"$f" != "hfst-duplicate""$EXT" -a \
-	"$f" != "hfst-preprocess-for-optimized-lookup-format""$EXT" -a \
-	"$f" != "hfst-strip-header""$EXT" -a \
-	"$f" != "hfst-train-tagger-system""$EXT" -a \
-	"$f" != "hfst-affix-guessify""$EXT" ]; then
-        if [ -x "$f" -a ! -d "$f" ] ; then
-            if ! "$f" --help > help.out ; then
-                rm -f help.out
-                echo $f has broken help
-                exit 1
-            fi
-            if ! grep -q '^Usage: hfst-' help.out > /dev/null ; then
-                rm -f help.out
-                echo $f has malformed help
-                exit 1
-            fi
-        fi
-    fi
-done
-rm -f help.out
-
diff --git a/check_installation/test-hfst-twolc.sh b/check_installation/test-hfst-twolc.sh
deleted file mode 100755
index 413777e..0000000
--- a/check_installation/test-hfst-twolc.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-#
-# Test that the installed version of hfst-twolc works.
-#
-
-if ! [ -x $1/hfst-twolc ]; then
-    echo "warning: hfst-twolc not found, assumed switched off and skipping it"
-    exit 0
-fi
-
-rm -f twolc.script
-echo 'Alphabet a b ;' > twolc.script
-echo 'Rules' >> twolc.script
-echo '"rule name"' >> twolc.script
-echo 'a:b => b _ b ;' >> twolc.script
-
-for format in sfst openfst-tropical foma;
-do
-    # We just test that the tool is installed right, not its result..
-    if ! (cat twolc.script | $1/hfst-twolc -s -f $format 2>1 > /dev/null); then
-	exit 1
-    fi
-done
-
-rm -f twolc.script
-
diff --git a/check_installation/test-hfst-xfst.sh b/check_installation/test-hfst-xfst.sh
deleted file mode 100755
index 535205d..0000000
--- a/check_installation/test-hfst-xfst.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-#
-# Test that the installed version of hfst-xfst works.
-#
-
-if ! [ -x $1/hfst-xfst ]; then
-    echo "warning: hfst-xfst not found, assumed switched off and skipping it"
-    exit 77
-fi
-
-rm -f a2b.script
-echo "regex a:b;" > a2b.script
-echo "save stack a2b.xfst.hfst" >> a2b.script 
-
-for format in sfst openfst-tropical foma;
-do
-    # Check that the tool is installed right..
-    if ! ($1/hfst-xfst -F a2b.script -f $format 2>1 > /dev/null); then
-	exit 1
-    fi
-    # Check that the tool produces right result..
-    if ! (echo "a:b" | $1/hfst-strings2fst -f $format | $1/hfst-compare -s a2b.xfst.hfst); then
-	exit 1
-    fi
-    rm -f a2b.xfst.hfst
-done
-
-rm -f a2b.script
diff --git a/check_installation/test-version.sh b/check_installation/test-version.sh
deleted file mode 100755
index abb8224..0000000
--- a/check_installation/test-version.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh
-TOOLSDIR=$1
-
-EXT=
-if (uname | egrep "MINGW|mingw" 2>1 > /dev/null); then
-    EXT=".exe";
-fi
-
-for file in $TOOLSDIR/hfst-* ; do
-    f=`echo $file | sed 's/.*\(hfst-.*\)/\1/'`
-    if [ "$f" != "hfst-lexc""$EXT" -a \
-        "$f" != "hfst-lexc2fst""$EXT" -a \
-        "$f" != "hfst-xfst2fst""$EXT" -a \
-	"$f" != "hfst-lexc-compiler""$EXT" -a \
-	"$f" != "hfst-pmatch""$EXT" -a \
-	"$f" != "hfst-preprocess-for-optimized-lookup-format""$EXT" -a \
-	"$f" != "hfst-duplicate""$EXT" -a \
-	"$f" != "hfst-strip-header""$EXT" -a \
-	"$f" != "hfst-info""$EXT" -a \
-	"$f" != "hfst-foma-wrapper.sh" ] ; then
-        if [ -x "$f" -a ! -d "$f" ] ; then
-            if ! "$f" --version > version.out ; then
-                rm -f version.out
-                echo $f has broken version
-                exit 1
-            fi
-            if ! grep -q 'hfst-[^ ]\+ [0-9.]\+' version.out > /dev/null \
-            ; then
-                rm -f version.out
-                echo $f has malformed version
-                exit 1
-            fi
-        fi
-    fi
-done
-rm -f version.out
-
diff --git a/configure.ac b/configure.ac
index fdce722..e2a4a38 100644
--- a/configure.ac
+++ b/configure.ac
@@ -18,7 +18,7 @@
 # Information on package
 HFST_NAME=hfst
 HFST_MAJOR=3
-HFST_MINOR=9
+HFST_MINOR=10
 HFST_EXTENSION=0
 HFST_VERSION=$HFST_MAJOR.$HFST_MINOR.$HFST_EXTENSION
 
@@ -27,11 +27,11 @@ HFST_VERSION=$HFST_MAJOR.$HFST_MINOR.$HFST_EXTENSION
 # for package-config pc file
 LIBHFST_NAME=hfst
 LIBHFST_MAJOR=3
-LIBHFST_MINOR=9
+LIBHFST_MINOR=10
 LIBHFST_EXTENSION=0
 LIBHFST_VERSION=$LIBHFST_MAJOR.$LIBHFST_MINOR.$LIBHFST_EXTENSION
 
-AC_INIT([hfst], [3.9.0], [hfst-bugs at helsinki.fi], [hfst])
+AC_INIT([hfst], [3.10.0], [hfst-bugs at helsinki.fi], [hfst])
 AC_CONFIG_AUX_DIR([build-aux])
 AM_INIT_AUTOMAKE([-Wall std-options foreign check-news])
 
@@ -43,9 +43,9 @@ AC_CONFIG_SRCDIR([libhfst/src/HfstTransducer.h])
 AC_CONFIG_HEADERS([config.h libhfst/src/hfst.hpp])
 
 AC_SUBST([LIBHFST_MAJOR],     [3])
-AC_SUBST([LIBHFST_MINOR],     [9])
+AC_SUBST([LIBHFST_MINOR],     [10])
 AC_SUBST([LIBHFST_EXTENSION], [0])
-AC_SUBST([LIBHFST_VERSION],   [3.9.0])
+AC_SUBST([LIBHFST_VERSION],   [3.10.0])
 AC_SUBST([LIBHFST_NAME],      [hfst])
 
 # long version = version vector cast in base 10000, for automatic comparisons
@@ -56,9 +56,9 @@ AC_SUBST([LIBHFST_NAME],      [hfst])
 # $LIBHFST_MINOR * 10000 + $LIBHFST_EXTENSION + "L"
 # NB! It turned out to be not portable, and can't be used!
 
-AC_DEFINE([HFST_LONGVERSION], [300090000L],
+AC_DEFINE([HFST_LONGVERSION], [300100000L],
           [Define to hfst version vector as long in base 10000])
-AC_DEFINE([HFST_REVISION], ["$Revision: 4580 $"],
+AC_DEFINE([HFST_REVISION], ["$Revision$"],
           [Automatically substitute to configure.ac revision])
 AC_DEFINE_UNQUOTED([HFST_STRING], ["$PACKAGE_STRING"],
                    [Define to libhfst pretty name for programs to print])
@@ -323,6 +323,12 @@ AC_ARG_ENABLE([lookup],
 			  [enable_lookup=$enableval],
 			  [if test x$enable_no_tools != xno; then enable_lookup=no; else enable_lookup=yes; fi])
 AM_CONDITIONAL([WANT_LOOKUP], [test x$enable_lookup != xno])
+AC_ARG_ENABLE([flookup],
+			  [AS_HELP_STRING([--enable-flookup],
+							  [build flookup tool @<:@default=yes@:>@])],
+			  [enable_flookup=$enableval],
+			  [if test x$enable_no_tools != xno; then enable_flookup=no; else enable_flookup=yes; fi])
+AM_CONDITIONAL([WANT_FLOOKUP], [test x$enable_flookup != xno])
 AC_ARG_ENABLE([pair-test],
 			  [AS_HELP_STRING([--enable-pair-test],
 							  [build pair-test tool @<:@default=yes@:>@])],
@@ -353,12 +359,12 @@ AC_ARG_ENABLE([pmatch],
 			  [enable_pmatch=$enableval],
 			  [if test x$enable_no_tools != xno; then enable_pmatch=no; else enable_pmatch=yes; fi])
 AM_CONDITIONAL([WANT_PMATCH], [test x$enable_pmatch != xno])
-AC_ARG_ENABLE([proc2],
-			  [AS_HELP_STRING([--enable-proc2],
-							  [build proc2 tokenizing tool @<:@default=yes@:>@])],
-			  [enable_proc2=$enableval],
-			  [if test x$enable_no_tools != xno; then enable_proc2=no; else enable_proc2=yes; fi])
-AM_CONDITIONAL([WANT_PROC2], [test x$enable_proc2 != xno])
+AC_ARG_ENABLE([tokenize],
+			  [AS_HELP_STRING([--enable-tokenize],
+							  [build tokenizing tool @<:@default=yes@:>@])],
+			  [enable_tokenize=$enableval],
+			  [if test x$enable_no_tools != xno; then enable_tokenize=no; else enable_tokenize=yes; fi])
+AM_CONDITIONAL([WANT_TOKENIZE], [test x$enable_tokenize != xno])
 AC_ARG_ENABLE([project],
 			  [AS_HELP_STRING([--enable-project],
 							  [build project tool @<:@default=yes@:>@])],
@@ -513,10 +519,6 @@ AM_CONDITIONAL([GENERATE_LEXC_WRAPPER], [test "x$enable_lexc_wrapper" != "xno" -
 AS_IF([test "x$enable_foma_wrapper" != "xno" -a "x$with_foma" != "xno" -a "x$zlib_exists" != "xno"], [generate_foma_wrapper=yes], [generate_foma_wrapper=no])
 AS_IF([test "x$enable_lexc_wrapper" != "xno" -a "x$with_foma" != "xno" -a "x$zlib_exists" != "xno"], [generate_lexc_wrapper=yes], [generate_lexc_wrapper=no])
 
-# Check if we have to warn the user for missing foma and lexc wrappers because zlib is not available 
-# AS_IF([test "x$enable_foma_wrapper" != "xno" -a "x$with_foma" != "xno" -a "x$zlib_exists" == "xno"], [warn_about_missing_zlib_foma=yes], [warn_about_missing_zlib_foma=no])
-# AS_IF([test "x$enable_lexc_wrapper" != "xno" -a "x$with_foma" != "xno" -a "x$zlib_exists" == "xno"], [warn_about_missing_zlib_lexc=yes], [warn_about_missing_zlib_lexc=no])
-
 # If foma wrapper is not wanted or possible to generate, set these conditionals/variables to 'no'
 AM_COND_IF([GENERATE_FOMA_WRAPPER], [], [AM_CONDITIONAL([WANT_FOMA_WRAPPER], [false])])
 AM_COND_IF([GENERATE_FOMA_WRAPPER], [], [enable_foma_wrapper=no])
@@ -535,7 +537,7 @@ AM_CONDITIONAL([WANT_STRESSTESTS], [test x$enable_stress_tests != xno])
 AC_ARG_ENABLE([mingw],
 		[AS_HELP_STRING([--enable-mingw],
 				[compile on MinGW @<:@default=no@:>@])],
-				mingw_mingw=$enableval],
+				[mingw_mingw=$enableval],
 				[enable_mingw=no])
 AM_CONDITIONAL([WANT_MINGW], [test x$enable_mingw != xno])
 
@@ -551,9 +553,6 @@ AM_CONDITIONAL([WANT_FSMBOOK_TESTS], [test x$enable_fsmbook_tests != xno])
 AS_IF([test "x$enable_fsmbook_tests" != "xno" -a "x$enable_xfst" == "xno"],
       [AC_MSG_FAILURE([fsmbook tests are not supported if hfst-xfst is disabled; enable hfst-xfst (with --enable-xfst) when using --enable-fsmbook-tests])])
 
-#AS_IF([test "x$enable_mingw" != "xno" -a "x$enable_tagger" != "xno"],
-#      [AC_MSG_FAILURE([hfst-train-tagger and hfst-tag are not supported in MinGW environment; disable tagger tools (with --disable-tagger) when using --enable-mingw])])
-
 # Checks for programs
 AC_PROG_CC
 AC_PROG_CXX
@@ -561,46 +560,51 @@ LT_INIT
 AC_PROG_AWK
 AC_PROG_CPP
 AC_PROG_YACC
+
+#Do not use *.h extension for parser header files, use newer *.hh
+yacc_use_parser_h_extension=false
+
+#Verify automake version 1.11 headers for yy files are .h, >= 1.12 uses .hh
+automake_version=`automake --version | head -n 1 | cut '-d ' -f 4`
+AC_DEFINE_UNQUOTED([AUTOMAKE_VERSION], [$automake_version], [Defines automake version])
+
+if test "$automake_version" \< "1.12" ; then
+      #Use *.h extension for parser header file
+      yacc_use_parser_h_extension=true
+      echo "automake version < 1.12, using .h extension for yacc/bison generated header files"
+      AC_DEFINE([YACC_USE_PARSER_H_EXTENSION], [1], [Use *.h extension for parser header file])
+else
+      echo "automake version >= 1.12, using .hh extension for yacc/bison generated header files"
+fi
+
+AM_CONDITIONAL([YACC_USE_PARSER_H_EXTENSION], [test x$yacc_use_parser_h_extension = xtrue])
+
 AC_PROG_LEX
-#AC_PATH_PROG([FOMACLI], [foma], [false])
+
 AC_PATH_PROG([GETOPT], [getopts], [false])
-#AM_CONDITIONAL([CAN_FOMAWRAP], [test x$FOMACLI != xfalse])
-#AM_CONDITIONAL([CAN_FOMAWRAP], [true])
+
 AM_PATH_PYTHON([2.4],[],[false])
 # if flex 3.X ever comes out, this breaks :)
 LEX_VERSION=`$LEX --version`
 AS_IF([test -z "`echo "$LEX_VERSION" | grep 'flex 2\.[[5-9]]\.[[3-9][4-9]]'`"],
       [AC_MSG_WARN([Building hfst successfully requires flex newer than 2.5.33 on some platforms. Unless you are building with pre-flex-generated sources, building will probably fail.])])
 
-# if automake is >= 1.12
-#AM_CONDITIONAL([HH_EXTENSION_USED], [test "`automake --version | head -1 | grep ' 1\.1[2-9]'`" = ""])
-
 AC_PROG_INSTALL
 AC_PROG_LN_S
 AC_PROG_MAKE_SET
 AC_PATH_PROG([DOXYGEN], [doxygen], [no])
 AM_CONDITIONAL([CAN_DOXYGEN], [test x$DOXYGEN != xno])
 
-#AC_MSG_CHECKING([for bison])
-#YACC_VERSION=$($YACC --version | grep 'bison' | cut -d' ' -f4 | cut -d'.' -f1-2)
-#YACC_VERSION=$(echo "$YACC_VERSION*100" | bc | cut -d'.' -f1)
-#AC_PATH_PROGS_FEATURE_CHECK(BISON, [bison], [[test $YACC_VERSION -gt 260 && ac_cv_path_BISON=$ac_path_BISON ac_path_BISON_found=: ]], [AC_MSG_ERROR([Hfst requires bison version 2.6 or newer.])])
-#AC_MSG_RESULT([$ac_cv_path_BISON])
-
 # Checks for libraries
 
-#AC_CHECK_LIB([xml2], [main])
 AC_LANG_PUSH([C++])
 AS_IF([test "x$with_openfst" != "xno" -a "x$enable_mingw" == "xno"], 
       [AC_CHECK_LIB([dl], [main])])
-#      [AC_CHECK_LIB([fst], [main], [],
-#                 [AC_MSG_FAILURE([openfst test failed (--without-openfst to disable)])])])
+
 AS_IF([test "x$with_openfst" != "xno"], 
       [AC_CHECK_LIB([pthread], [main])]
       [AC_CHECK_LIB([m], [main])])
-#AS_IF([test "x$with_sfst" != "xno" -a "x$enable_windows" == "xno"],
-#      [AC_CHECK_LIB([sfst], [main])]
-#      [AC_CHECK_LIB([sfst1], [main])])
+
 AS_IF([test "x$ac_cv_lib_sfst_main" == xno -a "x$ac_cv_lib_sfst1_main" == xno],
       [AC_MSG_FAILURE([sfst tests failed (--without-sfst to disable)])])
 AC_LANG_POP
@@ -621,12 +625,6 @@ if test x$ac_cv_lib_ncurses_tgetent != xyes ; then
    fi
 fi
 
-#AS_IF([test "x$with_foma" != "xno" -a "x$enable_windows" == "xno"],
-#      [AC_CHECK_LIB([z], [main], [], [AC_MSG_FAILURE([foma test failed because zlib.h was not found (--without-foma to disable)])])])
-#AS_IF([test "x$enable_hfst_xfst" != "xno" -a "x$enable_windows" == "xno"],
-#      [AC_CHECK_LIB([z], [main], [], [AC_MSG_FAILURE([foma test failed because zlib.h was not found (--enable-hfst-xfst=no to disable)])])])
-#      [AC_CHECK_LIB([foma], [main], [],
-#                    [AC_MSG_FAILURE([foma test failed (--without-foma to disable)])])])
 AC_LANG_POP
 
 AS_IF([test "x$with_unicode_handler" = "xglib"],
@@ -646,22 +644,11 @@ AS_IF([test "x$with_readline" = "xyes"],
 
 # Checks for header files
 AC_CHECK_HEADERS([limits.h stdlib.h string.h error.h glob.h locale.h langinfo.h])
-#AC_CHECK_HEADERS([libxml/tree.h libxml/mem.h])
-AC_LANG_PUSH([C++])
 
-# Whether std::unordered_map and std::unordered_set should be used
-AS_IF([echo "$CXXFLAGS" | grep '\-std' | grep -E '((gnu\+\+)|(c\+\+))((11)|(0x)|(14)|(1y)|(17)|(1z))' > /dev/null 2> /dev/null], [std_xx_11_requested=yes])
+AC_LANG_PUSH([C++])
 
-AC_CHECK_HEADERS([tr1/unordered_map], [], [],
-[#ifdef HAVE_TR1_UNORDERED_MAP
-#include <tr1/unordered_map>
-#endif
-])
-AC_CHECK_HEADERS([tr1/unordered_set], [], [],
-[#ifdef HAVE_TR1_UNORDERED_SET
-#include <tr1/unordered_set>
-#endif
-])
+# Always use c++11 (flag 'c++0x' is understood also by older compilers)
+AS_IF([echo "$CXXFLAGS" | grep '\-std' | grep -E '((gnu\+\+)|(c\+\+))((11)|(0x)|(14)|(1y)|(17)|(1z))' > /dev/null 2> /dev/null], [], [CXXFLAGS="$CXXFLAGS -std=c++0x"])
 
 AC_CHECK_HEADERS([unordered_map], [], [],
 [#ifdef HAVE_UNORDERED_MAP
@@ -674,34 +661,20 @@ AC_CHECK_HEADERS([unordered_set], [], [],
 #endif
 ])
 
-AS_IF([test "$std_xx_11_requested" = "yes" -a "x$ac_cv_header_unordered_map" = "xno"],
-            [AC_MSG_ERROR(["<unordered_map> not found, it is needed in c++ standard 11"])])
-AS_IF([test "$std_xx_11_requested" = "yes" -a "x$ac_cv_header_unordered_set" = "xno"],
-            [AC_MSG_ERROR(["<unordered_set> not found, it is needed in c++ standard 11"])])
-
-AS_IF([test "x$ac_cv_header_tr1_unordered_map" = "xno" -a "x$ac_cv_header_unordered_map" = "xno"],
-            [AC_MSG_ERROR(["unordered_map not found"])])
-AS_IF([test "x$ac_cv_header_tr1_unordered_set" = "xno" -a "x$ac_cv_header_unordered_set" = "xno"],
-            [AC_MSG_ERROR(["unordered_set not found"])])
-
-# Define if tr1/unordered_maps and _sets should be used
-AS_IF([test "$std_xx_11_requested" != "yes" -a "x$ac_cv_header_tr1_unordered_map" != "xno"], AC_DEFINE([USE_TR1_UNORDERED_MAP], [1], [Use tr1/unordered_map]))
-AS_IF([test "$std_xx_11_requested" != "yes" -a "x$ac_cv_header_tr1_unordered_set" != "xno"], AC_DEFINE([USE_TR1_UNORDERED_SET], [1], [Use tr1/unordered_set]))
-
+AS_IF([test "x$ac_cv_header_unordered_map" = "xno"],
+            [AC_MSG_ERROR(["<unordered_map> not found, it is needed in c++ standard 11 (or higher)"])])
+AS_IF([test "x$ac_cv_header_unordered_set" = "xno"],
+            [AC_MSG_ERROR(["<unordered_set> not found, it is needed in c++ standard 11 (or higher)"])])
 
 AC_CHECK_HEADERS([ext/slist])
 
-#AS_IF([test "x$with_sfst" != "xno" -a "x$enable_windows" == "xno"],
-#      [AC_CHECK_HEADERS([sfst/fst.h sfst1/fst.h])])
 AS_IF([test "x$with_sfst" != "xno"],
       [AC_CHECK_HEADERS([backward/hash_set ext/hash_set hash_set])]
       [AC_CHECK_HEADERS([backward/hash_map ext/hash_map hash_map])])
-#AS_IF([test "x$with_openfst" != "xno" -a "x$enable_windows" == "xno"],
-#      [AC_CHECK_HEADERS([fst/fstlib.h])])
+
 AC_LANG_POP
 AC_LANG_PUSH([C])
-#AS_IF([test "x$with_foma" != "xno" -a "x$enable_windows" == "xno"],
-#      [AC_CHECK_HEADERS([fomalib.h])])
+
 AC_LANG_POP
 AC_LANG_PUSH([C])
 AS_IF([test "x$with_readline" = "xyes"],
@@ -805,7 +778,7 @@ cat <<EOF
     *                 name: $enable_name
     *                 optimized-lookup: $enable_optimized_lookup
     *                 pmatch: $enable_pmatch
-    *                 proc2: $enable_proc2
+    *                 tokenize: $enable_tokenize
     *                 proc: $enable_proc
     *                 project: $enable_project
     *                 prune-alphabet: $enable_prune_alphabet
@@ -832,15 +805,9 @@ EOF
 dnl stick important warnings to bottom
 dnl important licensing information
 dnl according to GNU GPLv2 strict (not plus) is incompatible with Apache
-# No more relevant with the new version of foma
-#AS_IF([test "x$with_foma" != "xno" -a "x$with_openfst" != "xno"],
-#      [AC_MSG_WARN([foma licensing exception is limited to HFST team’s redistribution; if you consider GPLv2 strict and Apache licence conflicting you may not _redistribute_ your binaries])])
 dnl hope end users never disable ofst 
 AS_IF([test "x$with_openfst" == "xno"],
       [AC_MSG_WARN([Disabling openfst backend will severely cripple libhfst])])
-dnl without foma, foma-based scripts cannot work
-#AS_IF([test "x$FOMACLI" = "xfalse"],
-#      [AC_MSG_WARN([using hfst-xfst is disabled because foma binary was not found])])
 dnl HFST's case mapping in corpus tools is mainly MES-2 set with other characters
 dnl added as we go
 AS_IF([test "x$with_unicode_handler" = "xhfst"],
@@ -851,14 +818,10 @@ AS_IF([test "x$enable_lexc" == "xno"],
 AS_IF([test "x$enable_twolc" == "xno"],
       [AC_MSG_WARN([hfst-twolc is not enabled; you will not be able to compile xerox twolc grammars; enable using --enable-twolc])])
 
- # -a "x$enable_mingw" == "xno"],
 AS_IF([test "x$enable_tagger" == "xno"],
       [AC_MSG_WARN([hfst-train-tagger and hfst-tag are not enabled; you will not be able to train and use taggers; enable using --enable-tagger])])
 AS_IF([test "x$enable_calculate" == "xno"],
       [AC_MSG_WARN([hfst-calculate is not enabled; you will not be able to compile SFST-PL scripts; enable using --enable-calculate])])
 AS_IF([test "x$enable_xfst" == "xno"],
       [AC_MSG_WARN([hfst-xfst is not enabled; you will not be able to compile XFST scripts; enable using --enable-xfst])])
-#AS_IF([test "x$warn_about_missing_zlib" != "xno"],
-#      [AC_MSG_WARN([hfst-foma was disabled because zlib was not found; you will not be able to compile XFST scripts with foma wrapper])])
-#AS_IF([test "x$generate_foma_wrapper" == "xno" -a "x$warn_about_missing_zlib" == "xno"], 
-#      [AC_MSG_WARN([hfst-foma is not enabled; you will not be able to compile XFST scripts with foma wrapper; enable using --with-foma (--enable-foma-wrapper)])])
+AC_MSG_WARN([Python bindings for HFST are not under autotools; see python/README for instructions about how to build and install them])
diff --git a/Doxyfile b/doc/Doxyfile
similarity index 99%
rename from Doxyfile
rename to doc/Doxyfile
index c268b75..7789a4f 100644
--- a/Doxyfile
+++ b/doc/Doxyfile
@@ -25,13 +25,13 @@ DOXYFILE_ENCODING      = UTF-8
 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded
 # by quotes) that should identify the project.
 
-PROJECT_NAME           = "HFST - Helsinki Finite-State Transducer Technology API"
+PROJECT_NAME           = "HFST - Helsinki Finite-State Transducer Technology - C++ API"
 
 # The PROJECT_NUMBER tag can be used to enter a project or revision number.
 # This could be handy for archiving the generated documentation or
 # if some version control system is used.
 
-PROJECT_NUMBER         = "version 3.8.3"
+PROJECT_NUMBER         = "version 3.9.1"
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
 # base path where the generated documentation will be put.
@@ -568,7 +568,7 @@ WARN_LOGFILE           =
 # directories like "/usr/src/myproject". Separate the files or directories
 # with spaces.
 
-INPUT                  = "libhfst/src/"	"libhfst/src/implementations/" "libhfst/src/implementations/optimized-lookup" "api_documentation.dox"
+INPUT                  = "../libhfst/src/"	"../libhfst/src/implementations/" "../libhfst/src/implementations/optimized-lookup" "api_documentation.dox"
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
@@ -597,7 +597,7 @@ RECURSIVE              = NO
 # excluded from the INPUT source files. This way you can easily exclude a
 # subdirectory from a directory tree whose root is specified with the INPUT tag.
 
-EXCLUDE                = libhfst/src/implementations/HfstInternalTransducer.cc libhfst/src/implementations/HfstInternalTransducer.h
+EXCLUDE                = ../libhfst/src/implementations/HfstInternalTransducer.cc ../libhfst/src/implementations/HfstInternalTransducer.h ../libhfst/src/hfst_apply_schemas.h ../libhfst/src/HfstApply.cc
 
 # The EXCLUDE_SYMLINKS tag can be used select whether or not files or
 # directories that are symbolic links (a Unix filesystem feature) are excluded
diff --git a/api_documentation.dox b/doc/api_documentation.dox
similarity index 95%
rename from api_documentation.dox
rename to doc/api_documentation.dox
index 3419a35..3f20582 100644
--- a/api_documentation.dox
+++ b/doc/api_documentation.dox
@@ -156,8 +156,10 @@ The same with command line tools:
   /** \page InstallHfst.html Installing the HFST API library
 
       You can download the source code packet hfst-3.x.x.tar.gz
-      from sourceforge
+      from Sourceforge
       <a href="http://sourceforge.net/projects/hfst/files/hfst/">download page</a>.
+      (NOTE: we have officially moved to <a href="https://hfst.github.io/index.html">Github</a>,
+      but for the time being the latest release is still available on Sourceforge.)
       Extract all files with the command
 
 \verbatim
@@ -170,37 +172,6 @@ tar -xzvf hfst-3.x.x.tar.gz
 autoreconf -i && ./configure && make && make install
 \endverbatim
 
-      To successfully use the HFST library, you should have at least one 
-      of the backend libraries installed on your computer:
-      <a href="http://www.ims.uni-stuttgart.de/projekte/gramotron/SOFTWARE/SFST.html">SFST</a> 
-      (version 1.4.6g), 
-      <a href="http://www.openfst.org">OpenFst</a> (version 1.3.1) or 
-      <a href="http://code.google.com/p/foma/">foma</a> (version 0.9.16alpha).
-      The in-built HfstTransitionGraph format
-      is very limited in its operations and used mainly for conversion 
-      between different binary and text formats. The HFST optimized lookup
-      transducer format also comes with the source code,
-      but it has also a very limited selection of operations 
-      as its main purpose is fast lookup of strings.
-      By default, the configure script will make HFST compile the interface
-      with OpenFst as the only backend implementation.
-      If you do or do not want an implementation, you can specify it 
-      with configure options. For example
-
-\verbatim
-./configure --with-sfst=true --with-openfst=false
-\endverbatim
-
-      will exclude the OpenFst and include the SFST implementation. 
-      If an implementation that was not included when compiling the interface is requested,
-      e.g in the case above,
-
-\verbatim
-HfstTransducer tr("a", "b", FOMA_TYPE);
-\endverbatim
-
-      an ImplementationTypeNotAvailableException is thrown.
-
       The command 'make' will compile all the API and command line tools and 'install'
       will install them to /usr/local. If you would rather install in eg. your home directory, 
       you can tell ./configure:
@@ -942,6 +913,8 @@ The examples given in this documentation use
 
    - <a href="http://sourceforge.net/projects/hfst/files/hfst">Download</a> and 
    <a href="InstallHfst.html">install</a> the HFST interface and command line tools
+   (NOTE: we have officially moved to <a href="https://hfst.github.io/index.html">Gihub</a>,
+   but for the time being the latest release is still available on Sourceforge.)
 
 
 \section links Links
diff --git a/libhfst/COPYING b/libhfst/COPYING
new file mode 100644
index 0000000..65c5ca8
--- /dev/null
+++ b/libhfst/COPYING
@@ -0,0 +1,165 @@
+                   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/libhfst/Makefile.am b/libhfst/Makefile.am
index ed44a7e..5b688c5 100644
--- a/libhfst/Makefile.am
+++ b/libhfst/Makefile.am
@@ -1,19 +1,13 @@
 ## Process this file with automake to produce Makefile.in
 
-## Copyright (C) 2010 University of Helsinki
-
-## 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.
-
-## You should have received a copy of the GNU General Public License
-## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# Copyright (c) 2016 University of Helsinki                          
+#                                                                    
+# This library is free software; you can redistribute it and/or      
+# modify it under the terms of the GNU Lesser General Public         
+# License as published by the Free Software Foundation; either       
+# version 3 of the License, or (at your option) any later version. 
+# See the file COPYING included with this distribution for more      
+# information. 
 
 SUBDIRS = src
 
diff --git a/libhfst/src/FormatSpecifiers.h b/libhfst/src/FormatSpecifiers.h
index ce18500..f6a4898 100644
--- a/libhfst/src/FormatSpecifiers.h
+++ b/libhfst/src/FormatSpecifiers.h
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #ifndef _FORMAT_SPECIFIERS_H_
 #define _FORMAT_SPECIFIERS_H_
diff --git a/libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc b/libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc
index 93ba485..baff598 100644
--- a/libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc
+++ b/libhfst/src/HarmonizeUnknownAndIdentitySymbols.cc
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #include "HarmonizeUnknownAndIdentitySymbols.h"
 #include "HfstTransducer.h"
 // --- HfstTransitionGraph.h is enough
diff --git a/libhfst/src/HarmonizeUnknownAndIdentitySymbols.h b/libhfst/src/HarmonizeUnknownAndIdentitySymbols.h
index d2fd85a..3aee34f 100644
--- a/libhfst/src/HarmonizeUnknownAndIdentitySymbols.h
+++ b/libhfst/src/HarmonizeUnknownAndIdentitySymbols.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 // --- licensing stuff here?
 
 #ifndef HARMONIZE_UNKNOWN_AND_IDENTITY_SYMBOLS
diff --git a/libhfst/src/HfstApply.cc b/libhfst/src/HfstApply.cc
index 7b333ff..956f44d 100644
--- a/libhfst/src/HfstApply.cc
+++ b/libhfst/src/HfstApply.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 /* \file HfstApply.cc 
    \brief HFST transducer functions that take several parameters are 
diff --git a/libhfst/src/HfstDataTypes.cc b/libhfst/src/HfstDataTypes.cc
index f716889..9ab82a5 100644
--- a/libhfst/src/HfstDataTypes.cc
+++ b/libhfst/src/HfstDataTypes.cc
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #include "HfstDataTypes.h"
 
 namespace hfst 
diff --git a/libhfst/src/HfstDataTypes.h b/libhfst/src/HfstDataTypes.h
index 68908fc..14ee911 100644
--- a/libhfst/src/HfstDataTypes.h
+++ b/libhfst/src/HfstDataTypes.h
@@ -1,14 +1,12 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #ifndef _HFST_DATA_TYPES_H_
 #define _HFST_DATA_TYPES_H_
 
diff --git a/libhfst/src/HfstEpsilonHandler.cc b/libhfst/src/HfstEpsilonHandler.cc
index 512ee4c..76a168c 100644
--- a/libhfst/src/HfstEpsilonHandler.cc
+++ b/libhfst/src/HfstEpsilonHandler.cc
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #include "HfstEpsilonHandler.h"
 
 namespace hfst {
diff --git a/libhfst/src/HfstEpsilonHandler.h b/libhfst/src/HfstEpsilonHandler.h
index 1eb2224..8a7ed5c 100644
--- a/libhfst/src/HfstEpsilonHandler.h
+++ b/libhfst/src/HfstEpsilonHandler.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #ifndef _HFST_EPSILON_HANDLER_H_
 #define _HFST_EPSILON_HANDLER_H_
 
diff --git a/libhfst/src/HfstExceptionDefs.cc b/libhfst/src/HfstExceptionDefs.cc
index 17e0e79..f5d7bfc 100644
--- a/libhfst/src/HfstExceptionDefs.cc
+++ b/libhfst/src/HfstExceptionDefs.cc
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #include "HfstExceptionDefs.h"
 
 std::string hfst_exception;
@@ -40,6 +49,8 @@ HFST_EXCEPTION_CHILD_DEFINITION(HfstTransducerTypeMismatchException);
 
 HFST_EXCEPTION_CHILD_DEFINITION(ImplementationTypeNotAvailableException);
 
+HFST_EXCEPTION_CHILD_DEFINITION(FileIsInGZFormatException);
+
 HFST_EXCEPTION_CHILD_DEFINITION(FunctionNotImplementedException);
 
 HFST_EXCEPTION_CHILD_DEFINITION(StreamNotReadableException);
diff --git a/libhfst/src/HfstExceptionDefs.h b/libhfst/src/HfstExceptionDefs.h
index bd272a2..34f4c78 100644
--- a/libhfst/src/HfstExceptionDefs.h
+++ b/libhfst/src/HfstExceptionDefs.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #ifndef _HFST_EXCEPTION_DEFS_H_
 #define _HFST_EXCEPTION_DEFS_H_
 
@@ -197,6 +206,8 @@ try {
 */
 HFST_EXCEPTION_CHILD_DECLARATION(NotTransducerStreamException);
 
+HFST_EXCEPTION_CHILD_DECLARATION(FileIsInGZFormatException);
+
 /** \brief The stream is not in valid AT&T format. 
 
     An example. The file "testfile.att" contains
diff --git a/libhfst/src/HfstExceptions.cc b/libhfst/src/HfstExceptions.cc
deleted file mode 100644
index 6af1815..0000000
--- a/libhfst/src/HfstExceptions.cc
+++ /dev/null
@@ -1,20 +0,0 @@
-#include "HfstExceptions.h"
-
-namespace hfst {
-  namespace exceptions {
-
-    HfstInterfaceException::HfstInterfaceException():
-      message(std::string())
-    { }
-
-    HfstInterfaceException::HfstInterfaceException(std::string msg):
-      message(msg)
-    { }
-
-    std::string HfstInterfaceException::get_message() { 
-      return message; 
-    }
-
-  }
-}
-
diff --git a/libhfst/src/HfstExceptions.h b/libhfst/src/HfstExceptions.h
deleted file mode 100644
index 94577ed..0000000
--- a/libhfst/src/HfstExceptions.h
+++ /dev/null
@@ -1,385 +0,0 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
-
-#ifndef _HFST_EXCEPTIONS_H_
-#define _HFST_EXCEPTIONS_H_
-
-#include <string>
-
-/** @file HfstExceptions.h
-    \brief Exceptions that are thrown by the HFST API. */
-
-namespace hfst
-{ 
-
-  /** \brief Namespace for HFST exceptions. */
-namespace exceptions
-{
-
-
-/** \brief A superclass for all HFST exceptions. */
-class HfstInterfaceException {
- protected:
-  std::string message;
- public:
-  /** \brief Create an exception with an empty message. */
-  HfstInterfaceException();
-  /** \brief Create an exception with message \a msg. */
-  HfstInterfaceException(const std::string msg);
-  /** \brief Get the exception message. */
-  std::string get_message();
-};
-
-
-/** \brief A superclass for all exceptions that are thrown when an 
-    argument does not satisfy preconditions. */
-class HfstArgumentException :
-public HfstInterfaceException {};
-
-/** \brief A superclass for exceptions that are thrown when 
-    a transducer in AT&T format cannot be parsed or a binary
-    transducer does not follow the proper format. */
-class HfstInputException :
-public HfstInterfaceException {};
-
-/** \brief A stream cannot be read or written or is not open.
-
-An example:
-\verbatim
-// Read a transducer from file "testfile1" and write it to file "testfile2".
-try {
-  HfstInputStream in("testfile1");
-  HfstTransducer t(in);
-  HfstOutputStream out("testfile2");
-  out << t;
-} 
-// File does not exist or some other error has happened
-catch (HfstStreamException e) {
-  fprintf(stderr, "Error in file handling.\n");
-  exit(1);
-}
-// The file does not contain transducers or the transducer header is malformed
-catch (HfstInputException e) {
-  fprintf(stderr, "Error in transducer format.\n");
-  exit(1);
-}
-\endverbatim
-*/
-class HfstStreamException :
-public HfstInterfaceException {};
-
-/** \brief The library required by the implementation type requested 
-    is not linked to HFST. 
-
-An example:
-\verbatim
-try {
-  HfstTransducer("foo", "bar", type);
-} catch (ImplementationTypeNotAvailableException e) {
-  fprintf(stderr, "ERROR: Type requested is not available.\n");
-} 
-\endverbatim
-*/
-class ImplementationTypeNotAvailableException :
-public HfstInterfaceException {};
-
-/** \brief Function has not been implemented (yet). */
-class FunctionNotImplementedException :
-protected HfstInterfaceException {
- public:
- FunctionNotImplementedException(const std::string msg) : 
-  HfstInterfaceException(msg) {};
- FunctionNotImplementedException() : 
-  HfstInterfaceException() {};
-};
-
-
-
-/** \brief Stream cannot be read. 
-
-An example:
-\verbatim
-try {
-  HfstInputStream in("foofile");
-} catch (StreamNotReadableException e) {
-  fprintf(stderr, "ERROR: file cannot be read.\n");
-}  
-\endverbatim
-*/
-class StreamNotReadableException :
-public HfstStreamException {};
-
-/** \brief Stream cannot be written. 
-
-An example:
-\verbatim
-try {
-  HfstTransducer tr("foo", FOMA_TYPE);
-  HfstOutputStream out("testfile");
-  out << tr;
-} catch (StreamCannotBeWrittenException e) {
-  fprintf(stderr, "ERROR: file cannot be written.\n");
-}  
-\endverbatim
-*/
-class StreamCannotBeWrittenException :
-public HfstStreamException {};
-
-/** \brief Stream is closed. 
-
-    An example:
-
-\verbatim
-try {
-  HfstTransducer tr("foo", LOG_OPENFST_TYPE);
-  HfstOutputStream out("testfile");
-  out.close();
-  out << tr;
-} catch (StreamIsClosedException e) {
-  fprintf(stderr, "ERROR: stream to file is closed.\n");
-}  
-/endverbatim
-*/
-class StreamIsClosedException :
-public HfstStreamException {};
-
-
-
-/** \brief Transducer is cyclic. 
-
-    thrown by hfst::HfstTransducer::extract_paths. An example:
-\verbatim
-HfstTransducer transducer("a", "b", TROPICAL_OPENFST_TYPE);
-transducer.repeat_star();
-try {
-  WeightedPaths<float>::Set results;
-  transducer.extract_paths(results);
-  fprintf(stderr, "The transducer has %i paths\n", results.size());
-} catch (TransducerIsCyclicException e) {
-    fprintf(stderr, "The transducer is cyclic "
-            " and has an infinite number of paths.\n");
-}
-\endverbatim
-*/
-class TransducerIsCyclicException :
-public HfstArgumentException {};
-
-/** \brief The stream does not contain transducers. 
-
-    An example. The file "foofile" contains
-\verbatim
-This is a text file.
-Here is another line.
-The file ends here.
-\endverbatim
-
-When we try to read it, an exception will be thrown:
-
-\verbatim
-try {
-  HfstInputStream in("foofile");
-} catch (NotTransducerStreamException e) {
-  fprintf(stderr, "ERROR: file does not contain transducers.\n");
-}  
-\endverbatim
-*/
-class NotTransducerStreamException :
-public HfstInputException {};
-
-/** \brief The stream is not in valid AT&T format. 
-
-    An example. The file "testfile.att" contains
-
-\verbatim
-0       1       a      b
-1
-c
-\verbatim
-
-When we try to read it, an exception is thrown:
-
-\verbatim
-std::vector<HfstTransducer> transducers;
-FILE * ifile = fopen("testfile.att", "rb");
-try {
-  while (not eof(ifile))
-    {
-    HfstTransducer t(ifile, TROPICAL_OPENFST_TYPE, "epsilon");
-    transducers.push_back(t);
-    printf("read one transducer\n");
-    }
-} catch (NotValidAttFormatException e) {
-    printf("Error reading transducer: not valid AT&T format.\n"); }
-fclose(ifile);
-fprintf(stderr, "Read %i transducers in total.\n", (int)transducers.size());
-\endverbatim
-
-
-    thrown by 
-    hfst::HfstTransducer::HfstTransducer(FILE*,ImplementationType,const std::string&)}
-*/
-class NotValidAttFormatException :
-public HfstInputException {};
-
-/** \brief State is not final (and cannot have a final weight). 
-
-    An example:
-
-\verbatim
-HfstBasicTransducer tr;
-tr.add_state(1);
-// An exception is thrown as state number 1 is not final
-float w = tr.get_final_weight(1);
-\endverbatim
-
-You should use function is_final_state if you are not sure whether a
-state is final.
-
-    Thrown by hfst::implementations::HfstTransitionGraph::get_final_weight. */
-class StateIsNotFinalException :
-public HfstArgumentException {};
-
-
-/** \brief Context transducers are not automata.
-
-    This exception is thrown by
-    hfst::rules::replace_up(HfstTransducerPair&, HfstTransducer&, bool, StringPairSet&)
-    when either context transducer does not have equivalent input and
-    output symbols in all its transitions.
-
-    An example:
-
-\verbatim
-ImplementationType type = SFST_TYPE;
-// The second context transducer is 
-HfstTransducerPair contexts(HfstTransducer("c", type),
-                            HfstTransducer("c", "d", type));
-HfstTransducer mapping("a", "b", type);
-StringPairSet alphabet;
-alphabet.insert(StringPair("a", "a"));
-alphabet.insert(StringPair("b", "b"));
-alphabet.insert(StringPair("c", "c"));
-alphabet.insert(StringPair("d", "d"));
-hfst::rules::replace_up(contexts, mapping, true, alphabet);
-\endverbatim
-
-*/
-class ContextTransducersAreNotAutomataException :
-public HfstArgumentException {};
-
-/** \brief The StateId argument is not valid.
-
-    An example:
-
-\verbatim
-HfstBasicTransducer tr;
-tr.add_state(1);
-// An exception is thrown as there is no state number 2
-float w = tr.get_final_weight(2);
-\endverbatim
-*/
-class StateIndexOutOfBoundsException :
-public HfstArgumentException {};
-
-/** \brief Transducer has a malformed HFST header. 
-
-    Thrown by hfst::HfstTransducer(HfstInputStream&). */
-class TransducerHeaderException :
-public HfstInputException {};
-
-/** \brief An OpenFst transducer does not have an input symbol table. 
-
-    When converting from OpenFst to tropical HFST, the OpenFst transducer
-    must have at least an input symbol table. If the output symbol table
-    is missing, it is assumed to be equivalent to the input symbol table.
-
-    Thrown by hfst::HfstTransducer(HfstInputStream&)
-*/
-class MissingOpenFstInputSymbolTableException :
-public HfstInputException {};
-
-/** \brief The calling and/or called transducer do not have the same type. 
-
-An example:
-\verbatim
-HfstTransducer foo("foo", SFST_TYPE);
-HfstTransducer bar("bar", FOMA_TYPE);
-foo.disjunct(bar);   // an exception is thrown 
-\endverbatim
-*/
-class TransducerTypeMismatchException :
-public HfstInterfaceException {};
-
-
-/** \brief The set of transducer pairs is empty. 
-
-    Thrown by rule functions in namespace #hfst::rules. An example:
-
-\verbatim
-    HfstTransducerPairVector contexts; // contexts is empty
-    HfstTransducer rest = hfst::rules::restriction
-      (contexts, mapping, alphabet, twol_type, direction); 
-\endverbatim
-*/
-class EmptySetOfContextsException :
-public HfstArgumentException {};
-
-
-/* \brief The type of a transducer is not specified.
-
-   This exception is thrown when an ImplementationType argument
-   is ERROR_TYPE.
-
-   @see hfst::ImplementationType
- */
-class SpecifiedTypeRequiredException :
-public HfstInterfaceException {};
-
-
-
-/** \brief An error happened probably due to a bug in the HFST code. */
-class HfstFatalException :
-public HfstInterfaceException {};
-
-/** \brief Transducer has wrong type. 
-
-    This exception suggests that an HfstTransducer has not been properly
-    initialized, probably due to a bug in the HFST library. Alternatively
-    the default constructor of HfstTransducer has been called at some point. 
-
-    @see hfst::HfstTransducer() */
-class TransducerHasWrongTypeException :
-public HfstFatalException {};
-
-/** \brief Symbol is being redefined.
-
-    This exception suggests that there is something wrong in the HFST code. */
-class SymbolRedefinedException : 
-public HfstFatalException {};
-
-/** \brief Transducer has no start state.
-
-This exception suggests that there is something wrong in the HFST code. */
-class TransducerHasNoStartStateException :
-public HfstFatalException {};
-
-/** \brief Transducer has more than one start state. 
-
-This exception suggests that there is something wrong in the HFST code. */
-class TransducerHasMoreThanOneStartStateException :
-public HfstFatalException {};
-
-class MetadataException :
-    public HfstInterfaceException {};
-
-} }
-#endif
diff --git a/libhfst/src/HfstExtractStrings.h b/libhfst/src/HfstExtractStrings.h
index 5163ec4..2aab044 100644
--- a/libhfst/src/HfstExtractStrings.h
+++ b/libhfst/src/HfstExtractStrings.h
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #ifndef _EXTRACT_STRINGS_H_
 #define _EXTRACT_STRINGS_H_
diff --git a/libhfst/src/HfstFlagDiacritics.cc b/libhfst/src/HfstFlagDiacritics.cc
index f9257d1..384437e 100644
--- a/libhfst/src/HfstFlagDiacritics.cc
+++ b/libhfst/src/HfstFlagDiacritics.cc
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #include "HfstFlagDiacritics.h"
 
 #ifndef MAIN_TEST
diff --git a/libhfst/src/HfstFlagDiacritics.h b/libhfst/src/HfstFlagDiacritics.h
index 3e6e329..46a4435 100644
--- a/libhfst/src/HfstFlagDiacritics.h
+++ b/libhfst/src/HfstFlagDiacritics.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #ifndef _FLAG_DIACRITICS_H_
 #define _FLAG_DIACRITICS_H_
 
diff --git a/libhfst/src/HfstInputStream.cc b/libhfst/src/HfstInputStream.cc
index f2e8a01..1c1f64c 100644
--- a/libhfst/src/HfstInputStream.cc
+++ b/libhfst/src/HfstInputStream.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 //! @FIXME: The structure of this class and its functions is disorganised.
 
@@ -589,6 +586,22 @@ namespace hfst
       case '#':  // foma
         return FOMA_;
         break;
+      case (char)0x1f:  // native foma (gz magic number is 1F 8B 08)
+        {
+          char c0 = (char)stream_get();
+          if (stream_eof()) { HFST_THROW(EndOfStreamException); }
+          char c1 = (char)stream_get();
+          if (stream_eof()) { HFST_THROW(EndOfStreamException); }
+          char c2 = (char)stream_get();
+          if (stream_eof()) { HFST_THROW(EndOfStreamException); }
+          stream_unget(c2);
+          stream_unget(c1);
+          stream_unget(c0);
+          if (c0 == (char)0x1f && c1 == (char)0x8b && c2 == (char)0x08)
+            HFST_THROW(FileIsInGZFormatException);
+          else
+            HFST_THROW(NotTransducerStreamException);
+        }
       case 'a':  // SFST
         return SFST_;
         break;
@@ -930,15 +943,10 @@ namespace hfst
     bytes_to_skip(0), filename(std::string()), has_hfst_header(false),
     hfst_version_2_weighted_transducer(false)
   {
-    try { 
-      input_stream = &std::cin;
-      if (stream_eof())
-        HFST_THROW(EndOfStreamException);
-      type = stream_fst_type();
-    }
-
-    catch (const HfstException e)
-    { throw e; }
+    input_stream = &std::cin;
+    if (stream_eof())
+      HFST_THROW(EndOfStreamException);
+    type = stream_fst_type();
 
     if ( ! HfstTransducer::is_implementation_type_available(type)) {
       HFST_THROW(ImplementationTypeNotAvailableException);
@@ -1001,91 +1009,87 @@ namespace hfst
     bytes_to_skip(0), filename(std::string(filename)), has_hfst_header(false),
     hfst_version_2_weighted_transducer(false)
   {
-    try { 
-      if (strcmp("",filename.c_str()) != 0) {
-        std::ifstream ifs(filename.c_str());
-        if (ifs.fail())
-          HFST_THROW_MESSAGE(NotTransducerStreamException, 
-                             "file could not be opened");
-        input_stream = &ifs;
-        if (stream_eof())
-          HFST_THROW(EndOfStreamException);
-        type = stream_fst_type();
-      }
-      else {
-        input_stream = &std::cin;
-        if (stream_eof())
-          HFST_THROW(EndOfStreamException);
-        type = stream_fst_type();
-      }
+    if (strcmp("",filename.c_str()) != 0) {
+      std::ifstream ifs(filename.c_str());
+      if (ifs.fail())
+        HFST_THROW_MESSAGE(NotTransducerStreamException, 
+                           "file could not be opened");
+      input_stream = &ifs;
+      if (stream_eof())
+        HFST_THROW(EndOfStreamException);
+      type = stream_fst_type();
     }
-
-    catch( const HfstException e)
-      { throw e; }
+    else {
+      input_stream = &std::cin;
+      if (stream_eof())
+        HFST_THROW(EndOfStreamException);
+      type = stream_fst_type();
+    }
+    
     if ( ! HfstTransducer::is_implementation_type_available(type)) {
       HFST_THROW(ImplementationTypeNotAvailableException);
     }
-
+    
     switch (type)
-    {
+      {
 #if HAVE_SFST
-    case SFST_TYPE:
-      implementation.sfst 
-        = new hfst::implementations::SfstInputStream(filename);
-      break;
+      case SFST_TYPE:
+        implementation.sfst 
+          = new hfst::implementations::SfstInputStream(filename);
+        break;
 #endif
 #if HAVE_OPENFST
-    case TROPICAL_OPENFST_TYPE:
-      if (strcmp(filename.c_str(),"") == 0) {  
-        // FIXME: this should be done in TropicalWeight layer
-        implementation.tropical_ofst = 
-          new hfst::implementations::TropicalWeightInputStream();
-      }
-      else
-        implementation.tropical_ofst = 
-          new hfst::implementations::TropicalWeightInputStream(filename);
-      break;
+      case TROPICAL_OPENFST_TYPE:
+        if (strcmp(filename.c_str(),"") == 0) {  
+          // FIXME: this should be done in TropicalWeight layer
+          implementation.tropical_ofst = 
+            new hfst::implementations::TropicalWeightInputStream();
+        }
+        else
+          implementation.tropical_ofst = 
+            new hfst::implementations::TropicalWeightInputStream(filename);
+        break;
 #if HAVE_OPENFST_LOG
-    case LOG_OPENFST_TYPE:
-      implementation.log_ofst = 
-        new hfst::implementations::LogWeightInputStream(filename);
-      break;
+      case LOG_OPENFST_TYPE:
+        implementation.log_ofst = 
+          new hfst::implementations::LogWeightInputStream(filename);
+        break;
 #endif
 #endif
 #if HAVE_FOMA
-    case FOMA_TYPE:
-      implementation.foma 
-        = new hfst::implementations::FomaInputStream(filename);
-      break;
+      case FOMA_TYPE:
+        implementation.foma 
+          = new hfst::implementations::FomaInputStream(filename);
+        break;
 #endif
 #if HAVE_XFSM
-    case XFSM_TYPE:
-      implementation.xfsm 
-        = new hfst::implementations::XfsmInputStream(filename);
-      break;
+      case XFSM_TYPE:
+        implementation.xfsm 
+          = new hfst::implementations::XfsmInputStream(filename);
+        break;
 #endif
 #if HAVE_MY_TRANSDUCER_LIBRARY
-    case MY_TRANSDUCER_LIBRARY_TYPE:
-      implementation.my_transducer_library 
-        = new hfst::implementations::MyTransducerLibraryInputStream(filename);
-      break;
+      case MY_TRANSDUCER_LIBRARY_TYPE:
+        implementation.my_transducer_library 
+          = new hfst::implementations::MyTransducerLibraryInputStream(filename);
+        break;
 #endif
-    case HFST_OL_TYPE:
-      implementation.hfst_ol 
-        = new hfst::implementations::HfstOlInputStream(filename, false);
-      break;
-    case HFST_OLW_TYPE:
-      implementation.hfst_ol 
-        = new hfst::implementations::HfstOlInputStream(filename, true);
-      break;
-    default:
-      debug_error("#10");
-
-      HFST_THROW_MESSAGE(NotTransducerStreamException,
-                         "transducer type not recognised");
-    }
+      case HFST_OL_TYPE:
+        implementation.hfst_ol 
+          = new hfst::implementations::HfstOlInputStream(filename, false);
+        break;
+      case HFST_OLW_TYPE:
+        implementation.hfst_ol 
+          = new hfst::implementations::HfstOlInputStream(filename, true);
+        break;
+      default:
+        debug_error("#10");
+        
+        HFST_THROW_MESSAGE(NotTransducerStreamException,
+                           "transducer type not recognised");
+      }
   }
-
+  
   HfstInputStream::~HfstInputStream(void)
   { 
     switch (type)
@@ -1309,6 +1313,12 @@ namespace hfst
   {
     return type;
   }
+
+  bool HfstInputStream::is_hfst_header_included(void) const
+  {
+    return has_hfst_header;
+  }
+
 }
 
 #else // MAIN_TEST was defined
diff --git a/libhfst/src/HfstInputStream.h b/libhfst/src/HfstInputStream.h
index 6b4e03e..8ce05be 100644
--- a/libhfst/src/HfstInputStream.h
+++ b/libhfst/src/HfstInputStream.h
@@ -1,14 +1,12 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #ifndef _HFST_INPUTSTREAM_H_
 #define _HFST_INPUTSTREAM_H_
 
@@ -193,8 +191,9 @@ For documentation on the HFST binary transducer format, see
       OPENFST_LOG_,
       /* An SFST transducer. */ 
       SFST_, 
-      /* A foma transducer. */ 
-      FOMA_, 
+      /* A foma transducer in unzipped format. 
+         A zipped file is handled by throwing a FileIsInGZFormatException. */ 
+      FOMA_,
       /* An xfsm transducer. */
       XFSM_,
       /* Your transducer type */
@@ -270,6 +269,8 @@ For documentation on the HFST binary transducer format, see
     transducer that has a different type than the previous ones. */
     HFSTDLL ImplementationType get_type(void) const;
 
+    HFSTDLL bool is_hfst_header_included(void) const;
+
     friend class HfstTransducer;
   };
 
diff --git a/libhfst/src/HfstLookupFlagDiacritics.cc b/libhfst/src/HfstLookupFlagDiacritics.cc
index 6ce6c04..47faab9 100644
--- a/libhfst/src/HfstLookupFlagDiacritics.cc
+++ b/libhfst/src/HfstLookupFlagDiacritics.cc
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #include "HfstLookupFlagDiacritics.h"
 
 DiacriticOperators FlagDiacriticTable::diacritic_operators;
diff --git a/libhfst/src/HfstLookupFlagDiacritics.h b/libhfst/src/HfstLookupFlagDiacritics.h
index 57c7b63..9a56634 100644
--- a/libhfst/src/HfstLookupFlagDiacritics.h
+++ b/libhfst/src/HfstLookupFlagDiacritics.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #ifndef _LOOKUP_FLAG_DIACRITICS_H_
 #define _LOOKUP_FLAG_DIACRITICS_H_
 #include <set>
diff --git a/libhfst/src/HfstOutputStream.cc b/libhfst/src/HfstOutputStream.cc
index 256b823..45b62a3 100644
--- a/libhfst/src/HfstOutputStream.cc
+++ b/libhfst/src/HfstOutputStream.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include <string>
 
diff --git a/libhfst/src/HfstOutputStream.h b/libhfst/src/HfstOutputStream.h
index c368e3d..95484cc 100644
--- a/libhfst/src/HfstOutputStream.h
+++ b/libhfst/src/HfstOutputStream.h
@@ -1,14 +1,12 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #ifndef _HFST_OUTPUTSTREAM_H_
 #define _HFST_OUTPUTSTREAM_H_
 
diff --git a/libhfst/src/HfstPrintDot.cc b/libhfst/src/HfstPrintDot.cc
index 726d8f2..0fb5d76 100644
--- a/libhfst/src/HfstPrintDot.cc
+++ b/libhfst/src/HfstPrintDot.cc
@@ -1,21 +1,11 @@
-//! @file hfst-fst2txt.cc
-//!
-//! @brief Transducer array printing command line tool
-//!
-//! @author HFST Team
-
-
-//  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, version 3 of the License.
-//
-//  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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include "HfstTransducer.h"
 using hfst::HfstTransducer;
@@ -206,7 +196,9 @@ print_dot(FILE* out, HfstTransducer& t)
                       } // if old label empty
                   } // if weighted
               } // if id pair
-            target_labels[arc->get_target_state()] = l;
+            string sl(l);
+            replace_all(sl, "\"", "\\\"");
+            target_labels[arc->get_target_state()] = sl;
             free(l);
           } // each arc
         for (std::map<HfstState,std::string>::const_iterator tl = target_labels.begin();
@@ -402,7 +394,9 @@ print_dot(std::ostream & out, HfstTransducer& t)
                       } // if old label empty
                   } // if weighted
               } // if id pair
-            target_labels[arc->get_target_state()] = l;
+            string sl(l);
+            replace_all(sl, "\"", "\\\"");
+            target_labels[arc->get_target_state()] = sl;
             free(l);
           } // each arc
         for (std::map<HfstState,std::string>::const_iterator tl = target_labels.begin();
diff --git a/libhfst/src/HfstPrintDot.h b/libhfst/src/HfstPrintDot.h
index ba2d822..cc32dbd 100644
--- a/libhfst/src/HfstPrintDot.h
+++ b/libhfst/src/HfstPrintDot.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #include "HfstTransducer.h"
 #include <iostream>
 
diff --git a/libhfst/src/HfstPrintPCKimmo.cc b/libhfst/src/HfstPrintPCKimmo.cc
index 50a73b1..83fc4d1 100644
--- a/libhfst/src/HfstPrintPCKimmo.cc
+++ b/libhfst/src/HfstPrintPCKimmo.cc
@@ -1,21 +1,11 @@
-//! @file hfst-fst2txt.cc
-//!
-//! @brief Transducer array printing command line tool
-//!
-//! @author HFST Team
-
-
-//  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, version 3 of the License.
-//
-//  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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include "HfstTransducer.h"
 using hfst::HfstTransducer;
diff --git a/libhfst/src/HfstPrintPCKimmo.h b/libhfst/src/HfstPrintPCKimmo.h
index c4bf6fa..04c5c21 100644
--- a/libhfst/src/HfstPrintPCKimmo.h
+++ b/libhfst/src/HfstPrintPCKimmo.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #include "HfstTransducer.h"
 
 namespace hfst 
diff --git a/libhfst/src/HfstRules.cc b/libhfst/src/HfstRules.cc
index 9d2552d..6fa5176 100644
--- a/libhfst/src/HfstRules.cc
+++ b/libhfst/src/HfstRules.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 #include "HfstTransducer.h"
 
 #ifndef MAIN_TEST
diff --git a/libhfst/src/HfstStrings2FstTokenizer.cc b/libhfst/src/HfstStrings2FstTokenizer.cc
index 8ac5db8..c5010f3 100644
--- a/libhfst/src/HfstStrings2FstTokenizer.cc
+++ b/libhfst/src/HfstStrings2FstTokenizer.cc
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #include "HfstStrings2FstTokenizer.h"
 #include <algorithm>
 #include <cstring>
diff --git a/libhfst/src/HfstStrings2FstTokenizer.h b/libhfst/src/HfstStrings2FstTokenizer.h
index 497c47a..655bab3 100644
--- a/libhfst/src/HfstStrings2FstTokenizer.h
+++ b/libhfst/src/HfstStrings2FstTokenizer.h
@@ -1,18 +1,14 @@
 #ifndef HEADER_STRINGS_2_FST_TOKENIZER_H
 #define HEADER_STRINGS_2_FST_TOKENIZER_H
 
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
-
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include <vector>
 #include <string>
diff --git a/libhfst/src/HfstSymbolDefs.cc b/libhfst/src/HfstSymbolDefs.cc
index 20fc130..4892997 100644
--- a/libhfst/src/HfstSymbolDefs.cc
+++ b/libhfst/src/HfstSymbolDefs.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include "HfstSymbolDefs.h"
 #include "HfstFlagDiacritics.h"
diff --git a/libhfst/src/HfstSymbolDefs.h b/libhfst/src/HfstSymbolDefs.h
index 26f5950..cf387be 100644
--- a/libhfst/src/HfstSymbolDefs.h
+++ b/libhfst/src/HfstSymbolDefs.h
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #ifndef _SYMBOL_DEFS_H_
 #define _SYMBOL_DEFS_H_
diff --git a/libhfst/src/HfstTokenizer.cc b/libhfst/src/HfstTokenizer.cc
index a27c794..9be665f 100644
--- a/libhfst/src/HfstTokenizer.cc
+++ b/libhfst/src/HfstTokenizer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include "HfstTokenizer.h"
 #include "HfstFlagDiacritics.h"
@@ -112,7 +109,7 @@ const
 { return (s == "") || (skip_symbol_set.find(s) != skip_symbol_set.end()); }
 
 void
-HfstTokenizer::add_multichar_symbol(const string& symbol)
+HfstTokenizer::add_multichar_symbol(const std::string& symbol)
 {  if (symbol == "")
     { return; }
   multi_char_symbols.add(symbol.c_str()); }
@@ -125,7 +122,7 @@ HfstTokenizer::add_skip_symbol(const std::string &symbol)
   skip_symbol_set.insert(symbol.c_str()); }
 
 StringPairVector HfstTokenizer::tokenize
-(const string& input_string) const
+(const std::string& input_string) const
 {
   check_utf8_correctness(input_string);
   StringPairVector spv;
@@ -143,7 +140,7 @@ StringPairVector HfstTokenizer::tokenize
 }
 
 StringVector HfstTokenizer::tokenize_one_level
-(const string& input_string) const
+(const std::string& input_string) const
 {
   check_utf8_correctness(input_string);
 
@@ -200,7 +197,7 @@ StringPairVector HfstTokenizer::tokenize_space_separated(const std::string & str
 }
 
 StringPairVector HfstTokenizer::tokenize
-(const string& input_string,const string& output_string) const
+(const std::string& input_string,const std::string& output_string) const
 {
   check_utf8_correctness(input_string);
   check_utf8_correctness(output_string);
@@ -238,7 +235,7 @@ StringPairVector HfstTokenizer::tokenize
 }
 
 StringPairVector HfstTokenizer::tokenize
-(const string& input_string,const string& output_string,
+(const std::string& input_string,const std::string& output_string,
  void (*warn_about_pair)(const std::pair<std::string, std::string> &symbol_pair)) const
 {
   check_utf8_correctness(input_string);
@@ -284,7 +281,7 @@ StringPairVector HfstTokenizer::tokenize
 }
 
 StringPairVector HfstTokenizer::tokenize_and_align_flag_diacritics
-(const string& input_string,const string& output_string,
+(const std::string& input_string,const std::string& output_string,
  void (*warn_about_pair)(const std::pair<std::string, std::string> &symbol_pair)) const
 {
   check_utf8_correctness(input_string);
diff --git a/libhfst/src/HfstTokenizer.h b/libhfst/src/HfstTokenizer.h
index a86d5ab..605f300 100644
--- a/libhfst/src/HfstTokenizer.h
+++ b/libhfst/src/HfstTokenizer.h
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
+// Copyright (c) 2016 University of Helsinki
 //
-//       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 <http://www.gnu.org/licenses/>.
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more
+// information.
 
 #ifndef _HFST_TOKENIZER_H_
 #define _HFST_TOKENIZER_H_
diff --git a/libhfst/src/HfstTransducer.cc b/libhfst/src/HfstTransducer.cc
index f437122..7e9a811 100644
--- a/libhfst/src/HfstTransducer.cc
+++ b/libhfst/src/HfstTransducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 /*  @file HfstTransducer.cc
     \brief Implementations of functions declared in file HfstTransducer.h 
@@ -223,15 +220,19 @@ void HfstTransducer::insert_to_alphabet(const std::string &symbol)
     if (symbol == "")
       HFST_THROW_MESSAGE(EmptyStringException, "insert_to_alphabet");
 
+#if HAVE_HFSTOL
+    if (this->type == HFST_OL_TYPE || this->type == HFST_OLW_TYPE) {
+        this->implementation.hfst_ol->include_symbol_in_alphabet(symbol);
+        return;
+    }
+#endif
     if (this->type != XFSM_TYPE)
       {
         hfst::implementations::HfstBasicTransducer * net 
           = convert_to_basic_transducer();
         net->add_symbol_to_alphabet(symbol);
         convert_to_hfst_transducer(net);
-      }
-    else
-      {
+      } else {
 #if HAVE_XFSM
         this->xfsm_interface.add_symbol_to_alphabet(this->implementation.xfsm, symbol);
 #else
@@ -940,6 +941,18 @@ HfstTransducer::HfstTransducer(const std::string& utf8_str,
     }
 }
 
+HfstTransducer::HfstTransducer(const StringVector & sv,
+                               ImplementationType type):
+    type(type), anonymous(false), is_trie(false), name("")
+{
+  StringPairVector spv;
+  for (StringVector::const_iterator it = sv.begin(); it != sv.end(); it++)
+    {
+      spv.push_back(StringPair(*it, *it));
+    }
+  *this = HfstTransducer(spv, type);
+}
+
 HfstTransducer::HfstTransducer(const StringPairVector & spv, 
                    ImplementationType type):
     type(type), anonymous(false), is_trie(false), name("")
diff --git a/libhfst/src/HfstTransducer.h b/libhfst/src/HfstTransducer.h
index d6fe257..2060856 100644
--- a/libhfst/src/HfstTransducer.h
+++ b/libhfst/src/HfstTransducer.h
@@ -1,14 +1,12 @@
-//       This program is free software: you can redistribute it and/or modify
-//       it under the terms of the GNU General Publirmoc License as published by
-//       the Free Software Foundation, version 3 of the License.
+// Copyright (c) 2016 University of Helsinki
 //
-//       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 <http://www.gnu.org/licenses/>.
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more
+// information.
+
 #ifndef _HFST_TRANSDUCER_H_
 #define _HFST_TRANSDUCER_H_
 
@@ -534,6 +532,8 @@ An example:
        by \a type. */
     HFSTDLL HfstTransducer(const StringPairVector & spv, ImplementationType type);
 
+    HFSTDLL HfstTransducer(const StringVector & sv, ImplementationType type);
+
     /* \brief Create a transducer that recognizes the concatenation of the 
        unions of string pairs in string pair sets in \a spsv. The type of
        the transducer is defined by \a type. */
@@ -1083,6 +1083,7 @@ ccc : ddd
     //! @param limit  (Currently ignored.) Number of strings to look up. 
     //!               -1 tries to look up all and may get stuck 
     //!               if infinitely ambiguous.
+    //! @param time_cutoff Number of seconds that can pass before lookup is stopped.
     //! \return{A pointer to a HfstOneLevelPaths container allocated by callee}
     //! 
     //! @see HfstTokenizer::tokenize_one_level
@@ -1108,6 +1109,7 @@ ccc : ddd
     //! @param limit  (Currently ignored.) Number of strings to look up. 
     //!               -1 tries to look up all and may get stuck 
     //!               if infinitely ambiguous.
+    //! @param time_cutoff Number of seconds that can pass before lookup is stopped.
     //! \return{A pointer to a HfstOneLevelPaths container allocated by callee}
     //!
     //!
@@ -1121,7 +1123,7 @@ ccc : ddd
     //!
     //!
     //! This function is the same as 
-    //! #lookup(const StringVector&, ssize_t) const
+    //! #lookup(const StringVector&, ssize_t, double) const
     //! but lookup is not done using a string and a tokenizer instead of
     //! a StringVector.
       HFSTDLL HfstOneLevelPaths * lookup(const HfstTokenizer& tok,
@@ -1134,7 +1136,7 @@ ccc : ddd
     //! \a tok defines how s is tokenized.
     //!
     //! The same as 
-    //! #lookup_fd(const StringVector&, ssize_t) const 
+    //! #lookup_fd(const StringVector&, ssize_t, double) const 
     //! but uses a tokenizer and a string instead of a StringVector.
     //!
     HFSTDLL HfstOneLevelPaths * lookup_fd(
diff --git a/libhfst/src/HfstXeroxRules.cc b/libhfst/src/HfstXeroxRules.cc
index b9cb4de..e818911 100644
--- a/libhfst/src/HfstXeroxRules.cc
+++ b/libhfst/src/HfstXeroxRules.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include "HfstXeroxRules.h"
 
diff --git a/libhfst/src/HfstXeroxRules.h b/libhfst/src/HfstXeroxRules.h
index dcab3af..ebe2bbc 100644
--- a/libhfst/src/HfstXeroxRules.h
+++ b/libhfst/src/HfstXeroxRules.h
@@ -1,15 +1,14 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki
 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more
+// information.
+
+#ifndef GUARD_hfst_xerox_rules_h
+#define GUARD_hfst_xerox_rules_h
 
 //#include "HfstDataTypes.h"
 //#include "HfstSymbolDefs.h"
@@ -28,16 +27,16 @@ namespace hfst
 
         // this enum is used in xre_parse.yy for the regex2pfst tool
         // it is not in the xre_parse.yy file because we couldn't make it work there
-        enum ReplaceArrow {    E_REPLACE_RIGHT,
-                            E_OPTIONAL_REPLACE_RIGHT,
-                            E_REPLACE_LEFT,
-                            E_OPTIONAL_REPLACE_LEFT,
-                            E_REPLACE_RIGHT_MARKUP,
-                            E_RTL_LONGEST_MATCH,
-                            E_RTL_SHORTEST_MATCH,
-                            E_LTR_LONGEST_MATCH,
-                            E_LTR_SHORTEST_MATCH
-                        };
+    enum ReplaceArrow {    E_REPLACE_RIGHT,
+                           E_OPTIONAL_REPLACE_RIGHT,
+                           E_REPLACE_LEFT,
+                           E_OPTIONAL_REPLACE_LEFT,
+                           E_REPLACE_RIGHT_MARKUP,
+                           E_RTL_LONGEST_MATCH,
+                           E_RTL_SHORTEST_MATCH,
+                           E_LTR_LONGEST_MATCH,
+                           E_LTR_SHORTEST_MATCH
+    };
         /**
          * \brief A rule that contains mapping and context and replace type (if any).
          * If rule is A -> B || L _ R , than mapping is cross product of transducers A and B,
@@ -300,3 +299,6 @@ namespace hfst
         HfstTransducer after( const HfstTransducer &left, const HfstTransducer &right);
     }
 }
+
+// define guard
+#endif
diff --git a/libhfst/src/HfstXeroxRulesTest.cc b/libhfst/src/HfstXeroxRulesTest.cc
index f0ec3ec..43a0cfa 100644
--- a/libhfst/src/HfstXeroxRulesTest.cc
+++ b/libhfst/src/HfstXeroxRulesTest.cc
@@ -1,3 +1,11 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 using namespace hfst;
 using namespace implementations;
diff --git a/libhfst/src/Makefile.am b/libhfst/src/Makefile.am
index 9b3701f..ad77484 100644
--- a/libhfst/src/Makefile.am
+++ b/libhfst/src/Makefile.am
@@ -1,19 +1,13 @@
 ## Process this file with automake to produce Makefile.in
 
-## Copyright (C) 2010 University of Helsinki
-
-## 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 Genera7l Public License for more details.
-
-## You should have received a copy of the GNU General Public License
-## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# Copyright (c) 2016 University of Helsinki                          
+#                                                                    
+# This library is free software; you can redistribute it and/or      
+# modify it under the terms of the GNU Lesser General Public         
+# License as published by the Free Software Foundation; either       
+# version 3 of the License, or (at your option) any later version.    
+# See the file COPYING included with this distribution for more      
+# information. 
 
 SUBDIRS=implementations parsers
 AUTOMAKE_OPTIONS=subdir-objects
@@ -30,7 +24,8 @@ HFST_SRCS=HfstApply.cc HfstInputStream.cc HfstTransducer.cc HfstOutputStream.cc\
 		  HarmonizeUnknownAndIdentitySymbols.cc \
 		  HfstLookupFlagDiacritics.cc \
 		  HfstEpsilonHandler.cc HfstStrings2FstTokenizer.cc \
-		  HfstPrintDot.cc HfstPrintPCKimmo.cc
+		  HfstPrintDot.cc HfstPrintPCKimmo.cc hfst-string-conversions.cc \
+		  string-utils.cc
 
 # libtool takes over
 libhfst_la_SOURCES = $(HFST_SRCS)
@@ -83,7 +78,6 @@ HFST_HDRS = \
 	implementations/HfstTransitionGraph.h \
 	implementations/HfstTransition.h \
 	implementations/HfstTropicalTransducerTransitionData.h \
-	implementations/HfstFastTransitionData.h \
 	implementations/compose_intersect/ComposeIntersectRulePair.h \
 	implementations/compose_intersect/ComposeIntersectLexicon.h \
 	implementations/compose_intersect/ComposeIntersectRule.h \
@@ -100,6 +94,8 @@ HFST_HDRS = \
 	HfstStrings2FstTokenizer.h \
 	HfstPrintDot.h \
 	HfstPrintPCKimmo.h \
+	string-utils.h \
+	hfst-string-conversions.h \
 	parsers/LexcCompiler.h parsers/XreCompiler.h parsers/PmatchCompiler.h \
 	hfstdll.h
 ### Add your library here ###
@@ -107,7 +103,7 @@ HFST_HDRS = \
 
 hfstinclude_HEADERS = $(HFST_HDRS)
 
-libhfst_la_LDFLAGS = -no-undefined -version-info 42:0:0
+libhfst_la_LDFLAGS = -no-undefined -version-info 45:0:0
 
 LIBHFST_TSTS=HfstApply HfstInputStream HfstTransducer \
 		HfstOutputStream HfstXeroxRules HfstRules HfstSymbolDefs \
@@ -152,4 +148,4 @@ TESTS=$(LIBHFST_TSTS)
 valgrind: valgrind-unit-tests.sh $(LIBHFST_TSTS)
 	$(SH) $(srcdir)/valgrind-unit-tests.sh $^
 
-EXTRA_DIST=HfstXeroxRulesTest.cc
\ No newline at end of file
+EXTRA_DIST=HfstXeroxRulesTest.cc
diff --git a/tools/src/hfst-string-conversions.cc b/libhfst/src/hfst-string-conversions.cc
similarity index 100%
rename from tools/src/hfst-string-conversions.cc
rename to libhfst/src/hfst-string-conversions.cc
diff --git a/tools/src/hfst-string-conversions.h b/libhfst/src/hfst-string-conversions.h
similarity index 100%
rename from tools/src/hfst-string-conversions.h
rename to libhfst/src/hfst-string-conversions.h
diff --git a/libhfst/src/hfst.h b/libhfst/src/hfst.h
index 0f0f980..c7f12a3 100644
--- a/libhfst/src/hfst.h
+++ b/libhfst/src/hfst.h
@@ -1,20 +1,16 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 /*
  * This is a convenience header file for including common HFST headers.
  */
 
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
-
- 
 #ifndef _HFST_H
 #define _HFST_H
 
diff --git a/libhfst/src/hfst_apply_schemas.h b/libhfst/src/hfst_apply_schemas.h
index c782947..1325539 100644
--- a/libhfst/src/hfst_apply_schemas.h
+++ b/libhfst/src/hfst_apply_schemas.h
@@ -1,17 +1,13 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
-/** @file hfst_apply_schemas.h
-    \brief declarations for HFST functions that take two or more parameters */
+/** \brief declarations for HFST functions that take two or more parameters */
 
 HfstTransducer &apply(
 #if HAVE_SFST
diff --git a/libhfst/src/hfstdll.h b/libhfst/src/hfstdll.h
index 82d2b0a..a01713c 100644
--- a/libhfst/src/hfstdll.h
+++ b/libhfst/src/hfstdll.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #ifndef _HFSTDLL_H_
 #define _HFSTDLL_H_
 #ifdef _MSC_VER
diff --git a/libhfst/src/implementations/ConvertFomaTransducer.cc b/libhfst/src/implementations/ConvertFomaTransducer.cc
index 7e18bd0..1d2ca9e 100644
--- a/libhfst/src/implementations/ConvertFomaTransducer.cc
+++ b/libhfst/src/implementations/ConvertFomaTransducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #if HAVE_CONFIG_H
 #  include <config.h>
diff --git a/libhfst/src/implementations/ConvertLogWeightTransducer.cc b/libhfst/src/implementations/ConvertLogWeightTransducer.cc
index d9e24b0..1f70aad 100644
--- a/libhfst/src/implementations/ConvertLogWeightTransducer.cc
+++ b/libhfst/src/implementations/ConvertLogWeightTransducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #if HAVE_CONFIG_H
 #  include <config.h>
diff --git a/libhfst/src/implementations/ConvertOlTransducer.cc b/libhfst/src/implementations/ConvertOlTransducer.cc
index 2fe3217..049b0e9 100644
--- a/libhfst/src/implementations/ConvertOlTransducer.cc
+++ b/libhfst/src/implementations/ConvertOlTransducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #if HAVE_CONFIG_H
 #  include <config.h>
@@ -459,12 +456,19 @@ HfstTransducer * ConversionFunctions::hfst_ol_to_hfst_transducer(
 {
     hfst::ImplementationType type = t->is_weighted() ? HFST_OLW_TYPE : HFST_OL_TYPE;
     HfstTransducer * retval = new HfstTransducer(type);
+    delete retval->implementation.hfst_ol;
     retval->implementation.hfst_ol = new hfst_ol::Transducer(*t);
     return retval;
 }
 
-
-
+hfst_ol::Transducer * ConversionFunctions::hfst_transducer_to_hfst_ol(
+    HfstTransducer * t)
+{
+    if (t->type != HFST_OL_TYPE && t->type != HFST_OLW_TYPE) {
+        t->convert(HFST_OLW_TYPE);
+    }
+    return t->implementation.hfst_ol;
+}
 
 }}
 #else // MAIN_TEST was defined
diff --git a/libhfst/src/implementations/ConvertSfstTransducer.cc b/libhfst/src/implementations/ConvertSfstTransducer.cc
index 351d2eb..6d0b826 100644
--- a/libhfst/src/implementations/ConvertSfstTransducer.cc
+++ b/libhfst/src/implementations/ConvertSfstTransducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #if HAVE_CONFIG_H
 #  include <config.h>
diff --git a/libhfst/src/implementations/ConvertTransducerFormat.cc b/libhfst/src/implementations/ConvertTransducerFormat.cc
index 186cfc2..2e19fc7 100644
--- a/libhfst/src/implementations/ConvertTransducerFormat.cc
+++ b/libhfst/src/implementations/ConvertTransducerFormat.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #if HAVE_CONFIG_H
 #  include <config.h>
diff --git a/libhfst/src/implementations/ConvertTransducerFormat.h b/libhfst/src/implementations/ConvertTransducerFormat.h
index b1ed34d..8b64572 100644
--- a/libhfst/src/implementations/ConvertTransducerFormat.h
+++ b/libhfst/src/implementations/ConvertTransducerFormat.h
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #ifndef _CONVERT_TRANSDUCER_H_
 #define _CONVERT_TRANSDUCER_H_
@@ -224,7 +221,6 @@ namespace implementations {
 #endif // HAVE_OPENFST 
   
   
-  
   static HfstBasicTransducer * hfst_ol_to_hfst_basic_transducer
     (hfst_ol::Transducer * t);
 
@@ -233,9 +229,10 @@ namespace implementations {
        std::string options="", HfstTransducer * harmonizer = NULL);
 
   // A way to smuggle a hfst_ol backend into a HfstTransducer wrapper
-  static HfstTransducer * hfst_ol_to_hfst_transducer
-      (hfst_ol::Transducer * t);
+  static HfstTransducer * hfst_ol_to_hfst_transducer(hfst_ol::Transducer * t);
 
+  // And the reverse
+  static hfst_ol::Transducer * hfst_transducer_to_hfst_ol(HfstTransducer * t);
 
   /* Define here the functions that convert between HfstBasicTransducer and 
      your transducer class. */
diff --git a/libhfst/src/implementations/ConvertTropicalWeightTransducer.cc b/libhfst/src/implementations/ConvertTropicalWeightTransducer.cc
index 4530c95..ca8b66b 100644
--- a/libhfst/src/implementations/ConvertTropicalWeightTransducer.cc
+++ b/libhfst/src/implementations/ConvertTropicalWeightTransducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #if HAVE_CONFIG_H
 #  include <config.h>
diff --git a/libhfst/src/implementations/ConvertXfsmTransducer.cc b/libhfst/src/implementations/ConvertXfsmTransducer.cc
index d1afc6e..2f3d1c8 100644
--- a/libhfst/src/implementations/ConvertXfsmTransducer.cc
+++ b/libhfst/src/implementations/ConvertXfsmTransducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #if HAVE_CONFIG_H
 #  include <config.h>
diff --git a/libhfst/src/implementations/FomaTransducer.cc b/libhfst/src/implementations/FomaTransducer.cc
index 585a7fb..dc56822 100644
--- a/libhfst/src/implementations/FomaTransducer.cc
+++ b/libhfst/src/implementations/FomaTransducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include "FomaTransducer.h"
 
diff --git a/libhfst/src/implementations/FomaTransducer.h b/libhfst/src/implementations/FomaTransducer.h
index 757f931..e9d72c2 100644
--- a/libhfst/src/implementations/FomaTransducer.h
+++ b/libhfst/src/implementations/FomaTransducer.h
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #ifndef _FOMA_TRANSDUCER_H_
 #define _FOMA_TRANSDUCER_H_
diff --git a/libhfst/src/implementations/HfstFastTransitionData.h b/libhfst/src/implementations/HfstFastTransitionData.h
deleted file mode 100644
index 07518df..0000000
--- a/libhfst/src/implementations/HfstFastTransitionData.h
+++ /dev/null
@@ -1,156 +0,0 @@
-
-namespace hfst {
-
-  namespace implementations {
-
-    /** @brief One implementation of template class C in HfstTransition. 
-
-        An HfstFastTransitionData has an input number and an output number
-    of type SymbolType (an unsigned int) and a weight of type WeightType 
-    (a float).
-    */
-
-    class HfstFastTransitionData {
-    public:
-      /** @brief The input and output symbol type. */
-      typedef unsigned int SymbolType;
-      /** @brief The weight type. */
-      typedef float WeightType;
-      /** @brief A set of symbols. */
-      typedef std::set<SymbolType> SymbolTypeSet;
-
-    private:
-      /* The actual transition data */
-      SymbolType input_number;
-      SymbolType output_number;
-      WeightType weight;
-
-    public:
-      
-      /** @brief Create an HfstFastTransitionData with 
-      input and output numbers and weight zero. */
-    HfstFastTransitionData(): 
-      input_number(0), output_number(0), weight(0) {}
-      
-      /** @brief Create a deep copy of HfstFastTransitionData 
-          \a data. */
-      HfstFastTransitionData
-        (const HfstFastTransitionData &data) {
-        input_number = data.input_number;
-        output_number = data.output_number;
-        weight = data.weight;
-      }
-
-      /** @brief Create an HfstFastTransitionData with 
-          input number \a inumber, output number \a onumber 
-          and weight \a weight. */
-      HfstFastTransitionData(SymbolType inumber,
-                 SymbolType onumber,
-                 WeightType weight) {
-        input_number = inumber;
-        output_number = onumber;
-        this->weight = weight;
-      }
-
-      /** @brief Get the input symbol. */
-      SymbolType get_input_symbol() const {
-        return input_number;
-      }
-
-      /** @brief Get the output symbol. */
-      SymbolType get_output_symbol() const {
-        return output_number;
-      }
-
-      /** @brief Get the weight. */
-      WeightType get_weight() const {
-        return weight;
-      }
-
-      static SymbolType get_epsilon()
-      {
-    return 0;
-      }
-
-      static SymbolType get_unknown()
-      {
-    return 1;
-      }
-
-      static SymbolType get_identity()
-      {
-    return 2;
-      }
-
-      /* Are these needed? */
-      static bool is_epsilon(const SymbolType &s) {
-    return s == 0;
-      }
-      static bool is_unknown(const SymbolType &s) {
-    return s == 1;
-      }
-      static bool is_identity(const SymbolType &s) {
-    return s == 2;
-      }
-      static bool is_valid_symbol(const SymbolType &s) {
-    (void)s;
-    return true;
-      }
-
-      /* Get a marker symbol. Equivalent to (biggest number in sts + 1). */
-      static SymbolType get_marker(const SymbolTypeSet &sts) {
-    SymbolType marker=0;
-    for (SymbolTypeSet::const_iterator it = sts.begin();
-         it != sts.end(); it++) {
-      if (marker < *it) {
-        marker = *it;
-      }
-    }
-    return marker++;
-      }
-
-      /** @brief Whether this transition is less than transition 
-          \a another. 
-      */
-      bool operator<(const HfstFastTransitionData &another) 
-        const {
-        if (input_number < another.input_number )
-          return true;
-        if (input_number > another.input_number)
-          return false;
-        if (output_number < another.output_number)
-          return true;
-        if (output_number > another.output_number)
-          return false;
-        return (weight < another.weight);
-      }
-
-      void operator=(const HfstFastTransitionData &another)
-    {
-      input_number = another.input_number;
-      output_number = another.output_number;
-      weight = another.weight;
-    }
-
-      friend class ComposeIntersectFst;
-      friend class ComposeIntersectLexicon;
-      friend class ComposeIntersectRule;
-      friend class ComposeIntersectRulePair;
-      
-    };
-
-
-    /*    std::ostream& operator<<(std::ostream &out, 
-                 const HfstFastTransitionData &tr)
-      {
-    return out << tr.get_input_symbol() << '\t' 
-           << tr.get_output_symbol() << '\t' 
-           << tr.get_weight();
-           }*/
-
-  } // namespace implementations
-
-} // namespace hfst
-
-
-
diff --git a/libhfst/src/implementations/HfstOlTransducer.cc b/libhfst/src/implementations/HfstOlTransducer.cc
index e7549e9..71be21f 100644
--- a/libhfst/src/implementations/HfstOlTransducer.cc
+++ b/libhfst/src/implementations/HfstOlTransducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include <cstring>
 #include "HfstOlTransducer.h"
@@ -440,7 +437,8 @@ StringSet HfstOlTransducer::get_alphabet(hfst_ol::Transducer * t)
     return StringSet(symbol_table.begin(), symbol_table.end());
 }
 
-} }
+}
+}
 
 #else // MAIN_TEST was defined
 #include <cstdlib>
diff --git a/libhfst/src/implementations/HfstOlTransducer.h b/libhfst/src/implementations/HfstOlTransducer.h
index 5a4019c..a1c06a7 100644
--- a/libhfst/src/implementations/HfstOlTransducer.h
+++ b/libhfst/src/implementations/HfstOlTransducer.h
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #ifndef _HFST_OL_TRANSDUCER_H_
 #define _HFST_OL_TRANSDUCER_H_
diff --git a/libhfst/src/implementations/HfstTransition.h b/libhfst/src/implementations/HfstTransition.h
index d3f0ad9..b17b7c5 100644
--- a/libhfst/src/implementations/HfstTransition.h
+++ b/libhfst/src/implementations/HfstTransition.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #ifndef _HFST_TRANSITION_H_
 #define _HFST_TRANSITION_H_
 
@@ -136,12 +145,7 @@ namespace hfst {
     typedef HfstTransition<HfstTropicalTransducerTransitionData> 
       HfstBasicTransition;
 
-    /** @brief An HfstTransition with transition data of type
-        HfstFastTransitionData. 
-
-        This implementation is compatible with #HfstFastTransducer.
-
-        @see HfstFastTransitionData HfstFastTransducer */
+    // TODO: remove?
     typedef HfstTransition<HfstFastTransitionData> HfstFastTransition;
 
   }
diff --git a/libhfst/src/implementations/HfstTransitionGraph.cc b/libhfst/src/implementations/HfstTransitionGraph.cc
index fb4c663..de24cfb 100644
--- a/libhfst/src/implementations/HfstTransitionGraph.cc
+++ b/libhfst/src/implementations/HfstTransitionGraph.cc
@@ -1,3 +1,11 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 #include "HfstTransitionGraph.h"
 
 #ifndef MAIN_TEST
diff --git a/libhfst/src/implementations/HfstTransitionGraph.h b/libhfst/src/implementations/HfstTransitionGraph.h
index 1e70f61..1b157db 100644
--- a/libhfst/src/implementations/HfstTransitionGraph.h
+++ b/libhfst/src/implementations/HfstTransitionGraph.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
  #ifndef _HFST_TRANSITION_GRAPH_H_
  #define _HFST_TRANSITION_GRAPH_H_
 
@@ -21,7 +30,8 @@
  #include "ConvertTransducerFormat.h"
  #include "HfstTransition.h"
  #include "HfstTropicalTransducerTransitionData.h"
- #include "HfstFastTransitionData.h"
+//#include "HfstFastTransitionData.h"
+ #include "../string-utils.h"
 
  #include "../hfstdll.h"
 
@@ -781,22 +791,6 @@
            os << weight;
          }
 
-         /* Replace all strings \a str1 in \a symbol with \a str2. */
-         static void replace_all(std::string & symbol, 
-                                 const std::string &str1,
-                                 const std::string &str2)
-         {
-           size_t pos = symbol.find(str1);
-           while (pos != std::string::npos) // while there are str1:s to replace
-             {
-               symbol.erase(pos, str1.size()); // erase str1
-               symbol.insert(pos, str2);       // insert str2 instead
-               pos = symbol.find               // find next str1
-                 (str1, pos+str2.size());      
-             }
-           return;
-         }
-
          static void xfstize(std::string & symbol)
          {
            std::string escaped_symbol;
@@ -3939,10 +3933,18 @@
          {
            std::string istr = tr.get_input_symbol();
            std::string ostr = tr.get_output_symbol();
-           if ((input_side && is_special_symbol(istr)) || (!input_side && is_special_symbol(ostr)))
+
+           if (input_side && is_epsilon(istr))
+             {}
+           else if (!input_side && is_epsilon(ostr))
+             {}
+           else if ((input_side && is_special_symbol(istr)) || (!input_side && is_special_symbol(ostr)))
              {
                throw "error: special symbol detected in compile-replace regular expression";
              } 
+           else 
+             {}
+
            if ((input_side && ("^[" == istr)) || (!input_side && ("^[" == ostr)))
              {
                throw "error: ^[ detected inside compile-replace regular expression";
@@ -3992,6 +3994,7 @@
                      path.push_back(std::pair<std::string, std::string>(it->get_input_symbol(), it->get_output_symbol()));
                      full_paths.push_back
                        (HfstReplacement(it->get_target_state(), path));
+                     path.pop_back(); // remove closing bracket as we are not going to proceed to next state
                    }
                  // add transition to path and call function again for its target state
                  else
@@ -4524,8 +4527,8 @@
       HfstBasicTransducer;
     
     /** @brief A specialization for faster conversion. */
-    typedef HfstTransitionGraph <HfstFastTransitionData> 
-      HfstFastTransducer;
+    //typedef HfstTransitionGraph <HfstFastTransitionData> 
+    //  HfstFastTransducer;
 
    }
    
diff --git a/libhfst/src/implementations/HfstTropicalTransducerTransitionData.cc b/libhfst/src/implementations/HfstTropicalTransducerTransitionData.cc
index 8e06408..9b5aa00 100644
--- a/libhfst/src/implementations/HfstTropicalTransducerTransitionData.cc
+++ b/libhfst/src/implementations/HfstTropicalTransducerTransitionData.cc
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #include "HfstTropicalTransducerTransitionData.h"
 
 namespace hfst {
diff --git a/libhfst/src/implementations/HfstTropicalTransducerTransitionData.h b/libhfst/src/implementations/HfstTropicalTransducerTransitionData.h
index da7c764..10516e4 100644
--- a/libhfst/src/implementations/HfstTropicalTransducerTransitionData.h
+++ b/libhfst/src/implementations/HfstTropicalTransducerTransitionData.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #include <string>
 #include <map>
 #include <set>
diff --git a/libhfst/src/implementations/LogWeightTransducer.cc b/libhfst/src/implementations/LogWeightTransducer.cc
index fce1f52..34b3590 100644
--- a/libhfst/src/implementations/LogWeightTransducer.cc
+++ b/libhfst/src/implementations/LogWeightTransducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include "LogWeightTransducer.h"
 #include "HfstSymbolDefs.h"
@@ -1595,8 +1592,8 @@ namespace hfst { namespace implementations
   
   LogFst * LogWeightTransducer::substitute
   (LogFst * t,
-   pair<unsigned int, unsigned int> old_key_pair,
-   pair<unsigned int, unsigned int> new_key_pair)
+   NumberPair old_key_pair,
+   NumberPair new_key_pair)
   {
     EncodeMapper<LogArc> encode_mapper(0x0001,ENCODE);
     EncodeFst<LogArc> enc(*t,&encode_mapper);
diff --git a/libhfst/src/implementations/LogWeightTransducer.h b/libhfst/src/implementations/LogWeightTransducer.h
index 1bfdc96..42b8e50 100644
--- a/libhfst/src/implementations/LogWeightTransducer.h
+++ b/libhfst/src/implementations/LogWeightTransducer.h
@@ -1,14 +1,12 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #ifndef _LOG_WEIGHT_TRANSDUCER_H_
 #define _LOG_WEIGHT_TRANSDUCER_H_
 
diff --git a/libhfst/src/implementations/Makefile.am b/libhfst/src/implementations/Makefile.am
index 56f6b69..6876664 100644
--- a/libhfst/src/implementations/Makefile.am
+++ b/libhfst/src/implementations/Makefile.am
@@ -1,19 +1,13 @@
 ## Process this file with automake to produce Makefile.in
 
-## Copyright (C) 2010 University of Helsinki
-
-## 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.
-
-## You should have received a copy of the GNU General Public License
-## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# Copyright (c) 2016 University of Helsinki                          
+#                                                                    
+# This library is free software; you can redistribute it and/or      
+# modify it under the terms of the GNU Lesser General Public         
+# License as published by the Free Software Foundation; either       
+# version 3 of the License, or (at your option) any later version.    
+# See the file COPYING included with this distribution for more      
+# information. 
 
 AUTOMAKE_OPTIONS=subdir-objects
 noinst_LTLIBRARIES=libhfstimplementations.la
@@ -31,7 +25,8 @@ IMPLEMENTATION_SRCS=HfstTransitionGraph.cc \
                     compose_intersect/ComposeIntersectFst.cc \
                     compose_intersect/ComposeIntersectUtilities.cc
 
-AM_CXXFLAGS=-Wno-deprecated -g
+AM_CXXFLAGS=-Wno-deprecated -g -std=c++0x
+
 AM_CPPFLAGS = -I${top_srcdir}/libhfst/src -I${top_srcdir}/back-ends/foma \
 		-I${top_srcdir}/back-ends
 
@@ -96,7 +91,6 @@ implinclude_HEADERS = \
 		XfsmTransducer.h \
 		HfstOlTransducer.h HfstTransitionGraph.h HfstTransition.h \
 		HfstTropicalTransducerTransitionData.h \
-		HfstFastTransitionData.h \
 		compose_intersect/ComposeIntersectRulePair.h \
 		compose_intersect/ComposeIntersectLexicon.h \
 		compose_intersect/ComposeIntersectRule.h \
diff --git a/libhfst/src/implementations/MyTransducerLibraryTransducer.cc b/libhfst/src/implementations/MyTransducerLibraryTransducer.cc
index b6356a4..f4c2abe 100644
--- a/libhfst/src/implementations/MyTransducerLibraryTransducer.cc
+++ b/libhfst/src/implementations/MyTransducerLibraryTransducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 /*  @file MyTransducerLibraryTransducer.cc
     \brief Implementations of functions and datatypes that form a bridge between
diff --git a/libhfst/src/implementations/MyTransducerLibraryTransducer.h b/libhfst/src/implementations/MyTransducerLibraryTransducer.h
index 0afd78a..b894c78 100644
--- a/libhfst/src/implementations/MyTransducerLibraryTransducer.h
+++ b/libhfst/src/implementations/MyTransducerLibraryTransducer.h
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #ifndef _MY_TRANSDUCER_LIBRARY_TRANSDUCER_H_
 #define _MY_TRANSDUCER_LIBRARY_TRANSDUCER_H_
diff --git a/libhfst/src/implementations/SfstTransducer.cc b/libhfst/src/implementations/SfstTransducer.cc
index 183278d..8316409 100644
--- a/libhfst/src/implementations/SfstTransducer.cc
+++ b/libhfst/src/implementations/SfstTransducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include "SfstTransducer.h"
 #include "HfstSymbolDefs.h"
diff --git a/libhfst/src/implementations/SfstTransducer.h b/libhfst/src/implementations/SfstTransducer.h
index e6b0fb4..6356f8f 100644
--- a/libhfst/src/implementations/SfstTransducer.h
+++ b/libhfst/src/implementations/SfstTransducer.h
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #ifndef _SFST_TRANSDUCER_H_
 #define _SFST_TRANSDUCER_H_
diff --git a/libhfst/src/implementations/TropicalWeightTransducer.cc b/libhfst/src/implementations/TropicalWeightTransducer.cc
index 7339c8e..5c87a0d 100644
--- a/libhfst/src/implementations/TropicalWeightTransducer.cc
+++ b/libhfst/src/implementations/TropicalWeightTransducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include "TropicalWeightTransducer.h"
 #include "HfstSymbolDefs.h"
@@ -1967,8 +1964,8 @@ namespace hfst {
 
   StdVectorFst * TropicalWeightTransducer::substitute
   (StdVectorFst * t,
-   pair<unsigned int, unsigned int> old_key_pair,
-   pair<unsigned int, unsigned int> new_key_pair)
+   NumberPair old_key_pair,
+   NumberPair new_key_pair)
   {
     EncodeMapper<StdArc> encode_mapper(0x0001,ENCODE);
     EncodeFst<StdArc> enc(*t,&encode_mapper);
diff --git a/libhfst/src/implementations/TropicalWeightTransducer.h b/libhfst/src/implementations/TropicalWeightTransducer.h
index 9e9c2fc..894e8c3 100644
--- a/libhfst/src/implementations/TropicalWeightTransducer.h
+++ b/libhfst/src/implementations/TropicalWeightTransducer.h
@@ -1,14 +1,12 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #ifndef _TROPICAL_WEIGHT_TRANSDUCER_H_
 #define _TROPICAL_WEIGHT_TRANSDUCER_H_
 
@@ -211,8 +209,8 @@ namespace implementations
       static StdVectorFst * disjunct
         (StdVectorFst * t, const NumberPairVector &npv);
 
-      static StdVectorFst * disjunct_as_tries(StdVectorFst * t1,
-                                              const StdVectorFst * t2);
+      static fst::StdVectorFst * disjunct_as_tries(fst::StdVectorFst * t1,
+                                              const fst::StdVectorFst * t2);
 
       static StdVectorFst * intersect(StdVectorFst * t1,
                                       StdVectorFst * t2);
@@ -333,9 +331,9 @@ namespace implementations
                   StdArc::StateId sourcestate,                          
                   StdArc::Label ilabel, 
                   StdArc::Label olabel);
-      static void disjunct_as_tries(StdVectorFst &t1,
+      static void disjunct_as_tries(fst::StdVectorFst &t1,
                              StateId t1_state,
-                             const StdVectorFst * t2,
+                                    const fst::StdVectorFst * t2,
                              StateId t2_state);
       static void add_sub_trie(StdVectorFst &t1,
                         StateId t1_state,
diff --git a/libhfst/src/implementations/XfsmTransducer.cc b/libhfst/src/implementations/XfsmTransducer.cc
index 4b4aa62..5331be0 100644
--- a/libhfst/src/implementations/XfsmTransducer.cc
+++ b/libhfst/src/implementations/XfsmTransducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include "XfsmTransducer.h"
 #include <cstring>
diff --git a/libhfst/src/implementations/XfsmTransducer.h b/libhfst/src/implementations/XfsmTransducer.h
index 6d3dfd3..08adc0b 100644
--- a/libhfst/src/implementations/XfsmTransducer.h
+++ b/libhfst/src/implementations/XfsmTransducer.h
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #ifndef _XFSM_TRANSDUCER_H_
 #define _XFSM_TRANSDUCER_H_
diff --git a/libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc b/libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc
index de50547..69accf9 100644
--- a/libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc
+++ b/libhfst/src/implementations/compose_intersect/ComposeIntersectFst.cc
@@ -1,3 +1,11 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 #include "ComposeIntersectFst.h"
 
 HFST_EXCEPTION_CHILD_DEFINITION(StateNotDefined);
diff --git a/libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h b/libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h
index de9d3ed..8095ae9 100644
--- a/libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h
+++ b/libhfst/src/implementations/compose_intersect/ComposeIntersectFst.h
@@ -1,3 +1,10 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
 #ifndef COMPOSE_INTERSECT_FST_H
 #define COMPOSE_INTERSECT_FST_H
 
diff --git a/libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc b/libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc
index dd0806c..602f103 100644
--- a/libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc
+++ b/libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.cc
@@ -1,3 +1,11 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 #include "ComposeIntersectLexicon.h"
 
 #ifndef MAIN_TEST
diff --git a/libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.h b/libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.h
index baab798..cf24ee0 100644
--- a/libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.h
+++ b/libhfst/src/implementations/compose_intersect/ComposeIntersectLexicon.h
@@ -1,3 +1,11 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 #ifndef COMPOSE_INTERSECT_LEXICON_H
 #define COMPOSE_INTERSECT_LEXICON_H
 
diff --git a/libhfst/src/implementations/compose_intersect/ComposeIntersectRule.cc b/libhfst/src/implementations/compose_intersect/ComposeIntersectRule.cc
index f8d077f..1c2e4f4 100644
--- a/libhfst/src/implementations/compose_intersect/ComposeIntersectRule.cc
+++ b/libhfst/src/implementations/compose_intersect/ComposeIntersectRule.cc
@@ -1,3 +1,11 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 #include "ComposeIntersectRule.h"
 
 #ifndef MAIN_TEST
diff --git a/libhfst/src/implementations/compose_intersect/ComposeIntersectRule.h b/libhfst/src/implementations/compose_intersect/ComposeIntersectRule.h
index 9a2b407..ac7ee96 100644
--- a/libhfst/src/implementations/compose_intersect/ComposeIntersectRule.h
+++ b/libhfst/src/implementations/compose_intersect/ComposeIntersectRule.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #ifndef COMPOSE_INTERSECT_RULE_H
 #define COMPOSE_INTERSECT_RULE_H
 
diff --git a/libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc b/libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc
index 0f0c5b3..3a156f6 100644
--- a/libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc
+++ b/libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.cc
@@ -1,3 +1,11 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 #include "ComposeIntersectRulePair.h"
 
 #ifndef MAIN_TEST
diff --git a/libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.h b/libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.h
index 5d1a568..7d23b51 100644
--- a/libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.h
+++ b/libhfst/src/implementations/compose_intersect/ComposeIntersectRulePair.h
@@ -1,3 +1,11 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 #ifndef COMPOSE_INTERSECT_RULE_PAIR_H
 #define COMPOSE_INTERSECT_RULE_PAIR_H
 
diff --git a/libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.cc b/libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.cc
index 96e73fd..6f93fa5 100644
--- a/libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.cc
+++ b/libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.cc
@@ -1,3 +1,11 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 #include "ComposeIntersectUtilities.h"
 
 #include <set>
diff --git a/libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h b/libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h
index 09d43de..4e7471d 100644
--- a/libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h
+++ b/libhfst/src/implementations/compose_intersect/ComposeIntersectUtilities.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #ifndef HEADER_COMPOSE_INTERSECT_UTILITIES_H
 #define HEADER_COMPOSE_INTERSECT_UTILITIES_H
 
diff --git a/libhfst/src/implementations/optimized-lookup/convert.cc b/libhfst/src/implementations/optimized-lookup/convert.cc
index 18d19cc..db008aa 100644
--- a/libhfst/src/implementations/optimized-lookup/convert.cc
+++ b/libhfst/src/implementations/optimized-lookup/convert.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include "convert.h"
 
diff --git a/libhfst/src/implementations/optimized-lookup/convert.h b/libhfst/src/implementations/optimized-lookup/convert.h
index 58d137d..fd82edb 100644
--- a/libhfst/src/implementations/optimized-lookup/convert.h
+++ b/libhfst/src/implementations/optimized-lookup/convert.h
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #ifndef _HFST_OL_CONVERT_H_
 #define _HFST_OL_CONVERT_H_
diff --git a/libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc b/libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc
index ddc95c7..ad91c6e 100644
--- a/libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc
+++ b/libhfst/src/implementations/optimized-lookup/find_epsilon_loops.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include "./transducer.h"
 
diff --git a/libhfst/src/implementations/optimized-lookup/ospell.cc b/libhfst/src/implementations/optimized-lookup/ospell.cc
index 0e8c649..8f76f5a 100644
--- a/libhfst/src/implementations/optimized-lookup/ospell.cc
+++ b/libhfst/src/implementations/optimized-lookup/ospell.cc
@@ -1,3 +1,11 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 #include "transducer.h"
 
 namespace hfst_ol {
@@ -7,21 +15,21 @@ int nByte_utf8(unsigned char c)
     /* utility function to determine how many bytes to peel off as
        a utf-8 character for representing as OTHER */
     if (c <= 127) {
-	return 1;
+        return 1;
     } else if ( (c & (128 + 64 + 32 + 16)) == (128 + 64 + 32 + 16) ) {
-	return 4;
+        return 4;
     } else if ( (c & (128 + 64 + 32 )) == (128 + 64 + 32) ) {
-	return 3;
+        return 3;
     } else if ( (c & (128 + 64 )) == (128 + 64)) {
-	return 2;
+        return 2;
     } else {
-	return 0;
+        return 0;
     }
 }
 
 bool InputString::initialize(const Encoder & encoder,
-			     char * input,
-			     SymbolNumber other)
+                             char * input,
+                             SymbolNumber other)
 {
     // Initialize the symbol vector to the tokenization given by encoder.
     // In the case of tokenization failure, valid utf-8 characters
@@ -35,113 +43,113 @@ bool InputString::initialize(const Encoder & encoder,
     char * oldpointer;
     
     while (**inpointer != '\0') {
-	oldpointer = *inpointer;
-	k = const_cast<Encoder&>(encoder).find_key(inpointer);
-	
-	if (k == NO_SYMBOL_NUMBER) { // no tokenization from alphabet
-	    int n = nByte_utf8(static_cast<unsigned char>(*oldpointer));
-	    if (n == 0) {
-		return false; // can't parse utf-8 character, admit failure
-	    } else {
-		if (other == NO_SYMBOL_NUMBER) {
-		    return false; // if we don't have an "other" symbol
-		}
-		oldpointer += n;
-		*inpointer = oldpointer;
-		s.push_back(other);
-		continue;
-	    }
-	} else {
-	    s.push_back(k);
-	}
+        oldpointer = *inpointer;
+        k = const_cast<Encoder&>(encoder).find_key(inpointer);
+        
+        if (k == NO_SYMBOL_NUMBER) { // no tokenization from alphabet
+            int n = nByte_utf8(static_cast<unsigned char>(*oldpointer));
+            if (n == 0) {
+                return false; // can't parse utf-8 character, admit failure
+            } else {
+                if (other == NO_SYMBOL_NUMBER) {
+                    return false; // if we don't have an "other" symbol
+                }
+                oldpointer += n;
+                *inpointer = oldpointer;
+                s.push_back(other);
+                continue;
+            }
+        } else {
+            s.push_back(k);
+        }
     }
     
     return true;
 }
 
 TreeNode TreeNode::update_lexicon(SymbolNumber next_symbol,
-				  TransitionTableIndex next_lexicon,
-				  Weight weight)
+                                  TransitionTableIndex next_lexicon,
+                                  Weight weight)
 {
     SymbolNumberVector str(this->string);
     str.push_back(next_symbol);
     return TreeNode(str,
-		    this->input_state,
-		    this->mutator_state,
-		    next_lexicon,
-		    this->flag_state,
-		    this->weight + weight);
+                    this->input_state,
+                    this->mutator_state,
+                    next_lexicon,
+                    this->flag_state,
+                    this->weight + weight);
 }
 
 TreeNode TreeNode::update_mutator(SymbolNumber next_symbol,
-				  TransitionTableIndex next_mutator,
-				  Weight weight)
+                                  TransitionTableIndex next_mutator,
+                                  Weight weight)
 {
     SymbolNumberVector str(this->string);
     str.push_back(next_symbol);
     return TreeNode(str,
-		    this->input_state,
-		    next_mutator,
-		    this->lexicon_state,
-		    this->flag_state,
-		    this->weight + weight);
+                    this->input_state,
+                    next_mutator,
+                    this->lexicon_state,
+                    this->flag_state,
+                    this->weight + weight);
 }
 
 TreeNode TreeNode::update(SymbolNumber next_symbol,
-			  unsigned int next_input,
-			  TransitionTableIndex next_mutator,
-			  TransitionTableIndex next_lexicon,
-			  Weight weight)
+                          unsigned int next_input,
+                          TransitionTableIndex next_mutator,
+                          TransitionTableIndex next_lexicon,
+                          Weight weight)
 {
     SymbolNumberVector str(this->string);
     str.push_back(next_symbol);
     return TreeNode(str,
-		    next_input,
-		    next_mutator,
-		    next_lexicon,
-		    this->flag_state,
-		    this->weight + weight);
+                    next_input,
+                    next_mutator,
+                    next_lexicon,
+                    this->flag_state,
+                    this->weight + weight);
 }
 
 TreeNode TreeNode::update(SymbolNumber next_symbol,
-			  TransitionTableIndex next_mutator,
-			  TransitionTableIndex next_lexicon,
-			  Weight weight)
+                          TransitionTableIndex next_mutator,
+                          TransitionTableIndex next_lexicon,
+                          Weight weight)
 {
     SymbolNumberVector str(this->string);
     str.push_back(next_symbol);
     return TreeNode(str,
-		    this->input_state,
-		    next_mutator,
-		    next_lexicon,
-		    this->flag_state,
-		    this->weight + weight);
+                    this->input_state,
+                    next_mutator,
+                    next_lexicon,
+                    this->flag_state,
+                    this->weight + weight);
 }
 
 void Speller::lexicon_epsilons(void)
 {
     if (!lexicon->has_epsilons_or_flags(queue.front().lexicon_state + 1)) {
-	return;
+        return;
     }
     TransitionTableIndex next = lexicon->next(queue.front().lexicon_state, 0);
     STransition i_s = lexicon->take_epsilons_and_flags(next);
     
     while (i_s.symbol != NO_SYMBOL_NUMBER) {
-	if (lexicon->get_transition(next).get_input_symbol() == 0) {
-	    queue.push_back(queue.front().update_lexicon(i_s.symbol,
+        if (lexicon->get_transition(next).get_input_symbol() == 0) {
+            queue.push_back(queue.front().update_lexicon(i_s.symbol,
                                                          i_s.index,
                                                          i_s.weight));
-	} else {
-	    TreeNode front = queue.front();
-	    if (front.flag_state.apply_operation(
-		    lexicon->get_transition(next).get_input_symbol())) {
-		queue.push_back(front.update_lexicon(i_s.symbol,
-						     i_s.index,
-						     i_s.weight));
-	    }
-	}
-	++next;
-	i_s = lexicon->take_epsilons_and_flags(next);
+        } else {
+            TreeNode front = queue.front();
+            if (front.flag_state.apply_operation(
+                    lexicon->get_transition(next).get_input_symbol())) {
+                queue.push_back(front.update_lexicon(i_s.symbol,
+                                                     i_s.index,
+                                                     i_s.weight));
+            }
+        }
+        ++next;
+        i_s = lexicon->take_epsilons_and_flags(next);
     }
 }
 
@@ -149,26 +157,26 @@ void Speller::lexicon_consume(void)
 {
     unsigned int input_state = queue.front().input_state;
     if (input_state >= input.len()||
-	!lexicon->has_transitions(
-	    queue.front().lexicon_state + 1, input[input_state])) {
-	return;
+        !lexicon->has_transitions(
+            queue.front().lexicon_state + 1, input[input_state])) {
+        return;
     }
 
     TransitionTableIndex next = lexicon->next(queue.front().lexicon_state,
-					      input[input_state]);
+                                              input[input_state]);
     STransition i_s = lexicon->take_non_epsilons(next,
-						 input[input_state]);
+                                                 input[input_state]);
 
     while (i_s.symbol != NO_SYMBOL_NUMBER) {
-	queue.push_back(queue.front().update(
-			    i_s.symbol,
-			    input_state + 1,
-			    queue.front().mutator_state,
-			    i_s.index,
-			    i_s.weight));
-	
-	++next;
-	i_s = lexicon->take_non_epsilons(next, input[input_state]);
+        queue.push_back(queue.front().update(
+                            i_s.symbol,
+                            input_state + 1,
+                            queue.front().mutator_state,
+                            i_s.index,
+                            i_s.weight));
+        
+        ++next;
+        i_s = lexicon->take_non_epsilons(next, input[input_state]);
     }
     
 }
@@ -176,45 +184,45 @@ void Speller::lexicon_consume(void)
 void Speller::mutator_epsilons(void)
 {
     if (!mutator->has_transitions(queue.front().mutator_state + 1, 0)) {
-	return;
+        return;
     }
     TransitionTableIndex next_m = mutator->next(queue.front().mutator_state, 0);
     STransition mutator_i_s = mutator->take_epsilons(next_m);
    
     while (mutator_i_s.symbol != NO_SYMBOL_NUMBER) {
-	if (mutator_i_s.symbol == 0) {
-	    queue.push_back(queue.front().update_mutator(mutator_i_s.symbol,
-							 mutator_i_s.index,
-							 mutator_i_s.weight));
-	} else {
-	    if (!lexicon->has_transitions(
-		    queue.front().lexicon_state + 1,
-		    alphabet_translator[mutator_i_s.symbol])) {
-		++next_m;
-		mutator_i_s = mutator->take_epsilons(next_m);
-		continue;
-	    }
-	    TransitionTableIndex next_l = lexicon->next(
-		queue.front().lexicon_state,
-		alphabet_translator[mutator_i_s.symbol]);
-	    STransition lexicon_i_s = lexicon->take_non_epsilons(
-		next_l,
-		alphabet_translator[mutator_i_s.symbol]);
-	    
-	    while (lexicon_i_s.symbol != NO_SYMBOL_NUMBER) {
-		queue.push_back(queue.front().update(
-				    lexicon_i_s.symbol,
-				    mutator_i_s.index,
-				    lexicon_i_s.index,
-				    lexicon_i_s.weight + mutator_i_s.weight));
-		++next_l;
-		lexicon_i_s = lexicon->take_non_epsilons(
-		    next_l,
-		    alphabet_translator[mutator_i_s.symbol]);
-	    }
-	}
-	++next_m;
-	mutator_i_s = mutator->take_epsilons(next_m);
+        if (mutator_i_s.symbol == 0) {
+            queue.push_back(queue.front().update_mutator(mutator_i_s.symbol,
+                                                         mutator_i_s.index,
+                                                         mutator_i_s.weight));
+        } else {
+            if (!lexicon->has_transitions(
+                    queue.front().lexicon_state + 1,
+                    alphabet_translator[mutator_i_s.symbol])) {
+                ++next_m;
+                mutator_i_s = mutator->take_epsilons(next_m);
+                continue;
+            }
+            TransitionTableIndex next_l = lexicon->next(
+                queue.front().lexicon_state,
+                alphabet_translator[mutator_i_s.symbol]);
+            STransition lexicon_i_s = lexicon->take_non_epsilons(
+                next_l,
+                alphabet_translator[mutator_i_s.symbol]);
+            
+            while (lexicon_i_s.symbol != NO_SYMBOL_NUMBER) {
+                queue.push_back(queue.front().update(
+                                    lexicon_i_s.symbol,
+                                    mutator_i_s.index,
+                                    lexicon_i_s.index,
+                                    lexicon_i_s.weight + mutator_i_s.weight));
+                ++next_l;
+                lexicon_i_s = lexicon->take_non_epsilons(
+                    next_l,
+                    alphabet_translator[mutator_i_s.symbol]);
+            }
+        }
+        ++next_m;
+        mutator_i_s = mutator->take_epsilons(next_m);
     }
 }
 
@@ -222,59 +230,59 @@ void Speller::consume_input(void)
 {
     unsigned int input_state = queue.front().input_state;
     if (input_state >= input.len()||
-	!mutator->has_transitions(queue.front().mutator_state + 1,
-				  input[input_state])) {
-	return; // not enough input to consume of no suitable transitions
+        !mutator->has_transitions(queue.front().mutator_state + 1,
+                                  input[input_state])) {
+        return; // not enough input to consume of no suitable transitions
     }
     
     TransitionTableIndex next_m = mutator->next(queue.front().mutator_state,
-						input[input_state]);
+                                                input[input_state]);
     
     STransition mutator_i_s = mutator->take_non_epsilons(next_m,
-							 input[input_state]);
+                                                         input[input_state]);
     
     while (mutator_i_s.symbol != NO_SYMBOL_NUMBER) {
 
-	if (mutator_i_s.symbol == 0) {
-	    
-	    queue.push_back(queue.front().update(0,
-						 input_state + 1,
-						 mutator_i_s.index,
-						 queue.front().lexicon_state,
-						 mutator_i_s.weight));
-	} else {
-	    if (!lexicon->has_transitions(
-		    queue.front().lexicon_state + 1,
-		    alphabet_translator[mutator_i_s.symbol])) {
-		++next_m;
-		mutator_i_s = mutator->take_non_epsilons(next_m,
-							 input[input_state]);
-		continue;
-	    }
-	    TransitionTableIndex next_l = lexicon->next(
-		queue.front().lexicon_state,
-		alphabet_translator[mutator_i_s.symbol]);
-	    
-	    STransition lexicon_i_s = lexicon->take_non_epsilons(
-		next_l,
-		alphabet_translator[mutator_i_s.symbol]);
-	    
-	    while (lexicon_i_s.symbol != NO_SYMBOL_NUMBER) {
-		queue.push_back(
-		    queue.front().update(lexicon_i_s.symbol,
-					 input_state + 1,
-					 mutator_i_s.index,
-					 lexicon_i_s.index,
-					 lexicon_i_s.weight + mutator_i_s.weight));
-		++next_l;
-		lexicon_i_s = lexicon->take_non_epsilons(
-		    next_l,
-		    alphabet_translator[mutator_i_s.symbol]);
-	    }
-	}
-	++next_m;
-	mutator_i_s = mutator->take_non_epsilons(next_m,
-						 input[input_state]);
+        if (mutator_i_s.symbol == 0) {
+            
+            queue.push_back(queue.front().update(0,
+                                                 input_state + 1,
+                                                 mutator_i_s.index,
+                                                 queue.front().lexicon_state,
+                                                 mutator_i_s.weight));
+        } else {
+            if (!lexicon->has_transitions(
+                    queue.front().lexicon_state + 1,
+                    alphabet_translator[mutator_i_s.symbol])) {
+                ++next_m;
+                mutator_i_s = mutator->take_non_epsilons(next_m,
+                                                         input[input_state]);
+                continue;
+            }
+            TransitionTableIndex next_l = lexicon->next(
+                queue.front().lexicon_state,
+                alphabet_translator[mutator_i_s.symbol]);
+            
+            STransition lexicon_i_s = lexicon->take_non_epsilons(
+                next_l,
+                alphabet_translator[mutator_i_s.symbol]);
+            
+            while (lexicon_i_s.symbol != NO_SYMBOL_NUMBER) {
+                queue.push_back(
+                    queue.front().update(lexicon_i_s.symbol,
+                                         input_state + 1,
+                                         mutator_i_s.index,
+                                         lexicon_i_s.index,
+                                         lexicon_i_s.weight + mutator_i_s.weight));
+                ++next_l;
+                lexicon_i_s = lexicon->take_non_epsilons(
+                    next_l,
+                    alphabet_translator[mutator_i_s.symbol]);
+            }
+        }
+        ++next_m;
+        mutator_i_s = mutator->take_non_epsilons(next_m,
+                                                 input[input_state]);
     }
 }
 
@@ -284,41 +292,41 @@ CorrectionQueue Speller::correct(char * line)
     // if input initialization fails, return empty correction queue
     if (!init_input(line, mutator->get_encoder(),
                     mutator->get_unknown_symbol())) {
-	return CorrectionQueue();
+        return CorrectionQueue();
     }
     std::map<std::string, Weight> corrections;
     TreeNode start_node(lexicon->get_fd_table());
     queue.assign(1, start_node);
 
     while (queue.size() > 0) {
-	lexicon_epsilons();
-	mutator_epsilons();
-	if (queue.front().input_state == input.len()) {
-	    /* if our transducers are in final states
-	     * we generate the correction
-	     */
-	    if (mutator->final_index(queue.front().mutator_state)&&
-		lexicon->final_index(queue.front().lexicon_state)) {
-		std::string string = stringify(queue.front().string);
-		Weight weight = queue.front().weight +
-		    lexicon->final_weight(queue.front().lexicon_state) +
-		    mutator->final_weight(queue.front().mutator_state);
-		/* if the correction is novel or better than before, insert it
-		 */
-		if (corrections.count(string) == 0||
-		    corrections[string] > weight) {
-		    corrections[string] = weight;
-		}
-	    }
-	} else {
-	    consume_input();
-	}
-	queue.pop_front();
+        lexicon_epsilons();
+        mutator_epsilons();
+        if (queue.front().input_state == input.len()) {
+            /* if our transducers are in final states
+             * we generate the correction
+             */
+            if (mutator->final_index(queue.front().mutator_state)&&
+                lexicon->final_index(queue.front().lexicon_state)) {
+                std::string string = stringify(queue.front().string);
+                Weight weight = queue.front().weight +
+                    lexicon->final_weight(queue.front().lexicon_state) +
+                    mutator->final_weight(queue.front().mutator_state);
+                /* if the correction is novel or better than before, insert it
+                 */
+                if (corrections.count(string) == 0||
+                    corrections[string] > weight) {
+                    corrections[string] = weight;
+                }
+            }
+        } else {
+            consume_input();
+        }
+        queue.pop_front();
     }
     CorrectionQueue correction_queue;
     std::map<std::string, Weight>::iterator it;
     for (it = corrections.begin(); it != corrections.end(); ++it) {
-	correction_queue.push(StringWeightPair(it->first, it->second));
+        correction_queue.push(StringWeightPair(it->first, it->second));
     }
     return correction_queue;
 }
@@ -326,19 +334,19 @@ CorrectionQueue Speller::correct(char * line)
 bool Speller::check(char * line)
 {
     if (!init_input(line, lexicon->get_encoder(), NO_SYMBOL_NUMBER)) {
-	return false;
+        return false;
     }
     TreeNode start_node(lexicon->get_fd_table());
     queue.assign(1, start_node);
 
     while (queue.size() > 0) {
-	if (queue.front().input_state == input.len()&&
-	    lexicon->final_index(queue.front().lexicon_state)) {
-	    return true;
-	}
-	lexicon_epsilons();
-	lexicon_consume();
-	queue.pop_front();
+        if (queue.front().input_state == input.len()&&
+            lexicon->final_index(queue.front().lexicon_state)) {
+            return true;
+        }
+        lexicon_epsilons();
+        lexicon_consume();
+        queue.pop_front();
     }
     return false;
 }
@@ -347,15 +355,15 @@ std::string Speller::stringify(SymbolNumberVector symbol_vector)
 {
     std::string s;
     for (SymbolNumberVector::iterator it = symbol_vector.begin();
-	 it != symbol_vector.end(); ++it) {
-	s.append(symbol_table[*it]);
+         it != symbol_vector.end(); ++it) {
+        s.append(symbol_table[*it]);
     }
     return s;
 }
 
 bool Speller::init_input(char * str,
-			 const Encoder & encoder,
-			 SymbolNumber other)
+                         const Encoder & encoder,
+                         SymbolNumber other)
 {
     return input.initialize(encoder, str, other);
 }
diff --git a/libhfst/src/implementations/optimized-lookup/pmatch.cc b/libhfst/src/implementations/optimized-lookup/pmatch.cc
index 0438433..f0c8ac2 100644
--- a/libhfst/src/implementations/optimized-lookup/pmatch.cc
+++ b/libhfst/src/implementations/optimized-lookup/pmatch.cc
@@ -1,3 +1,11 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 #include "pmatch.h"
 #include "hfst.h"
 
@@ -6,7 +14,7 @@ namespace hfst_ol {
 PmatchAlphabet::PmatchAlphabet(std::istream & inputstream,
                                SymbolNumber symbol_count):
     TransducerAlphabet(inputstream, symbol_count, false),
-    special_symbols(12, NO_SYMBOL_NUMBER) // SpecialSymbols enum
+    special_symbols(SPECIALSYMBOL_NR_ITEMS, NO_SYMBOL_NUMBER) // SpecialSymbols enum
 {
     symbol2lists = SymbolNumberVector(orig_symbol_count, NO_SYMBOL_NUMBER);
     list2symbols = SymbolNumberVector(orig_symbol_count, NO_SYMBOL_NUMBER);
@@ -22,17 +30,49 @@ PmatchAlphabet::PmatchAlphabet(std::istream & inputstream,
     }
 }
 
+PmatchAlphabet::PmatchAlphabet(TransducerAlphabet const & a):
+    TransducerAlphabet(a),
+    special_symbols(SPECIALSYMBOL_NR_ITEMS, NO_SYMBOL_NUMBER) {
+    symbol2lists = SymbolNumberVector(orig_symbol_count, NO_SYMBOL_NUMBER);
+    list2symbols = SymbolNumberVector(orig_symbol_count, NO_SYMBOL_NUMBER);
+    rtns = RtnVector(orig_symbol_count, NULL);
+    // We initialize the vector of which symbols have a printable representation
+    // with false, then flip those that actually do to true
+    printable_vector = std::vector<bool>(orig_symbol_count, false);
+    for (SymbolNumber i = 1; i < symbol_table.size(); ++i) {
+        add_special_symbol(symbol_table[i], i);
+        if (is_flag_diacritic(i)) {
+            printable_vector[i] = false;
+        }
+    }
+}
+
 PmatchAlphabet::PmatchAlphabet(void):
     TransducerAlphabet()
 {}
 
 void PmatchAlphabet::add_symbol(const std::string & symbol)
 {
-    TransducerAlphabet::add_symbol(symbol);
     symbol2lists.push_back(NO_SYMBOL_NUMBER);
     list2symbols.push_back(NO_SYMBOL_NUMBER);
     rtns.push_back(NULL);
     printable_vector.push_back(true);
+    if (exclusionary_lists.size() != 0) {
+        // if there are exclusionary lists, they should all accept the new symbol
+        symbol2lists[symbol_table.size()] = symbol_lists.size();
+        symbol_lists.push_back(SymbolNumberVector(exclusionary_lists.begin(),
+                                                  exclusionary_lists.end()));
+#ifndef _MSC_VER
+        for(const auto & exc: exclusionary_lists) {
+          symbol_list_members[list2symbols[exc]].push_back(symbol_table.size());
+        }
+#else
+        for (SymbolNumberVector::const_iterator exc = exclusionary_lists.begin(); exc != exclusionary_lists.end(); exc++) {
+          symbol_list_members[list2symbols[*exc]].push_back(symbol_table.size());
+        }
+#endif
+    }
+    TransducerAlphabet::add_symbol(symbol);
 }
 
 bool PmatchAlphabet::is_printable(SymbolNumber symbol)
@@ -65,6 +105,8 @@ void PmatchAlphabet::add_special_symbol(const std::string & str,
         special_symbols[NRC_exit] = symbol_number;
     } else if (str == "@PMATCH_PASSTHROUGH@") {
         special_symbols[Pmatch_passthrough] = symbol_number;
+    } else if (str == "@PMATCH_INPUT_MARK@") {
+        special_symbols[Pmatch_input_mark] = symbol_number;
     } else if (str == "@BOUNDARY@") {
         special_symbols[boundary] = symbol_number;
     } else if (is_end_tag(str)) {
@@ -81,6 +123,7 @@ void PmatchAlphabet::add_special_symbol(const std::string & str,
     } else if (is_counter(str)) {
         process_counter(str, symbol_number);
     } else {
+        // it's a regular symbol
         printable_vector[symbol_number] = true;
     }
 }
@@ -89,7 +132,9 @@ void PmatchAlphabet::process_symbol_list(std::string str, SymbolNumber sym)
 {
     SymbolNumberVector list_symbols;
     StringSymbolMap ss = build_string_symbol_map();
-    size_t begin = strlen("@PMATCH_LIST_");
+    // regular list or exlusionary list?
+    bool polarity = str[1] == 'L';
+    size_t begin = strlen("@L.");
     size_t stop;
     std::vector<std::string> collected_symbols;
     while ((stop = str.find('_', begin)) != std::string::npos) {
@@ -104,8 +149,6 @@ void PmatchAlphabet::process_symbol_list(std::string str, SymbolNumber sym)
         }
         collected_symbols.push_back(symbol);
     }
-    // One at the end
-    collected_symbols.push_back(str.substr(begin, str.size() - begin - strlen("@")));
     // Process the symbols we found
     for (std::vector<std::string>::const_iterator it = collected_symbols.begin();
          it != collected_symbols.end(); ++it) {
@@ -119,15 +162,35 @@ void PmatchAlphabet::process_symbol_list(std::string str, SymbolNumber sym)
             str_sym = ss[*it];
         }
         list_symbols.push_back(str_sym);
-        if (symbol2lists[str_sym] == NO_SYMBOL_NUMBER) {
-            symbol2lists[str_sym] = symbol_lists.size();
-            symbol_lists.push_back(SymbolNumberVector(1, sym));
-        } else {
-            symbol_lists[symbol2lists[str_sym]].push_back(sym);
+        if (polarity == true) {
+            if (symbol2lists[str_sym] == NO_SYMBOL_NUMBER) {
+                symbol2lists[str_sym] = symbol_lists.size();
+                symbol_lists.push_back(SymbolNumberVector(1, sym));
+            } else {
+                symbol_lists[symbol2lists[str_sym]].push_back(sym);
+            }
         }
     }
     list2symbols[sym] = symbol_list_members.size();
-    symbol_list_members.push_back(list_symbols);
+    if (polarity == false) {
+        SymbolNumberVector excl_symbols;
+        exclusionary_lists.push_back(sym);
+        for (SymbolNumber candidate_for_list = 1; candidate_for_list < symbol_table.size(); ++candidate_for_list) {
+            if (is_printable(symbol_table[candidate_for_list]) &&
+                find(list_symbols.begin(), list_symbols.end(), candidate_for_list) == list_symbols.end()) {
+                excl_symbols.push_back(candidate_for_list);
+                if (symbol2lists[candidate_for_list] == NO_SYMBOL_NUMBER) {
+                    symbol2lists[candidate_for_list] = symbol_lists.size();
+                    symbol_lists.push_back(SymbolNumberVector(1, sym));
+                } else {
+                    symbol_lists[symbol2lists[sym]].push_back(sym);
+                }
+            }
+        }
+        symbol_list_members.push_back(excl_symbols);
+    } else {
+        symbol_list_members.push_back(list_symbols);
+    }
 }
 
 SymbolNumberVector PmatchAlphabet::get_specials(void) const
@@ -263,7 +326,104 @@ PmatchContainer::PmatchContainer(std::istream & inputstream):
             }
         }
     }
+    
+}
+
+PmatchContainer::PmatchContainer(Transducer * t):
+    verbose(false),
+    locate_mode(false),
+    profile_mode(false),
+    single_codepoint_tokenization(false),
+    recursion_depth_left(PMATCH_MAX_RECURSION_DEPTH),
+    entry_stack()
+{
+    TransducerHeader header = t->get_header();
+    alphabet = PmatchAlphabet(t->get_alphabet());
+    orig_symbol_count = symbol_count = alphabet.get_orig_symbol_count();
+    alphabet.extract_tags = locate_mode;
+    line_number = 0;
+    encoder = new Encoder(alphabet.get_symbol_table(), orig_symbol_count);
+    TransducerTable<TransitionW> transitions = t->copy_transitionw_table();
+    TransducerTable<TransitionWIndex> indices = t->copy_windex_table();
+    toplevel = new hfst_ol::PmatchTransducer(
+        transitions.get_vector(),
+        indices.get_vector(),
+        alphabet,
+        this);
+    toplevel->collect_possible_first_symbols();
 
+    // Finally fetch the first symbols from any
+    // first-position rtn arcs in TOP. If they are potential epsilon loops,
+    // clear out the set.
+    SymbolNumber max_input_sym = 0;
+    std::set<SymbolNumber> & possible_firsts = toplevel->possible_first_symbols;
+    for (std::set<SymbolNumber>::iterator it = possible_firsts.begin();
+         it != possible_firsts.end(); ++it) {
+        if (*it > max_input_sym) { max_input_sym = *it; }
+        if (alphabet.has_rtn(*it)) {
+            if (alphabet.get_rtn(*it) == toplevel) {
+                possible_firsts.clear();
+                break;
+            }
+            alphabet.get_rtn(*it)->collect_possible_first_symbols();
+            std::set<SymbolNumber> rtn_firsts =
+                alphabet.get_rtn(*it)->possible_first_symbols;
+            for (RtnNameMap::const_iterator it = alphabet.rtn_names.begin();
+                 it != alphabet.rtn_names.end(); ++it) {
+                if (rtn_firsts.count(it->second) == 1) {
+                    // For now we are very conservative:
+                    // if we can go through two levels of rtns
+                    // without any input, we just assume the full
+                    // input set is possible
+                    possible_firsts.clear();
+                }
+            }
+            if (rtn_firsts.empty() || possible_firsts.empty()) {
+                possible_firsts.clear();
+                break;
+            } else {
+                for (std::set<SymbolNumber>::
+                         const_iterator rtn_it = rtn_firsts.begin();
+                     rtn_it != rtn_firsts.end(); ++rtn_it) {
+                    if (*rtn_it > max_input_sym) { max_input_sym = *rtn_it ;}
+                    possible_firsts.insert(*rtn_it);
+                }
+            }
+        }
+    }
+    for (RtnNameMap::const_iterator it = alphabet.rtn_names.begin();
+         it != alphabet.rtn_names.end(); ++it) {
+        possible_firsts.erase(it->second);
+    }
+    if (!possible_firsts.empty() &&
+        alphabet.get_special(boundary) != NO_SYMBOL_NUMBER) {
+        possible_firsts.insert(alphabet.get_special(boundary));
+    }
+    if (!possible_firsts.empty()) {
+        for (int i = 0; i <= max_input_sym; ++i) {
+            if (possible_firsts.count(i) == 1) {
+                possible_first_symbols.push_back(1);
+            } else {
+                possible_first_symbols.push_back(0);
+            }
+        }
+    }
+}
+
+void PmatchContainer::add_rtn(Transducer * rtn, const std::string & name)
+{
+    TransducerTable<TransitionW> transitions = rtn->copy_transitionw_table();
+    TransducerTable<TransitionWIndex> indices = rtn->copy_windex_table();
+    PmatchTransducer * pmatch_rtn = new hfst_ol::PmatchTransducer(
+        transitions.get_vector(),
+        indices.get_vector(),
+        alphabet,
+        this);
+    if (!alphabet.has_rtn(name)) {
+        alphabet.add_rtn(pmatch_rtn, name);
+    } else {
+        delete rtn;
+    }
 }
 
 PmatchContainer::PmatchContainer(void)
@@ -299,7 +459,7 @@ bool PmatchAlphabet::is_counter(const std::string & symbol)
 
 bool PmatchAlphabet::is_list(const std::string & symbol)
 {
-    return symbol.find("@PMATCH_LIST_") == 0 && symbol.rfind("@") == symbol.size() - 1;
+    return (symbol.find("@L.") == 0 || symbol.find("@X.") == 0) && symbol.rfind("@") == symbol.size() - 1;
 }
 
 bool PmatchAlphabet::is_special(const std::string & symbol)
@@ -315,6 +475,14 @@ bool PmatchAlphabet::is_special(const std::string & symbol)
     }
 }
 
+bool PmatchAlphabet::is_printable(const std::string & symbol)
+{
+    if (symbol.size() < 3) {
+        return true;
+    }
+    return symbol.find("@") != 0 || symbol.at(symbol.size() - 1) != '@';
+}
+
 bool PmatchAlphabet::is_guard(const SymbolNumber symbol) const
 {
     for(SymbolNumberVector::const_iterator it = guards.begin();
@@ -331,6 +499,11 @@ bool PmatchAlphabet::is_counter(const SymbolNumber symbol) const
     return (symbol < counters.size() && counters[symbol] != NO_COUNTER);
 }
 
+bool PmatchAlphabet::is_input_mark(const SymbolNumber symbol) const
+{
+    return get_special(Pmatch_input_mark) == symbol;
+}
+
 std::string PmatchAlphabet::name_from_insertion(const std::string & symbol)
 {
     return symbol.substr(sizeof("@I.") - 1, symbol.size() - (sizeof("@I.@") - 1));
@@ -477,7 +650,7 @@ SymbolNumber PmatchAlphabet::get_special(SpecialSymbol special) const
     return special_symbols.at(special);
 }
 
-void PmatchContainer::process(std::string & input_str)
+void PmatchContainer::process(const std::string & input_str)
 {
     initialize_input(input_str.c_str());
     unsigned int input_pos = 0;
@@ -548,15 +721,29 @@ void PmatchContainer::process(std::string & input_str)
     }
 }
 
-std::string PmatchContainer::match(std::string & input)
+std::string PmatchContainer::match(const std::string & input,
+                                   double time_cutoff)
 {
+    max_time = time_cutoff;
+    if (max_time > 0.0) {
+        start_clock = clock();
+        call_counter = 0;
+        limit_reached = false;
+    }
     locate_mode = false;
     process(input);
     return stringify_output();
 }
 
-LocationVectorVector PmatchContainer::locate(std::string & input)
+LocationVectorVector PmatchContainer::locate(std::string & input,
+                                             double time_cutoff)
 {
+    max_time = time_cutoff;
+    if (max_time > 0.0) {
+        start_clock = clock();
+        call_counter = 0;
+        limit_reached = false;
+    }
     locate_mode = true;
     process(input);
     return locations;
@@ -665,10 +852,11 @@ Location PmatchAlphabet::locatefy(unsigned int input_offset,
     Location retval;
     retval.start = input_offset;
     retval.weight = str.weight;
+    size_t input_mark = 0;
+    size_t output_mark = 0;
 
     // We rebuild the original input without special
     // symbols but with IDENTITIES etc. replaced
-    SymbolNumberVector orig_input;
     for (DoubleTape::const_iterator it = str.begin();
          it != str.end(); ++it) {
         SymbolNumber input = it->input;
@@ -681,15 +869,23 @@ Location PmatchAlphabet::locatefy(unsigned int input_offset,
             retval.output.append(string_from_symbol(output));
         }
         if (is_printable(input)) {
-            orig_input.push_back(input);
+            retval.input.append(string_from_symbol(input));
             ++input_offset;
         }
+        if (is_input_mark(output)) {
+            retval.output_parts.push_back(output_mark);
+            retval.input_parts.push_back(input_mark);
+            output_mark = retval.output.size();
+            input_mark = retval.input.size();
+        }
     }
-    retval.length = input_offset - retval.start;
-    for(SymbolNumberVector::const_iterator input_it = orig_input.begin();
-        input_it != orig_input.end(); ++input_it) {
-        retval.input.append(string_from_symbol(*input_it));
+    if (output_mark > 0) {
+        retval.output_parts.push_back(output_mark);
+    }
+    if (input_mark > 0) {
+        retval.input_parts.push_back(input_mark);
     }
+    retval.length = input_offset - retval.start;
     return retval;
 }
 
@@ -767,6 +963,36 @@ PmatchTransducer::PmatchTransducer(std::istream & is,
     free(orig_p);
 }
 
+PmatchTransducer::PmatchTransducer(std::vector<TransitionW> transition_vector,
+                                   std::vector<TransitionWIndex> index_vector,
+                                   PmatchAlphabet & alpha,
+                                   PmatchContainer * cont):
+    alphabet(alpha),
+    container(cont),
+    locations(NULL),
+    transition_table(transition_vector),
+    index_table(index_vector)
+{
+    orig_symbol_count = alphabet.get_symbol_table().size();
+    // initialize the stack for local variables
+    LocalVariables locals_front;
+    locals_front.flag_state = alphabet.get_fd_table();
+    locals_front.tape_step = 1;
+    locals_front.context = none;
+    locals_front.context_placeholder = 0;
+    locals_front.default_symbol_trap = false;
+    locals_front.negative_context_success = false;
+    locals_front.pending_passthrough = false;
+    locals_front.running_weight = 0.0;
+    local_stack.push(locals_front);
+    RtnVariables rtn_front;
+    rtn_front.tape_entry = 0;
+    rtn_front.input_tape_entry = 0;
+    rtn_front.candidate_input_pos = 0;
+    rtn_front.candidate_tape_pos = 0;
+    rtn_stack.push(rtn_front);
+}
+
 // Precompute which symbols may be at the start of a match.
 // For now we ignore default arcs, as does the rest of pmatch.
 void PmatchTransducer::collect_possible_first_symbols(void)
@@ -878,7 +1104,15 @@ void PmatchTransducer::collect_first_transition(TransitionTableIndex i,
                     throw true;
                 }
                 if (alphabet.list2symbols[*it] != NO_SYMBOL_NUMBER) {
-// If this is a list, collect everything in the list
+                    // If this is a list, collect everything in the list
+                    // if it's an exclusionary list, give up
+                    if (std::find(alphabet.exclusionary_lists.begin(),
+                                  alphabet.exclusionary_lists.end(),
+                                  *it)
+                        != alphabet.exclusionary_lists.end()) {
+                        container->reset_recursion();
+                        throw true;
+                    }
                     for (SymbolNumberVector::const_iterator sym_it =
                             alphabet.symbol_list_members[alphabet.list2symbols[*it]].begin();
                         sym_it != alphabet.symbol_list_members[alphabet.list2symbols[*it]].end(); ++sym_it) {
@@ -1021,6 +1255,7 @@ void PmatchTransducer::match(unsigned int & input_tape_pos,
     rtn_stack.top().tape_entry = tape_pos;
     rtn_stack.top().candidate_tape_pos = tape_pos;
     rtn_stack.top().best_weight = 0.0;
+    rtn_stack.top().candidate_found = false;
     local_stack.top().context = none;
     local_stack.top().tape_step = 1;
     local_stack.top().context_placeholder = 0;
@@ -1047,6 +1282,7 @@ void PmatchTransducer::rtn_call(unsigned int & input_tape_pos,
     rtn_stack.top().tape_entry = tape_pos;
     rtn_stack.top().candidate_tape_pos = tape_pos;
     rtn_stack.top().best_weight = 0.0;
+    rtn_stack.top().candidate_found = false;
     local_stack.push(local_stack.top());
     local_stack.top().flag_state = alphabet.get_fd_table();
     local_stack.top().tape_step = 1;
@@ -1073,7 +1309,7 @@ void PmatchTransducer::note_analysis(unsigned int input_pos,
         // with left contexts and should be dealt with a bit more nicely
         return;
     }
-
+    rtn_stack.top().candidate_found = true;
     if (locations != NULL) {
         grab_location(input_pos, tape_pos);
         return;
@@ -1191,7 +1427,6 @@ void PmatchTransducer::check_context(unsigned int input_pos,
                                      unsigned int tape_pos,
                                      TransitionTableIndex i)
 {
-//    std::cerr << local_stack.size() << std::endl;
     local_stack.top().context_placeholder = input_pos;
     if (local_stack.top().context == LC ||
         local_stack.top().context == NLC) {
@@ -1214,7 +1449,6 @@ void PmatchTransducer::check_context(unsigned int input_pos,
     if (schedule_passthrough) {
         local_stack.top().pending_passthrough = true;
     }
-//    std::cerr << local_stack.size() << std::endl;
 }
 
 void PmatchTransducer::take_rtn(SymbolNumber input,
@@ -1320,6 +1554,18 @@ void PmatchTransducer::get_analyses(unsigned int input_pos,
                                     unsigned int tape_pos,
                                     TransitionTableIndex i)
 {
+    if (container->max_time > 0.0) {
+        ++container->call_counter;
+        // Have we spent too much time?
+        if (container->limit_reached ||
+            (container->call_counter % 1000000 == 0 &&
+             (rtn_stack.top().candidate_found &&
+              // if we have at least something, stop doing more work
+              (((double)(clock() - container->start_clock)) / CLOCKS_PER_SEC) > container->max_time))) {
+            container->limit_reached = true;
+            return;
+        }
+    }
     if (!container->try_recurse()) {
         if (container->verbose) {
             std::cerr << "pmatch: out of stack space, truncating result\n";
@@ -1352,14 +1598,14 @@ void PmatchTransducer::get_analyses(unsigned int input_pos,
     }
     
     if (alphabet.symbol2lists[input] != NO_SYMBOL_NUMBER) {
-// At least one symbol list contains this symbol
+// At least one symbol list could allow this symbol
         for(SymbolNumberVector::const_iterator it =
                 alphabet.symbol_lists[alphabet.symbol2lists[input]].begin();
             it != alphabet.symbol_lists[alphabet.symbol2lists[input]].end(); ++it) {
             take_transitions(*it, input_pos, tape_pos, i+1);
         }
     }
-
+    // The "normal" case where we have a regular input symbol
     if (input < orig_symbol_count) {
         take_transitions(input, input_pos, tape_pos, i+1);
     } else {
@@ -1370,6 +1616,7 @@ void PmatchTransducer::get_analyses(unsigned int input_pos,
             take_transitions(alphabet.get_unknown_symbol(), input_pos, tape_pos, i+1);
         }
     }
+    
     container->unrecurse();
 }
 
diff --git a/libhfst/src/implementations/optimized-lookup/pmatch.h b/libhfst/src/implementations/optimized-lookup/pmatch.h
index ed1bb90..e60d052 100644
--- a/libhfst/src/implementations/optimized-lookup/pmatch.h
+++ b/libhfst/src/implementations/optimized-lookup/pmatch.h
@@ -1,3 +1,11 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 #ifndef _HFST_OL_TRANSDUCER_PMATCH_H_
 #define _HFST_OL_TRANSDUCER_PMATCH_H_
 
@@ -5,6 +13,7 @@
 #include <stack>
 #include <sstream>
 #include <algorithm>
+#include <ctime>
 #include "transducer.h"
 
 namespace hfst_ol {
@@ -34,7 +43,9 @@ namespace hfst_ol {
                        NRC_entry,
                        NRC_exit,
                        Pmatch_passthrough,
-                       boundary};
+                       boundary,
+                       Pmatch_input_mark,
+                       SPECIALSYMBOL_NR_ITEMS};
 
     struct SymbolPair
     {
@@ -93,14 +104,19 @@ namespace hfst_ol {
         RtnNameMap rtn_names;
 // For each symbol, either NO_SYMBOL for "no corresponding list" or an index into symbol_lists
         SymbolNumberVector symbol2lists;
-// For each a symbol, either NO_SYMBOL for "this is not a list" or an index into symbol_lists_members
+// For each a symbol, either NO_SYMBOL for "this is not a list" or an index into symbol_list_members
         SymbolNumberVector list2symbols;
+        // For each entry referring to entries in the symbol table, indicate
+        // "this symbol is an exclusionary list", ie. symbols not in it
+        // will match
+        SymbolNumberVector exclusionary_lists;
         std::vector<SymbolNumberVector> symbol_lists;
         std::vector<SymbolNumberVector> symbol_list_members;
         std::vector<unsigned long int> counters;
         SymbolNumberVector guards;
         std::vector<bool> printable_vector;
         bool is_end_tag(const SymbolNumber symbol) const;
+        bool is_input_mark(const SymbolNumber symbol) const;
         bool is_guard(const SymbolNumber symbol) const;
         bool is_counter(const SymbolNumber symbol) const;
         std::string end_tag(const SymbolNumber symbol);
@@ -109,6 +125,7 @@ namespace hfst_ol {
 
     public:
         PmatchAlphabet(std::istream& is, SymbolNumber symbol_count);
+        PmatchAlphabet(TransducerAlphabet const & a);
         PmatchAlphabet(void);
         ~PmatchAlphabet(void);
         virtual void add_symbol(const std::string & symbol);
@@ -118,6 +135,7 @@ namespace hfst_ol {
         static bool is_list(const std::string & symbol);
         static bool is_counter(const std::string & symbol);
         static bool is_special(const std::string & symbol);
+        static bool is_printable(const std::string & symbol);
         static std::string name_from_insertion(
             const std::string & symbol);
         bool is_printable(SymbolNumber symbol);
@@ -160,10 +178,19 @@ namespace hfst_ol {
         bool profile_mode;
         bool single_codepoint_tokenization;
         unsigned int recursion_depth_left;
+        // An optional time limit for operations
+        double max_time;
+        // When we started work
+        clock_t start_clock;
+        // A counter to avoid checking the clock too often
+        unsigned long call_counter;
+        // A flag to set for when time has been overstepped
+        bool limit_reached;
 
     public:
 
         PmatchContainer(std::istream & is);
+        PmatchContainer(Transducer * toplevel);
         PmatchContainer(void);
         ~PmatchContainer(void);
 
@@ -172,9 +199,12 @@ namespace hfst_ol {
         void initialize_input(const char * input);
         bool has_unsatisfied_rtns(void) const;
         std::string get_unsatisfied_rtn_name(void) const;
-        void process(std::string & input);
-        std::string match(std::string & input);
-        LocationVectorVector locate(std::string & input);
+        void add_rtn(Transducer * rtn, const std::string & name);
+        void process(const std::string & input);
+        std::string match(const std::string & input,
+                          double time_cutoff = 0.0);
+        LocationVectorVector locate(std::string & input,
+                                    double time_cutoff = 0.0);
         std::string get_profiling_info(void);
         bool has_queued_input(unsigned int input_pos);
         bool not_possible_first_symbol(SymbolNumber sym)
@@ -219,6 +249,8 @@ namespace hfst_ol {
         std::string output;
         std::string tag;
         Weight weight;
+        std::vector<size_t> input_parts;
+        std::vector<size_t> output_parts;
 
         bool operator<(Location rhs) const
             { return this->weight < rhs.weight; }
@@ -259,6 +291,7 @@ namespace hfst_ol {
             unsigned int tape_entry;
             DoubleTape best_result;
             Weight best_weight;
+            bool candidate_found;
         };
 
         std::stack<LocalVariables> local_stack;
@@ -361,6 +394,11 @@ namespace hfst_ol {
                          PmatchAlphabet & alphabet,
                          PmatchContainer * container);
 
+        PmatchTransducer(std::vector<TransitionW> transition_vector,
+                         std::vector<TransitionWIndex> index_vector,
+                         PmatchAlphabet & alphabet,
+                         PmatchContainer * container);
+
         std::set<SymbolNumber> possible_first_symbols;
 
         bool final_index(TransitionTableIndex i) const
diff --git a/libhfst/src/implementations/optimized-lookup/transducer.cc b/libhfst/src/implementations/optimized-lookup/transducer.cc
index f6ad270..fa54370 100644
--- a/libhfst/src/implementations/optimized-lookup/transducer.cc
+++ b/libhfst/src/implementations/optimized-lookup/transducer.cc
@@ -1,14 +1,11 @@
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include "./transducer.h"
 
@@ -283,6 +280,20 @@ bool Transducer::initialize_input(const char * input)
     return true;
 }
 
+void Transducer::include_symbol_in_alphabet(const std::string & sym)
+{
+    SymbolNumber key = alphabet->symbol_from_string(sym);
+    if (key != NO_SYMBOL_NUMBER) {
+        return;
+    }
+    key = alphabet->get_symbol_table().size();
+    alphabet->add_symbol(sym);
+    char * cstr_for_encoder = new char[sym.size() + 1];
+    std::strcpy(cstr_for_encoder, sym.c_str());
+    encoder->read_input_symbol(cstr_for_encoder, key);
+    delete[] cstr_for_encoder;
+}
+
 HfstOneLevelPaths * Transducer::lookup_fd(const StringVector & s, ssize_t limit,
                                           double time_cutoff)
 {
@@ -332,7 +343,7 @@ HfstOneLevelPaths * Transducer::lookup_fd(const char * s, ssize_t limit,
     max_time = 0.0;
     if (time_cutoff > 0.0) {
         max_time = time_cutoff;
-        max_clock = clock() + CLOCKS_PER_SEC*max_time;
+        start_clock = clock();
     }
     HfstOneLevelPaths * results = new HfstOneLevelPaths;
     lookup_paths = results;
@@ -482,7 +493,7 @@ void Transducer::get_analyses(unsigned int input_pos,
     }
     if (max_time > 0.0) {
         // quit if we've overspent our time
-        if (clock() > max_clock) {
+        if ((((double) clock() - start_clock) / CLOCKS_PER_SEC) > max_time) {
             return;
         }
     }
diff --git a/libhfst/src/implementations/optimized-lookup/transducer.h b/libhfst/src/implementations/optimized-lookup/transducer.h
index e98ff52..4f2c7d4 100644
--- a/libhfst/src/implementations/optimized-lookup/transducer.h
+++ b/libhfst/src/implementations/optimized-lookup/transducer.h
@@ -1,15 +1,12 @@
 // -*- mode: c++; -*-
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #ifndef _HFST_OL_TRANSDUCER_TRANSDUCER_H_
 #define _HFST_OL_TRANSDUCER_TRANSDUCER_H_
@@ -658,6 +655,8 @@ public:
             return (i < TRANSITION_TARGET_TABLE_START) ? 
                 table[i] : table[i-TRANSITION_TARGET_TABLE_START];
         }
+
+    std::vector<T> get_vector(void) const { return std::vector<T>(table); } ;
   
     void display(bool transition_table) const
         {
@@ -746,7 +745,6 @@ public:
         { return index_table[i].final(); }
     Weight get_final_weight(TransitionTableIndex i) const
         { return index_table[i].final_weight(); }
-
   
     void display() const
         {
@@ -857,7 +855,7 @@ protected:
     ssize_t max_lookups;
     unsigned int recursion_depth_left;
     double max_time;
-    clock_t max_clock;
+    clock_t start_clock;
 
     void try_epsilon_transitions(unsigned int input_tape_pos,
                                  unsigned int output_tape_pos,
@@ -925,11 +923,11 @@ public:
     const SymbolTable& get_symbol_table() const
         { return alphabet->get_symbol_table(); }
 
-
     const TransitionIndex& get_index(TransitionTableIndex i) const
         { return tables->get_index(i); }
     const Transition& get_transition(TransitionTableIndex i) const
         { return tables->get_transition(i); }
+    
     bool final_index(TransitionTableIndex i) const
         {
             if (indexes_transition_table(i)) {
@@ -950,7 +948,7 @@ public:
     TransducerTable<TransitionW> copy_transitionw_table();
     TransducerTable<TransitionIndex> copy_index_table();
     TransducerTable<Transition> copy_transition_table();
-
+    
     // state_index must be an index to a state which is defined as either:
     // (1) the start of a set of entries in the transition index table, or
     // (2) the boundary before a set of entries in the transition table, in
@@ -962,6 +960,7 @@ public:
 
 
     bool initialize_input(const char * input_str);
+    void include_symbol_in_alphabet(const std::string & sym);
     HfstOneLevelPaths * lookup_fd(const StringVector & s, ssize_t limit = -1,
         double time_cutoff = 0.0);
     /* Tokenize and lookup, accounting for flag diacritics, the surface string
diff --git a/libhfst/src/parsers/LexcCompiler.cc b/libhfst/src/parsers/LexcCompiler.cc
index 463b86f..e3c777c 100644
--- a/libhfst/src/parsers/LexcCompiler.cc
+++ b/libhfst/src/parsers/LexcCompiler.cc
@@ -1,20 +1,16 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file LexcCompiler.cc
 //!
 //! @brief Implementation of lexc compilation.
 
-
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
-
 #if HAVE_CONFIG_H
 #  include <config.h>
 #endif
@@ -37,13 +33,19 @@ using std::set_difference;
 #include "HfstTransducer.h"
 #include "XreCompiler.h"
 #include "lexc-utils.h"
-#include "lexc-parser.hh"
+
+#ifdef YACC_USE_PARSER_H_EXTENSION
+  #include "lexc-parser.h"
+#else
+  #include "lexc-parser.hh"
+#endif
+
 #include "xre_utils.h"
 #include "HfstSymbolDefs.h"
 //#include "../../../tools/src/HfstStrings2FstTokenizer.h"
 
 #ifdef WINDOWS
-#include "../../../tools/src/hfst-string-conversions.h"
+#include "hfst-string-conversions.h"
 using hfst::hfst_fprintf_console;
 #endif // WINDOWS
 
diff --git a/libhfst/src/parsers/LexcCompiler.h b/libhfst/src/parsers/LexcCompiler.h
index acffcca..56cd3b0 100644
--- a/libhfst/src/parsers/LexcCompiler.h
+++ b/libhfst/src/parsers/LexcCompiler.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file LexcCompiler.h
 //!
 //! @brief Functions for building trie representation of lexc data
@@ -9,18 +18,6 @@
 //! original lexc, e.g. deleting entries from a lexicon during compilation is
 //! not implemented.
 
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
-
 #ifndef GUARD_LexcCompiler_h
 #define GUARD_LexcCompiler_h
 
diff --git a/libhfst/src/parsers/Makefile.am b/libhfst/src/parsers/Makefile.am
index 1ef61fc..a465815 100644
--- a/libhfst/src/parsers/Makefile.am
+++ b/libhfst/src/parsers/Makefile.am
@@ -1,19 +1,13 @@
 ## Process this file with automake to produce Makefile.in
 
-## Copyright (C) 2011 University of Helsinki
-
-## 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.
-
-## You should have received a copy of the GNU General Public License
-## along with this program. If not, see <http://www.gnu.org/licenses/>.
+# Copyright (c) 2016 University of Helsinki                          
+#                                                                    
+# This library is free software; you can redistribute it and/or      
+# modify it under the terms of the GNU Lesser General Public         
+# License as published by the Free Software Foundation; either       
+# version 3 of the License, or (at your option) any later version.    
+# See the file COPYING included with this distribution for more      
+# information. 
 
 noinst_LTLIBRARIES=libhfstparsers.la
 
@@ -30,23 +24,30 @@ LEXC_HDRS=LexcCompiler.h lexc-utils.h
 LEXC_BUILT=lexc-parser.cc lexc-lexer.cc
 
 # TODO: hfst-string-conversions.cc
-XFST_SRCS=xfst-lexer.ll xfst-parser.yy xfst-utils.cc XfstCompiler.cc xfst_help_message.cc ../../../tools/src/hfst-string-conversions.cc
+XFST_SRCS=xfst-lexer.ll xfst-parser.yy xfst-utils.cc XfstCompiler.cc xfst_help_message.cc
 XFST_HDRS=XfstCompiler.h xfst-utils.h xfst_help_message.h
 XFST_BUILT=xfst-parser.cc xfst-lexer.cc
 
 BUILT_SOURCES=$(XRE_BUILT) $(PMATCH_BUILT) $(LEXC_BUILT) $(XFST_BUILT)
 
+if YACC_USE_PARSER_H_EXTENSION
+  HEADER=h
+else
+  HEADER=hh
+endif
+
 CLEANFILES=$(XRE_BUILT) $(PMATCH_BUILT) $(LEXC_BUILT) $(XFST_BUILT) \
-             xre_parse.hh pmatch_parse.hh lexc-parser.hh xfst-parser.hh
+	xre_parse.$(HEADER) pmatch_parse.$(HEADER) lexc-parser.$(HEADER) xfst-parser.$(HEADER)
 
 AM_YFLAGS=-d
 AM_LFLAGS=--outfile=$(LEX_OUTPUT_ROOT).c
 
-CLEANFILES+=xre_parse.hh  pmatch_parse.hh  lexc-parser.hh xfst-parser.hh
-xre_lex.ll: xre_parse.hh
-pmatch_lex.ll: pmatch_parse.hh
-lexc-lexer.ll: lexc-parser.hh
-xfst-lexer.ll: xfst-parser.hh
+#CLEANFILES+=xre_parse.hh  pmatch_parse.hh  lexc-parser.hh xfst-parser.hh
+
+xre_lex.ll: xre_parse.$(HEADER)
+pmatch_lex.ll: pmatch_parse.$(HEADER)
+lexc-lexer.ll: lexc-parser.$(HEADER)
+xfst-lexer.ll: xfst-parser.$(HEADER)
 
 libhfstparsers_la_SOURCES=$(SFST_SRCS) $(XRE_SRCS) $(PMATCH_SRCS) $(LEXC_SRCS) $(XFST_SRCS)
 
@@ -82,4 +83,5 @@ LexcCompiler_LDADD=../libhfst.la
 
 TESTS=$(LIBHFST_PARSER_TSTS)
 
-EXTRA_DIST=xre_parse.hh pmatch_parse.hh lexc-parser.hh xfst-parser.hh $(BUILT_SOURCES)
+EXTRA_DIST=xre_parse.$(HEADER) pmatch_parse.$(HEADER) lexc-parser.$(HEADER) xfst-parser.$(HEADER) $(BUILT_SOURCES)
+
diff --git a/libhfst/src/parsers/PmatchCompiler.cc b/libhfst/src/parsers/PmatchCompiler.cc
index 75cf784..14a8d27 100644
--- a/libhfst/src/parsers/PmatchCompiler.cc
+++ b/libhfst/src/parsers/PmatchCompiler.cc
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file PmatchCompiler.cc
 //!
 //! @brief Functions for building transducers from Xerox regexps
@@ -28,7 +37,7 @@ PmatchCompiler::define(const std::string& name, const std::string& pmatch)
 {
   compile(pmatch);
   if (definitions.count(name) != 0) {
-      definitions_[name] = definitions[name];
+      definitions_[name] = definitions[name]->evaluate();
   }
 }
 
diff --git a/libhfst/src/parsers/PmatchCompiler.h b/libhfst/src/parsers/PmatchCompiler.h
index a1b07ad..8272c85 100644
--- a/libhfst/src/parsers/PmatchCompiler.h
+++ b/libhfst/src/parsers/PmatchCompiler.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file PmatchCompiler.h
 //!
 //! @brief A class that encapsulates compilation of Xerox compatible regular
@@ -11,18 +20,6 @@
 //!        This class is merely a wrapper around lex and yacc functions handling
 //!        the parsing.
 
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
-
 #ifndef GUARD_PmatchCompiler_h
 #define GUARD_PmatchCompiler_h
 
diff --git a/libhfst/src/parsers/XfstCompiler.cc b/libhfst/src/parsers/XfstCompiler.cc
index 9c173ce..6f49570 100644
--- a/libhfst/src/parsers/XfstCompiler.cc
+++ b/libhfst/src/parsers/XfstCompiler.cc
@@ -1,18 +1,16 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file XfstCompiler.cc
 //!
 //! @brief Implemetation of class encapsulating yacc and flex parsers for XFST
 //!        scripts
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
 
 #if HAVE_CONFIG_H
 #   include <config.h>
@@ -40,11 +38,16 @@ using std::stack;
 #endif  // WINDOWS
 
 // TODO!!!
-#include "../../../tools/src/hfst-string-conversions.h"
+#include "hfst-string-conversions.h"
 
 #include "XfstCompiler.h"
 #include "xfst-utils.h"
-#include "xfst-parser.hh"
+
+#ifdef YACC_USE_PARSER_H_EXTENSION
+  #include "xfst-parser.h"
+#else
+  #include "xfst-parser.hh"
+#endif
 
 #include "HfstStrings2FstTokenizer.h"
 #include "HfstPrintDot.h"
@@ -648,7 +651,7 @@ namespace xfst {
   }
 
     XfstCompiler&
-    XfstCompiler::apply_line(char* line, HfstBasicTransducer * t)
+    XfstCompiler::lookup(char* line, HfstBasicTransducer * t)
       {
         char* token = strstrip(line);
         StringSet alpha = t->get_alphabet();
@@ -710,7 +713,7 @@ namespace xfst {
 
 
     XfstCompiler&
-    XfstCompiler::apply_line(char* line, const HfstTransducer * t, size_t cutoff)
+    XfstCompiler::lookup(char* line, const HfstTransducer * t, size_t cutoff)
       {
         char* token = strstrip(line);
         HfstOneLevelPaths * paths = NULL;
@@ -851,7 +854,7 @@ namespace xfst {
 
 
     XfstCompiler&
-    XfstCompiler::apply_up_line(char* line)
+    XfstCompiler::apply_down_line(char* line) // apply_up_line -> apply_down_line
       {
         if (stack_.size() < 1)
           {
@@ -865,7 +868,7 @@ namespace xfst {
           {
             //hfst_fprintf(warnstream_, "lookup might be slow, consider 'convert net'\n");
             HfstBasicTransducer fsm(*t);
-            return this->apply_line(line, &fsm);
+            return this->lookup(line, &fsm);
           }
 
         size_t ol_cutoff = string_to_size_t(variables_["lookup-cycle-cutoff"]); // -1; fix this
@@ -882,30 +885,24 @@ namespace xfst {
               }
           }
         
-        return this->apply_line(line, t, ol_cutoff);
+        return this->lookup(line, t, ol_cutoff);
       }
 
     XfstCompiler&
-    XfstCompiler::apply_down_line(char* line)
+    XfstCompiler::apply_up_line(char* line) // apply_down_line -> apply_up_line
       {
         GET_TOP(t);
         // lookdown not yet implemented in HFST
         if (verbose_)
           {
-            error() << "warning: lookdown not implemented, inverting transducer and performing lookup" << std::endl
-                    << "for faster performance, invert and minimize top network and do lookup instead" << std::endl << std::endl;
+            error() << "warning: apply up not implemented, inverting transducer and performing apply down" << std::endl
+                    << "for faster performance, invert and minimize top network and do apply down instead" << std::endl << std::endl;
             flush(&error());
-        //hfst_fprintf(warnstream_, 
-        //                 "warning: lookdown not implemented, inverting transducer and performing lookup\n"
-        //                 "for faster performance, invert and minimize top network and do lookup instead\n\n");
           }
         t = new HfstTransducer(*(stack_.top()));
         t->invert().minimize();
-
-        //hfst_fprintf(warnstream_, "lookup might be slow, consider 'convert net'\n");
-
         HfstBasicTransducer fsm(*t);
-        this->apply_line(line, &fsm);
+        this->lookup(line, &fsm);
         delete t;
         return *this;
       }
@@ -1030,7 +1027,6 @@ namespace xfst {
     return this->quit_requested_;
   }
 
-  // HERE
   XfstCompiler&
   XfstCompiler::apply(FILE* infile, ApplyDirection direction)
       {
@@ -1047,15 +1043,13 @@ namespace xfst {
 
         HfstBasicTransducer * fsm = NULL;
 
-        if (direction == APPLY_DOWN_DIRECTION)
+        if (direction == APPLY_UP_DIRECTION)
           {
             if (t->get_type() == hfst::HFST_OL_TYPE ||
                 t->get_type() == hfst::HFST_OLW_TYPE)
               {
                 error() << "Operation not supported for optimized lookup format. Consider 'remove-optimization' to convert into ordinary format." << std::endl; 
                 flush(&error());
-                //hfst_fprintf(stderr, "Operation not supported for optimized lookup format. "
-                //             "Consider 'remove-optimization' to convert into ordinary format.\n");
                 prompt();
                 return *this;
               }
@@ -1063,12 +1057,9 @@ namespace xfst {
             // lookdown not yet implemented in HFST
             if (verbose_)
               {
-                error() << "warning: lookdown not implemented, inverting transducer and performing lookup" << std::endl
-                        << "for faster performance, invert and minimize top network and do lookup instead" << std::endl << std::endl;
+                error() << "warning: apply up not implemented, inverting transducer and performing apply down" << std::endl
+                        << "for faster performance, invert and minimize top network and do apply down instead" << std::endl << std::endl;
                 flush(&error());
-                //hfst_fprintf(warnstream_, 
-                //             "warning: lookdown not implemented, inverting transducer and performing lookup\n"
-                //             "for faster performance, invert and minimize top network and do lookup instead\n\n");
               }
             t = new HfstTransducer(*(stack_.top()));
             t->invert().minimize();
@@ -1088,8 +1079,6 @@ namespace xfst {
                   {
                     error() << "warning: transducer is infinitely ambiguous, limiting number of cycles to " << ol_cutoff << std::endl;
                     flush(&error());
-                //hfst_fprintf(warnstream_, 
-                //                 "warning: transducer is infinitely ambiguous, limiting number of cycles to " SIZE_T_SPECIFIER "\n", ol_cutoff);
                   }
               }
           }
@@ -1124,16 +1113,16 @@ namespace xfst {
 
             // perform lookup/lookdown
             if (fsm != NULL)
-              apply_line(line, fsm);
+              lookup(line, fsm);
             else
-              apply_line(line, t, ol_cutoff);
+              lookup(line, t, ol_cutoff);
             free(line);
           }
 
         // ignore all readline history given to the apply command
         ignore_history_after_index(ind);
 
-        if (direction == APPLY_DOWN_DIRECTION)
+        if (direction == APPLY_UP_DIRECTION)
           delete t;
         if (fsm != NULL)
           delete fsm;
@@ -4990,19 +4979,22 @@ namespace xfst {
 
   static std::string to_literal_regexp(const hfst::StringPairVector & path, bool input_side)
   {
-    std::string pathstr("[ ");
+    std::string pathstr("[");
     for (hfst::StringPairVector::const_iterator it = path.begin(); it != path.end(); it++)
       {
         std::string symbol = (input_side) ? it->first : it->second ;
-        pathstr.append("\"").append(symbol).append("\" ");
+        if (symbol != hfst::internal_epsilon)
+          pathstr.append("\"").append(symbol).append("\" ");
       }
     pathstr.append("]");
+    if (pathstr == "[]")
+      pathstr = "[0]";
     return pathstr;
   }
 
   static HfstTransducer * to_literal_transducer(const hfst::StringPairVector & path, hfst::xre::XreCompiler & xre_)
   {
-    std::string pathstr("[ ");
+    std::string pathstr("[");
     for (hfst::StringPairVector::const_iterator it = path.begin(); it != path.end(); it++)
       {
         std::string isymbol = it->first;
@@ -5028,6 +5020,8 @@ namespace xfst {
           }
       }
     pathstr.append("];");
+    if (pathstr == "[];")
+      pathstr = "[0];";
     // debug
     //std::cerr << "to_literal_transducer: compiling expression: " << pathstr << std::endl;
     char * p = strdup(pathstr.c_str());
@@ -5038,17 +5032,20 @@ namespace xfst {
 
   static std::string to_regexp(const hfst::StringPairVector & path, bool input_side)
   {
-    std::string pathstr("[ ");
+    std::string pathstr("[");
     for (hfst::StringPairVector::const_iterator it = path.begin(); it != path.end(); it++)
       {
         std::string symbol = (input_side) ? it->first : it->second ;
         // ignore "^[" and "^]"
         if (symbol != "^]" && symbol != "^[")
           {
-            pathstr.append(symbol).append(" ");
+            if (symbol != hfst::internal_epsilon)
+              pathstr.append(symbol); //.append(" ");
           }
       }
     pathstr.append("]");
+    if (pathstr == "[]")
+      pathstr = "[0]";
     return pathstr;
   }
 
@@ -5057,6 +5054,7 @@ namespace xfst {
     {
       assert(level != BOTH_LEVELS);
       using hfst::implementations::HfstState;
+      using hfst::implementations::HfstReplacement;
       using hfst::implementations::HfstReplacements;
       using hfst::implementations::HfstReplacementsMap;
 
@@ -5075,13 +5073,13 @@ namespace xfst {
       if (is_well_formed_for_compile_replace(&tmp_cp, xre_))
         {
           if (verbose_) {
-            error() << "Network is well-formed." << std::endl; //fprintf(stderr, "Network is well-formed.\n");
+            error() << "Network is well-formed." << std::endl;
             flush(&error()); }
         }
       else
         {
           if (verbose_) {
-            error() << "Network is not well-formed." << std::endl; //fprintf(stderr, "Network is not well-formed.\n");
+            error() << "Network is not well-formed." << std::endl;
             flush(&error()); }
           xfst_lesser_fail();
           prompt();
@@ -5091,7 +5089,7 @@ namespace xfst {
       HfstBasicTransducer fsm(*tmp);
       try 
         {
-          HfstReplacementsMap replacement_map = fsm.find_replacements((level == UPPER_LEVEL)); // input_side
+          HfstReplacementsMap replacement_map = fsm.find_replacements((level == UPPER_LEVEL));
           
             for (HfstReplacementsMap::const_iterator it = replacement_map.begin();
                  it != replacement_map.end(); it++)
@@ -5101,60 +5099,33 @@ namespace xfst {
                 for (HfstReplacements::const_iterator rit = replacements.begin();
                      rit != replacements.end(); rit++)
                   {
-                   HfstState end_state = rit->first;
-                   std::string CPR(""); // Cross-Product Regexp
-                   if (level == LOWER_LEVEL)
+                    HfstState end_state = rit->first;
+
+                   std::string regexp = to_regexp(rit->second, (level == UPPER_LEVEL));
+                   std::string literal_regexp = to_literal_regexp(rit->second, (level != UPPER_LEVEL));
+
+                   std::string cross_product_regexp = "[ ";
+                   if (level == UPPER_LEVEL)
                      {
-                       CPR = to_literal_regexp(rit->second, false /*output side*/) + std::string(" .x. ") + to_regexp(rit->second, false /*output side*/);
-                       //CPR = std::string("\"^[\":0") + std::string(" [") + CPR + std::string("] ") + std::string("\"^]\":0 ;");
-                       CPR = std::string("[") + CPR + std::string("] ;");
+                       cross_product_regexp.append(regexp).append(" ] .x. [ ").append(literal_regexp).append(" ]");
                      }
-                   else // UPPER_LEVEL
+                   else
                      {
-                       CPR = to_regexp(rit->second, true /*input side*/) + std::string(" .x. ") + to_literal_regexp(rit->second, true /*input side*/);
-                       //CPR = std::string("0:\"^[\"") + std::string(" [") + CPR + std::string("] ") + std::string("0:\"^]\" ;");
-                       CPR = std::string("[") + CPR + std::string("] ;");
+                       cross_product_regexp.append(literal_regexp).append(" ] .x. [ ").append(regexp).append(" ]");
                      }
-                   char * cpr = strdup(CPR.c_str());
-                   // debug
-                   //fprintf(stderr, "compiling replacement '%s'...\n", cpr);
-                   HfstTransducer * replacement = xre_.compile(cpr);  // XRE
+
+                   HfstTransducer * replacement = xre_.compile(cross_product_regexp);
                    if (replacement == NULL)
                      {
-                       error() << "Could not compile regular expression in compile-replace: " << cpr << "." << std::endl;
-        flush(&error());
-                       //fprintf(stderr, "Could not compile regular expression in compile-replace: %s.\n", cpr);
+                       error() << "Could not compile regular expression in compile-replace: " << cross_product_regexp << "." << std::endl;
+                       flush(&error());
                        xfst_lesser_fail();
                        prompt();
                        return *this;
                      }
-                   replacement->minimize();
-
-                   // debug
-                   //std::cerr << "replacement is:" << std::endl << *replacement << std::endl;
-
-                   // compose with opposite level
-                   if (level == UPPER_LEVEL)
-                     {
-                       HfstTransducer * original_path = to_literal_transducer(rit->second, xre_);
-                       original_path->minimize();
-                       replacement->compose(*original_path);
-                       delete original_path;
-                       replacement->minimize();
-                     }
-                   else // LOWER_LEVEL
-                     {
-                       HfstTransducer * original_path = to_literal_transducer(rit->second, xre_);
-                       original_path->minimize();
-                       original_path->compose(*replacement);
-                       original_path->minimize();
-                       delete replacement;
-                       replacement = original_path; 
-                     }
 
+                   replacement->minimize();
                    HfstBasicTransducer repl(*replacement);
-                   // DEBUG
-                   //std::cerr << "inserting transducer:" << std::endl << *replacement << std::endl << "between states " << start_state << " and " << end_state << "." << std::endl ;
                    delete replacement;
                    fsm.insert_transducer(start_state, end_state, repl);
                   }
@@ -5163,21 +5134,14 @@ namespace xfst {
       catch(const char * msg)
         {
           error() << "compile_replace threw an error: '" << msg << "'" << std::endl;
-        flush(&error());
-          //fprintf(stderr, "compile_replace threw an error: '%s'\n", msg);
+          flush(&error());
         }
       HfstTransducer * result = new HfstTransducer(fsm, format_);
 
-      // debug
-      //std::cerr << "result from compile-replace before filtering is:" << std::endl << *result << std::endl;
-
-      // filter out regexps (todo: possible that there are regexps on opposite side)
+      // filter out regexps
       HfstTransducer * cr = contains_regexp_markers_on_one_side(xre_, (level == UPPER_LEVEL) /*input side*/);
       cr->minimize();
 
-      // debug
-      //std::cerr << "filter is:" << std::endl << *cr << std::endl;
-
       result->subtract(*cr).minimize();
       delete cr;
       stack_.pop();
diff --git a/libhfst/src/parsers/XfstCompiler.h b/libhfst/src/parsers/XfstCompiler.h
index ed12fac..a63555c 100644
--- a/libhfst/src/parsers/XfstCompiler.h
+++ b/libhfst/src/parsers/XfstCompiler.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file XfstCompiler.h
 //!
 //! @brief A class that encapsulates compilation of Xerox fst language scripts
@@ -9,18 +18,6 @@
 //!        This class is merely a wrapper around lex and yacc functions handling
 //!        the parsing.
 
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
-
 #ifndef GUARD_XfstCompiler_h
 #define GUARD_XfstCompiler_h
 
@@ -688,8 +685,8 @@ class XfstCompiler
   XfstCompiler& print_transducer_info();
   XfstCompiler& add_prop_line(char* line);
 
-  XfstCompiler& apply_line(char* line, const HfstTransducer * t, size_t cutoff);
-  XfstCompiler& apply_line(char* line, HfstBasicTransducer * t);
+  XfstCompiler& lookup(char* line, const HfstTransducer * t, size_t cutoff);
+  XfstCompiler& lookup(char* line, HfstBasicTransducer * t);
 
   XfstCompiler& apply_up_line(char* line);
   XfstCompiler& apply_down_line(char* line);
diff --git a/libhfst/src/parsers/XreCompiler.cc b/libhfst/src/parsers/XreCompiler.cc
index 78ce473..b159da1 100644
--- a/libhfst/src/parsers/XreCompiler.cc
+++ b/libhfst/src/parsers/XreCompiler.cc
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file XreCompiler.cc
 //!
 //! @brief Functions for building transducers from Xerox regexps
@@ -7,7 +16,7 @@
 #include "HfstTransducer.h"
 
 #ifdef WINDOWS
-#include "../../../tools/src/hfst-string-conversions.h"
+#include "hfst-string-conversions.h"
 #endif 
 
 #ifndef UNIT_TEST
diff --git a/libhfst/src/parsers/XreCompiler.h b/libhfst/src/parsers/XreCompiler.h
index 99f4ab4..70b885c 100644
--- a/libhfst/src/parsers/XreCompiler.h
+++ b/libhfst/src/parsers/XreCompiler.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file XreCompiler.h
 //!
 //! @brief A class that encapsulates compilation of Xerox compatible regular
@@ -11,18 +20,6 @@
 //!        This class is merely a wrapper around lex and yacc functions handling
 //!        the parsing.
 
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
-
 #ifndef GUARD_XreCompiler_h
 #define GUARD_XreCompiler_h
 
diff --git a/libhfst/src/parsers/XreCompiler.reentrant.cc b/libhfst/src/parsers/XreCompiler.reentrant.cc
deleted file mode 100644
index f217384..0000000
--- a/libhfst/src/parsers/XreCompiler.reentrant.cc
+++ /dev/null
@@ -1,265 +0,0 @@
-//! @file XreCompiler.cc
-//!
-//! @brief Functions for building transducers from Xerox regexps
-
-#include "XreCompiler.h"
-#include "xre_utils.h"
-#include "HfstTransducer.h"
-
-#ifndef UNIT_TEST
-
-namespace hfst { namespace xre {
-
-    unsigned int cr=0;
-    std::set<unsigned int> positions;
-    char * position_symbol = NULL;
-
-XreCompiler::XreCompiler() : 
-    definitions_(),
-    function_definitions_(),
-    function_arguments_(),
-    format_(hfst::TROPICAL_OPENFST_TYPE)
-{}
-
-XreCompiler::XreCompiler(hfst::ImplementationType impl) :
-    definitions_(),
-    function_definitions_(),
-    function_arguments_(),
-    format_(impl)
-{}
-
-void
-XreCompiler::define(const std::string& name, const std::string& xre)
-{
-  HfstTransducer* compiled = compile(xre);
-  definitions_[name] = compiled;
-}
-
-void
-XreCompiler::define(const std::string& name, const HfstTransducer & transducer)
-{
-  definitions_[name] = new HfstTransducer(transducer);
-}
-
-bool
-XreCompiler::define_function(const std::string& name, 
-                             unsigned int arguments,
-                             const std::string& xre)
-{ 
-  function_arguments_[name] = arguments;
-  function_definitions_[name] = xre;
-  return true;
-}
-
-
-void
-XreCompiler::undefine(const std::string& name) 
-{
-if (definitions_.find(name) != definitions_.end())
-  {
-    definitions_.erase(name);
-  }
-}
-
-extern bool expand_definitions;
-extern bool harmonize_;
-extern bool verbose_;
-extern FILE * warning_stream;
-
-void XreCompiler::set_expand_definitions(bool expand)
-{
-  expand_definitions=expand;
-}
-
-void XreCompiler::set_harmonization(bool harmonize)
-{
-  harmonize_=harmonize;
-}
-
-void XreCompiler::set_verbosity(bool verbose, FILE * file)
-{
-  verbose_=verbose;
-  if (verbose)
-    {
-      warning_stream=file;
-    }
-}
-
-HfstTransducer*
-XreCompiler::compile(const std::string& xre)
-{
-  return hfst::xre::compile(xre, definitions_, function_definitions_, function_arguments_, format_);
-}
-
-std::set<unsigned int> XreCompiler::get_positions_of_symbol_in_xre
-(const std::string & symbol, const std::string & xre)
-{
-  position_symbol = strdup(symbol.c_str());
-  positions.clear();
-  cr=0;
-  (void) hfst::xre::compile(xre, definitions_, function_definitions_, function_arguments_, format_);
-  free(position_symbol);
-  position_symbol = NULL;
-  return positions;
-}
-
-}}
-
-#else // UNIT_TEST
-#include <cstdlib>
-#include <cassert>
-
-using namespace hfst;
-using namespace hfst::xre;
-
-extern int xredebug;
-
-int
-main(int, char**)
-  {
-    std::cout << "Unit tests for " __FILE__ ":";
-    std::cout << std::endl << "constructors: ";
-    std::cout << " (default)...";
-    XreCompiler defaultXre();
-#if HAVE_SFST
-    std::cout << " (SFST)...";
-    XreCompiler sfstXre = XreCompiler(SFST_TYPE);
-#endif
-#if HAVE_OPENFST
-    std::cout << " (OpenFst)...";
-    XreCompiler ofstXre = XreCompiler(TROPICAL_OPENFST_TYPE);
-#endif
-#if HAVE_FOMA
-    std::cout << " (Foma)...";
-    XreCompiler fomaXre = XreCompiler(FOMA_TYPE);
-#endif
-    HfstBasicTransducer basicCat;
-    basicCat.add_state(1);
-    basicCat.add_state(2);
-    basicCat.add_state(3);
-    basicCat.add_transition(0, HfstBasicTransition(1, "c", "c", 0));
-    basicCat.add_transition(1, HfstBasicTransition(2, "a", "a", 0));
-    basicCat.add_transition(2, HfstBasicTransition(3, "t", "t", 0));
-    basicCat.set_final_weight(3, 0);
-    HfstBasicTransducer basicFight;
-    basicFight.add_state(1);
-    basicFight.add_state(2);
-    basicFight.add_state(3);
-    basicFight.add_state(4);
-    basicFight.add_state(5);
-    basicFight.add_state(6);
-    basicFight.add_transition(0, HfstBasicTransition(1, "f", "f", 0));
-    basicFight.add_transition(1, HfstBasicTransition(2, "i", "o", 0));
-    basicFight.add_transition(2, HfstBasicTransition(3, hfst::internal_epsilon,
-                                                     "u", 0));
-    basicFight.add_transition(3, HfstBasicTransition(4, "g", "g", 0));
-    basicFight.add_transition(4, HfstBasicTransition(5, "h", "h", 0));
-    basicFight.add_transition(5, HfstBasicTransition(6, "t", "t", 0));
-    basicFight.set_final_weight(6, 0);
-    HfstBasicTransducer basicCatOrDog;
-    basicCatOrDog.add_state(1);
-    basicCatOrDog.add_state(2);
-    basicCatOrDog.add_state(3);
-    basicCatOrDog.add_transition(0, HfstBasicTransition(1, "c", "c", 0));
-    basicCatOrDog.add_transition(1, HfstBasicTransition(2, "a", "a", 0));
-    basicCatOrDog.add_transition(2, HfstBasicTransition(3, "t", "t", 0));
-    basicCatOrDog.add_transition(0, HfstBasicTransition(3, "dog", "dog", 0));
-    basicCatOrDog.set_final_weight(3, 0);
-    // <http://sourceforge.net/tracker/
-    // ?func=detail&atid=1061990&aid=3468932&group_id=224521>
-    HfstBasicTransducer basicAaOrBc;
-    basicAaOrBc.add_state(1);
-    basicAaOrBc.add_state(2);
-    basicAaOrBc.add_state(3);
-    basicAaOrBc.add_transition(0, HfstBasicTransition(1, "a", "a", 0));
-    basicAaOrBc.add_transition(1, HfstBasicTransition(2, "a", "a", 0));
-    basicAaOrBc.add_transition(0, HfstBasicTransition(3, "b", "b", 0));
-    basicAaOrBc.add_transition(3, HfstBasicTransition(2, "c", "c", 0));
-    basicAaOrBc.set_final_weight(2, 0);
-    std::cout << std::endl << "compilation: ";
-#if HAVE_SFST
-    std::cout << "sfst compile(c a t)...";
-    HfstTransducer* sfstCat = sfstXre.compile("c a t");
-    assert(sfstCat != 0);
-    assert(sfstCat->compare(HfstTransducer(basicCat, SFST_TYPE)));
-    delete sfstCat;
-    std::cout << "(f i:o 0:u g h t)...";
-    HfstTransducer* sfstFight = sfstXre.compile("f i:o 0:u g h t");
-    assert(sfstFight != 0);
-    assert(sfstFight->compare(HfstTransducer(basicFight, SFST_TYPE)));
-    delete sfstFight;
-    std::cout << "(c a t | dog)...";
-    HfstTransducer* sfstCatOrDog = sfstXre.compile("c a t | dog");
-    assert(sfstCatOrDog != 0);
-    assert(sfstCatOrDog->compare(HfstTransducer(basicCatOrDog, SFST_TYPE)));
-    delete sfstCatOrDog;
-    std::cout << "(a a | b c)...";
-    HfstTransducer* sfstAaOrBc = sfstXre.compile("a a | b c");
-    assert(sfstAaOrBc != 0);
-    assert(sfstAaOrBc->compare(HfstTransducer(basicAaOrBc, SFST_TYPE)));
-    delete sfstAaOrBc;
-#endif
-#if HAVE_OPENFST
-    std::cout << "ofst compile(c a t)...";
-    HfstTransducer* ofstCat = ofstXre.compile("c a t");
-    assert(ofstCat != 0);
-    assert(ofstCat->compare(HfstTransducer(basicCat, TROPICAL_OPENFST_TYPE)));
-    delete ofstCat;
-    std::cout << "(f i:o 0:u g h t)...";
-    HfstTransducer* ofstFight = ofstXre.compile("f i:o 0:u g h t");
-    assert(ofstFight != 0);
-    assert(ofstFight->compare(HfstTransducer(basicFight,
-                                             TROPICAL_OPENFST_TYPE)));
-    delete ofstFight;
-    std::cout << "(c a t | dog)...";
-    HfstTransducer* ofstCatOrDog = ofstXre.compile("c a t | dog");
-    assert(ofstCatOrDog != 0);
-    assert(ofstCatOrDog->compare(HfstTransducer(basicCatOrDog,
-                                                TROPICAL_OPENFST_TYPE)));
-    delete ofstCatOrDog;
-    std::cout << "(a a | b c)...";
-    HfstTransducer* ofstAaOrBc = ofstXre.compile("a a | b c");
-    assert(ofstAaOrBc != 0);
-    assert(ofstAaOrBc->compare(HfstTransducer(basicAaOrBc, 
-                                              TROPICAL_OPENFST_TYPE)));
-    delete ofstAaOrBc;
-#endif
-#if HAVE_FOMA
-    std::cout << "foma compile(c a t)...";
-    HfstTransducer* fomaCat = fomaXre.compile("c a t");
-    assert(fomaCat != 0);
-    assert(fomaCat->compare(HfstTransducer(basicCat, FOMA_TYPE)));
-    delete fomaCat;
-    std::cout << "(f i:o 0:u g h t)...";
-    HfstTransducer* fomaFight = fomaXre.compile("f i:o 0:u g h t");
-    assert(fomaFight != 0);
-    assert(fomaFight->compare(HfstTransducer(basicFight, FOMA_TYPE)));
-    delete fomaFight;
-    std::cout << "(c a t | dog)...";
-    HfstTransducer* fomaCatOrDog = fomaXre.compile("c a t | dog");
-    assert(fomaCatOrDog != 0);
-    assert(fomaCatOrDog->compare(HfstTransducer(basicCatOrDog, FOMA_TYPE)));
-    delete fomaCatOrDog;
-    std::cout << "(a a | b c)...";
-    HfstTransducer* fomaAaOrBc = fomaXre.compile("a a | b c");
-    assert(fomaAaOrBc != 0);
-    assert(fomaAaOrBc->compare(HfstTransducer(basicAaOrBc, FOMA_TYPE)));
-    delete fomaAaOrBc;
-#endif
-    std::cout << std::endl << "define:";
-#if HAVE_SFST
-    std::cout << "sfst define(vowels, a | e | i | o | u | y)...";
-    sfstXre.define("vowels", "a | e | i | o | u | y");
-#endif
-#if HAVE_OPENFST
-    std::cout << "openfst define(vowels, a | e | i | o | u | y)...";
-    ofstXre.define("vowels", "a | e | i | o | u | y");
-#endif
-#if HAVE_FOMA
-    std::cout << "foma define(vowels, a | e | i | o | u | y)...";
-    fomaXre.define("vowels", "a | e | i | o | u | y");
-#endif
-    std::cout << "ok." << std::endl;
-    return EXIT_SUCCESS;
-  }
-#endif
diff --git a/libhfst/src/parsers/XreCompiler.reentrant.h b/libhfst/src/parsers/XreCompiler.reentrant.h
deleted file mode 100644
index 1e2aaa8..0000000
--- a/libhfst/src/parsers/XreCompiler.reentrant.h
+++ /dev/null
@@ -1,113 +0,0 @@
-//! @file XreCompiler.h
-//!
-//! @brief A class that encapsulates compilation of Xerox compatible regular
-//!        expressions into HFST automata.
-//!
-//!        Xerox compatible regular expressions are a dialect of regular
-//!        expressions commonly used for two-level finite state morphologies.
-//!        The details can be found in Finite state morphology (2004) by
-//!        Beesley and Karttunen.
-//!
-//!        This class is merely a wrapper around lex and yacc functions handling
-//!        the parsing.
-
-//       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, version 3 of the License.
-//
-//       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 <http://www.gnu.org/licenses/>.
-
-#ifndef GUARD_XreCompiler_h
-#define GUARD_XreCompiler_h
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <string>
-#include "../HfstDataTypes.h"
-
-namespace hfst { 
-//! @brief hfst::xre namespace is used for all functions related to Xerox 
-//! Regular Expresisions (XRE) parsing.
-namespace xre {
-//! @brief A compiler holding information needed to compile XREs.
-class XreCompiler
-{
-  public:
-  //! @brief Construct compiler for unknown format transducers.
-  XreCompiler();
-  //! @brief Create compiler for @a impl format transducers
-  XreCompiler(hfst::ImplementationType impl);
-
-  //! @brief Add a definition macro.
-  //!        Compilers will replace arcs labeled @a name, with the transducer
-  //!        defined by @a xre in later phases of compilation.
-  void define(const std::string& name, const std::string& xre);
-
-  //! @brief Add a function macro.
-  //!        Compilers will replace call to function \a name with the transducer
-  //!        defined by \a xre when the function is called.
-  //! @param name       The name of the function. It must end with a left parenthesis '('.
-  //! @param arguments  The number of arguments that the function takes.
-  //! @param xre        The regex defining the function. Function arguments must be named
-  //!                   as '"@name(N@"' where name is \a name (without the left parenthesis)
-  //!                   and N the order of the argument.
-  //! For example a definition 
-  //!   define_function("Concat(", 2, " [\"@Concat(1@\" \"@Concat(2@\"] ");
-  //! defines a function that calculates the concatenation of its first and second arguments.
-  //! A call
-  //!   compile.("[ Concat(foo, bar) ];");
-  //! then returns a transducer [ foo bar ].
-  bool define_function(const std::string& name, 
-                       unsigned int arguments,
-                       const std::string& xre);
-
-  //! @brief Add a definition macro.
-  //!        Compilers will replace arcs labeled @a name, with the transducer
-  //!        \a transducer in later phases of compilation.
-  void define(const std::string& name, const HfstTransducer & transducer);
-
-  //! @brief Remove a definition macro.
-  void undefine(const std::string& name);
-
-
-  //! @brief Compile a transducer defined by @a xre.
-  //!        May return a pointer to @e empty transducer on non-fatal error.
-  //!        A null pointer is returned on fatal error, if abort is not called.
-  HfstTransducer* compile(const std::string& xre);
-
-  std::set<unsigned int> get_positions_of_symbol_in_xre
-    (const std::string & symbol, const std::string & xre);
-
-  //! @brief Whether transducer names defined with function 'define' are expanded.
-  //!        Default is false.
-  void set_expand_definitions(bool expand);
-
-  //! @brief Whether binary operators harmonize their argument transducers.
-  //!        Default is true,
-  void set_harmonization(bool harmonize);
-
-  //! @brief Whether warning messages are printed to \a file.
-  //!        Default is false, If verbose==false, \a file is ignored.
-  void set_verbosity(bool verbose, FILE * file);
-
-  private:
-  std::map<std::string,hfst::HfstTransducer*> definitions_;
-  std::map<std::string, std::string> function_definitions_;
-  std::map<std::string, unsigned int > function_arguments_;
-  hfst::ImplementationType format_;
-
-}
-;
-}}
-// vim:set ft=cpp.doxygen:
-#endif
-
-
diff --git a/libhfst/src/parsers/lexc-lexer.ll b/libhfst/src/parsers/lexc-lexer.ll
index 156566f..9ad611f 100644
--- a/libhfst/src/parsers/lexc-lexer.ll
+++ b/libhfst/src/parsers/lexc-lexer.ll
@@ -1,29 +1,31 @@
 %option 8Bit batch nounput noyywrap prefix="hlexc"
 
 %{
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file lexc-lexer.cc
 //!
 //! @brief a lexer for lexc
 //!
 //! @author Tommi A. Pirinen
 
-
-//  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, version 3 of the License.
-//
-//  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 <http://www.gnu.org/licenses/>.
-
 #if HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "lexc-parser.hh"
+
+#ifdef YACC_USE_PARSER_H_EXTENSION
+  #include "lexc-parser.h"
+#else
+  #include "lexc-parser.hh"
+#endif
+
 #include "lexc-utils.h"
 
 #include <assert.h>
diff --git a/libhfst/src/parsers/lexc-parser.yy b/libhfst/src/parsers/lexc-parser.yy
index 8ba6627..75f494b 100644
--- a/libhfst/src/parsers/lexc-parser.yy
+++ b/libhfst/src/parsers/lexc-parser.yy
@@ -1,22 +1,19 @@
 %{
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file lexc-parser.yy
 //!
 //! @brief A parser for lexc
 //!
 //! @author Tommi A. Pirinen
 
-
-//  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, version 3 of the License.
-//
-//  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 <http://www.gnu.org/licenses/>.
 #if HAVE_CONFIG_H
 #  include <config.h>
 #endif
diff --git a/libhfst/src/parsers/lexc-utils.cc b/libhfst/src/parsers/lexc-utils.cc
index e2445f3..5429a97 100644
--- a/libhfst/src/parsers/lexc-utils.cc
+++ b/libhfst/src/parsers/lexc-utils.cc
@@ -1,20 +1,16 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file lexc-utils.cc
 //!
 //! @brief Implementation of some string handling in HFST lexc.
 
-
-//  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, version 3 of the License.
-//
-//  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 <http://www.gnu.org/licenses/>.
-
 #if HAVE_CONFIG_H
 #  include <config.h>
 #endif
@@ -33,7 +29,13 @@
 
 #include "LexcCompiler.h"
 #include "lexc-utils.h"
-#include "lexc-parser.hh"
+#include "string-utils.h"
+
+#ifdef YACC_USE_PARSER_H_EXTENSION
+  #include "lexc-parser.h"
+#else
+  #include "lexc-parser.hh"
+#endif
 
 using std::string;
 
@@ -47,21 +49,6 @@ namespace hfst { namespace lexc {
 
 extern hfst::lexc::LexcCompiler * lexc_;
 
-// string mangling
-static
-string&
-replace_all(string& haystack, const string& needle, const string& replacement)
-  {
-    size_t last_needle = haystack.find(needle);
-    size_t needle_len = needle.length();
-    while (last_needle != string::npos)
-      {
-        haystack.replace(last_needle, needle_len, replacement);
-        last_needle = haystack.find(needle);
-      }
-    return haystack;
-  }
-
 
 string&
 stripPercents(string& s)
diff --git a/libhfst/src/parsers/lexc-utils.h b/libhfst/src/parsers/lexc-utils.h
index cc27bb7..5c5cd37 100644
--- a/libhfst/src/parsers/lexc-utils.h
+++ b/libhfst/src/parsers/lexc-utils.h
@@ -1,21 +1,16 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file lexc-utils.h
 //!
 //! @brief Various string handling methods for HFST lexc.
 
-
-
-//   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, version 3 of the License.
-//
-//   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 <http://www.gnu.org/licenses/>.
-
 #ifndef GUARD_lexc_utils_h
 #define GUARD_lexc_utils_h
 #if HAVE_CONFIG_H
diff --git a/libhfst/src/parsers/pmatch_lex.ll b/libhfst/src/parsers/pmatch_lex.ll
index 5cb758e..33c8b6d 100644
--- a/libhfst/src/parsers/pmatch_lex.ll
+++ b/libhfst/src/parsers/pmatch_lex.ll
@@ -1,17 +1,27 @@
 %option 8Bit batch yylineno noyywrap nounput prefix="pmatch"
 
 %{
-
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include <string.h>
 
 #include "HfstTransducer.h"
 #include "HfstInputStream.h"
 #include "HfstXeroxRules.h"
-
 #include "pmatch_utils.h"
-#include "pmatch_parse.hh"
 
+#ifdef YACC_USE_PARSER_H_EXTENSION
+  #include "pmatch_parse.h"
+#else
+  #include "pmatch_parse.hh"
+#endif
 
 #undef YY_INPUT
 #define YY_INPUT(buf, retval, maxlen)   (retval = hfst::pmatch::getinput(buf, maxlen))
@@ -59,125 +69,44 @@ HEXCHAR [0-9]|[a-f]
 UNICODE_ESCAPE ("\\u"{HEXCHAR}{HEXCHAR}{HEXCHAR}{HEXCHAR})|("\\U00"{HEXCHAR}{HEXCHAR}{HEXCHAR}{HEXCHAR}{HEXCHAR}{HEXCHAR})
 %%
 
-[Dd]"efine" {
-    return DEFINE;
-}
-
-"regex" {
-return REGEX;
-}
-
-"list" {
-    return DEFINED_LIST;
-}
-
-"DefIns" {
-    return DEFINS;
-}
-
-"DefFun" {
-    return DEFFUN;
-}
-
-"Alpha" {
-    return ALPHA;
-}
-
-"UppercaseAlpha" {
-    return UPPERALPHA;
-}
-
-"LowercaseAlpha" {
-    return LOWERALPHA;
-}
-
-"Num" {
-    return NUM;
-}
-
-"Punct" {
-    return PUNCT;
-}
-
-"Whitespace" {
-    return WHITESPACE;
-}
-
-"OptCap(" {
-    return OPTCAP_LEFT;
-}
-
-"ToLower(" {
-    return TOLOWER_LEFT;
-}
-
-"ToUpper(" {
-    return TOUPPER_LEFT;
-}
-
-"UpCase(" {
-    return TOLOWER_LEFT;
-}
-
-"DownCase(" {
-    return TOUPPER_LEFT;
-}
-
-"Ins(" {
-    return INS_LEFT;
-}
-
-"Define(" {
-    return DEFINE_LEFT;
-}
-
-"EndTag(" {
-    return ENDTAG_LEFT;
-}
-
-"LC(" {
-    return LC_LEFT;
-}
-
-"RC(" {
-    return RC_LEFT;
-}
-
-"NLC(" {
-    return NLC_LEFT;
-}
-
-"NRC(" {
-    return NRC_LEFT;
-}
-
-"OR(" {
-    return OR_LEFT;
-}
-
-"AND(" {
-    return AND_LEFT;
-}
-
-"Map(" {
-    return MAP_LEFT;
-}
-
-"Lit(" {
-    return LIT_LEFT;
-}
-
-"Lst(" {
-    return LST_LEFT;
-}
-
-"Sigma(" {
-    return SIGMA_LEFT;
-}
-
-"Counter(" {
-    return COUNTER_LEFT;
-}
+[Dd]"efine" { return DEFINE; }
+"DefFun" { return DEFINE; }
+"regex" { return REGEX; }
+"list" { return DEFINED_LIST; }
+"Lit(" { return LIT_LEFT; }
+"Ins(" { return INS_LEFT; }
+"EndTag(" { return ENDTAG_LEFT; }
+"Cap(" { return CAP_LEFT; }
+"OptCap(" { return OPTCAP_LEFT; }
+"DownCase(" { return TOLOWER_LEFT; }
+"UpCase(" { return TOUPPER_LEFT; }
+"OptUpCase(" { return OPT_TOUPPER_LEFT; }
+"OptDownCase(" { return OPT_TOLOWER_LEFT; }
+"AnyCase(" { return ANY_CASE_LEFT; }
+"Explode(" { return EXPLODE_LEFT; }
+"Implode(" { return IMPLODE_LEFT; }
+"LC(" { return LC_LEFT; }
+"RC(" { return RC_LEFT; }
+"NLC(" { return NLC_LEFT; }
+"NRC(" { return NRC_LEFT; }
+"OR(" { return OR_LEFT; }
+"AND(" { return AND_LEFT; }
+".t(" { return TAG_LEFT; }
+"Lst(" { return LST_LEFT; }
+"Exc(" { return EXC_LEFT; }
+"Interpolate(" { return INTERPOLATE_LEFT; }
+"Sigma(" { return SIGMA_LEFT; }
+"Counter(" { return COUNTER_LEFT; }
+"DownCase(" { return TOUPPER_LEFT; }
+"Define(" { return DEFINE_LEFT; }
+"DefIns" { return DEFINS; }
+
+"Alpha" { return ALPHA; }
+"UppercaseAlpha" { return UPPERALPHA; }
+"LowercaseAlpha" { return LOWERALPHA; }
+"Num" { return NUM; }
+"Punct" { return PUNCT; }
+"Whitespace" { return WHITESPACE; }
 
 "~"   { return COMPLEMENT; }
 "\\"  { return TERM_COMPLEMENT; }
@@ -188,39 +117,46 @@ return REGEX;
 "$?"  { return CONTAINMENT_OPT; }
 "$"   { return CONTAINMENT; }
 
-"+"   { return PLUS; }
-"*"   { return STAR; }
+"+" { return PLUS; }
+"*" { return STAR; }
 
 "./." { return IGNORE_INTERNALLY; }
 "/"   { return IGNORING; }
 
-"|"   { return UNION; }
+"|" { return UNION; }
 
-"<>"  { return SHUFFLE; }
-"<"   { return BEFORE; }
-">"   { return AFTER; }
+"\"\"" { return EPSILON_TOKEN; }
+"[]" { return EPSILON_TOKEN; }
+"0" { return EPSILON_TOKEN; }
+"?" { return ANY_TOKEN; }
+"#"|".#." { return BOUNDARY_MARKER; }
+
+"<>" { return SHUFFLE; }
+"<" { return BEFORE; }
+">" { return AFTER; }
 
 ".o." { return COMPOSITION; }
 ".O." { return LENIENT_COMPOSITION; }
+".m>." { return MERGE_RIGHT_ARROW; }
+".<m." { return MERGE_LEFT_ARROW; }
 ".x." { return CROSS_PRODUCT; }
 ".P." { return UPPER_PRIORITY_UNION; }
 ".p." { return LOWER_PRIORITY_UNION; }
 ".-u." { return UPPER_MINUS; }
 ".-l." { return LOWER_MINUS; }
+"`" { return SUBSTITUTE_LEFT; }
 
-"`[[" { return SUBSTITUTE_LEFT; }
-
-"\\<=" { return LEFT_RESTRICTION; }
+"\\<=" { return LEFT_RESTRICTION; } /* Not implemented */
 "<=>" { return LEFT_RIGHT_ARROW; }
 "<=" { return LEFT_ARROW; }
 "=>" { return RIGHT_ARROW; }
+
 "->" { return REPLACE_RIGHT; }
 "(->)" { return OPTIONAL_REPLACE_RIGHT; }
 "<-" { return REPLACE_LEFT; }
 "(<-)" { return OPTIONAL_REPLACE_LEFT; }
 "<->" { return REPLACE_LEFT_RIGHT; }
 "(<->)" { return OPTIONAL_REPLACE_LEFT_RIGHT; }
-
 "@->" { return LTR_LONGEST_MATCH; }
 "@>" { return LTR_SHORTEST_MATCH; }
 "->@" { return RTL_LONGEST_MATCH; }
@@ -235,7 +171,7 @@ return REGEX;
 
 "\\\\\\" { return LEFT_QUOTIENT; }
 
-"^"{UINTEGER}","{UINTEGER} { 
+"^"{UINTEGER}","{UINTEGER} {
     pmatchlval.values = hfst::pmatch::get_n_to_k(pmatchtext);
     return CATENATE_N_TO_K;
 }
@@ -245,28 +181,27 @@ return REGEX;
     return CATENATE_N_TO_K;
 }
 
-"^>"{UINTEGER} { 
+"^>"{UINTEGER} {
     pmatchlval.value = strtol(pmatchtext + 2, 0, 10);
-    return CATENATE_N_PLUS; 
+    return CATENATE_N_PLUS;
 }
 
-"^<"{UINTEGER} { 
+"^<"{UINTEGER} {
     pmatchlval.value = strtol(pmatchtext + 2, 0, 10);
     return CATENATE_N_MINUS;
 }
 
-"^"{UINTEGER}                  { 
+"^"{UINTEGER}                  {
     pmatchlval.value = strtol(pmatchtext + 1, 0, 10);
     return CATENATE_N;
 }
 
 ".r"  { return REVERSE; }
 ".i"  { return INVERT; }
-".u"  { return PMATCH_UPPER; }
-".l"  { return PMATCH_LOWER; }
-".t(" { return TAG_LEFT; }
+".u"  { return UPPER_PROJECT; }
+".l"  { return LOWER_PROJECT; }
 
-"@bin\""[^""]+"\""|"@\""[^""]+"\"" { 
+"@bin\""[^""]+"\""|"@\""[^""]+"\"" {
     pmatchlval.label = hfst::pmatch::get_escaped_delimited(pmatchtext, '"');
     return READ_BIN;
 }
@@ -286,14 +221,28 @@ return REGEX;
     return READ_PROLOG;
 }
 
+"@lexc\""[^""]+"\"" {
+    pmatchlval.label = hfst::pmatch::get_escaped_delimited(pmatchtext, '"');
+    return READ_LEXC;
+}
+
 "@re\""[^""]+"\"" {
     pmatchlval.label = hfst::pmatch::get_escaped_delimited(pmatchtext, '"');
     return READ_RE;
 }
 
-"@lexc\""[^""]+"\"" {
-    pmatchlval.label = hfst::pmatch::get_escaped_delimited(pmatchtext, '"');
-    return READ_LEXC;
+"\""(({UNICODE_ESCAPE}|{U8C})"-"({UNICODE_ESCAPE}|{U8C}))+"\"" {
+    pmatchlval.pmatchObject = hfst::pmatch::parse_range(pmatchtext);
+    return CHARACTER_RANGE;
+}
+
+{NAME_CH}+"(" {
+    char * label = (char *) malloc(strlen(pmatchtext));
+    strncpy(label, pmatchtext, strlen(pmatchtext));
+    label[strlen(pmatchtext) - 1] = '\0';
+    pmatchlval.label = hfst::pmatch::strip_percents(label);
+    free(label);
+    return SYMBOL_WITH_LEFT_PAREN;
 }
 
 "[." { return LEFT_BRACKET_DOTTED; }
@@ -313,32 +262,14 @@ return REGEX;
     pmatchlval.weight = hfst::pmatch::get_weight(pmatchtext + 2);
     return WEIGHT;
 }
+
 "{"([^}]|"\\}")+"}" {
     pmatchlval.label = hfst::pmatch::get_escaped_delimited(pmatchtext, '{', '}');
     return CURLY_LITERAL;
 }
 
-"\""(({UNICODE_ESCAPE}|{U8C})"-"({UNICODE_ESCAPE}|{U8C}))+"\"" {
-    pmatchlval.transducer = hfst::pmatch::parse_range(pmatchtext);
-    return CHARACTER_RANGE;
-}
-
 "\""([^"\""]|"\\\"")+"\"" {
-    pmatchlval.label = hfst::pmatch::parse_quoted(pmatchtext); 
-    return QUOTED_LITERAL;
-}
-
-",," { return COMMACOMMA; }
-"," { return COMMA; }
-
-"\"\"" { return EPSILON_TOKEN; }
-"[]" { return EPSILON_TOKEN; }
-"0" { return EPSILON_TOKEN; }
-"?" { return ANY_TOKEN; }
-"#"|".#." { return BOUNDARY_MARKER; }
-
-{EC} {
-    pmatchlval.label = hfst::pmatch::strip_percents(pmatchtext);
+    pmatchlval.label = hfst::pmatch::parse_quoted(pmatchtext);
     return QUOTED_LITERAL;
 }
 
@@ -347,22 +278,17 @@ return REGEX;
     return SYMBOL;
 }
 
-{NAME_CH}+"(" {
-    char * label = (char *) malloc(strlen(pmatchtext));;
-    strncpy(label, pmatchtext, strlen(pmatchtext));
-    label[strlen(pmatchtext) - 1] = '\0';
-    pmatchlval.label = hfst::pmatch::strip_percents(label);
-    free(label);
-    return SYMBOL_WITH_LEFT_PAREN;
-}
+",," { return COMMACOMMA; }
+"," { return COMMA; }
 
 ";"{WSP}*{WEIGHT} {
     pmatchlval.weight = hfst::pmatch::get_weight(pmatchtext + 2);
     return END_OF_WEIGHTED_EXPRESSION;
 }
 
-";" { 
-    return END_OF_EXPRESSION;
+";" {
+    pmatchlval.weight = 0.0;
+    return END_OF_WEIGHTED_EXPRESSION;
 }
 
 {LWSP}* { /* ignorable whitespace */ }
diff --git a/libhfst/src/parsers/pmatch_parse.yy b/libhfst/src/parsers/pmatch_parse.yy
index a8dfcfb..2fc251e 100644
--- a/libhfst/src/parsers/pmatch_parse.yy
+++ b/libhfst/src/parsers/pmatch_parse.yy
@@ -1,4 +1,12 @@
 %{
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #define YYDEBUG 0
 
@@ -10,15 +18,12 @@
 #include "HfstTransducer.h"
 #include "HfstInputStream.h"
 #include "HfstXeroxRules.h"
-
+    
+#include "pmatch_utils.h"
     using namespace hfst;
-    using hfst::HfstTransducer;
+    using namespace hfst::pmatch;
     using namespace hfst::xeroxRules;
-    using namespace hfst::implementations;
 
-#include "pmatch_utils.h"
-    using hfst::pmatch::PmatchAstNode;
-    
     extern int pmatcherror(const char * text);
     extern int pmatchlex();
     extern int pmatchlineno;
@@ -27,1270 +32,468 @@
 
 %name-prefix="pmatch"
      %error-verbose
-//     %debug
-
-           
-
-
-
+     
      %union {
-
-
-
-
          int value;
          int* values;
          double weight;
          char* label;
-         hfst::HfstTransducer* transducer;
-         hfst::HfstTransducerPair* transducerPair;
-         hfst::HfstTransducerPairVector* transducerPairVector;
-         hfst::HfstTransducerVector* transducerVector;
-         std::pair<std::string, hfst::HfstTransducer*>* transducerDefinition;
-         std::map<std::string, hfst::HfstTransducer>* transducerDefinitions;
-         hfst::pmatch::PmatchAstNode* ast_node;
-         std::vector<hfst::pmatch::PmatchAstNode *>* ast_node_vector;
+         hfst::pmatch::PmatchObject* pmatchObject;
+         std::pair<std::string, hfst::pmatch::PmatchObject*>* pmatchDefinition;
+         std::vector<hfst::pmatch::PmatchObject *>* pmatchObject_vector;
          std::vector<std::string>* string_vector;
-    
-         std::pair<hfst::xeroxRules::ReplaceArrow, std::vector<hfst::xeroxRules::Rule> >* replaceRuleVectorWithArrow;
-         std::pair< hfst::xeroxRules::ReplaceArrow, hfst::xeroxRules::Rule>* replaceRuleWithArrow;   
-         std::pair< hfst::xeroxRules::ReplaceArrow, hfst::HfstTransducerPairVector>* mappingVectorWithArrow;
-         std::pair< hfst::xeroxRules::ReplaceArrow, hfst::HfstTransducerPair>* mappingWithArrow;
-    
-   
-         std::pair<hfst::xeroxRules::ReplaceType, hfst::HfstTransducerPairVector>* contextWithMark;
-   
+
+         hfst::pmatch::PmatchParallelRulesContainer * replaceRules;
+         hfst::pmatch::PmatchReplaceRuleContainer * replaceRule;
+         hfst::pmatch::PmatchMappingPairsContainer * mappings;
+         hfst::pmatch::PmatchContextsContainer * parallelContexts;
+         hfst::pmatch::PmatchObjectPair * restrictionContext;
+         hfst::pmatch::MappingPairVector * restrictionContexts;
          hfst::xeroxRules::ReplaceType replType;
          hfst::xeroxRules::ReplaceArrow replaceArrow; 
-    
-     
      }
 
-/* some parts have been ripped from foma’s parser now */
-
-%type <replaceArrow> REPLACE_ARROW
-
-%type <transducerDefinitions> PMATCH
-%type <transducerDefinition> DEFINITION BINDING FUNCTION
-%type <transducer> REGEXP1 REGEXP2 REGEXP4 REGEXP5 REGEXP6 REGEXP7
-REGEXP8 REGEXP9 REGEXP10 REGEXP11 REGEXP12 LABEL_PAIR
-REPLACE REGEXP3 FUNCALL MAP FUNCALL_ARG
-%type <label> LABEL
-%type <ast_node> FUNCBODY1 FUNCBODY2 FUNCBODY3 FUNCBODY4 FUNCBODY5 FUNCBODY6 FUNC_LABEL_PAIR FUN_OR_CONTEXT FUN_AND_CONTEXT FUN_CONTEXT_CONDITION FUN_CONTEXT
-%type <ast_node_vector> FUN_CONTEXT_CONDITIONS
+%start PMATCH
+%type <pmatchDefinition> DEFINITION
+%type <pmatchObject> EXPRESSION1 EXPRESSION2 EXPRESSION3 EXPRESSION4 EXPRESSION5 EXPRESSION6 EXPRESSION7 EXPRESSION8 EXPRESSION9 EXPRESSION10 EXPRESSION11 EXPRESSION12 EXPRESSION13
+%type <label> SYMBOL QUOTED_LITERAL CURLY_LITERAL SYMBOL_WITH_LEFT_PAREN CONCATENATED_STRING_LIST
 %type <string_vector> ARGLIST
-%type <transducerVector> FUNCALL_ARGLIST
-
-%type <replaceRuleVectorWithArrow> PARALLEL_RULES
-%type <replaceRuleWithArrow>  RULE
-%type <mappingVectorWithArrow> MAPPINGPAIR_VECTOR
-%type <mappingWithArrow> MAPPINGPAIR
-
-%type <contextWithMark> CONTEXTS_WITH_MARK
-%type <transducerPairVector> CONTEXTS_VECTOR RESTR_CONTEXTS_VECTOR
-%type <transducerPair> CONTEXT RESTR_CONTEXT
-%type <replType>  CONTEXT_MARK
+%type <pmatchObject_vector> FUNCALL_ARGLIST
 
-%type <transducer> OPTCAP TOLOWER TOUPPER INSERT ANONYMOUS_DEFINITION RIGHT_CONTEXT LEFT_CONTEXT NEGATIVE_RIGHT_CONTEXT NEGATIVE_LEFT_CONTEXT P_CONTEXT CONTEXT_CONDITION OR_CONTEXT AND_CONTEXT
-%type <transducerVector> CONTEXT_CONDITIONS
-%type <ast_node> FUN_RIGHT_CONTEXT FUN_LEFT_CONTEXT FUN_NEGATIVE_RIGHT_CONTEXT FUN_NEGATIVE_LEFT_CONTEXT
-%type <ast_node> FUN_OPTCAP FUN_TOLOWER FUN_TOUPPER
-
-%nonassoc <weight> WEIGHT END_OF_WEIGHTED_EXPRESSION
-%nonassoc <label> QUOTED_LITERAL CURLY_LITERAL SYMBOL SYMBOL_WITH_LEFT_PAREN
-%nonassoc <transducer> CHARACTER_RANGE
-
-%left  CROSS_PRODUCT COMPOSITION LENIENT_COMPOSITION INTERSECTION
-%left  CENTER_MARKER MARKUP_MARKER
-%left  SHUFFLE
-%right LEFT_RESTRICTION LEFT_ARROW RIGHT_ARROW LEFT_RIGHT_ARROW
-%left  REPLACE_RIGHT REPLACE_LEFT
-OPTIONAL_REPLACE_RIGHT OPTIONAL_REPLACE_LEFT
-REPLACE_LEFT_RIGHT OPTIONAL_REPLACE_LEFT_RIGHT
-RTL_LONGEST_MATCH RTL_SHORTEST_MATCH
+%type <replaceArrow> REPLACE_ARROW
+%type <replaceRules> PARALLEL_RULES
+%type <replaceRule> RULE
+%type <mappings> MAPPINGPAIR_VECTOR MAPPINGPAIR
+
+%type <parallelContexts> CONTEXTS_WITH_MARK CONTEXTS_VECTOR CONTEXT
+%type <restrictionContext> RESTR_CONTEXT
+%type <restrictionContexts> RESTR_CONTEXTS
+%type <replType> CONTEXT_MARK
+%type <pmatchObject> INSERTION FUNCALL EXPLODE IMPLODE ENDTAG READ_FROM CONTEXT_CONDITION PMATCH_CONTEXT PMATCH_OR_CONTEXT PMATCH_AND_CONTEXT
+PMATCH_RIGHT_CONTEXT PMATCH_LEFT_CONTEXT PMATCH_NEGATIVE_RIGHT_CONTEXT PMATCH_NEGATIVE_LEFT_CONTEXT
+%type <pmatchObject_vector> PMATCH_CONTEXTS
+
+%left <weight> END_OF_WEIGHTED_EXPRESSION WEIGHT
+%nonassoc <pmatchObject> CHARACTER_RANGE
+
+%left CROSS_PRODUCT COMPOSITION LENIENT_COMPOSITION INTERSECTION MERGE_RIGHT_ARROW MERGE_LEFT_ARROW
+%left CENTER_MARKER MARKUP_MARKER
+%left SHUFFLE BEFORE AFTER
+%right LEFT_ARROW RIGHT_ARROW LEFT_RIGHT_ARROW LEFT_RESTRICTION // LEFT_RESTRICTION not implemented
+%left  REPLACE_RIGHT REPLACE_LEFT OPTIONAL_REPLACE_RIGHT OPTIONAL_REPLACE_LEFT
+REPLACE_LEFT_RIGHT OPTIONAL_REPLACE_LEFT_RIGHT RTL_LONGEST_MATCH RTL_SHORTEST_MATCH
 LTR_LONGEST_MATCH LTR_SHORTEST_MATCH 
-      
-%right REPLACE_CONTEXT_UU REPLACE_CONTEXT_LU 
-REPLACE_CONTEXT_UL REPLACE_CONTEXT_LL
-
-%left  UNION MINUS UPPER_MINUS LOWER_MINUS UPPER_PRIORITY_UNION
-LOWER_PRIORITY_UNION
-
+%right REPLACE_CONTEXT_UU REPLACE_CONTEXT_LU REPLACE_CONTEXT_UL REPLACE_CONTEXT_LL
+%left  UNION MINUS UPPER_MINUS LOWER_MINUS UPPER_PRIORITY_UNION LOWER_PRIORITY_UNION
 %left  IGNORING IGNORE_INTERNALLY LEFT_QUOTIENT
-
-
-%left  COMMACOMMA
-
- 
-          
-%left  COMMA 
+%left COMMA COMMACOMMA
        
-%left  BEFORE AFTER
-
-
-%nonassoc SUBSTITUTE_LEFT TERM_COMPLEMENT
-%nonassoc COMPLEMENT CONTAINMENT CONTAINMENT_ONCE CONTAINMENT_OPT
-%nonassoc REVERSE INVERT PMATCH_UPPER PMATCH_LOWER STAR PLUS
+%nonassoc SUBSTITUTE_LEFT TERM_COMPLEMENT COMPLEMENT CONTAINMENT CONTAINMENT_ONCE CONTAINMENT_OPT
+%nonassoc STAR PLUS REVERSE INVERT UPPER_PROJECT LOWER_PROJECT
+%nonassoc <label> READ_BIN READ_TEXT READ_SPACED READ_PROLOG READ_RE READ_LEXC
 %nonassoc <values> CATENATE_N_TO_K
 %nonassoc <value> CATENATE_N CATENATE_N_PLUS CATENATE_N_MINUS
 
-%nonassoc <label> READ_BIN READ_TEXT READ_SPACED READ_PROLOG READ_RE READ_LEXC
-%token LEFT_BRACKET RIGHT_BRACKET LEFT_PARENTHESIS RIGHT_PARENTHESIS
-LEFT_BRACKET_DOTTED RIGHT_BRACKET_DOTTED
-%token END_OF_EXPRESSION
-%token PAIR_SEPARATOR PAIR_SEPARATOR_SOLE 
-PAIR_SEPARATOR_WO_RIGHT PAIR_SEPARATOR_WO_LEFT
+%token LEFT_BRACKET RIGHT_BRACKET LEFT_PARENTHESIS RIGHT_PARENTHESIS LEFT_BRACKET_DOTTED RIGHT_BRACKET_DOTTED
+%token PAIR_SEPARATOR PAIR_SEPARATOR_SOLE PAIR_SEPARATOR_WO_RIGHT PAIR_SEPARATOR_WO_LEFT
 %token EPSILON_TOKEN ANY_TOKEN BOUNDARY_MARKER
-%token LEXER_ERROR
-
-%nonassoc DEFINE REGEX DEFINED_LIST DEFINS DEFFUN ALPHA LOWERALPHA UPPERALPHA
-NUM PUNCT WHITESPACE OPTCAP_LEFT TOLOWER_LEFT TOUPPER_LEFT INS_LEFT DEFINE_LEFT
-ENDTAG_LEFT LC_LEFT RC_LEFT NLC_LEFT NRC_LEFT MAP_LEFT LIT_LEFT LST_LEFT
-SIGMA_LEFT COUNTER_LEFT OR_LEFT AND_LEFT TAG_LEFT
+%token LEXER_ERROR SYMBOL SYMBOL_WITH_LEFT_PAREN QUOTED_LITERAL CURLY_LITERAL
+%token ALPHA LOWERALPHA UPPERALPHA NUM PUNCT WHITESPACE
+//  MAP_LEFT
+%right DEFINE LIT_LEFT INS_LEFT REGEX DEFINS DEFINED_LIST CAP_LEFT OPTCAP_LEFT OPT_TOLOWER_LEFT TOLOWER_LEFT
+OPT_TOUPPER_LEFT TOUPPER_LEFT ANY_CASE_LEFT IMPLODE_LEFT EXPLODE_LEFT DEFINE_LEFT ENDTAG_LEFT LC_LEFT RC_LEFT NLC_LEFT NRC_LEFT OR_LEFT AND_LEFT
+TAG_LEFT LST_LEFT EXC_LEFT INTERPOLATE_LEFT SIGMA_LEFT COUNTER_LEFT
 %%
 
-
-
-
-PMATCH: DEFINITION {
-    if ($1->first.compare("@_PMATCH_DUMMY_@")) {
-        if(hfst::pmatch::definitions.count($1->first) != 0) {
-            std::stringstream warning;
-            warning << "definition of " << $1->first << " on line "
-                    << pmatchlineno << " shadowed by earlier definition\n";
-            hfst::pmatch::warn(warning.str());
-        }
-         hfst::pmatch::definitions.insert(*$1);
-         if (hfst::pmatch::verbose) {
-             std::cerr << std::setiosflags(std::ios::fixed) << std::setprecision(2);
-             double duration = (clock() - hfst::pmatch::timer) /
-                 (double) CLOCKS_PER_SEC;
-             hfst::pmatch::timer = clock();
-             std::cerr << "compiled " << $1->first << " in " << duration << " seconds\n";
-             hfst::pmatch::print_size_info($1->second);
-             std::cerr << std::endl;
-         }
-    }
-    delete $1;
- } |
- PMATCH DEFINITION {
-     if ($2->first.compare("@_PMATCH_DUMMY_@")) {
-         if(hfst::pmatch::definitions.count($2->first) != 0) {
-             std::stringstream warning;
-             warning << "definition of " << $2->first << " on line "
-                     << pmatchlineno << " shadowed by earlier definition\n";
-             hfst::pmatch::warn(warning.str());
-         }
-         hfst::pmatch::definitions.insert(*$2);
-         if (hfst::pmatch::verbose) {
-             std::cerr << std::setiosflags(std::ios::fixed) << std::setprecision(2);
-             double duration = (clock() - hfst::pmatch::timer) /
-                 (double) CLOCKS_PER_SEC;
-             hfst::pmatch::timer = clock();
-             std::cerr << "compiled " << $2->first << " in " << duration << " seconds\n";
-             hfst::pmatch::print_size_info($2->second);
-             std::cerr << std::endl;
-         }
-     }
-     delete $2;
- }
-;
-
-DEFINITION: DEFINE BINDING { $$ = $2; }
-| DEFINS BINDING {
-    char * Ins_trans = hfst::pmatch::get_Ins_transition($2->first.c_str());
-    HfstTransducer * ins_t = new HfstTransducer(
-        Ins_trans, Ins_trans, hfst::pmatch::format);
-    ins_t->set_name($2->first);
-    free(Ins_trans);
-    hfst::pmatch::def_insed_transducers[$2->first] = ins_t;
-    $$ = $2;
- }
-| REGEX REGEXP1 {
-    $2->set_name("TOP");
-    if (hfst::pmatch::need_delimiters) {
-        $2 = hfst::pmatch::add_pmatch_delimiters($2);
-    }
-    hfst::pmatch::need_delimiters = false;
-    $2->minimize();
-    $$ = new std::pair<std::string, hfst::HfstTransducer*>("TOP", $2);
- }
-| DEFINED_LIST BINDING {
-    $$ = new std::pair<std::string, hfst::HfstTransducer*>($2->first,
-                                                           hfst::pmatch::make_sigma($2->second));
-    delete $2->second;
-    delete $2;
- }
-| DEFFUN FUNCTION { $$ = $2; }
-;
-
-BINDING: SYMBOL REGEXP1 {
-    if (hfst::pmatch::need_delimiters) {
-        $2 = hfst::pmatch::add_pmatch_delimiters($2);
-    }
-    hfst::pmatch::need_delimiters = false;
-    $2->set_name($1);
-    $2->minimize();
-    $$ = new std::pair<std::string, hfst::HfstTransducer*>($1, $2);
- }
-;
-
-FUNCTION: SYMBOL_WITH_LEFT_PAREN ARGLIST RIGHT_PARENTHESIS FUNCBODY1 END_OF_EXPRESSION {
-    PmatchAstNode * function_body;
-    if (hfst::pmatch::need_delimiters) {
-        function_body = new PmatchAstNode($4, hfst::pmatch::AstAddDelimiters);
-    } else {
-        function_body = $4;
-    }
-    hfst::pmatch::need_delimiters = false;
-    hfst::pmatch::PmatchFunction fun(* $2, function_body);
-    if(hfst::pmatch::functions.count($1) != 0) {
-        std::stringstream warning;
-        warning << "definition of function" << $1 << " on line "
-                << pmatchlineno << " shadowed by earlier definition\n";
-        hfst::pmatch::warn(warning.str());
-    }
-    hfst::pmatch::functions[$1] = fun;
-    // Pass a dummy transducer, since function registration is separate
-    HfstTransducer * dummy = new HfstTransducer(hfst::pmatch::format);
-    dummy->set_name("@_PMATCH_DUMMY_@");
-    $$ = new std::pair<std::string, hfst::HfstTransducer*>("@_PMATCH_DUMMY_@", dummy);
-    if (hfst::pmatch::verbose) {
+PMATCH: //empty
+| PMATCH DEFINITION {
+    if (verbose) {
         std::cerr << std::setiosflags(std::ios::fixed) << std::setprecision(2);
-        double duration = (clock() - hfst::pmatch::timer) /
+        double duration = (clock() - timer) /
             (double) CLOCKS_PER_SEC;
-        hfst::pmatch::timer = clock();
-        std::cerr << "defined function" << $1 << " in " << duration << " seconds\n";
-        std::cerr << std::endl;
+        timer = clock();
+        std::cerr << "defined " << $2->first << " in " << duration << " seconds\n";
     }
- }
-;
-
-ARGLIST: ARGS {
-    $$ = new std::vector<std::string>(hfst::pmatch::tmp_collected_funargs);
-    hfst::pmatch::tmp_collected_funargs.clear();
- }
-|
-{
-    $$ = new std::vector<std::string>();
-    hfst::pmatch::tmp_collected_funargs.clear();
-};
-
-ARGS: SYMBOL {
-    hfst::pmatch::tmp_collected_funargs.push_back($1);
- };
-| SYMBOL COMMA ARGS {
-    hfst::pmatch::tmp_collected_funargs.push_back($1);
- }
-;
-
-REGEXP1: REGEXP2 END_OF_EXPRESSION { }
-| REGEXP2 END_OF_WEIGHTED_EXPRESSION {
-    $1->set_final_weights($2);
-    $$ = $1;
- }
-// | REGEXP2 error {
-//     $$ = $1;
-//     std::cerr << "pmatch: skipping\n";
-//     yyerrok;
-//     yyclearin;
-//  }
-;
-
-FUNCBODY1: FUNCBODY2 { }
-| FUNCBODY1 COMPOSITION FUNCBODY2 {
-    $$ = new PmatchAstNode($1, $3, hfst::pmatch::AstCompose);
- }
-| FUNCBODY1 CROSS_PRODUCT FUNCBODY2 {
-    $$ = new PmatchAstNode($1, $3, hfst::pmatch::AstCrossProduct);
- }
-| FUNCBODY1 LENIENT_COMPOSITION FUNCBODY2 {
-    $$ = new PmatchAstNode($1, $3, hfst::pmatch::AstLenientCompose);
- }
-;
-
-
-FUNCBODY2: FUNCBODY3 { }
-| FUNCBODY2 UNION FUNCBODY3 {
-    $$ = new PmatchAstNode($1, $3, hfst::pmatch::AstDisjunct);
- }
-| FUNCBODY2 INTERSECTION FUNCBODY3 {
-    $$ = new PmatchAstNode($1, $3, hfst::pmatch::AstIntersect);
- }
-| FUNCBODY2 MINUS FUNCBODY3 {
-    $$ = new PmatchAstNode($1, $3, hfst::pmatch::AstSubtract);
- }
-// | REGEXP3 UPPER_MINUS REGEXP4 {
-//     pmatcherror("No upper minus");
-//     $$ = $1;
-//     delete $3;
-//  }
-// | REGEXP3 LOWER_MINUS REGEXP4 {
-//     pmatcherror("No lower minus");
-//     $$ = $1;
-//     delete $3;
-//  }
-// | REGEXP3 UPPER_PRIORITY_UNION REGEXP4 {
-//     pmatcherror("No upper priority union");
-//     $$ = $1;
-//     delete $3;
-//  }
-// | REGEXP3 LOWER_PRIORITY_UNION REGEXP3 {
-//     pmatcherror("No lower priority union");
-//     $$ = $1;
-//     delete $3;
-//  }
-;
-
-FUNCBODY3: FUNCBODY4 { }
-| FUNCBODY3 FUNCBODY4 {
-    $$ = new PmatchAstNode($1, $2, hfst::pmatch::AstConcatenate);
+    if (definitions.count($2->first) != 0) {
+        std::stringstream warning;
+        warning << "definition of " << $2->first << " on line " << pmatchlineno
+                << " shadows earlier definition\n";
+        warn(warning.str());
+        delete definitions[$2->first];
+    }
+    definitions.insert(*$2);
  };
 
-FUNCBODY4: FUNCBODY5
-| LEFT_BRACKET FUNCBODY1 RIGHT_BRACKET {
-    $$ = $2;
- }
-| LEFT_PARENTHESIS FUNCBODY1 RIGHT_PARENTHESIS {
-    $$ = new PmatchAstNode($2, hfst::pmatch::AstOptionalize);
- }
-| ALPHA {
-    $$ = new PmatchAstNode(hfst::pmatch::get_utils()->latin1_alpha_acceptor);
- }
-| LOWERALPHA {
-    $$ = new PmatchAstNode(hfst::pmatch::get_utils()->latin1_lowercase_acceptor);
- }
-| UPPERALPHA {
-    $$ = new PmatchAstNode(hfst::pmatch::get_utils()->latin1_uppercase_acceptor);
- }
-| NUM {
-    $$ = new PmatchAstNode(hfst::pmatch::get_utils()->latin1_numeral_acceptor);
- }
-| PUNCT {
-    $$ = new PmatchAstNode(hfst::pmatch::get_utils()->latin1_punct_acceptor);
- }
-| WHITESPACE {
-    $$ = new PmatchAstNode(hfst::pmatch::get_utils()->latin1_whitespace_acceptor);
- }
-| INSERT { $$ = new PmatchAstNode($1); }
-| ANONYMOUS_DEFINITION {
-$$ = new PmatchAstNode($1, hfst::pmatch::AstAddDelimiters);
-// Fixme: no funargs inside this
-}
-| FUNCALL {
-    $$ = new PmatchAstNode($1);
-// Fixme: no funargs inside this
-  }
-| MAP {
-    $$ = new PmatchAstNode($1);
-// Fixme: no funargs inside this
-}
-| FUN_OPTCAP { }
-| FUN_TOUPPER { }
-| FUN_TOLOWER { }
-
-;
-
-FUNCBODY5: FUNCBODY6 { }
-| FUNCBODY5 STAR {
-    $$ = new PmatchAstNode($1, hfst::pmatch::AstRepeatStar);
- }
-| FUNCBODY5 PLUS {
-    $$ = new PmatchAstNode($1, hfst::pmatch::AstRepeatPlus);
- }
-| FUNCBODY5 REVERSE {
-    $$ = new PmatchAstNode($1, hfst::pmatch::AstReverse);
- }
-| FUNCBODY5 INVERT {
-    $$ = new PmatchAstNode($1, hfst::pmatch::AstInvert);
- }
-| FUNCBODY5 PMATCH_UPPER {
-    $$ = new PmatchAstNode($1, hfst::pmatch::AstInputProject);
-  }
-| FUNCBODY5 PMATCH_LOWER {
-    $$ = new PmatchAstNode($1, hfst::pmatch::AstOutputProject);
- }
-| FUNCBODY5 CATENATE_N {
-    $$ = new PmatchAstNode($1, hfst::pmatch::AstRepeatN);
-    $$->push_numeric_arg($2);
- }
-| FUNCBODY5 CATENATE_N_PLUS {
-    $$ = new PmatchAstNode($1, hfst::pmatch::AstRepeatNPlus);
-    $$->push_numeric_arg($2 + 1);
- }
-| FUNCBODY5 CATENATE_N_MINUS {
-    $$ = new PmatchAstNode($1, hfst::pmatch::AstRepeatNMinus);
-    $$->push_numeric_arg($2 - 1);
- }
-| FUNCBODY5 CATENATE_N_TO_K {
-    $$ = new PmatchAstNode($1, hfst::pmatch::AstRepeatNToK);
-    $$->push_numeric_arg($2[0]);
-    $$->push_numeric_arg($2[1]);
+DEFINITION: DEFINE SYMBOL EXPRESSION1 {
+    $$ = new std::pair<std::string, PmatchObject*>($2, $3);
+    $3->name = $2;
     free($2);
- }
-;
-
-
-
-FUNCBODY6: FUNC_LABEL_PAIR { }
-| SYMBOL {
-    $$ = new PmatchAstNode($1);
-    free($1);
- }
-| ENDTAG_LEFT SYMBOL RIGHT_PARENTHESIS {
-    $$ = new PmatchAstNode(hfst::pmatch::make_end_tag($2));
-    hfst::pmatch::need_delimiters = true;
-    free($2);
- }
-| ENDTAG_LEFT QUOTED_LITERAL RIGHT_PARENTHESIS {
-    $$ = new PmatchAstNode(hfst::pmatch::make_end_tag($2));
-    hfst::pmatch::need_delimiters = true;
-    free($2);
- }
-| READ_BIN {
-    HfstTransducer * read;
-    try {
-        hfst::HfstInputStream instream($1);
-        read = new HfstTransducer(instream);
-        instream.close();
-    } catch(HfstException) {
-        std::string ermsg =
-            std::string("Couldn't read transducer from ") +
-            std::string($1);
-        free($1);
-        pmatcherror(ermsg.c_str());
-    }
-    if (read->get_type() != hfst::pmatch::format) {
-        read->convert(hfst::pmatch::format);
-    }
-    $$ = new PmatchAstNode(read);
-    free($1);
-  }
-| READ_TEXT {
-    $$ = new PmatchAstNode(hfst::pmatch::read_text($1));
-    free($1);
-  }
-| READ_LEXC {
-    $$ = new PmatchAstNode(hfst::HfstTransducer::read_lexc_ptr($1, hfst::TROPICAL_OPENFST_TYPE, hfst::pmatch::verbose));
-    free($1);
-  }
-| FUN_CONTEXT_CONDITION { }
-
-
-
-
-;
-
-FUN_CONTEXT_CONDITION:
-FUN_CONTEXT { $$ = $1; hfst::pmatch::need_delimiters = true; }
-| FUN_OR_CONTEXT { }
-| FUN_AND_CONTEXT { }
-;
-
-FUN_CONTEXT:
-FUN_RIGHT_CONTEXT { }
-| FUN_NEGATIVE_RIGHT_CONTEXT { }
-| FUN_LEFT_CONTEXT { }
-| FUN_NEGATIVE_LEFT_CONTEXT { };
+ } |
+ DEFINS SYMBOL EXPRESSION1 {
+     $$ = new std::pair<std::string, PmatchObject*>(
+         $2, new PmatchString(get_Ins_transition($2)));
+     def_insed_expressions[$2] = $3;
+     $3->name = $2;
+     free($2);
+ } |
+ REGEX EXPRESSION1 {
+     $$ = new std::pair<std::string, PmatchObject*>("TOP", $2);
+     $2->name = "TOP";
+ } |
+ DEFINE SYMBOL_WITH_LEFT_PAREN ARGLIST RIGHT_PARENTHESIS EXPRESSION1 {
+     PmatchFunction * fun = new PmatchFunction(*$3, $5);
+     fun->name = $2;
+     $$ = new std::pair<std::string, PmatchObject*>(std::string($2), fun);
+     function_names.insert($2);
+     free($2);
+ } |
+ DEFINED_LIST SYMBOL EXPRESSION1 {
+     $$ = new std::pair<std::string, PmatchObject *>(
+         $2, new PmatchUnaryOperation(MakeSigma, $3));
+     $3->name = $2;
+ };
 
-FUN_OR_CONTEXT: OR_LEFT FUN_CONTEXT_CONDITIONS RIGHT_PARENTHESIS
-{
-    $$ = NULL;
-    for (std::vector<PmatchAstNode *>::iterator it = $2->begin();
-         it != $2->end(); ++it) {
-        if ($$ == NULL) {
-            $$ = *it;
-        } else {
-            PmatchAstNode * tmp = $$;
-            $$ = new PmatchAstNode(tmp, *it, hfst::pmatch::AstDisjunct);
-        }
-    }
-    delete $2;
-    // Zero the counter for making minimization
-    // guards for disjuncted negative contexts
-    hfst::pmatch::zero_minimization_guard();
+ARGLIST:
+SYMBOL COMMA ARGLIST { $$ = $3; $$->push_back(std::string($1));
+ } | SYMBOL { $$ = new std::vector<std::string>(1, std::string($1)); }
+| { $$ = new std::vector<std::string>(); };
+
+EXPRESSION1: EXPRESSION2 END_OF_WEIGHTED_EXPRESSION {
+     $1->weight += $2;
+     if (need_delimiters) {
+         $$ = new PmatchUnaryOperation(AddDelimiters, $1);
+     } else {
+         $$ = $1;
+     }
+     need_delimiters = false;
 };
 
-FUN_AND_CONTEXT: AND_LEFT FUN_CONTEXT_CONDITIONS RIGHT_PARENTHESIS
-{
-    $$ = NULL;
-    for (std::vector<PmatchAstNode *>::iterator it = $2->begin();
-         it != $2->end(); ++it) {
-        if ($$ = NULL) {
-            $$ = *it;
-        } else {
-            PmatchAstNode * tmp = $$;
-            $$ = new PmatchAstNode(tmp, *it, hfst::pmatch::AstConcatenate);
-        }
-    }
-    delete $2;
+EXPRESSION2: EXPRESSION3 {} |
+EXPRESSION2 COMPOSITION EXPRESSION3 { $$ = new PmatchBinaryOperation(Compose, $1, $3); } |
+EXPRESSION2 CROSS_PRODUCT EXPRESSION3 { $$ = new PmatchBinaryOperation(CrossProduct, $1, $3); } |
+EXPRESSION2 LENIENT_COMPOSITION EXPRESSION3 { $$ = new PmatchBinaryOperation(LenientCompose, $1, $3); } |
+EXPRESSION2 MERGE_RIGHT_ARROW EXPRESSION3 { $$ = new PmatchBinaryOperation(Merge, $1, $3);} |
+EXPRESSION2 MERGE_LEFT_ARROW EXPRESSION3 { $$ = new PmatchBinaryOperation(Merge, $3, $1); } |
+SUBSTITUTE_LEFT LEFT_BRACKET EXPRESSION3 COMMA EXPRESSION3 COMMA EXPRESSION3 RIGHT_BRACKET {
+    $$ = new PmatchTernaryOperation(Substitute, $3, $5, $7);
+} |
+EXPRESSION2 PAIR_SEPARATOR_WO_RIGHT {
+    $$ = new PmatchBinaryOperation(CrossProduct, $1, new PmatchQuestionMark); } |
+PAIR_SEPARATOR_WO_LEFT EXPRESSION2 {
+    $$ = new PmatchBinaryOperation(CrossProduct, new PmatchQuestionMark, $2); } |
+PAIR_SEPARATOR_SOLE {
+    $$ = new PmatchQuestionMark;
 };
 
-FUN_CONTEXT_CONDITIONS:
-FUN_CONTEXT_CONDITION {
-    $$ = new std::vector<PmatchAstNode *>(1, $1);
- }
-| FUN_CONTEXT_CONDITION COMMA FUN_CONTEXT_CONDITIONS {
-    $3->push_back($1);
-    $$ = $3;
- };
-
-
-
-
- FUNC_LABEL_PAIR:
-LABEL {
-    $$ = new PmatchAstNode(new HfstTransducer($1, hfst::pmatch::format));
-    free($1);
-}
-| CURLY_LITERAL {
-    HfstTokenizer tok;
-    $$ = new PmatchAstNode(new HfstTransducer($1, tok, hfst::pmatch::format));
-    free($1);
-}
-| LABEL PAIR_SEPARATOR LABEL {
-    $$ = new PmatchAstNode(new HfstTransducer($1, $3, hfst::pmatch::format));
-    free($1); free($3);
-}
-| ANY_TOKEN PAIR_SEPARATOR ANY_TOKEN {
-    $$ = new PmatchAstNode(new HfstTransducer(hfst::internal_unknown, hfst::pmatch::format));
-}
-| LABEL PAIR_SEPARATOR ANY_TOKEN {
-    $$ = new PmatchAstNode(new HfstTransducer($1, hfst::internal_unknown, hfst::pmatch::format));
-    free($1);
-}
-| ANY_TOKEN PAIR_SEPARATOR LABEL {
-    $$ = new PmatchAstNode(new HfstTransducer(hfst::internal_unknown, $3, hfst::pmatch::format));
-    free($3);
-}
-| LABEL PAIR_SEPARATOR_WO_RIGHT {
-    $$ = new PmatchAstNode(new HfstTransducer($1, hfst::internal_unknown, hfst::pmatch::format));
-    free($1);
- }
-| ANY_TOKEN PAIR_SEPARATOR_WO_RIGHT {
-    $$ = new PmatchAstNode(new HfstTransducer(hfst::internal_unknown, hfst::internal_unknown,
-                                          hfst::pmatch::format));
-}
-| PAIR_SEPARATOR_WO_LEFT LABEL {
-    $$ = new PmatchAstNode(new HfstTransducer(hfst::internal_unknown, $2, hfst::pmatch::format));
-    free($2);
-}
-| PAIR_SEPARATOR_WO_LEFT ANY_TOKEN {
-    $$ = new PmatchAstNode(new HfstTransducer(hfst::internal_unknown, hfst::internal_unknown,
-                                              hfst::pmatch::format));
-}
-| PAIR_SEPARATOR_SOLE {
-    $$ = new PmatchAstNode(new HfstTransducer(hfst::internal_unknown,
-                                              hfst::pmatch::format));
-  }
-| ANY_TOKEN {
-    $$ = new PmatchAstNode(new HfstTransducer(hfst::internal_identity,
-                                              hfst::pmatch::format));
-  }
-| CURLY_LITERAL PAIR_SEPARATOR CURLY_LITERAL {
-    HfstTokenizer tok;
-    HfstTransducer * left = new HfstTransducer($1, tok, hfst::pmatch::format);
-    HfstTransducer right($3, tok, hfst::pmatch::format);
-    HfstTransducer destroy(hfst::internal_unknown, hfst::internal_epsilon, hfst::pmatch::format);
-    HfstTransducer construct(hfst::internal_epsilon, hfst::internal_unknown, hfst::pmatch::format);
-    left->compose(destroy.repeat_star());
-    left->compose(construct.repeat_star());
-    left->compose(right);
-    $$ = new PmatchAstNode(left);
-    free($1); free($3);
-}
-| LABEL PAIR_SEPARATOR CURLY_LITERAL {
-    HfstTokenizer tok;
-    HfstTransducer * left = new HfstTransducer(
-        $1, hfst::internal_epsilon, hfst::pmatch::format);
-    HfstTransducer right($3, tok, hfst::pmatch::format);
-    HfstTransducer construct(hfst::internal_epsilon, hfst::internal_unknown, hfst::pmatch::format);
-    left->compose(construct.repeat_star());
-    left->compose(right);
-    $$ = new PmatchAstNode(left);
-    free($1); free($3);
-}
-| CURLY_LITERAL PAIR_SEPARATOR LABEL {
-    HfstTokenizer tok;
-    HfstTransducer * left = new HfstTransducer($1, tok, hfst::pmatch::format);
-    HfstTransducer right(hfst::internal_epsilon, $3, hfst::pmatch::format);
-    HfstTransducer destroy(hfst::internal_unknown, hfst::internal_epsilon, hfst::pmatch::format);
-    left->compose(destroy.repeat_star());
-    left->compose(right);
-    $$ = new PmatchAstNode(left);
-    free($1); free($3);
-}
-
-;
-
-// MAP: MAP_LEFT SYMBOL COMMA READ_TEXT RIGHT_PARENTHESIS {
-//     if (hfst::pmatch::functions.count($2) == 0) {
-//         std::string errstring = "Function not defined: " + std::string($2);
-//         pmatcherror(errstring.c_str());
-//     }
-//     std::vector<string> & callee_args = hfst::pmatch::functions[$2].args;
-//     std::vector<std::vector<std::string> > caller_strings =
-//         hfst::pmatch::read_args($4, callee_args.size());
-//     std::map<std::string, HfstTransducer*> caller_args;
-//     HfstTokenizer tok;
-//     $$ = new HfstTransducer(hfst::pmatch::format);
-//     for (std::vector<std::vector<std::string> >::iterator it =
-//              caller_strings.begin(); it != caller_strings.end(); ++it) {
-//         for (int i = 0; i < it->size(); ++i) {
-//             caller_args[callee_args[i]] = new HfstTransducer(it->at(i), tok, hfst::pmatch::format);
-//         }
-//         $$->disjunct(*hfst::pmatch::functions[$2].evaluate(caller_args));
-//         // Clean up the string transducers we allocated each time 
-//         for (std::map<std::string, HfstTransducer *>::iterator it = caller_args.begin();
-//              it != caller_args.end(); ++it) {
-//             delete it->second;
-//         }
-//         caller_args.clear();
-//     }
-//     $$->minimize();
-// };
-
-REGEXP2: REPLACE
-{ }
-| REGEXP2 COMPOSITION REPLACE {
-       
-    $$ = & $1->compose(*$3);
-    delete $3;
- }
-| REGEXP2 CROSS_PRODUCT REPLACE {
-    $$ = & $1->cross_product(*$3);
-    delete $3;
- }
-| REGEXP2 LENIENT_COMPOSITION REPLACE {
-    $$ = &$1->lenient_composition(*$3);
-    delete $3;
- }
-;
-
-////////////////////////////
-// Replace operators
-///////////////////////////
+EXPRESSION3: EXPRESSION4 { } |
+PARALLEL_RULES { };
 
-REPLACE : REGEXP3 {}
-|  PARALLEL_RULES
+PARALLEL_RULES: PARALLEL_RULES COMMACOMMA RULE
 {
-    // std::cerr << "replace:parallel_rules"<< std::endl;        
-    switch ( $1->first )
-    {
-    case E_REPLACE_RIGHT:
-        $$ = new HfstTransducer( replace( $1->second, false ) );
-        break;
-    case E_OPTIONAL_REPLACE_RIGHT:
-        $$ = new HfstTransducer( replace( $1->second, true ) );
-        break;
-    case E_REPLACE_LEFT:
-        $$ = new HfstTransducer( replace_left( $1->second, false ) );
-        break;
-    case E_OPTIONAL_REPLACE_LEFT:
-        $$ = new HfstTransducer( replace_left( $1->second, true ) );
-        break;
-    case E_RTL_LONGEST_MATCH:
-        $$ = new HfstTransducer( replace_rightmost_longest_match( $1->second ) );
-        break;
-    case E_RTL_SHORTEST_MATCH:
-        $$ = new HfstTransducer( replace_rightmost_shortest_match($1->second) );
-        break;
-    case E_LTR_LONGEST_MATCH:
-        $$ = new HfstTransducer( replace_leftmost_longest_match( $1->second ) );
-        break;
-    case E_LTR_SHORTEST_MATCH:
-        $$ = new HfstTransducer( replace_leftmost_shortest_match( $1->second ) );
-        break;
+    if ($3->arrow != $1->arrow) {
+        pmatcherror("Replace type mismatch in parallel rules");
     }
-       
-    delete $1;
-}
-;
-
-PARALLEL_RULES:
-PARALLEL_RULES COMMACOMMA RULE
-{
-//  std::cerr << "parallel_rules: parallel_rules ,, rule"<< std::endl;      
-    Rule tmpRule($3->second);
-    $1->second.push_back(tmpRule);
-    $$ =  new std::pair< ReplaceArrow, std::vector<Rule> > ($3->first, $1->second);
-    delete $3;
-}
-| RULE {
-//  std::cerr << "parallel_rules:rule"<< std::endl;        
-    std::vector<Rule> * ruleVector = new std::vector<Rule>();
-    ruleVector->push_back($1->second);
-            
-    $$ =  new std::pair< ReplaceArrow, std::vector<Rule> > ($1->first, *ruleVector);
-    delete $1;
-}
-
-;
+    $$ = dynamic_cast<PmatchParallelRulesContainer *>($$);
+    $1->rules.push_back($3);
+} | RULE {
+    $$ = new PmatchParallelRulesContainer($1);
+};
 
 RULE: MAPPINGPAIR_VECTOR
-  {
-     // std::cerr << "rule: mapping_vector"<< std::endl;      
-    // HfstTransducer allMappingsDisjuncted = disjunctVectorMembers($1->second);
-     
-     Rule rule( $1->second );;
-     $$ =  new std::pair< ReplaceArrow, Rule> ($1->first, rule);
-     delete $1;
-  }
-  | MAPPINGPAIR_VECTOR CONTEXTS_WITH_MARK
-  {
-    // std::cerr << "rule: mapping_vector contextsWM"<< std::endl;      
- //   HfstTransducer allMappingsDisjuncted = disjunctVectorMembers($1->second);
-    
-    Rule rule( $1->second, $2->second, $2->first );
-    $$ =  new std::pair< ReplaceArrow, Rule> ($1->first, rule);
-    delete $1, $2;
-  }
-  ;
-;
+{ $$ = new PmatchReplaceRuleContainer($1); } |
+MAPPINGPAIR_VECTOR CONTEXTS_WITH_MARK
+{ $$ = new PmatchReplaceRuleContainer($1, $2); };
       
 // Mappings: ( ie. a -> b , c -> d , ... , g -> d)
 MAPPINGPAIR_VECTOR: MAPPINGPAIR_VECTOR COMMA MAPPINGPAIR
-{
-    // std::cerr << "mapping_vector : mapping_vector comma mapping"<< std::endl;      
-    // check if new Arrow is the same as the first one
-
-    if ($1->first != $3->first)
-    {
-        pmatcherror("Replace arrows should be the same. Calculated as if all replacements had the fist arrow.");
-        //exit(1);
-    }
-
-	$1->second.push_back($3->second);
-    $$ =  new std::pair< ReplaceArrow, HfstTransducerPairVector> ($1->first, $1->second);
-    delete $3;
-            
-}
-      
-| MAPPINGPAIR
-{
-    // std::cerr << "mapping_vector : mapping"<< std::endl;      
-	 HfstTransducerPairVector * mappingPairVector = new HfstTransducerPairVector();
-	 mappingPairVector->push_back( $1->second );
-	 $$ =  new std::pair< ReplaceArrow, HfstTransducerPairVector> ($1->first, * mappingPairVector);
-	 delete $1; 
-}
-     
-;
-
-    
-MAPPINGPAIR: REPLACE REPLACE_ARROW REPLACE
-{
-        // std::cerr << "mapping : r2 arrow r2"<< std::endl;      
-
-          HfstTransducerPair mappingPair(*$1, *$3);
-          $$ =  new std::pair< ReplaceArrow, HfstTransducerPair> ($2, mappingPair);
-
-          delete $1, $3;
-      }
-  	| REPLACE REPLACE_ARROW REPLACE MARKUP_MARKER REPLACE
-      {
-      
-          HfstTransducerPair marks(*$3, *$5);
-          HfstTransducerPair tmpMappingPair(*$1, HfstTransducer(hfst::pmatch::format));
-          HfstTransducerPair mappingPair = create_mapping_for_mark_up_replace( tmpMappingPair, marks );
-          
-          $$ =  new std::pair< ReplaceArrow, HfstTransducerPair> ($2, mappingPair);
-         delete $1, $3, $5;
-      }
-      | REPLACE REPLACE_ARROW REPLACE MARKUP_MARKER
       {
-   
-          HfstTransducer epsilon(hfst::internal_epsilon, hfst::pmatch::format);
-          HfstTransducerPair marks(*$3, epsilon);
-          HfstTransducerPair tmpMappingPair(*$1, HfstTransducer(hfst::pmatch::format));
-          HfstTransducerPair mappingPair = create_mapping_for_mark_up_replace( tmpMappingPair, marks );
-                   
-          $$ =  new std::pair< ReplaceArrow, HfstTransducerPair> ($2, mappingPair);
-         delete $1, $3;
+          if ($1->arrow != $3->arrow) {
+             pmatcherror("Replace type mismatch in parallel rules.");
+          }
+         $1->push_back($3);
       }
-      | REPLACE REPLACE_ARROW MARKUP_MARKER REPLACE
-      {
-          HfstTransducer epsilon(hfst::internal_epsilon, hfst::pmatch::format);
-          HfstTransducerPair marks(epsilon, *$4);
-          HfstTransducerPair tmpMappingPair(*$1, HfstTransducer(hfst::pmatch::format));
-          HfstTransducerPair mappingPair = create_mapping_for_mark_up_replace( tmpMappingPair, marks );
-          
-          $$ =  new std::pair< ReplaceArrow, HfstTransducerPair> ($2, mappingPair);
-         delete $1, $4;
-      }     
-      
-| LEFT_BRACKET_DOTTED RIGHT_BRACKET_DOTTED REPLACE_ARROW REPLACE
-  {
-      HfstTransducer epsilon(hfst::internal_epsilon, hfst::pmatch::format);
-      //HfstTransducer mappingTr(epsilon);
-      //mappingTr.cross_product(*$4);
-      HfstTransducerPair mappingPair(epsilon, *$4);
-      
-      $$ =  new std::pair< ReplaceArrow, HfstTransducerPair> ($3, mappingPair);
-      delete $4;
-  }
-  | LEFT_BRACKET_DOTTED REPLACE RIGHT_BRACKET_DOTTED REPLACE_ARROW REPLACE
-  {
-    //  HfstTransducer mappingTr(*$2);
-    //  mappingTr.cross_product(*$5);
-	  HfstTransducerPair mappingPair(*$2, *$5);
-      $$ =  new std::pair< ReplaceArrow, HfstTransducerPair> ($4, mappingPair);
-      delete $2, $5;
-  }
-;    
-  
-   
-      
+| MAPPINGPAIR { $$ = $1; };
+    
+MAPPINGPAIR: EXPRESSION3 REPLACE_ARROW EXPRESSION3
+{
+    $$ = new PmatchMappingPairsContainer($2, $1, $3); }
+| EXPRESSION3 REPLACE_ARROW EXPRESSION3 MARKUP_MARKER EXPRESSION3 {
+    PmatchMarkupContainer * markup = new PmatchMarkupContainer($3, $5);
+    $$ = new PmatchMappingPairsContainer($2, $1, markup); }
+| EXPRESSION3 REPLACE_ARROW EXPRESSION3 MARKUP_MARKER {
+    PmatchTransducerContainer * epsilon = new PmatchTransducerContainer(
+        new HfstTransducer(hfst::internal_epsilon, format));
+    PmatchMarkupContainer * markup = new PmatchMarkupContainer($3, epsilon);
+    $$ = new PmatchMappingPairsContainer($2, $1, markup);
+} | EXPRESSION3 REPLACE_ARROW MARKUP_MARKER EXPRESSION3 {
+    PmatchMarkupContainer * markup = new PmatchMarkupContainer(new PmatchEpsilonArc, $4);
+    $$ = new PmatchMappingPairsContainer($2, $1, markup);
+} | LEFT_BRACKET_DOTTED RIGHT_BRACKET_DOTTED REPLACE_ARROW EXPRESSION3 {
+    $$ = new PmatchMappingPairsContainer($3, new PmatchEpsilonArc, $4);
+} | LEFT_BRACKET_DOTTED EXPRESSION3 RIGHT_BRACKET_DOTTED REPLACE_ARROW EXPRESSION3 {
+    $$ = new PmatchMappingPairsContainer($4, $2, $5);
+} | EXPRESSION3 REPLACE_ARROW LEFT_BRACKET_DOTTED RIGHT_BRACKET_DOTTED {
+    $$ = new PmatchMappingPairsContainer($2, $1, new PmatchEpsilonArc);
+} | EXPRESSION3 REPLACE_ARROW LEFT_BRACKET_DOTTED EXPRESSION3 RIGHT_BRACKET_DOTTED {
+    $$ = new PmatchMappingPairsContainer($2, $1, $4); };
 
-        
 // Contexts: ( ie. || k _ f , ... , f _ s )
-CONTEXTS_WITH_MARK:  CONTEXT_MARK CONTEXTS_VECTOR
+CONTEXTS_WITH_MARK: CONTEXT_MARK CONTEXTS_VECTOR
 {
-       
-    //std::cerr << "context w mark: conMark conVect"<< std::endl;      
-         
-    $$ =  new std::pair< ReplaceType, HfstTransducerPairVector> ($1, *$2);
-    //$$ = $2;
-    //std::cerr << "Context Mark: \n" << $1  << std::endl;
-   
-}  
-;
+    $$ = new PmatchContextsContainer($1, $2);
+};
 CONTEXTS_VECTOR: CONTEXT
 {
-    HfstTransducerPairVector * ContextVector = new HfstTransducerPairVector();
-    ContextVector->push_back(*$1);
-    $$ = ContextVector;
-    delete $1; 
-}
-
-| CONTEXTS_VECTOR COMMA CONTEXT
-{
-    $1->push_back(*$3);
+    $$ = new PmatchContextsContainer($1);
+} | CONTEXTS_VECTOR COMMA CONTEXT {
+    $1->push_back($3);
     $$ = $1;
-    delete $3; 
-}
-      
-;
-CONTEXT: REPLACE CENTER_MARKER REPLACE 
-{
-    $$ = new HfstTransducerPair(*$1, *$3);
-    delete $1, $3; 
-}
-| REPLACE CENTER_MARKER
-{
-    // std::cerr << "Mapping: \n" << *$1  << std::endl;
-            
-    HfstTransducer epsilon(hfst::internal_epsilon, hfst::pmatch::format);
-            
-    // std::cerr << "Epsilon: \n" << epsilon  << std::endl;
-    $$ = new HfstTransducerPair(*$1, epsilon);
-    delete $1; 
-}
-| CENTER_MARKER REPLACE
-{
-    HfstTransducer epsilon(hfst::internal_epsilon, hfst::pmatch::format);
-    $$ = new HfstTransducerPair(epsilon, *$2);
-    delete $2; 
-}
-;
-      
+};
 
+CONTEXT:
+EXPRESSION3 CENTER_MARKER EXPRESSION3  { $$ = new PmatchContextsContainer($1, $3); } |
+EXPRESSION3 CENTER_MARKER { $$ = new PmatchContextsContainer($1, new PmatchEpsilonArc); } |
+CENTER_MARKER EXPRESSION3 { $$ = new PmatchContextsContainer(new PmatchEpsilonArc, $2); } |
+CENTER_MARKER { $$ = new PmatchContextsContainer(new PmatchEpsilonArc, new PmatchEpsilonArc);
+};
 
-CONTEXT_MARK: REPLACE_CONTEXT_UU
-{
-    $$ = REPL_UP;
-}
-| REPLACE_CONTEXT_LU 
-{
-    $$ = REPL_RIGHT;
-}
-| REPLACE_CONTEXT_UL
-{
-    $$ = REPL_LEFT;
-}
-| REPLACE_CONTEXT_LL
-{
-    $$ = REPL_DOWN;
-}
-;
-     
+CONTEXT_MARK:
+REPLACE_CONTEXT_UU { $$ = REPL_UP; } |
+REPLACE_CONTEXT_LU { $$ = REPL_RIGHT; } |
+REPLACE_CONTEXT_UL { $$ = REPL_LEFT; } |
+REPLACE_CONTEXT_LL { $$ = REPL_DOWN; };
      
-     
-     
-
-
-REPLACE_ARROW: REPLACE_RIGHT
-{
-    $$ = E_REPLACE_RIGHT;
-}
-| OPTIONAL_REPLACE_RIGHT
-{
-    $$ = E_OPTIONAL_REPLACE_RIGHT;
-}
-| RTL_LONGEST_MATCH
-{
-    $$ = E_RTL_LONGEST_MATCH;
-}
-| RTL_SHORTEST_MATCH
-{
-    $$ = E_RTL_SHORTEST_MATCH;
-}
-| LTR_LONGEST_MATCH
-{
-    $$ = E_LTR_LONGEST_MATCH;
-}
-| LTR_SHORTEST_MATCH
-{
-    $$ = E_LTR_SHORTEST_MATCH;
-}
-;
-
-
-
-
-
-
+REPLACE_ARROW:
+REPLACE_RIGHT { $$ = E_REPLACE_RIGHT; } |
+OPTIONAL_REPLACE_RIGHT { $$ = E_OPTIONAL_REPLACE_RIGHT; } |
+RTL_LONGEST_MATCH { $$ = E_RTL_LONGEST_MATCH; } |
+RTL_SHORTEST_MATCH { $$ = E_RTL_SHORTEST_MATCH; } |
+LTR_LONGEST_MATCH { $$ = E_LTR_LONGEST_MATCH; } |
+LTR_SHORTEST_MATCH { $$ = E_LTR_SHORTEST_MATCH; } |
+REPLACE_LEFT { $$ =  E_REPLACE_LEFT; } |
+OPTIONAL_REPLACE_LEFT { $$ = E_OPTIONAL_REPLACE_LEFT;
+};
 
+EXPRESSION4: EXPRESSION5 { } |
+EXPRESSION4 SHUFFLE EXPRESSION5 { $$ = new PmatchBinaryOperation(Shuffle, $1, $3); } |
+EXPRESSION4 BEFORE EXPRESSION5 { $$ = new PmatchBinaryOperation(Before, $1, $3);} |
+EXPRESSION4 AFTER EXPRESSION5 { $$ = new PmatchBinaryOperation(After, $1, $3); };
 
-////////////////
+EXPRESSION5: EXPRESSION6 { } |
+EXPRESSION6 RIGHT_ARROW RESTR_CONTEXTS { $$ = new PmatchRestrictionContainer($1, $3); } |
+EXPRESSION6 LEFT_ARROW EXPRESSION6 CENTER_MARKER EXPRESSION6 { pmatcherror("Left arrow with contexts not implemented"); } |
+EXPRESSION6 LEFT_RIGHT_ARROW EXPRESSION6 CENTER_MARKER EXPRESSION6 { pmatcherror("Left-right arrow with contexts not implemented"); };
 
+RESTR_CONTEXTS: RESTR_CONTEXT {
+    $$ = new MappingPairVector();
+    $$->push_back(*$1);
+    delete $1;
+} |
+RESTR_CONTEXTS COMMA RESTR_CONTEXT {
+     $1->push_back(*$3);
+     $$ = $1;
+     delete $3;
+};
 
+RESTR_CONTEXT:
+EXPRESSION6 CENTER_MARKER EXPRESSION6 { $$ = new PmatchObjectPair($1, $3); } |
+EXPRESSION6 CENTER_MARKER { $$ = new PmatchObjectPair($1, new PmatchEpsilonArc); } |
+CENTER_MARKER EXPRESSION6 { $$ = new PmatchObjectPair(new PmatchEpsilonArc, $2); } |
+CENTER_MARKER { $$ = new PmatchObjectPair(new PmatchEmpty, new PmatchEmpty); };
+
+EXPRESSION6: EXPRESSION7 { } |
+EXPRESSION6 UNION EXPRESSION7 { $$ = new PmatchBinaryOperation(Disjunct, $1, $3); } |
+EXPRESSION6 INTERSECTION EXPRESSION7 { $$ = new PmatchBinaryOperation(Intersect, $1, $3); } |
+EXPRESSION6 MINUS EXPRESSION7 { $$ = new PmatchBinaryOperation(Subtract, $1, $3); } |
+EXPRESSION6 UPPER_MINUS EXPRESSION7 { $$ = new PmatchBinaryOperation(UpperSubtract, $1, $3); } |
+EXPRESSION6 LOWER_MINUS EXPRESSION7 { $$ = new PmatchBinaryOperation(LowerSubtract, $1, $3); } |
+EXPRESSION6 UPPER_PRIORITY_UNION EXPRESSION7 { $$ = new PmatchBinaryOperation(UpperPriorityUnion, $1, $3); } |
+EXPRESSION6 LOWER_PRIORITY_UNION EXPRESSION7 { $$ = new PmatchBinaryOperation(LowerPriorityUnion, $1, $3); };
+
+EXPRESSION7: EXPRESSION8 { } |
+EXPRESSION7 EXPRESSION7 { $$ = new PmatchBinaryOperation(Concatenate, $1, $2); };
+
+EXPRESSION8: EXPRESSION9 { } |
+EXPRESSION8 IGNORING EXPRESSION9 { $$ = new PmatchBinaryOperation(InsertFreely, $1, $3); } |
+EXPRESSION8 IGNORE_INTERNALLY EXPRESSION9 { $$ = new PmatchBinaryOperation(IgnoreInternally, $1, $3); } |
+EXPRESSION8 LEFT_QUOTIENT EXPRESSION9 { pmatcherror("Left quotient not implemented"); };
+
+EXPRESSION9: EXPRESSION10 { } |
+COMPLEMENT EXPRESSION10 { $$ = new PmatchUnaryOperation(Complement, $2); } |
+CONTAINMENT EXPRESSION10 { $$ = new PmatchUnaryOperation(Containment, $2); } |
+CONTAINMENT_ONCE EXPRESSION10 { $$ = new PmatchUnaryOperation(ContainmentOnce, $2); } |
+CONTAINMENT_OPT EXPRESSION10 { $$ = new PmatchUnaryOperation(ContainmentOptional, $2); };
+
+EXPRESSION10: EXPRESSION11 { } |
+EXPRESSION11 STAR { $$ = new PmatchUnaryOperation(RepeatStar, $1); } |
+EXPRESSION11 PLUS { $$ = new PmatchUnaryOperation(RepeatPlus, $1); } |
+EXPRESSION11 REVERSE { $$ = new PmatchUnaryOperation(Reverse, $1); } |
+EXPRESSION11 INVERT { $$ = new PmatchUnaryOperation(Invert, $1); } |
+EXPRESSION11 UPPER_PROJECT { $$ = new PmatchUnaryOperation(InputProject, $1); } |
+EXPRESSION11 LOWER_PROJECT { $$ = new PmatchUnaryOperation(OutputProject, $1); } |
+EXPRESSION11 CATENATE_N {
+    $$ = new PmatchNumericOperation(RepeatN, $1);
+    (dynamic_cast<PmatchNumericOperation *>($$))->values.push_back($2);
+} |
+EXPRESSION11 CATENATE_N_PLUS {
+    $$ = new PmatchNumericOperation(RepeatNPlus, $1);
+    (dynamic_cast<PmatchNumericOperation *>($$))->values.push_back($2 + 1);
+} |
+EXPRESSION11 CATENATE_N_MINUS {
+    $$ = new PmatchNumericOperation(RepeatNMinus, $1);
+    (dynamic_cast<PmatchNumericOperation *>($$))->values.push_back($2 - 1);
+} |
+EXPRESSION11 CATENATE_N_TO_K {
+    $$ = new PmatchNumericOperation(RepeatNToK, $1);
+    (dynamic_cast<PmatchNumericOperation *>($$))->values.push_back($2[0]);
+    (dynamic_cast<PmatchNumericOperation *>($$))->values.push_back($2[1]);
+    free($2);
+};
 
-REGEXP3: REGEXP4 { }
-| REGEXP3 SHUFFLE REGEXP4 {
-    try {
-        $$ = & $1->shuffle(*$3);
-    } catch (const TransducersAreNotAutomataException & e) {
-        pmatchwarning("tried to shuffle with non-automaton transducers,\n"
-                      "    shuffling with their input projection instead.");
-        $1->input_project();
-        $3->input_project();
-        $$ = & $1->shuffle(*$3);
+EXPRESSION11: EXPRESSION12 { } |
+TERM_COMPLEMENT EXPRESSION12 { $$ = new PmatchUnaryOperation(TermComplement, $2); };
+
+EXPRESSION12: EXPRESSION13 { } |
+LEFT_BRACKET EXPRESSION2 RIGHT_BRACKET { $$ = $2; } |
+EXPRESSION12 PAIR_SEPARATOR EXPRESSION13 { $$ = new PmatchBinaryOperation(CrossProduct, $1, $3); } |
+LEFT_PARENTHESIS EXPRESSION2 RIGHT_PARENTHESIS { $$ = new PmatchUnaryOperation(Optionalize, $2); } |
+EXPRESSION12 WEIGHT { $$ = $1; $$->weight += $2; } |
+LEFT_BRACKET EXPRESSION2 RIGHT_BRACKET TAG_LEFT SYMBOL RIGHT_PARENTHESIS {
+    $$ = new PmatchUnaryOperation(AddDelimiters,
+                                  new PmatchBinaryOperation(Concatenate, $2,
+                                                            new PmatchString($5)));
+    free($5); } |
+LEFT_BRACKET EXPRESSION2 RIGHT_BRACKET TAG_LEFT QUOTED_LITERAL RIGHT_PARENTHESIS {
+    $$ = new PmatchUnaryOperation(AddDelimiters,
+                                  new PmatchBinaryOperation(Concatenate, $2,
+                                                            new PmatchString($5)));
+    free($5); };
+
+EXPRESSION13:
+QUOTED_LITERAL { $$ = new PmatchString(std::string($1)); free($1); } |
+EPSILON_TOKEN { $$ = new PmatchString(hfst::internal_epsilon); } |
+BOUNDARY_MARKER { $$ = new PmatchString("@BOUNDARY@"); } |
+LIT_LEFT SYMBOL RIGHT_PARENTHESIS { $$ = new PmatchString(std::string($2)); free($2); } |
+CURLY_LITERAL {
+    PmatchString * retval = new PmatchString(std::string($1));
+    retval->multichar = true;
+    $$ = retval; free($1);
+} |
+ANY_TOKEN { $$ = new PmatchQuestionMark; } |
+EXPLODE { } |
+IMPLODE { } |
+FUNCALL { } |
+//MAP { } |
+INSERTION { } |
+ALPHA { $$ = new PmatchAcceptor(Alpha); } |
+LOWERALPHA { $$ = new PmatchAcceptor(LowercaseAlpha); } |
+UPPERALPHA { $$ = new PmatchAcceptor(UppercaseAlpha); } |
+NUM { $$ = new PmatchAcceptor(Numeral); } |
+PUNCT { $$ = new PmatchAcceptor(Punctuation); } |
+WHITESPACE { $$ = new PmatchAcceptor(Whitespace); } |
+CAP_LEFT EXPRESSION2 RIGHT_PARENTHESIS { $$ = new PmatchUnaryOperation(Cap, $2); } |
+OPTCAP_LEFT EXPRESSION2 RIGHT_PARENTHESIS { $$ = new PmatchUnaryOperation(OptCap, $2); } |
+TOLOWER_LEFT EXPRESSION2 RIGHT_PARENTHESIS { $$ = new PmatchUnaryOperation(ToLower, $2); } |
+TOUPPER_LEFT EXPRESSION2 RIGHT_PARENTHESIS { $$ = new PmatchUnaryOperation(ToUpper, $2); } |
+OPT_TOLOWER_LEFT EXPRESSION2 RIGHT_PARENTHESIS { $$ = new PmatchUnaryOperation(OptToLower, $2); } |
+OPT_TOUPPER_LEFT EXPRESSION2 RIGHT_PARENTHESIS { $$ = new PmatchUnaryOperation(OptToUpper, $2); } |
+ANY_CASE_LEFT EXPRESSION2 RIGHT_PARENTHESIS { $$ = new PmatchUnaryOperation(AnyCase, $2); } |
+DEFINE_LEFT EXPRESSION2 RIGHT_PARENTHESIS { $$ = new PmatchUnaryOperation(AddDelimiters, $2); } |
+READ_FROM { } |
+CHARACTER_RANGE { $$ = $1; } |
+LST_LEFT EXPRESSION2 RIGHT_PARENTHESIS { $$ = new PmatchUnaryOperation(MakeList, $2); } |
+EXC_LEFT EXPRESSION2 RIGHT_PARENTHESIS { $$ = new PmatchUnaryOperation(MakeExcList, $2); } |
+INTERPOLATE_LEFT FUNCALL_ARGLIST RIGHT_PARENTHESIS { $$ = new PmatchBuiltinFunction(Interpolate, $2); } |
+SIGMA_LEFT EXPRESSION2 RIGHT_PARENTHESIS { $$ = new PmatchUnaryOperation(MakeSigma, $2); } |
+COUNTER_LEFT SYMBOL RIGHT_PARENTHESIS { $$ = hfst::pmatch::make_counter($2); free($2); } |
+ENDTAG { $$ = $1; hfst::pmatch::need_delimiters = true; } |
+CONTEXT_CONDITION { $$ = $1; hfst::pmatch::need_delimiters = true; } |
+SYMBOL {
+    std::string sym($1);
+    free($1);
+    if (sym.size() == 0) {
+        $$ = new PmatchEmpty;
+    } else {
+        $$ = new PmatchSymbol(sym);
     }
-    delete $3;
- }
-| REGEXP3 BEFORE REGEXP4 {
-    $$ = new HfstTransducer( before (*$1, *$3) );
-    delete $1, $3;
-}
-| REGEXP3 AFTER REGEXP4 {
-    $$ = new HfstTransducer( after (*$1, *$3) );
-    delete $1, $3;
-}
-;
-
-REGEXP4: REGEXP5 { }
-| REGEXP4 RIGHT_ARROW RESTR_CONTEXTS_VECTOR {
-    $$ = new HfstTransducer( restriction(*$1, *$3) ) ;
-    delete $1;
-    delete $3;
-}
-| REGEXP4 LEFT_ARROW REGEXP5 CENTER_MARKER REGEXP5 {
-    pmatcherror("Left arrow with contexts not implemented");
-    $$ = $1;
-    delete $3;
-    delete $5;
- }
-| REGEXP4 LEFT_RIGHT_ARROW REGEXP5 CENTER_MARKER REGEXP5 {
-    pmatcherror("Left-right arrow with contexts not implemented");
-    $$ = $1;
-    delete $3;
-    delete $5;
- }
-;
+};
 
-RESTR_CONTEXTS_VECTOR: RESTR_CONTEXT
-{
-    HfstTransducerPairVector * ContextVector = new HfstTransducerPairVector();
-    ContextVector->push_back(*$1);
-    $$ = ContextVector;
-    delete $1; 
-}
-| RESTR_CONTEXTS_VECTOR COMMA RESTR_CONTEXT
+EXPLODE: EXPLODE_LEFT CONCATENATED_STRING_LIST RIGHT_PARENTHESIS
 {
-    $1->push_back(*$3);
-    $$ = $1;
-    delete $3; 
+    $$ = new PmatchString($2, true);
+    free($2);
 };
-      
-RESTR_CONTEXT: REGEXP4 CENTER_MARKER REGEXP4 
-{
-    $$ = new HfstTransducerPair(*$1, *$3);
-    delete $1, $3; 
-}
-| REGEXP4 CENTER_MARKER
-{
-    HfstTransducer epsilon(hfst::internal_epsilon, hfst::pmatch::format);
-    $$ = new HfstTransducerPair(*$1, epsilon);
-    delete $1; 
-}
-| CENTER_MARKER REGEXP4
-{
-    HfstTransducer epsilon(hfst::internal_epsilon, hfst::pmatch::format);
-    $$ = new HfstTransducerPair(epsilon, *$2);
-    delete $2; 
-}
-| CENTER_MARKER
+
+IMPLODE: IMPLODE_LEFT CONCATENATED_STRING_LIST RIGHT_PARENTHESIS
 {
-    HfstTransducer empty(hfst::pmatch::format);
-    $$ = new HfstTransducerPair(empty, empty);
+    $$ = new PmatchString($2);
+    free($2);
 };
 
-REGEXP5: REGEXP6 { }
-| REGEXP5 UNION REGEXP6 {
-    $$ = & $1->disjunct(*$3);
-    delete $3;
- }
-| REGEXP5 INTERSECTION REGEXP6 {
-    $$ = & $1->intersect(*$3);
-    delete $3;
- }
-| REGEXP5 MINUS REGEXP6 {
-    $$ = & $1->subtract(*$3);
-    delete $3;
- }
-| REGEXP5 UPPER_MINUS REGEXP6 {
-    pmatcherror("No upper minus");
-    $$ = $1;
-    delete $3;
- }
-| REGEXP5 LOWER_MINUS REGEXP6 {
-    pmatcherror("No lower minus");
-    $$ = $1;
-    delete $3;
- }
-| REGEXP5 UPPER_PRIORITY_UNION REGEXP6 {
-    $$ = & $1->priority_union(*$3);
-    delete $3;
- }
-| REGEXP5 LOWER_PRIORITY_UNION REGEXP6 {
-    HfstTransducer* left = new HfstTransducer(*$1);
-    HfstTransducer* right =  new HfstTransducer(*$3);
-    right->invert();
-    left->invert();
-    $$ = & (left->priority_union(*right).invert());
-    delete $1, $3;
- }
-;
-
-REGEXP6: REGEXP7 { }
-| REGEXP6 REGEXP7 { 
-    $$ = & $1->concatenate(*$2);
-    delete $2;
- }
-;
-
-REGEXP7: REGEXP8 { }
-| REGEXP7 IGNORING REGEXP8 {
-    $$ = & $1->insert_freely(*$3, false);
-    delete $3;
- }
-| REGEXP7 IGNORE_INTERNALLY REGEXP8 {
-    HfstTransducer * left = new HfstTransducer(*$1);
-    HfstTransducer * right = new HfstTransducer(*$1);
-    HfstTransducer * middle = new HfstTransducer(*$1);
-    middle->disjunct(*$3);
-    middle->repeat_star();
-    left->concatenate(*middle);
-    left->concatenate(*right);
-    $$ = left;
-    delete $1;
-    delete $3;
-    delete middle;
-    delete right;
- }
-| REGEXP7 LEFT_QUOTIENT REGEXP8 {
-    pmatcherror("No left quotient");
-    $$ = $1;
-    delete $3;
- }
+CONCATENATED_STRING_LIST: SYMBOL
+{ $$ = $1; } |
+SYMBOL COMMA CONCATENATED_STRING_LIST
+{
+    $$ = static_cast<char*>(malloc(sizeof(char)*(strlen($1) + strlen($3)+1)));
+    strcpy($$, $1);
+    strcat($$, $3);
+    free($1); free($3);
+};
 
-;
+FUNCALL: SYMBOL_WITH_LEFT_PAREN FUNCALL_ARGLIST RIGHT_PARENTHESIS
+{
+    std::string sym($1);
+    if (function_names.count($1) == 0) {
+        std::stringstream ss;
+        ss << "Function " << sym << " hasn't been defined\n";
+        pmatcherror(ss.str().c_str());
+        $$ = new PmatchString("");
+    } else {
+        $$ = new PmatchFuncall(
+            $2,
+            dynamic_cast<PmatchFunction *>(symbol_from_global_context(sym)));
+    }
+    used_definitions.insert(sym);
+    free($1);
+};
 
-REGEXP8: REGEXP9 { }
-| COMPLEMENT REGEXP8 {
-// Defined here only for automata, so we project to input
-    HfstTransducer * complement =
-        new HfstTransducer(hfst::internal_identity, hfst::pmatch::format);
-    complement->repeat_star();
-    complement->subtract(*$2);
-    $$ = complement;
-    delete $2;
-}
-| CONTAINMENT REGEXP8 {
-    HfstTransducer* left = new HfstTransducer(hfst::internal_identity,
-                                              hfst::pmatch::format);
-    HfstTransducer* right = new HfstTransducer(hfst::internal_identity,
-                                               hfst::pmatch::format);
-    right->repeat_star();
-    left->repeat_star();
-    $2->repeat_star();
-    left->concatenate(*$2);
-    left->concatenate(*right);
-    $$ = left;
-    delete $2;
-    delete right;
- }
-| CONTAINMENT_ONCE REGEXP8 {
-    HfstTransducer* left = new HfstTransducer(hfst::internal_identity,
-                                              hfst::pmatch::format);
-    HfstTransducer* right = new HfstTransducer(hfst::internal_identity,
-                                               hfst::pmatch::format);
-    left->subtract(*$2);
-    right->subtract(*$2);
-    right->repeat_star();
-    left->repeat_star();
-    left->concatenate(*$2);
-    left->concatenate(*right);
-    $$ = left;
-    delete $2;
-    delete right;
- }
-| CONTAINMENT_OPT REGEXP8 {
-    HfstTransducer* left = new HfstTransducer(hfst::internal_identity,
-                                              hfst::pmatch::format);
-    HfstTransducer* right = new HfstTransducer(hfst::internal_identity,
-                                               hfst::pmatch::format);
-    left->subtract(*$2);
-    right->subtract(*$2);
-    right->repeat_star();
-    left->repeat_star();
-    $2->optionalize();
-    left->concatenate(*$2);
-    left->concatenate(*right);
-    $$ = left;
-    delete $2;
-    delete right;
- }
-;
+FUNCALL_ARGLIST: EXPRESSION2 COMMA FUNCALL_ARGLIST {
+$$ = $3; $$->push_back($1); } |
+EXPRESSION2 { $$ = new std::vector<PmatchObject *>(1, $1); } |
+{ $$ = new std::vector<PmatchObject *>; };
 
-REGEXP9: REGEXP10 { }
-| REGEXP9 STAR {
-    $$ = & $1->repeat_star();
- }
-| REGEXP9 PLUS {
-    $$ = & $1->repeat_plus();
- }
-| REGEXP9 REVERSE {
-    $$ = & $1->reverse();
- }
-| REGEXP9 INVERT {
-    $$ = & $1->invert();
- }
-| REGEXP9 PMATCH_UPPER {
-    $$ = & $1->input_project();
- }
-| REGEXP9 PMATCH_LOWER {
-    $$ = & $1->output_project();
- }
-| REGEXP9 CATENATE_N {
-    $$ = & $1->repeat_n($2);
- }
-| REGEXP9 CATENATE_N_PLUS {
-    $$ = & $1->repeat_n_plus($2 + 1);
- }
-| REGEXP9 CATENATE_N_MINUS {
-    $$ = & $1->repeat_n_minus($2 - 1);
- }
-| REGEXP9 CATENATE_N_TO_K {
-    $$ = & $1->repeat_n_to_k($2[0], $2[1]);
+INSERTION: INS_LEFT SYMBOL RIGHT_PARENTHESIS {
+    if (!hfst::pmatch::flatten) {
+        if(hfst::pmatch::definitions.count($2) == 0) {
+            hfst::pmatch::unsatisfied_insertions.insert($2);
+        }
+        $$ = new PmatchString(hfst::pmatch::get_Ins_transition($2));
+        hfst::pmatch::inserted_names.insert($2);
+        hfst::pmatch::used_definitions.insert($2);
+    } else if(hfst::pmatch::definitions.count($2) != 0) {
+        $$ = hfst::pmatch::definitions[$2];
+    } else {
+        $$ = new PmatchEmpty;
+        std::stringstream ss;
+        ss << "Insertion of " << $2 << " on line " << pmatchlineno << " is undefined and --flatten is in use\n";
+        pmatcherror(ss.str().c_str());
+    }
     free($2);
- }
-;
-
-REGEXP10: REGEXP11 { }
-| TERM_COMPLEMENT REGEXP10 {
-    HfstTransducer* any = new HfstTransducer(hfst::internal_identity,
-                                             hfst::internal_identity,
-                                             hfst::pmatch::format);
-    $$ = & ( any->subtract(*$2));
-    delete $2;
- }
-| SUBSTITUTE_LEFT REGEXP10 COMMA REGEXP10 COMMA REGEXP10 RIGHT_BRACKET {
-    pmatcherror("no substitute");
-    $$ = $2;
- }
-;
-
-REGEXP11: REGEXP12 { }
-| REGEXP11 WEIGHT { 
-    $$ = & $1->set_final_weights($2);
- }
-| LEFT_BRACKET REGEXP2 RIGHT_BRACKET {
-    $$ = $2;
- }
-| LEFT_BRACKET REGEXP2 RIGHT_BRACKET TAG_LEFT SYMBOL RIGHT_PARENTHESIS {
-  hfst::pmatch::add_end_tag($2, $5);
-  $$ = hfst::pmatch::add_pmatch_delimiters($2);
-}
-| LEFT_BRACKET REGEXP2 RIGHT_BRACKET TAG_LEFT QUOTED_LITERAL RIGHT_PARENTHESIS {
-  hfst::pmatch::add_end_tag($2, $5);
-  $$ = hfst::pmatch::add_pmatch_delimiters($2);
-}
-| LEFT_PARENTHESIS REGEXP2 RIGHT_PARENTHESIS {
-    $$ = & $2->optionalize();
- }
-| ALPHA {
-    $$ = new HfstTransducer(*hfst::pmatch::get_utils()->latin1_alpha_acceptor);
-        $$->minimize();
- }
-| LOWERALPHA {
-    $$ = new HfstTransducer(*hfst::pmatch::get_utils()->latin1_lowercase_acceptor);
- }
-| UPPERALPHA {
-    $$ = new HfstTransducer(*hfst::pmatch::get_utils()->latin1_uppercase_acceptor);
- }
-| NUM {
-    $$ = new HfstTransducer(*hfst::pmatch::get_utils()->latin1_numeral_acceptor);
- }
-| PUNCT {
-    $$ = new HfstTransducer(*hfst::pmatch::get_utils()->latin1_punct_acceptor);
- }
-| WHITESPACE {
-    $$ = new HfstTransducer(*hfst::pmatch::get_utils()->latin1_whitespace_acceptor);
- }
-| INSERT { }
-| ANONYMOUS_DEFINITION { }
-| OPTCAP { }
-| TOUPPER { }
-| TOLOWER { }
-;
-
-OPTCAP: OPTCAP_LEFT REGEXP11 RIGHT_PARENTHESIS {
-    $$ = hfst::pmatch::get_utils()->optcap(* $2);
-}
-;
-
-TOLOWER: TOLOWER_LEFT REGEXP11 RIGHT_PARENTHESIS {
-    $$ = hfst::pmatch::get_utils()->tolower(* $2);
-}
-;
-
-TOUPPER: TOUPPER_LEFT REGEXP11 RIGHT_PARENTHESIS {
-    $$ = hfst::pmatch::get_utils()->toupper(* $2);
-}
-;
-
-FUN_OPTCAP: OPTCAP_LEFT FUNCBODY4 RIGHT_PARENTHESIS {
-    $$ = new PmatchAstNode($2, hfst::pmatch::AstOptCap);
-}
-;
-
-FUN_TOLOWER: TOLOWER_LEFT FUNCBODY4 RIGHT_PARENTHESIS {
-    $$ = new PmatchAstNode($2, hfst::pmatch::AstToLower);
-}
-;
+};
 
-FUN_TOUPPER: TOUPPER_LEFT FUNCBODY4 RIGHT_PARENTHESIS {
-    $$ = new PmatchAstNode($2, hfst::pmatch::AstToUpper);
-}
-;
+ENDTAG: ENDTAG_LEFT SYMBOL RIGHT_PARENTHESIS {
+    $$ = hfst::pmatch::make_end_tag($2);
+    free($2);
+} | ENDTAG_LEFT QUOTED_LITERAL RIGHT_PARENTHESIS {
+    $$ = hfst::pmatch::make_end_tag($2);
+    free($2);
+};
 
-REGEXP12: LABEL_PAIR { }
-| READ_BIN {
+READ_FROM: READ_BIN {
+    HfstTransducer * read;
     try {
         hfst::HfstInputStream instream($1);
-        $$ = new HfstTransducer(instream);
+        read = new HfstTransducer(instream);
         instream.close();
     } catch(HfstException) {
         std::string ermsg =
@@ -1299,26 +502,23 @@ REGEXP12: LABEL_PAIR { }
         free($1);
         pmatcherror(ermsg.c_str());
     }
-    if ($$->get_type() != hfst::pmatch::format) {
-        $$->convert(hfst::pmatch::format);
+    if (read->get_type() != hfst::pmatch::format) {
+        read->convert(hfst::pmatch::format);
     }
+    $$ = new PmatchTransducerContainer(read);
+    free($1);
+} | READ_TEXT {
+    $$ = new PmatchTransducerContainer(hfst::pmatch::read_text($1));
     free($1);
-  }
-| READ_TEXT {
-  $$ = hfst::pmatch::read_text($1);
-  free($1);
-  }
-| READ_SPACED {
+} | READ_SPACED {
     FILE * f = NULL;
     f = fopen($1, "r");
     if (f == NULL) {
         pmatcherror("File cannot be opened.\n");
-    }
-    else {
+    } else {
         HfstTokenizer tok;
         HfstBasicTransducer tmp;
         char line [1000];
-        
         while( fgets(line, 1000, f) != NULL )
         {
             hfst::pmatch::strip_newline(line);
@@ -1326,25 +526,23 @@ REGEXP12: LABEL_PAIR { }
             tmp.disjunct(spv, 0);
         }
         fclose(f);
-        HfstTransducer * retval = new HfstTransducer(tmp, hfst::pmatch::format); 
-        retval->minimize();
-        $$ = retval;
+        HfstTransducer * t = new HfstTransducer(tmp, hfst::pmatch::format); 
+        t->minimize();
+        $$ = new PmatchTransducerContainer(t);
     }
-  }
-| READ_PROLOG {
+} | READ_PROLOG {
     FILE * f = NULL;
     f = fopen($1, "r");
     if (f == NULL) {
         pmatcherror("File cannot be opened.\n");
-    }
-    else {
+    } else {
         try {
             unsigned int linecount = 0;
             HfstBasicTransducer tmp = HfstBasicTransducer::read_in_prolog_format(f, linecount);
             fclose(f);
-            HfstTransducer * retval = new HfstTransducer(tmp, hfst::pmatch::format);
-            retval->minimize();
-            $$ = retval;
+            HfstTransducer * t = new HfstTransducer(tmp, hfst::pmatch::format);
+            t->minimize();
+            $$ = new PmatchTransducerContainer(t);
         }
         catch (const HfstException & e) {
             (void) e;
@@ -1352,199 +550,49 @@ REGEXP12: LABEL_PAIR { }
             pmatcherror("Error reading prolog file.\n");
         }
     }
-  }
-| READ_RE {
-    pmatcherror("Definitely no read regex");
-  }
-| READ_LEXC {
-    $$ = hfst::HfstTransducer::read_lexc_ptr($1, hfst::TROPICAL_OPENFST_TYPE, hfst::pmatch::verbose);
+} | READ_LEXC {
+    $$ = new PmatchTransducerContainer(hfst::HfstTransducer::read_lexc_ptr($1, format, hfst::pmatch::verbose));
     free($1);
-  }
-;
-
-LABEL_PAIR: LABEL PAIR_SEPARATOR LABEL {
-    $$ = new HfstTransducer($1, $3, hfst::pmatch::format);
-    free($1); free($3);
-}
-
-| ANY_TOKEN PAIR_SEPARATOR ANY_TOKEN {
-    $$ = new HfstTransducer(hfst::internal_unknown, hfst::internal_unknown,
-                            hfst::pmatch::format);
- }
-| LABEL PAIR_SEPARATOR ANY_TOKEN {
-    $$ = new HfstTransducer($1, hfst::internal_unknown, hfst::pmatch::format);
-    free($1);
- }
-| ANY_TOKEN PAIR_SEPARATOR LABEL {
-    $$ = new HfstTransducer(hfst::internal_unknown, $3, hfst::pmatch::format);
-    $$->disjunct(HfstTransducer($3, $3, hfst::pmatch::format));
-    free($3);
-}
-| LABEL PAIR_SEPARATOR_WO_RIGHT {
-    $$ = new HfstTransducer($1, hfst::internal_unknown, hfst::pmatch::format);
-    free($1);
- }
-| ANY_TOKEN PAIR_SEPARATOR_WO_RIGHT {
-    $$ = new HfstTransducer(hfst::internal_unknown, hfst::internal_unknown,
-                            hfst::pmatch::format);
- }
-| PAIR_SEPARATOR_WO_LEFT LABEL {
-    $$ = new HfstTransducer(hfst::internal_unknown, $2, hfst::pmatch::format);
-    $$->disjunct(HfstTransducer($2, $2, hfst::pmatch::format));	
-    free($2);
- }
-| PAIR_SEPARATOR_WO_LEFT ANY_TOKEN {
-    $$ = new HfstTransducer(hfst::internal_unknown, hfst::internal_unknown,
-                            hfst::pmatch::format);
- }
-| SYMBOL {
-    if (hfst::pmatch::definitions.count($1) != 0) {
-        if (!hfst::pmatch::flatten &&
-            hfst::pmatch::def_insed_transducers.count($1) == 1) {
-            $$ = new HfstTransducer(*hfst::pmatch::def_insed_transducers[$1]);
-            hfst::pmatch::inserted_transducers.insert($1);
-            if (hfst::pmatch::verbose) {
-                hfst::pmatch::used_definitions.insert($1);
-            }
-        } else {
-            if (hfst::pmatch::verbose) {
-                std::cerr << "including " <<
-                    hfst::pmatch::definitions[$1]->get_name() << " with ";
-                hfst::pmatch::print_size_info(hfst::pmatch::definitions[$1]);
-                hfst::pmatch::used_definitions.insert($1);
-            }
-            $$ = new HfstTransducer(*hfst::pmatch::definitions[$1]);
-        }
-    } else {
-        if (strlen($1) == 0) {
-            $$ = new HfstTransducer(hfst::pmatch::format);
-        } else {
-            if (hfst::pmatch::verbose) {
-                std::cerr << "Warning: interpreting undefined symbol \"" << $1
-                          << "\" as label on line " << pmatchlineno << "\n";
-            }
-            $$ = new HfstTransducer($1, hfst::pmatch::format);
-//            std::string errstring = "Unknown symbol: " + std::string($1);
-//            pmatcherror(errstring.c_str());
+} | READ_RE {
+    std::string regex;
+    std::string tmp;
+    std::ifstream regexfile($1);
+    if (regexfile.is_open()) {
+        while (getline(regexfile, tmp)) {
+            regex.append(tmp);
         }
     }
-    free($1);
- }
-| PAIR_SEPARATOR_SOLE {
-    $$ = new HfstTransducer(hfst::internal_unknown, hfst::internal_unknown,
-                            hfst::pmatch::format);
-  }
-| LABEL {
-    $$ = new HfstTransducer($1, $1,
-                            hfst::pmatch::format);
-    free($1);
-  }
-| ANY_TOKEN {
-    $$ = new HfstTransducer(hfst::internal_identity,
-                            hfst::pmatch::format);
-  }
-| CURLY_LITERAL {
-    HfstTokenizer tok;
-    $$ = new HfstTransducer($1, tok, hfst::pmatch::format);
-    free($1);
- }
-| CURLY_LITERAL PAIR_SEPARATOR CURLY_LITERAL {
-    HfstTokenizer tok;
-    HfstTransducer * left = new HfstTransducer($1, tok, hfst::pmatch::format);
-    HfstTransducer * right = new HfstTransducer($3, tok, hfst::pmatch::format);
-    HfstTransducer * destroy = new HfstTransducer(
-        hfst::internal_unknown, hfst::internal_epsilon, hfst::pmatch::format);
-    HfstTransducer * construct = new HfstTransducer(
-        hfst::internal_epsilon, hfst::internal_unknown, hfst::pmatch::format);
-    left->compose(destroy->repeat_star());
-    left->compose(construct->repeat_star());
-    left->compose(*right);
-    $$ = left;
-    delete destroy; delete construct; delete right;
-    free($1); free($3);
-}
-| LABEL PAIR_SEPARATOR CURLY_LITERAL {
-    HfstTokenizer tok;
-    HfstTransducer * left = new HfstTransducer(
-        $1, hfst::internal_epsilon, hfst::pmatch::format);
-    HfstTransducer * right = new HfstTransducer($3, tok, hfst::pmatch::format);
-    HfstTransducer * construct = new HfstTransducer(
-        hfst::internal_epsilon, hfst::internal_unknown, hfst::pmatch::format);
-    left->compose(construct->repeat_star());
-    left->compose(*right);
-    $$ = left;
-    delete construct; delete right;
-    free($1); free($3);
-}
-| CURLY_LITERAL PAIR_SEPARATOR LABEL {
-    HfstTokenizer tok;
-    HfstTransducer * left = new HfstTransducer($1, tok, hfst::pmatch::format);
-    HfstTransducer * right = new HfstTransducer(
-        hfst::internal_epsilon, $3, hfst::pmatch::format);
-    HfstTransducer * destroy = new HfstTransducer(
-        hfst::internal_unknown, hfst::internal_epsilon, hfst::pmatch::format);
-    left->compose(destroy->repeat_star());
-    left->compose(*right);
-    $$ = left;
-    delete destroy; delete right;
-    free($1); free($3);
-}
-| FUNCALL { }
-| MAP { }
-| CONTEXT_CONDITION { }
-| ENDTAG_LEFT SYMBOL RIGHT_PARENTHESIS {
-    $$ = hfst::pmatch::make_end_tag($2);
-    hfst::pmatch::need_delimiters = true;
- }
-| ENDTAG_LEFT QUOTED_LITERAL RIGHT_PARENTHESIS {
-    $$ = hfst::pmatch::make_end_tag($2);
-    hfst::pmatch::need_delimiters = true;
- }
-| CHARACTER_RANGE { $$ = $1; }
-| LST_LEFT REGEXP2 RIGHT_PARENTHESIS
-{
-    if (!hfst::pmatch::flatten) {
-        $$ = hfst::pmatch::make_list($2);
-        free($2);
-    } else {
-        $$ = $2;
+    if (regex.size() == 0) {
+        std::stringstream err;
+        err << "Failed to read regex from " << $1 << ".\n";
+        pmatcherror(err.str().c_str());
     }
-}
-| SIGMA_LEFT REGEXP2 RIGHT_PARENTHESIS
-{
-    $$ = hfst::pmatch::make_sigma($2);
-    free($2);
-}
-| COUNTER_LEFT SYMBOL RIGHT_PARENTHESIS
-{
-    $$ = hfst::pmatch::make_counter($2);
-    free($2);
-}
-;
-
-LABEL: QUOTED_LITERAL { }
-| EPSILON_TOKEN { $$ = strdup(hfst::internal_epsilon.c_str()); }
-| BOUNDARY_MARKER { $$ = strdup("@BOUNDARY@"); }
-| LIT_LEFT SYMBOL RIGHT_PARENTHESIS { $$ = $2; }
-;
+    hfst::xre::XreCompiler xre_compiler;
+    $$ = new PmatchTransducerContainer(xre_compiler.compile(regex));
+    };
 
 CONTEXT_CONDITION:
-P_CONTEXT { $$ = $1; hfst::pmatch::need_delimiters = true; }
-| OR_CONTEXT { }
-| AND_CONTEXT { };
+PMATCH_CONTEXT { } |
+PMATCH_OR_CONTEXT { } |
+PMATCH_AND_CONTEXT { };
 
-P_CONTEXT:
-RIGHT_CONTEXT { }
-| NEGATIVE_RIGHT_CONTEXT { }
-| LEFT_CONTEXT { }
-| NEGATIVE_LEFT_CONTEXT { };
+PMATCH_CONTEXT:
+PMATCH_RIGHT_CONTEXT { } |
+PMATCH_NEGATIVE_RIGHT_CONTEXT { } |
+PMATCH_LEFT_CONTEXT { } |
+PMATCH_NEGATIVE_LEFT_CONTEXT { };
 
-OR_CONTEXT: OR_LEFT CONTEXT_CONDITIONS RIGHT_PARENTHESIS
+PMATCH_OR_CONTEXT: OR_LEFT PMATCH_CONTEXTS RIGHT_PARENTHESIS
 {
-    $$ = new HfstTransducer(hfst::pmatch::format);
-    for(hfst::HfstTransducerVector::reverse_iterator it = $2->rbegin();
-        it != $2->rend(); ++it) {
-        $$->disjunct(*it);
+    $$ = NULL;
+    for (std::vector<PmatchObject *>::reverse_iterator it = $2->rbegin();
+         it != $2->rend(); ++it) {
+        if ($$ == NULL) {
+            $$ = *it;
+        } else {
+            PmatchObject * tmp = $$;
+            $$ = new PmatchBinaryOperation(Disjunct, tmp, *it);
+        }
     }
     delete $2;
     // Zero the counter for making minimization
@@ -1552,294 +600,91 @@ OR_CONTEXT: OR_LEFT CONTEXT_CONDITIONS RIGHT_PARENTHESIS
     hfst::pmatch::zero_minimization_guard();
 };
 
-AND_CONTEXT: AND_LEFT CONTEXT_CONDITIONS RIGHT_PARENTHESIS
+PMATCH_AND_CONTEXT: AND_LEFT PMATCH_CONTEXTS RIGHT_PARENTHESIS
 {
-    $$ = new HfstTransducer(hfst::internal_epsilon, hfst::internal_epsilon, hfst::pmatch::format);
-    for(hfst::HfstTransducerVector::reverse_iterator it = $2->rbegin();
-        it != $2->rend(); ++it) {
-        $$->concatenate(*it);
+    $$ = NULL;
+    for (std::vector<PmatchObject *>::reverse_iterator it = $2->rbegin();
+         it != $2->rend(); ++it) {
+        if ($$ = NULL) {
+            $$ = *it;
+        } else {
+            PmatchObject * tmp = $$;
+            $$ = new PmatchBinaryOperation(Concatenate, tmp, *it);
+        }
     }
     delete $2;
 };
 
-CONTEXT_CONDITIONS:
-CONTEXT_CONDITION {
-    $$ = new hfst::HfstTransducerVector(1, *$1);
-    delete $1;
-}
-| CONTEXT_CONDITION COMMA CONTEXT_CONDITIONS {
-    $3->push_back(*$1);
-    delete $1;
+PMATCH_CONTEXTS:
+PMATCH_CONTEXT {
+    $$ = new std::vector<PmatchObject *>(1, $1);
+} |
+PMATCH_CONTEXT COMMA PMATCH_CONTEXTS {
+    $3->push_back($1);
     $$ = $3;
 };
 
-FUNCALL: SYMBOL_WITH_LEFT_PAREN FUNCALL_ARGLIST RIGHT_PARENTHESIS {
-    if (hfst::pmatch::functions.count($1) == 0) {
-        std::string errstring = "Function not defined: " + std::string($1);
-        pmatcherror(errstring.c_str());
-    }
-    std::vector<string> & callee_args = hfst::pmatch::functions[$1].args;
-    if (callee_args.size() != $2->size()) {
-        std::string errstring = "Function " + std::string($1) +
-            " expected NN arguments, received NN";// + $2->size());
-        pmatcherror(errstring.c_str());
-    }
-    std::map<std::string, HfstTransducer*> caller_args;
-    for (int i = 0; i < $2->size(); ++i) {
-        caller_args[callee_args[i]] = new HfstTransducer($2->at(i));
-    }
-    $$ = hfst::pmatch::functions[$1].evaluate(caller_args);
-    delete $2;
+PMATCH_RIGHT_CONTEXT: RC_LEFT EXPRESSION2 RIGHT_PARENTHESIS {
+    $$ = new PmatchBinaryOperation(Concatenate, make_rc_entry(),
+                                   new PmatchBinaryOperation(
+                                       Concatenate, $2, make_rc_exit()));
 };
 
-FUNCALL_ARGLIST:
-FUNCALL_ARG {
-    $$ = new HfstTransducerVector();
-    $$->push_back(HfstTransducer(*$1));
-    delete $1;
-}
-| FUNCALL_ARG COMMA FUNCALL_ARGLIST {
-    $3->push_back(HfstTransducer(*$1));
-    delete $1;
-}
-| { $$ = new HfstTransducerVector(); }
-;
-
-FUNCALL_ARG:
-SYMBOL {
-    if (hfst::pmatch::definitions.count($1) == 1) {
-        $$ = new HfstTransducer(* hfst::pmatch::definitions[$1]);
-    } else if (hfst::pmatch::def_insed_transducers.count($1) == 0) {
-        $$ = new HfstTransducer(* hfst::pmatch::def_insed_transducers[$1]);
-    } else {
-        std::string errstring = "Unknown definition: " + std::string($1);
-        free($1);
-        pmatcherror(errstring.c_str());
-    }
-    free($1);
-}
-| CURLY_LITERAL {
-    HfstTokenizer tok;
-    $$ = new HfstTransducer($1, tok, hfst::pmatch::format);
-    free($1);
-  }
-| QUOTED_LITERAL {
-    $$ = new HfstTransducer($1, hfst::pmatch::format);
-    free($1);
-  }
-| LEFT_BRACKET REGEXP2 RIGHT_BRACKET {
-    $$ = $2;
-}
-;
-
-MAP: MAP_LEFT SYMBOL COMMA READ_TEXT RIGHT_PARENTHESIS {
-    if (hfst::pmatch::functions.count($2) == 0) {
-        std::string errstring = "Function not defined: " + std::string($2);
-        pmatcherror(errstring.c_str());
-    }
-    std::vector<string> & callee_args = hfst::pmatch::functions[$2].args;
-    std::vector<std::vector<std::string> > caller_strings =
-        hfst::pmatch::read_args($4, callee_args.size());
-    std::map<std::string, HfstTransducer*> caller_args;
-    HfstTokenizer tok;
-    $$ = new HfstTransducer(hfst::pmatch::format);
-    for (std::vector<std::vector<std::string> >::iterator it =
-             caller_strings.begin(); it != caller_strings.end(); ++it) {
-        for (int i = 0; i < it->size(); ++i) {
-            caller_args[callee_args[i]] = new HfstTransducer(it->at(i), tok, hfst::pmatch::format);
-        }
-        $$->disjunct(*hfst::pmatch::functions[$2].evaluate(caller_args));
-        // Clean up the string transducers we allocated each time 
-        for (std::map<std::string, HfstTransducer *>::iterator it = caller_args.begin();
-             it != caller_args.end(); ++it) {
-            delete it->second;
-        }
-        caller_args.clear();
-    }
-    $$->minimize();
+PMATCH_NEGATIVE_RIGHT_CONTEXT: NRC_LEFT EXPRESSION2 RIGHT_PARENTHESIS {
+    $$ = new PmatchBinaryOperation(
+        Concatenate, make_minimization_guard(),
+        new PmatchBinaryOperation(
+            Disjunct, make_passthrough(),
+            new PmatchBinaryOperation(
+                Concatenate, make_nrc_entry(),
+                new PmatchBinaryOperation(Concatenate, $2, make_nrc_exit()))));
 };
 
-INSERT: INS_LEFT SYMBOL RIGHT_PARENTHESIS {
-    if (!hfst::pmatch::flatten) {
-        if(hfst::pmatch::definitions.count($2) == 0) {
-            hfst::pmatch::unsatisfied_insertions.insert($2);
-        }
-        char * Ins_trans = hfst::pmatch::get_Ins_transition($2);
-        $$ = new HfstTransducer(
-            Ins_trans, Ins_trans, hfst::pmatch::format);
-        $$->set_name(Ins_trans);
-        free(Ins_trans);
-        hfst::pmatch::inserted_transducers.insert($2);
-        if (hfst::pmatch::verbose) {
-            std::cerr << "inserting " << $2;
-            if (hfst::pmatch::definitions.count($2) != 0) {
-                std::cerr << " with ";
-                hfst::pmatch::print_size_info(hfst::pmatch::definitions[$2]);
-            } else {
-                std::cerr << std::endl;
-            }
-            hfst::pmatch::used_definitions.insert($2);
-        }
-    } else if(hfst::pmatch::definitions.count($2) == 1) {
-        if (hfst::pmatch::verbose) {
-            std::cerr << "including " <<
-                hfst::pmatch::definitions[$2]->get_name() << " with ";
-            hfst::pmatch::print_size_info(hfst::pmatch::definitions[$2]);
-            hfst::pmatch::used_definitions.insert($2);
-        }
-        $$ = new HfstTransducer(* hfst::pmatch::definitions[$2]);
-    } else {
-        // error?
-        if (strlen($2) == 0) {
-            $$ = new HfstTransducer(hfst::pmatch::format);
-        } else {
-            $$ = new HfstTransducer($2, $2, hfst::pmatch::format);
-        }
-    }
-    free($2);
-
-}
-;
-
-ANONYMOUS_DEFINITION: DEFINE_LEFT REPLACE RIGHT_PARENTHESIS
-{
-    $$ = hfst::pmatch::add_pmatch_delimiters($2);
+PMATCH_LEFT_CONTEXT: LC_LEFT EXPRESSION2 RIGHT_PARENTHESIS {
+    $$ = new PmatchBinaryOperation(
+        Concatenate, make_lc_entry(),
+        new PmatchBinaryOperation(
+            Concatenate, new PmatchUnaryOperation(
+                Reverse, $2), make_lc_exit()));
 };
 
-RIGHT_CONTEXT: RC_LEFT REPLACE RIGHT_PARENTHESIS {
-    HfstTransducer * rc_entry = new HfstTransducer(
-        hfst::internal_epsilon, hfst::pmatch::RC_ENTRY_SYMBOL, hfst::pmatch::format);
-    HfstTransducer * rc_exit = new HfstTransducer(
-        hfst::internal_epsilon, hfst::pmatch::RC_EXIT_SYMBOL, hfst::pmatch::format);
-    rc_entry->concatenate(*$2);
-    rc_entry->concatenate(*rc_exit);
-    $$ = rc_entry;
-    delete $2;
-    delete rc_exit;
- }
-;
-
-NEGATIVE_RIGHT_CONTEXT: NRC_LEFT REPLACE RIGHT_PARENTHESIS {
-    $$ = hfst::pmatch::get_minimization_guard();
-    HfstTransducer * nrc_entry = new HfstTransducer(
-        hfst::internal_epsilon, hfst::pmatch::NRC_ENTRY_SYMBOL, hfst::pmatch::format);
-    HfstTransducer * nrc_exit = new HfstTransducer(
-        hfst::internal_epsilon, hfst::pmatch::NRC_EXIT_SYMBOL, hfst::pmatch::format);
-    nrc_entry->concatenate(*$2);
-    nrc_entry->concatenate(*nrc_exit);
-    nrc_entry->disjunct(HfstTransducer("@PMATCH_PASSTHROUGH@",
-                                       hfst::internal_epsilon, hfst::pmatch::format));
-    $$->concatenate(*nrc_entry);
-    delete $2; delete nrc_entry; delete nrc_exit;
- }
-;
-
-LEFT_CONTEXT: LC_LEFT REPLACE RIGHT_PARENTHESIS {
-    HfstTransducer * lc_entry = new HfstTransducer(
-        hfst::internal_epsilon, hfst::pmatch::LC_ENTRY_SYMBOL, hfst::pmatch::format);
-    HfstTransducer * lc_exit = new HfstTransducer(
-        hfst::internal_epsilon, hfst::pmatch::LC_EXIT_SYMBOL, hfst::pmatch::format);
-    lc_entry->concatenate($2->reverse());
-    lc_entry->concatenate(*lc_exit);
-    $$ = lc_entry;
-    delete $2; delete lc_exit;
- }
-;
-
-NEGATIVE_LEFT_CONTEXT: NLC_LEFT REPLACE RIGHT_PARENTHESIS {
-    $$ = hfst::pmatch::get_minimization_guard();
-    HfstTransducer * nlc_entry = new HfstTransducer(
-        hfst::internal_epsilon, hfst::pmatch::NLC_ENTRY_SYMBOL, hfst::pmatch::format);
-    HfstTransducer * nlc_exit = new HfstTransducer(
-        hfst::internal_epsilon, hfst::pmatch::NLC_EXIT_SYMBOL, hfst::pmatch::format);
-    nlc_entry->concatenate($2->reverse());
-    nlc_entry->concatenate(*nlc_exit);
-    nlc_entry->disjunct(HfstTransducer("@PMATCH_PASSTHROUGH@",
-                                       hfst::internal_epsilon, hfst::pmatch::format));
-    $$->concatenate(*nlc_entry);
-    delete $2; delete nlc_entry; delete nlc_exit;
- }
-;
-
-FUN_RIGHT_CONTEXT: RC_LEFT FUNCBODY2 RIGHT_PARENTHESIS {
-    PmatchAstNode * rc_entry =
-        new PmatchAstNode(
-            new HfstTransducer(hfst::internal_epsilon,
-                               hfst::pmatch::RC_ENTRY_SYMBOL,
-                               hfst::pmatch::format),
-            $2, hfst::pmatch::AstConcatenate);
-    $$ = new PmatchAstNode(rc_entry,
-                           new HfstTransducer(
-                               hfst::internal_epsilon,
-                               hfst::pmatch::RC_EXIT_SYMBOL,
-                               hfst::pmatch::format),
-                           hfst::pmatch::AstConcatenate);
- }
-;
-
-FUN_NEGATIVE_RIGHT_CONTEXT: NRC_LEFT FUNCBODY2 RIGHT_PARENTHESIS {
-    HfstTransducer * guard = hfst::pmatch::get_minimization_guard();
-    PmatchAstNode * nrc_entry =
-        new PmatchAstNode(
-            new HfstTransducer(hfst::internal_epsilon,
-                               hfst::pmatch::NRC_ENTRY_SYMBOL,
-                               hfst::pmatch::format),
-            $2, hfst::pmatch::AstConcatenate);
-    PmatchAstNode * nrc_main_branch =
-        new PmatchAstNode(nrc_entry,
-                                        new HfstTransducer(
-                                            hfst::internal_epsilon,
-                                            hfst::pmatch::NRC_EXIT_SYMBOL,
-                                            hfst::pmatch::format),
-                                        hfst::pmatch::AstConcatenate);
-    PmatchAstNode * context = new PmatchAstNode(
-        nrc_main_branch,
-        new HfstTransducer("@PMATCH_PASSTHROUGH@",
-                           hfst::internal_epsilon, hfst::pmatch::format),
-        hfst::pmatch::AstDisjunct);
-    $$ = new PmatchAstNode(guard, context, hfst::pmatch::AstConcatenate);
- }
-;
-
-FUN_LEFT_CONTEXT: LC_LEFT FUNCBODY2 RIGHT_PARENTHESIS {
-    PmatchAstNode * reverse = new PmatchAstNode(
-        $2, hfst::pmatch::AstReverse);
-    
-    HfstTransducer * lc_entry = new HfstTransducer(
-        hfst::internal_epsilon, hfst::pmatch::LC_ENTRY_SYMBOL, hfst::pmatch::format);
-    HfstTransducer * lc_exit = new HfstTransducer(
-        hfst::internal_epsilon, hfst::pmatch::LC_EXIT_SYMBOL, hfst::pmatch::format);
+PMATCH_NEGATIVE_LEFT_CONTEXT: NLC_LEFT EXPRESSION2 RIGHT_PARENTHESIS {
+    $$ = new PmatchBinaryOperation(
+        Concatenate, make_minimization_guard(),
+        new PmatchBinaryOperation(
+            Disjunct, make_passthrough(),
+            new PmatchBinaryOperation(
+                Concatenate, make_nlc_entry(),
+                new PmatchBinaryOperation(Concatenate, new PmatchUnaryOperation(
+                                              Reverse, $2), make_nlc_exit()))));
+};
 
-    PmatchAstNode * entry = new PmatchAstNode(
-        lc_entry, reverse, hfst::pmatch::AstConcatenate);
-    $$ = new PmatchAstNode(
-        entry, lc_exit, hfst::pmatch::AstConcatenate);
- }
-;
 
-FUN_NEGATIVE_LEFT_CONTEXT: NLC_LEFT FUNCBODY2 RIGHT_PARENTHESIS {
-    HfstTransducer * guard = hfst::pmatch::get_minimization_guard();
-    PmatchAstNode * reverse = new PmatchAstNode(
-        $2, hfst::pmatch::AstReverse);
-    
-    HfstTransducer * nlc_entry = new HfstTransducer(
-        hfst::internal_epsilon, hfst::pmatch::NLC_ENTRY_SYMBOL, hfst::pmatch::format);
-    HfstTransducer * nlc_exit = new HfstTransducer(
-        hfst::internal_epsilon, hfst::pmatch::NLC_EXIT_SYMBOL, hfst::pmatch::format);
-    
-    PmatchAstNode * entry = new PmatchAstNode(
-        nlc_entry, reverse, hfst::pmatch::AstConcatenate);
-    PmatchAstNode * main_branch = new PmatchAstNode(
-        entry, nlc_exit, hfst::pmatch::AstConcatenate);
-    
-    PmatchAstNode * context =
-        new PmatchAstNode(main_branch,
-                          new HfstTransducer("@PMATCH_PASSTHROUGH@",
-                                             hfst::internal_epsilon, hfst::pmatch::format),
-                          hfst::pmatch::AstDisjunct);
-    $$ = new PmatchAstNode(guard, context, hfst::pmatch::AstConcatenate);
-}
-;
+// MAP: MAP_LEFT SYMBOL COMMA READ_TEXT RIGHT_PARENTHESIS {
+//     if (hfst::pmatch::functions.count($2) == 0) {
+//         std::string errstring = "Function not defined: " + std::string($2);
+//         pmatcherror(errstring.c_str());
+//     }
+//     std::vector<string> & callee_args = hfst::pmatch::functions[$2].args;
+//     std::vector<std::vector<std::string> > caller_strings =
+//         hfst::pmatch::read_args($4, callee_args.size());
+//     std::map<std::string, HfstTransducer*> caller_args;
+//     HfstTokenizer tok;
+//     $$ = new HfstTransducer(hfst::pmatch::format);
+//     for (std::vector<std::vector<std::string> >::iterator it =
+//              caller_strings.begin(); it != caller_strings.end(); ++it) {
+//         for (int i = 0; i < it->size(); ++i) {
+//             caller_args[callee_args[i]] = new HfstTransducer(it->at(i), tok, hfst::pmatch::format);
+//         }
+//         $$->disjunct(*hfst::pmatch::functions[$2].evaluate(caller_args));
+//         // Clean up the string transducers we allocated each time 
+//         for (std::map<std::string, HfstTransducer *>::iterator it = caller_args.begin();
+//              it != caller_args.end(); ++it) {
+//             delete it->second;
+//         }
+//         caller_args.clear();
+//     }
+//     $$->minimize();
+// };
 
 %%
-
diff --git a/libhfst/src/parsers/pmatch_utils.cc b/libhfst/src/parsers/pmatch_utils.cc
index e5615c8..084fece 100644
--- a/libhfst/src/parsers/pmatch_utils.cc
+++ b/libhfst/src/parsers/pmatch_utils.cc
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 /**
  * @file pmatch.cc
  *
@@ -25,7 +34,6 @@ extern int pmatchnerrs;
 int
 pmatcherror(const char *msg)
 {
-#ifndef NDEBUG
     fprintf(stderr, "*** pmatch parsing failed: %s\n", msg);
     if (strlen(hfst::pmatch::data) < 60)
     {
@@ -40,9 +48,7 @@ pmatcherror(const char *msg)
         fprintf(stderr, "***    parsing %s [line %d, near %s]...\n", 
                 buf, pmatchlineno, pmatchtext);
     }
-#endif
     exit(0);
-
 }
 
 void pmatchwarning(const char *msg)
@@ -58,19 +64,20 @@ namespace pmatch
 {
 
 char* data;
-std::map<std::string, hfst::HfstTransducer*> definitions;
-std::map<std::string, hfst::HfstTransducer*> def_insed_transducers;
-std::set<std::string> inserted_transducers;
+std::map<std::string, hfst::pmatch::PmatchObject*> definitions;
+std::vector<std::map<std::string, PmatchObject*> > call_stack;
+std::map<std::string, PmatchObject*> def_insed_expressions;
+std::set<std::string> inserted_names;
 std::set<std::string> unsatisfied_insertions;
 std::set<std::string> used_definitions;
-std::map<std::string, PmatchFunction> functions;
-std::vector<std::string> tmp_collected_funargs;
+std::set<std::string> function_names;
 char* startptr;
 hfst::ImplementationType format;
 size_t len;
 bool verbose;
 bool flatten;
 clock_t timer;
+clock_t tmp_timer;
 int minimization_guard_count;
 bool need_delimiters;
 
@@ -97,7 +104,7 @@ void zero_minimization_guard(void)
     minimization_guard_count = 0;
 }
 
-HfstTransducer * get_minimization_guard(void)
+PmatchTransducerContainer * make_minimization_guard(void)
 {
     std::stringstream guard;
     if(minimization_guard_count == 0) {
@@ -106,7 +113,43 @@ HfstTransducer * get_minimization_guard(void)
         guard << "@PMATCH_GUARD_" << minimization_guard_count << "@";
     }
     ++minimization_guard_count;
-    return new HfstTransducer(hfst::internal_epsilon, guard.str(), format);
+    return epsilon_to_symbol_container(guard.str());
+}
+
+bool symbol_in_global_context(std::string & sym)
+{
+    return definitions.count(sym) != 0;
+}
+
+bool symbol_in_local_context(std::string & sym)
+{
+    if (call_stack.size() == 0) {
+        return false;
+    }
+    return call_stack.back().count(sym) != 0;
+}
+
+bool should_use_cache(void)
+{
+    return call_stack.size() == 0;
+}
+
+PmatchObject * symbol_from_global_context(std::string & sym)
+{
+    if (symbol_in_global_context(sym)) {
+        return definitions[sym];
+    } else {
+        return (PmatchObject *) NULL;
+    }
+}
+
+PmatchObject * symbol_from_local_context(std::string & sym)
+{
+    if (symbol_in_local_context(sym)) {
+        return call_stack.back()[sym];
+    } else {
+        return (PmatchObject *) NULL;
+    }
 }
 
 int*
@@ -214,34 +257,25 @@ strip_newline(char *s)
   return s;
 }
 
-char *
-get_Ins_transition(const char *s)
+std::string get_Ins_transition(const char *s)
 {
-    char* rv = static_cast<char*>(malloc(sizeof(char)*(strlen(s) + 4 + 1)));
-    rv = strcpy(rv, "@I.");
-    rv = strcat(rv, s);
-    rv = strcat(rv, "@");
-    return rv;
+    std::stringstream tmp;
+    tmp << "@I." << s << "@";
+    return tmp.str();
 }
 
-char *
-get_RC_transition(const char *s)
+std::string get_RC_transition(const char *s)
 {
-    char* rv = static_cast<char*>(malloc(sizeof(char)*(strlen(s) + 5 + 1)));
-    rv = strcpy(rv, "@RC.");
-    rv = strcat(rv, s);
-    rv = strcat(rv, "@");
-    return rv;
+    std::stringstream tmp;
+    tmp << "@RC." << s << "@";
+    return tmp.str();
 }
 
-char *
-get_LC_transition(const char *s)
+std::string get_LC_transition(const char *s)
 {
-    char* rv = static_cast<char*>(malloc(sizeof(char)*(strlen(s) + 5 + 1)));
-    rv = strcpy(rv, "@LC.");
-    rv = strcat(rv, s);
-    rv = strcat(rv, "@");
-    return rv;
+    std::stringstream tmp;
+    tmp << "@LC." << s << "@";
+    return tmp.str();
 }
 
 HfstTransducer * add_pmatch_delimiters(HfstTransducer * regex)
@@ -257,34 +291,32 @@ HfstTransducer * add_pmatch_delimiters(HfstTransducer * regex)
     return delimited_regex;
 }
 
-void add_end_tag(HfstTransducer * regex, std::string tag)
-{
-    HfstTransducer * end_tag = make_end_tag(tag);
-    regex->concatenate(*end_tag);
-    delete end_tag;
-}
+PmatchTransducerContainer * make_end_tag(std::string tag)
+{ return epsilon_to_symbol_container("@PMATCH_ENDTAG_" + tag + "@"); }
 
-HfstTransducer * make_end_tag(std::string tag)
-{
-    HfstTransducer * end_tag = new HfstTransducer(
-        hfst::internal_epsilon,
-        "@PMATCH_ENDTAG_" + tag + "@",
-        format);
-    return end_tag;
-}
+PmatchTransducerContainer * make_counter(std::string name)
+{ return epsilon_to_symbol_container("@PMATCH_COUNTER_" + name + "@"); }
 
-HfstTransducer * make_counter(std::string name)
+HfstTransducer * make_list(HfstTransducer * t, ImplementationType f)
 {
-    HfstTransducer * counter = new HfstTransducer(
-        hfst::internal_epsilon,
-        "@PMATCH_COUNTER_" + name + "@",
-        format);
-    return counter;
+    std::string arc = "@L.";
+    hfst::StringSet alphabet = t->get_alphabet();
+    for (hfst::StringSet::const_iterator it = alphabet.begin();
+         it != alphabet.end(); ++it) {
+        if (!hfst_ol::PmatchAlphabet::is_special(*it) &&
+            *it != hfst::internal_epsilon && *it != hfst::internal_unknown &&
+            *it != hfst::internal_identity && *it != hfst::internal_default) {
+            arc.append(*it);
+            arc.append("_");
+        }
+    }
+    arc.append("@");
+    return new HfstTransducer(arc, f);
 }
 
-HfstTransducer * make_list(HfstTransducer * t)
+HfstTransducer * make_exc_list(HfstTransducer * t, ImplementationType f)
 {
-    std::string arc = "@PMATCH_LIST_";
+    std::string arc = "@X.";
     hfst::StringSet alphabet = t->get_alphabet();
     for (hfst::StringSet::const_iterator it = alphabet.begin();
          it != alphabet.end(); ++it) {
@@ -296,7 +328,7 @@ HfstTransducer * make_list(HfstTransducer * t)
         }
     }
     arc.append("@");
-    return new HfstTransducer(arc, format);
+    return new HfstTransducer(arc, f);
 }
 
 HfstTransducer * make_sigma(HfstTransducer * t)
@@ -315,6 +347,31 @@ HfstTransducer * make_sigma(HfstTransducer * t)
     return retval;
 }
 
+PmatchTransducerContainer * epsilon_to_symbol_container(std::string s)
+{
+    HfstTransducer * tmp = new HfstTransducer(hfst::internal_epsilon, s, format);
+    return new PmatchTransducerContainer(tmp);
+}
+
+PmatchTransducerContainer * make_rc_entry(void)
+{ return epsilon_to_symbol_container(RC_ENTRY_SYMBOL); }
+PmatchTransducerContainer * make_lc_entry(void)
+{ return epsilon_to_symbol_container(LC_ENTRY_SYMBOL); }
+PmatchTransducerContainer * make_nrc_entry(void)
+{ return epsilon_to_symbol_container(NRC_ENTRY_SYMBOL); }
+PmatchTransducerContainer * make_nlc_entry(void)
+{ return epsilon_to_symbol_container(NLC_ENTRY_SYMBOL); }
+PmatchTransducerContainer * make_rc_exit(void)
+{ return epsilon_to_symbol_container(RC_EXIT_SYMBOL); }
+PmatchTransducerContainer * make_lc_exit(void)
+{ return epsilon_to_symbol_container(LC_EXIT_SYMBOL); }
+PmatchTransducerContainer * make_nrc_exit(void)
+{ return epsilon_to_symbol_container(NRC_EXIT_SYMBOL); }
+PmatchTransducerContainer * make_nlc_exit(void)
+{ return epsilon_to_symbol_container(NLC_EXIT_SYMBOL); }
+PmatchTransducerContainer * make_passthrough(void)
+{ return epsilon_to_symbol_container(PASSTHROUGH_SYMBOL); }
+
 char * get_delimited(const char *s, char delim_left, char delim_right)
 {
     const char *qstart = strchr((char*) s, delim_left) + 1;
@@ -565,7 +622,7 @@ std::string codepoint_to_utf8(unsigned int codepoint)
     }
 }
 
-HfstTransducer * parse_range(const char * s)
+PmatchTransducerContainer * parse_range(const char * s)
 {
     char * quoted = get_delimited(s, '"');
     char * orig_quoted = quoted;
@@ -630,7 +687,7 @@ HfstTransducer * parse_range(const char * s)
         }
     }
     free(orig_quoted);
-    return retval;
+    return new PmatchTransducerContainer(retval);
 }
 
 double
@@ -653,12 +710,11 @@ get_weight(const char *s)
 void init_globals(void)
 {
     definitions.clear();
-    def_insed_transducers.clear();
-    inserted_transducers.clear();
+    def_insed_expressions.clear();
+    inserted_names.clear();
     unsatisfied_insertions.clear();
     used_definitions.clear();
-    functions.clear();
-    tmp_collected_funargs.clear();
+    function_names.clear();
     zero_minimization_guard();
     need_delimiters = false;
 }
@@ -674,7 +730,10 @@ compile(const string& pmatch, map<string,HfstTransducer*>& defs,
     len = strlen(data);
     verbose = be_verbose;
     flatten = do_flatten;
-//    definitions = defs;
+    for (map<string, HfstTransducer*>::iterator it = defs.begin();
+         it != defs.end(); ++it) {
+        definitions[it->first] = new PmatchTransducerContainer(it->second);
+    }
     format = impl;
     if (hfst::pmatch::verbose) {
         timer = clock();
@@ -685,25 +744,25 @@ compile(const string& pmatch, map<string,HfstTransducer*>& defs,
     data = 0;
     len = 0;
     std::map<std::string, hfst::HfstTransducer*> retval;
-    for (std::set<std::string>::const_iterator it =
-             unsatisfied_insertions.begin();
-         it != unsatisfied_insertions.end(); ++it) {
-        if (definitions.count(*it) == 0) {
-            std::cerr << "Inserted transducer "
-                      << *it << " was never defined!\n";
-            return retval;
-        }
-    }
-    if (hfst::pmatch::verbose) {
-        std::map<std::string, hfst::HfstTransducer *>::iterator defs_itr;
-        for (defs_itr = definitions.begin(); defs_itr != definitions.end();
-             ++defs_itr) {
-            if (used_definitions.count(defs_itr->first) == 0 &&
-                defs_itr->first.compare("TOP") != 0) {
-                std::cerr << "Warning: " << defs_itr->first << " defined but never used\n";
-            }
-        }
-    }
+     for (std::set<std::string>::const_iterator it =
+              unsatisfied_insertions.begin();
+          it != unsatisfied_insertions.end(); ++it) {
+         if (definitions.count(*it) == 0) {
+             std::cerr << "Inserted transducer "
+                       << *it << " was never defined!\n";
+             return retval;
+         }
+     }
+     if (hfst::pmatch::verbose) {
+         std::map<std::string, PmatchObject*>::iterator defs_itr;
+         for (defs_itr = definitions.begin(); defs_itr != definitions.end();
+              ++defs_itr) {
+             if (used_definitions.count(defs_itr->first) == 0 &&
+                 defs_itr->first.compare("TOP") != 0) {
+                 std::cerr << "Warning: " << defs_itr->first << " defined but never used\n";
+             }
+         }
+     }
 
     if (pmatchnerrs != 0) {
         return retval;
@@ -711,44 +770,51 @@ compile(const string& pmatch, map<string,HfstTransducer*>& defs,
     // Our helper for harmonizing all the networks' alphabets with
     // each other
     if (hfst::pmatch::verbose) {
-        std::cerr << "\nHarmonizing... ";
+        std::cerr << "\nCompiling and harmonizing...\n";
+        timer = clock();
     }
 
-    if (inserted_transducers.size() > 0) {
-
+    if (inserted_names.size() > 0) {
         HfstTransducer dummy(format);
         // We keep TOP and any inserted transducers
-        std::map<std::string, hfst::HfstTransducer *>::iterator defs_itr;
-        for (defs_itr = definitions.begin(); defs_itr != definitions.end();
-             ++defs_itr) {
-            if (defs_itr->first.compare("TOP") == 0 ||
-                inserted_transducers.count(defs_itr->first) != 0) {
-                dummy.harmonize(*defs_itr->second);
+        std::map<std::string, PmatchObject *>::iterator defs_it;
+        for (defs_it = definitions.begin(); defs_it != definitions.end();
+             ++defs_it) {
+            if (defs_it->first.compare("TOP") == 0 ||
+                inserted_names.count(defs_it->first) != 0) {
+                HfstTransducer * tmp = defs_it->second->evaluate();
+                dummy.harmonize(*tmp);
+                retval[defs_it->first] = tmp;
             }
         }
         
         // Now that dummy is harmonized with everything, we harmonize everything
-        // with dummy and insert them into the result
-        for(defs_itr = definitions.begin(); defs_itr != definitions.end();
-            ++defs_itr) {
-            if (defs_itr->first.compare("TOP") == 0 ||
-                inserted_transducers.count(defs_itr->first) != 0) {
-                dummy.harmonize(*defs_itr->second);
-                retval.insert(std::pair<std::string, hfst::HfstTransducer*>(
-                                  defs_itr->first,
-                                  defs_itr->second));
-            } else {
-                delete defs_itr->second;
-            }
+        // with dummy and minimize the results
+        std::map<std::string, HfstTransducer *>::iterator tr_it;
+        for(tr_it = retval.begin(); tr_it != retval.end(); ++tr_it) {
+            tr_it->second->harmonize(dummy);
+            tr_it->second->minimize();
         }
     } else {
-        retval.insert(std::pair<std::string, hfst::HfstTransducer*>("TOP", definitions["TOP"]));
+        if (definitions.size() == 0) {
+            std::cerr << "warning: pmatch compilation had an empty result\n";
+                retval.insert(std::pair<std::string, hfst::HfstTransducer*>("TOP", new HfstTransducer(format)));
+        } else if (definitions.count("TOP") == 0) {
+            std::cerr << "Pmatch compilation warning: regex or TOP was undefined, using ";
+            std::cerr << definitions.begin()->first << " as root\n";
+            hfst::HfstTransducer * tmp = definitions.begin()->second->evaluate();
+            retval.insert(std::pair<std::string, hfst::HfstTransducer*>("TOP", tmp));
+        } else {
+            hfst::HfstTransducer * tmp = definitions["TOP"]->evaluate();
+            tmp->minimize();
+            retval.insert(std::pair<std::string, hfst::HfstTransducer*>("TOP", tmp));
+        }
     }
     if (hfst::pmatch::verbose) {
         double duration = (clock() - hfst::pmatch::timer) /
             (double) CLOCKS_PER_SEC;
         hfst::pmatch::timer = clock();
-        std::cerr << "harmonized in " << duration << " seconds\n";
+        std::cerr << "compiled and harmonized in " << duration << " seconds\n";
     }
     return retval;
 }
@@ -956,15 +1022,37 @@ HfstTransducer * PmatchUtilityTransducers::make_lowerfy(ImplementationType type)
     return retval;
 }
 
+HfstTransducer * PmatchUtilityTransducers::cap(HfstTransducer & t)
+{
+    HfstTokenizer tok;
+    HfstTransducer cap(*capify);
+    HfstTransducer anything(HfstTransducer::identity_pair(t.get_type()));
+    HfstTransducer anything_but_whitespace(anything);
+    anything_but_whitespace.subtract(*latin1_whitespace_acceptor);
+    HfstTransducer anything_but_lowercase(anything);
+    anything_but_lowercase.subtract(*latin1_lowercase_acceptor);
+    cap.disjunct(anything_but_lowercase);
+    HfstTransducer cap_one_word(cap);
+    cap_one_word.concatenate(anything_but_whitespace.repeat_star());
+    /* If we consider to cross the word boundary */ 
+    HfstTransducer more_words(*latin1_whitespace_acceptor);
+    more_words.concatenate(cap_one_word);
+    more_words.repeat_star();
+    HfstTransducer * retval = new HfstTransducer(t);
+    retval->compose(cap_one_word.concatenate(more_words));
+    retval->output_project();
+    retval->minimize();
+    return retval;
+}
+
 HfstTransducer * PmatchUtilityTransducers::optcap(HfstTransducer & t)
 {
     HfstTokenizer tok;
     HfstTransducer optcap(*capify);
-    optcap.disjunct(*lowerfy);
-    optcap.disjunct(*latin1_alpha_acceptor);
     HfstTransducer anything(HfstTransducer::identity_pair(t.get_type()));
-    HfstTransducer anything_but_whitespace(anything.subtract(
-                                               *latin1_whitespace_acceptor));
+    HfstTransducer anything_but_whitespace(anything);
+    anything_but_whitespace.subtract(*latin1_whitespace_acceptor);
+    optcap.disjunct(anything);
     HfstTransducer optcap_one_word(optcap);
     optcap_one_word.concatenate(anything_but_whitespace.repeat_star());
     /* If we consider to cross the word boundary */ 
@@ -974,7 +1062,6 @@ HfstTransducer * PmatchUtilityTransducers::optcap(HfstTransducer & t)
     HfstTransducer * retval = new HfstTransducer(t);
     retval->compose(optcap_one_word.concatenate(more_words));
     retval->output_project();
-    retval->disjunct(t);
     retval->minimize();
     return retval;
 }
@@ -983,10 +1070,9 @@ HfstTransducer * PmatchUtilityTransducers::tolower(HfstTransducer & t)
 {
     HfstTokenizer tok;
     HfstTransducer lowercase(*lowerfy);
-    lowercase.disjunct(*latin1_numeral_acceptor);
-    lowercase.disjunct(*latin1_punct_acceptor);
-    lowercase.disjunct(*latin1_whitespace_acceptor);
-    lowercase.disjunct(*latin1_lowercase_acceptor);
+    HfstTransducer any_but_upper(hfst::internal_identity, hfst::pmatch::format);
+    any_but_upper.subtract(*latin1_uppercase_acceptor);
+    lowercase.disjunct(any_but_upper);
     HfstTransducer * retval = new HfstTransducer(t);
     retval->compose(lowercase.repeat_star());
     retval->output_project();
@@ -998,10 +1084,9 @@ HfstTransducer * PmatchUtilityTransducers::toupper(HfstTransducer & t)
 {
     HfstTokenizer tok;
     HfstTransducer uppercase(*capify);
-    uppercase.disjunct(*latin1_numeral_acceptor);
-    uppercase.disjunct(*latin1_punct_acceptor);
-    uppercase.disjunct(*latin1_whitespace_acceptor);
-    uppercase.disjunct(*latin1_uppercase_acceptor);
+    HfstTransducer any_but_lower(hfst::internal_identity, hfst::pmatch::format);
+    any_but_lower.subtract(*latin1_lowercase_acceptor);
+    uppercase.disjunct(any_but_lower);
     HfstTransducer * retval = new HfstTransducer(t);
     retval->compose(uppercase.repeat_star());
     retval->output_project();
@@ -1009,121 +1094,648 @@ HfstTransducer * PmatchUtilityTransducers::toupper(HfstTransducer & t)
     return retval;
 }
 
-HfstTransducer * PmatchFunction::evaluate(
-    std::map<std::string,
-             HfstTransducer *> & funargs)
-{
-    return root->evaluate(funargs);
-}
-
-HfstTransducer * PmatchAstNode::evaluate(
-    std::map<std::string,
-             HfstTransducer *> & funargs)
-{
-    if (type == AstTransducer) {
-        return new HfstTransducer(*transducer);
-    } else if (type == AstUnaryOp) {
-        HfstTransducer * retval = left_child->evaluate(funargs);
-        if (op == AstAddDelimiters) {
-            return add_pmatch_delimiters(retval);
-        } else if (op == AstOptionalize) {
-            retval->optionalize();
-            return retval;
-        } else if (op == AstRepeatStar) {
-            retval->repeat_star();
-            return retval;
-        } else if (op == AstRepeatPlus) {
-            retval->repeat_plus();
-            return retval;
-        } else if (op == AstReverse) {
-            retval->reverse();
-            return retval;
-        } else if (op == AstInvert) {
-            retval->invert();
-            return retval;
-        } else if (op == AstInputProject) {
-            retval->input_project();
-            return retval;
-        } else if (op == AstOutputProject) {
-            retval->output_project();
-            return retval;
-        } else if (op == AstRepeatN) {
-            retval->repeat_n(numeric_args[0]);
-            return retval;
-        } else if (op == AstRepeatNPlus) {
-            retval->repeat_n_plus(numeric_args[0]);
-            return retval;
-        } else if (op == AstRepeatNMinus) {
-            retval->repeat_n_minus(numeric_args[0]);
-            return retval;
-        } else if (op == AstRepeatNToK) {
-            retval->repeat_n_to_k(numeric_args[0], numeric_args[1]);
-            return retval;
-        } else if (op == AstOptCap) {
-            HfstTransducer * tmp = get_utils()->optcap(*retval);
-            delete retval;
-            return tmp;
-        } else if (op == AstToLower) {
-            HfstTransducer * tmp = get_utils()->tolower(*retval);
+HfstTransducer * PmatchUtilityTransducers::opt_tolower(HfstTransducer & t)
+{
+    HfstTokenizer tok;
+    HfstTransducer lowercase(*lowerfy);
+    HfstTransducer anything(hfst::internal_identity, hfst::pmatch::format);
+    lowercase.disjunct(anything);
+    HfstTransducer * retval = new HfstTransducer(t);
+    retval->compose(lowercase.repeat_star());
+    retval->output_project();
+    retval->minimize();
+    return retval;
+}
+
+HfstTransducer * PmatchUtilityTransducers::opt_toupper(HfstTransducer & t)
+{
+    HfstTokenizer tok;
+    HfstTransducer uppercase(*capify);
+    HfstTransducer anything(hfst::internal_identity, hfst::pmatch::format);
+    uppercase.disjunct(anything);
+    HfstTransducer * retval = new HfstTransducer(t);
+    retval->compose(uppercase.repeat_star());
+    retval->output_project();
+    retval->minimize();
+    return retval;
+}
+
+PmatchObject::PmatchObject(void)
+{
+    name = "";
+    weight = 0.0;
+    line_defined = pmatchlineno;
+    cache = (HfstTransducer*) (NULL);
+}
+
+HfstTransducer * PmatchObject::evaluate(std::vector<PmatchObject *> args)
+{
+    if (args.size() == 0) {
+        if (should_use_cache()) {
+            if (cache == NULL) {
+                start_timing();
+                cache = evaluate();
+                report_time();
+            }
+            return new HfstTransducer(*cache);
+        } else {
+            start_timing();
+            HfstTransducer * retval = evaluate();
+            report_time();
+            return new HfstTransducer(*retval);
+        }
+    } else {
+        std::stringstream errstring;
+        errstring << "Object " << name << " on line " << pmatchlineno << " has no argument handling";
+        throw std::invalid_argument(errstring.str());
+    }
+}
+
+HfstTransducer * PmatchSymbol::evaluate(PmatchEvalType eval_type)
+{
+    start_timing();
+    HfstTransducer * retval;
+    if (symbol_in_local_context(sym)) {
+        retval = symbol_from_local_context(sym)->evaluate();
+    } else if (symbol_in_global_context(sym)) {
+        if (flatten && def_insed_expressions.count(sym) == 1) {
+            retval = def_insed_expressions[sym]->evaluate();
+        } else {
+            retval = symbol_from_global_context(sym)->evaluate();
+        }
+        used_definitions.insert(sym);
+    } else {
+        if (verbose) {
+            std::cerr << "Warning: interpreting undefined symbol \"" << sym
+                      << "\" as label on line " << line_defined << "\n";
+        }
+        retval = new HfstTransducer(sym, format);
+    }
+    retval->set_final_weights(weight, true);
+    report_time();
+    return retval;
+}
+
+HfstTransducer * PmatchString::evaluate(PmatchEvalType eval_type) {
+    if (cache != NULL && should_use_cache()) {
+        return new HfstTransducer(*cache);
+    }
+    start_timing();
+    HfstTransducer * tmp;
+    if(multichar) {
+        HfstTokenizer tok;
+        tmp = new HfstTransducer(string, tok, format);
+    } else {
+        tmp = new HfstTransducer(string, format);
+    }
+    tmp->set_final_weights(weight, true);
+    if (cache == NULL && should_use_cache()) {
+        cache = tmp;
+    }
+    report_time();
+    return new HfstTransducer(*tmp);
+}
+
+HfstTransducer * PmatchFunction::evaluate(std::vector<PmatchObject *> funargs)
+{
+    if (verbose) {
+        tmp_timer = clock();
+    }
+    if (funargs.size() != args.size()) {
+        std::stringstream errstring;
+        errstring << "Function " << name << " expected " << args.size() << " args, got " << funargs.size() << std::endl;
+        throw std::invalid_argument(errstring.str());
+    }
+    std::map<std::string, PmatchObject *> local_env;
+    if (call_stack.size() != 0) {
+        local_env = call_stack.back();
+    };
+    for (int i = 0; i < args.size(); ++i) {
+        local_env[args[i]] = funargs[i];
+    }
+    call_stack.push_back(local_env);
+    HfstTransducer * retval = root->evaluate();
+    retval->set_final_weights(weight, true);
+    call_stack.pop_back();
+    if (verbose) {
+        double duration = (clock() - tmp_timer) /
+            (double) CLOCKS_PER_SEC;
+        std::cerr << "Call to " << name << " evaluated in " << duration << " seconds\n";
+    }
+    return retval;
+}
+
+HfstTransducer * PmatchFunction::evaluate(PmatchEvalType eval_type)
+{
+    std::vector<PmatchObject *> funargs;
+    return evaluate(funargs);
+}
+
+HfstTransducer * PmatchBuiltinFunction::evaluate(PmatchEvalType eval_type)
+{
+    start_timing();
+    HfstTransducer * retval;
+    if (type == Interpolate) {
+        if (args->size() < 3) {
+            std::stringstream errstring;
+            errstring << "Builtin function Interpolate called with " << args->size() << " arguments, but it expects at least 3." << std::endl;
+            throw std::invalid_argument(errstring.str());
+        }
+        // arguments are in reverse order after parsing
+        retval = (*(args->rbegin() + 1))->evaluate();
+        HfstTransducer * interpolator = (*(args->rbegin()))->evaluate();
+        for(std::vector<PmatchObject*>::reverse_iterator it = args->rbegin() + 2;
+            it != args->rend(); ++it) {
+            HfstTransducer * tmp = (*it)->evaluate();
+            retval->concatenate(*interpolator);
+            retval->concatenate(*tmp);
+            delete tmp;
+        }
+        delete interpolator;
+    }
+    retval->set_final_weights(weight, true);
+    report_time();
+    return retval;
+}
+
+HfstTransducer * PmatchNumericOperation::evaluate(PmatchEvalType eval_type)
+{
+    if (cache != NULL && should_use_cache()) {
+        return new HfstTransducer(*cache);
+    }
+    HfstTransducer * tmp;
+    start_timing();
+    tmp = root->evaluate();
+    if (op == RepeatN) {
+        tmp->repeat_n(values[0]);
+    } else if (op == RepeatNPlus) {
+        tmp->repeat_n_plus(values[0]);
+    } else if (op == RepeatNMinus) {
+        tmp->repeat_n_minus(values[0]);
+    } else if (op == RepeatNToK) {
+        tmp->repeat_n_to_k(values[0], values[1]);
+    }
+    tmp->set_final_weights(weight, true);
+    report_time();
+    if (cache == NULL && should_use_cache()) {
+        cache = tmp;
+    }
+    return new HfstTransducer(*tmp);
+}
+
+HfstTransducer * PmatchUnaryOperation::evaluate(PmatchEvalType eval_type)
+{
+    if (cache != NULL && should_use_cache()) {
+        return new HfstTransducer(*cache);
+    }
+    HfstTransducer * retval;
+    start_timing();
+    retval = root->evaluate();
+    if (op == AddDelimiters) {
+        retval = add_pmatch_delimiters(retval);
+    } else if (op == Optionalize) {
+        retval->optionalize();
+    } else if (op == RepeatStar) {
+        retval->repeat_star();
+    } else if (op == RepeatPlus) {
+        retval->repeat_plus();
+    } else if (op == Reverse) {
+        retval->reverse();
+    } else if (op == Invert) {
+        retval->invert();
+    } else if (op == InputProject) {
+        retval->input_project();
+    } else if (op == OutputProject) {
+        retval->output_project();
+    } else if (op == Complement) {
+        // Defined here only for automata, so can project to input
+        HfstTransducer * complement =
+            new HfstTransducer(hfst::internal_identity, hfst::pmatch::format);
+        complement->repeat_star();
+        complement->subtract(*retval);
+        delete retval;
+        retval = complement;
+    } else if (op == Containment) {
+        HfstTransducer* left = new HfstTransducer(hfst::internal_identity,
+                                                  hfst::pmatch::format);
+        HfstTransducer* right = new HfstTransducer(hfst::internal_identity,
+                                                   hfst::pmatch::format);
+        right->repeat_star();
+        left->repeat_star();
+        retval->repeat_star();
+        left->concatenate(*retval);
+        left->concatenate(*right);
+        delete retval; delete right;
+        retval = left;
+    } else if (op == ContainmentOnce) {
+        HfstTransducer* left = new HfstTransducer(hfst::internal_identity,
+                                                  hfst::pmatch::format);
+        HfstTransducer* right = new HfstTransducer(hfst::internal_identity,
+                                                   hfst::pmatch::format);
+        left->subtract(*retval);
+        right->subtract(*retval);
+        right->repeat_star();
+        left->repeat_star();
+        left->concatenate(*retval);
+        left->concatenate(*right);
+        delete retval; delete right;
+        retval = left;
+    } else if (op == ContainmentOptional) {
+        HfstTransducer* left = new HfstTransducer(hfst::internal_identity,
+                                                  hfst::pmatch::format);
+        HfstTransducer* right = new HfstTransducer(hfst::internal_identity,
+                                                   hfst::pmatch::format);
+        left->subtract(*retval);
+        right->subtract(*retval);
+        right->repeat_star();
+        left->repeat_star();
+        retval->optionalize();
+        left->concatenate(*retval);
+        left->concatenate(*right);
+        delete retval; delete right;
+        retval = left;
+    } else if (op == TermComplement) {
+        HfstTransducer* any = new HfstTransducer(hfst::internal_identity,
+                                                 hfst::pmatch::format);
+        any->subtract(*retval);
+        delete retval;
+        retval = any;
+    } else if (op == Cap) {
+        HfstTransducer * tmp = get_utils()->cap(*retval);
+        delete retval;
+        retval = tmp;
+    } else if (op == OptCap) {
+        HfstTransducer * tmp = get_utils()->optcap(*retval);
+        delete retval;
+        retval = tmp;
+    } else if (op == ToLower) {
+        HfstTransducer * tmp = get_utils()->tolower(*retval);
+        delete retval;
+        retval = tmp;
+    } else if (op == ToUpper) {
+        HfstTransducer * tmp = get_utils()->toupper(*retval);
+        delete retval;
+        retval = tmp;
+    } else if (op == OptToLower) {
+        HfstTransducer * tmp = get_utils()->opt_tolower(*retval);
+        tmp->disjunct(*retval);
+        delete retval;
+        retval = tmp;
+    } else if (op == OptToUpper) {
+        HfstTransducer * tmp = get_utils()->opt_toupper(*retval);
+        delete retval;
+        retval = tmp;
+    } else if (op == AnyCase) {
+        HfstTransducer * toupper = get_utils()->opt_toupper(*retval);
+        HfstTransducer * tolower = get_utils()->opt_tolower(*retval);
+        retval->disjunct(*toupper);
+        retval->disjunct(*tolower);
+        delete toupper; delete tolower;
+    } else if (op == MakeSigma) {
+        HfstTransducer * tmp = make_sigma(retval);
+        delete retval;
+        retval = tmp;
+    } else if (op == MakeList) {
+        if (!flatten) {
+            HfstTransducer * tmp = make_list(retval);
             delete retval;
-            return tmp;
-        } else if (op == AstToUpper) {
-            HfstTransducer * tmp = get_utils()->toupper(*retval);
+            retval = tmp;
+        }
+    } else if (op == MakeExcList) {
+        if (!flatten) {
+            HfstTransducer * tmp = make_exc_list(retval);
             delete retval;
-            return tmp;
+            retval = tmp;
         }
-    } else if (type == AstBinaryOp) {
-        HfstTransducer * retval = left_child->evaluate(funargs);
-        if (op == AstConcatenate) {
-            retval->concatenate(*right_child->evaluate(funargs));
-            return retval;
-        } else if (op == AstCompose) {
-            retval->compose(*right_child->evaluate(funargs));
-            return retval;
-        } else if (op == AstCrossProduct) {
-            retval->cross_product(*right_child->evaluate(funargs));
-            return retval;
-        } else if (op == AstLenientCompose) {
-            retval->lenient_composition(*right_child->evaluate(funargs));
-            return retval;
-        } else if (op == AstDisjunct) {
-            retval->disjunct(*right_child->evaluate(funargs));
-            return retval;
-        } else if (op == AstIntersect) {
-            retval->intersect(*right_child->evaluate(funargs));
-            return retval;
-        } else if (op == AstSubtract) {
-            retval->subtract(*right_child->evaluate(funargs));
-            return retval;
+    }
+    retval->set_final_weights(weight, true);
+    report_time();
+    if (cache == NULL && should_use_cache()) {
+        cache = retval;
+    }
+    return new HfstTransducer(*retval);
+}
+
+HfstTransducer * PmatchBinaryOperation::evaluate(PmatchEvalType eval_type)
+{
+    if (cache != NULL && should_use_cache()) {
+        return new HfstTransducer(*cache);
+    }
+    start_timing();
+    HfstTransducer * retval;
+    HfstTransducer * lhs = left->evaluate();
+    HfstTransducer * rhs = right->evaluate();
+    if (op == Concatenate) {
+        lhs->concatenate(*rhs);
+    } else if (op == Compose) {
+        lhs->compose(*rhs);
+    } else if (op == CrossProduct) {
+        lhs->cross_product(*rhs);
+    } else if (op == LenientCompose) {
+        lhs->lenient_composition(*rhs);
+    } else if (op == Disjunct) {
+        lhs->disjunct(*rhs);
+    } else if (op == Intersect) {
+        lhs->intersect(*rhs);
+    } else if (op == Subtract) {
+        lhs->subtract(*rhs);
+    } else if (op == UpperSubtract) {
+        pmatcherror("Upper subtraction not implemented.");
+        return lhs;
+    } else if (op == LowerSubtract) {
+        pmatcherror("Lower subtraction not implemented.");
+        return lhs;
+    } else if (op == UpperPriorityUnion) {
+        lhs->priority_union(*rhs);
+    } else if (op == LowerPriorityUnion) {
+        lhs->invert();
+        rhs->invert();
+        lhs->priority_union(*rhs);
+        lhs->invert();
+    } else if (op == Shuffle) {
+        try {
+            lhs->shuffle(*rhs);
+        } catch (const TransducersAreNotAutomataException & e) {
+            pmatchwarning("tried to shuffle with non-automaton transducers,\n"
+                          "    shuffling with their input projection instead.");
+            lhs->input_project();
+            rhs->input_project();
+            lhs->shuffle(*rhs);
         }
+    } else if (op == Before) {
+        HfstTransducer * tmp = new HfstTransducer(hfst::xeroxRules::before(*lhs, *rhs));
+        delete lhs;
+        lhs = tmp;
+    } else if (op == After) {
+        HfstTransducer * tmp = new HfstTransducer(hfst::xeroxRules::after(*lhs, *rhs));
+        delete lhs;
+        lhs = tmp;
+    } else if (op == InsertFreely) {
+        lhs->insert_freely(*rhs, false);
+    } else if (op == IgnoreInternally) {
+        HfstTransducer * right_part = new HfstTransducer(*lhs);
+        HfstTransducer * middle_part = new HfstTransducer(*lhs);
+        middle_part->disjunct(*rhs);
+        middle_part->repeat_star();
+        lhs->concatenate(*middle_part);
+        lhs->concatenate(*right_part);
+        delete middle_part;
+        delete right_part;
+    } else if (op == Merge) {
+        HfstTransducer * tmp;
+        try {
+            tmp = hfst::xre::merge_first_to_second(lhs, rhs);
+        }
+        catch (const TransducersAreNotAutomataException & e) {
+            pmatcherror("Error: transducers must be automata in merge operation.");
+        }
+        delete lhs; lhs = tmp;
+    }
+    delete rhs;
+    lhs->set_final_weights(weight, true);
+    report_time();
+    retval = lhs;
+    if (cache == NULL && should_use_cache()) {
+        cache = retval;
+    }
+    return new HfstTransducer(*retval);
+}
 
-    } else if (type == AstSymbol) {
-        if (funargs.count(symbol) == 1) {
-            return new HfstTransducer(*funargs[symbol]);
-        } else if (definitions.count(symbol) == 1) {
-            if (!flatten && def_insed_transducers.count(symbol) == 1) {
-                inserted_transducers.insert(symbol);
-                if (verbose) {
-                    used_definitions.insert(symbol);
-                }
-                return new HfstTransducer(*def_insed_transducers[symbol]);
-            } else {
-                if (verbose) {
-                    std::cerr << "including " <<
-                        definitions[symbol]->get_name() << " with ";
-                    print_size_info(hfst::pmatch::definitions[symbol]);
-                    used_definitions.insert(symbol);
-                }
-                return new HfstTransducer(*hfst::pmatch::definitions[symbol]);
-            }
+StringPair PmatchBinaryOperation::as_string_pair(void)
+{
+    if (op == CrossProduct) {
+        std::string left_string = left->as_string();
+        std::string right_string = right->as_string();
+        return StringPair(left_string, right_string);
+    }
+    return StringPair("", "");
+}
+
+HfstTransducer * PmatchTernaryOperation::evaluate(PmatchEvalType eval_type)
+{
+    if (cache != NULL && should_use_cache()) {
+        return new HfstTransducer(*cache);
+    }
+    start_timing();
+    HfstTransducer * retval;
+    if (op == Substitute) {
+        retval = left->evaluate();
+        StringPair middle_pair = middle->as_string_pair();
+        StringPair right_pair = right->as_string_pair();
+        if (right_pair.first != "" || right_pair.second != "") {
+            retval->substitute(middle_pair, right_pair);
         } else {
-            std::string errstring = "Symbol " + std::string(symbol) + " not found";
-            pmatcherror(errstring.c_str());
-            return new HfstTransducer(); // For some compilers and linters
-        }        
+            HfstTransducer * tmp = right->evaluate();
+            retval->substitute(middle_pair, *tmp);
+            delete tmp;
+        }
+    }
+    retval->set_final_weights(weight, true);
+    report_time();
+    if (cache == NULL && should_use_cache()) {
+        cache = retval;
+    }
+    return new HfstTransducer(*retval);
+}
+
+HfstTransducer * PmatchAcceptor::evaluate(PmatchEvalType eval_type)
+{
+    start_timing();
+    HfstTransducer * retval;
+    switch(set) {
+    case Alpha:
+        retval = new HfstTransducer(* get_utils()->latin1_alpha_acceptor);
+        break;
+    case UppercaseAlpha:
+        retval = new HfstTransducer(* get_utils()->latin1_uppercase_acceptor);
+        break;
+    case LowercaseAlpha:
+        retval = new HfstTransducer(* get_utils()->latin1_lowercase_acceptor);
+        break;
+    case Numeral:
+        retval = new HfstTransducer(* get_utils()->latin1_numeral_acceptor);
+        break;
+    case Punctuation:
+        retval = new HfstTransducer(* get_utils()->latin1_punct_acceptor);
+        break;
+    case Whitespace:
+        retval = new HfstTransducer(* get_utils()->latin1_whitespace_acceptor);
+    }
+    retval->set_final_weights(weight, true);
+    report_time();
+    return retval;
+}
+
+HfstTransducer * PmatchParallelRulesContainer::evaluate(PmatchEvalType eval_type)
+{
+    if (cache != NULL && should_use_cache()) {
+        return new HfstTransducer(*cache);
+    }
+    start_timing();
+    HfstTransducer * retval;
+    switch (arrow) {
+    case hfst::xeroxRules::E_REPLACE_RIGHT:
+        retval = new HfstTransducer(replace(make_mappings(), false));
+        break;
+    case hfst::xeroxRules::E_OPTIONAL_REPLACE_RIGHT:
+        retval = new HfstTransducer(replace(make_mappings(), true));
+        break;
+    case hfst::xeroxRules::E_REPLACE_LEFT:
+        retval = new HfstTransducer(replace_left(make_mappings(), false));
+        break;
+    case hfst::xeroxRules::E_OPTIONAL_REPLACE_LEFT:
+        retval = new HfstTransducer(replace_left(make_mappings(), true));
+        break;
+    case hfst::xeroxRules::E_RTL_LONGEST_MATCH:
+        retval = new HfstTransducer(replace_rightmost_longest_match(make_mappings()));
+        break;
+    case hfst::xeroxRules::E_RTL_SHORTEST_MATCH:
+        retval = new HfstTransducer(replace_rightmost_shortest_match(make_mappings()));
+        break;
+    case hfst::xeroxRules::E_LTR_LONGEST_MATCH:
+        retval = new HfstTransducer(replace_leftmost_longest_match(make_mappings()));
+        break;
+    case hfst::xeroxRules::E_LTR_SHORTEST_MATCH:
+        retval = new HfstTransducer(replace_leftmost_shortest_match(make_mappings()));
+        break;
+    case hfst::xeroxRules::E_REPLACE_RIGHT_MARKUP:
+    default:
+        pmatcherror("Unrecognized arrow type");
+        return (HfstTransducer *) NULL;
+    }
+    retval->set_final_weights(weight, true);
+    report_time();
+    if (cache == NULL && should_use_cache()) {
+        cache = retval;
+    }
+    return new HfstTransducer(*retval);
+}
+
+std::vector<hfst::xeroxRules::Rule> PmatchParallelRulesContainer::make_mappings(void)
+{
+    std::vector<hfst::xeroxRules::Rule> retval;
+    for(std::vector<PmatchReplaceRuleContainer *>::iterator it = rules.begin();
+        it != rules.end(); ++it) {
+        retval.push_back((*it)->make_mapping());
+    }
+    
+    return retval;
+}
+
+HfstTransducer * PmatchReplaceRuleContainer::evaluate(PmatchEvalType eval_type)
+{
+    if (cache != NULL && should_use_cache()) {
+        return new HfstTransducer(*cache);
+    }
+    start_timing();
+    HfstTransducer * retval;
+    switch (arrow) {
+    case hfst::xeroxRules::E_REPLACE_RIGHT:
+        retval = new HfstTransducer(replace(make_mapping(), false));
+        break;
+    case hfst::xeroxRules::E_OPTIONAL_REPLACE_RIGHT:
+        retval = new HfstTransducer(replace(make_mapping(), true));
+        break;
+    case hfst::xeroxRules::E_REPLACE_LEFT:
+        retval = new HfstTransducer(replace_left(make_mapping(), false));
+        break;
+    case hfst::xeroxRules::E_OPTIONAL_REPLACE_LEFT:
+        retval = new HfstTransducer(replace_left(make_mapping(), true));
+        break;
+    case hfst::xeroxRules::E_RTL_LONGEST_MATCH:
+        retval = new HfstTransducer(replace_rightmost_longest_match(make_mapping()));
+        break;
+    case hfst::xeroxRules::E_RTL_SHORTEST_MATCH:
+        retval = new HfstTransducer(replace_rightmost_shortest_match(make_mapping()));
+        break;
+    case hfst::xeroxRules::E_LTR_LONGEST_MATCH:
+        retval = new HfstTransducer(replace_leftmost_longest_match(make_mapping()));
+        break;
+    case hfst::xeroxRules::E_LTR_SHORTEST_MATCH:
+        retval = new HfstTransducer(replace_leftmost_shortest_match(make_mapping()));
+        break;
+    case hfst::xeroxRules::E_REPLACE_RIGHT_MARKUP:
+    default:
+        pmatcherror("Unrecognized arrow");
+        return (HfstTransducer *) NULL;
+    }
+    retval->set_final_weights(weight, true);
+    report_time();
+    if (cache == NULL && should_use_cache()) {
+        cache = retval;
+    }
+    return new HfstTransducer(*retval);
+}
+
+hfst::xeroxRules::Rule PmatchReplaceRuleContainer::make_mapping(void)
+{
+    HfstTransducerPairVector pair_vector;
+    for(MappingPairVector::iterator it = mapping.begin();
+        it != mapping.end(); ++it) {
+        HfstTransducer * l = it->first->evaluate();
+        HfstTransducer * r = it->second->evaluate();
+        pair_vector.push_back(HfstTransducerPair(HfstTransducer(*l),
+                                                 HfstTransducer(*r)));
+        delete l; delete r;
+    }
+    if (context.size() == 0) {
+        return hfst::xeroxRules::Rule(pair_vector);
+    }
+    HfstTransducerPairVector context_vector;
+    for (MappingPairVector::iterator it = context.begin();
+         it != context.end(); ++it) {
+        HfstTransducer * l = it->first->evaluate();
+        HfstTransducer * r = it->second->evaluate();
+        context_vector.push_back(HfstTransducerPair(HfstTransducer(*l),
+                                                    HfstTransducer(*r)));
+        delete l; delete r;
+    }
+    return hfst::xeroxRules::Rule(pair_vector, context_vector, type);
+}
+
+HfstTransducer * PmatchQuestionMark::evaluate(PmatchEvalType eval_type)
+{
+    start_timing();
+    HfstTransducer * retval;
+    if (eval_type == Transducer) {
+        retval = new HfstTransducer(hfst::internal_identity, format);
+    } else {
+        retval = new HfstTransducer(hfst::internal_unknown, format);
+    }
+    retval->set_final_weights(weight, true);
+    report_time();
+    return retval;
+}
+
+HfstTransducer * PmatchRestrictionContainer::evaluate(PmatchEvalType eval_type)
+{
+    if (cache != NULL && should_use_cache()) {
+        return new HfstTransducer(*cache);
+    }
+    start_timing();
+    HfstTransducer * retval;
+    HfstTransducerPairVector pair_vector;
+    for (MappingPairVector::iterator it = contexts->begin();
+         it != contexts->end(); ++it) {
+        HfstTransducer * lside = it->first->evaluate();
+        HfstTransducer * rside = it->second->evaluate();
+        pair_vector.push_back(HfstTransducerPair(HfstTransducer(*lside),
+                                                 HfstTransducer(*rside)));
+        delete lside; delete rside;
+    }
+    HfstTransducer * l = left->evaluate();
+    retval = new HfstTransducer(hfst::xeroxRules::restriction(*l, pair_vector));
+    delete l;
+    retval->set_final_weights(weight, true);
+    report_time();
+    if (cache == NULL && should_use_cache()) {
+        cache = retval;
     }
-    return new HfstTransducer(); // For some compilers and linters
+    return new HfstTransducer(*retval);
 }
 
+HfstTransducer * PmatchMarkupContainer::evaluate(PmatchEvalType eval_type) { pmatcherror("Should never happen\n"); throw 1; }
+HfstTransducer * PmatchMappingPairsContainer::evaluate(PmatchEvalType eval_type) { pmatcherror("Should never happen\n"); throw 1; }
+HfstTransducer * PmatchContextsContainer::evaluate(PmatchEvalType eval_type) { pmatcherror("Should never happen\n"); throw 1; }
 
 } }
diff --git a/libhfst/src/parsers/pmatch_utils.h b/libhfst/src/parsers/pmatch_utils.h
index b791e2c..4fe859a 100644
--- a/libhfst/src/parsers/pmatch_utils.h
+++ b/libhfst/src/parsers/pmatch_utils.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 /**
  * @file pmatch_utils.h
  *
@@ -13,32 +22,38 @@
 #include <time.h>
 #include <iomanip>
 #include "HfstTransducer.h"
+#include "HfstXeroxRules.h"
+#include "xre_utils.h"
 
 void pmatchwarning(const char *msg);
 
 namespace hfst { namespace pmatch {
 
-class PmatchFunction;
+struct PmatchFunction;
+struct PmatchObject;
+struct PmatchTransducerContainer;
+
+typedef std::pair<std::string, std::string> StringPair;
 
 extern char* data;
 extern char* startptr;
 extern size_t len;
-extern std::map<std::string, HfstTransducer *> definitions;
-extern std::map<std::string, HfstTransducer *> def_insed_transducers;
-extern std::set<std::string> inserted_transducers;
+extern std::map<std::string, PmatchObject*> definitions;
+extern std::vector<std::map<std::string, PmatchObject*> > call_stack;
+extern std::map<std::string, PmatchObject*> def_insed_expressions;
+extern std::set<std::string> inserted_names;
 extern std::set<std::string> unsatisfied_insertions;
 extern std::set<std::string> used_definitions;
-extern std::map<std::string, PmatchFunction> functions;
-extern std::vector<std::string> tmp_collected_funargs;
+extern std::set<std::string> function_names;
 extern ImplementationType format;
 extern bool verbose;
 extern bool flatten;
 extern clock_t timer;
+extern clock_t tmp_timer;
 extern int minimization_guard_count;
 extern bool need_delimiters;
 
 struct PmatchUtilityTransducers;
-//extern PmatchUtilityTransducers* utils;
 const std::string RC_ENTRY_SYMBOL = "@PMATCH_RC_ENTRY@";
 const std::string RC_EXIT_SYMBOL = "@PMATCH_RC_EXIT@";
 const std::string LC_ENTRY_SYMBOL = "@PMATCH_LC_ENTRY@";
@@ -56,7 +71,11 @@ void add_to_pmatch_symbols(StringSet symbols);
 void warn(std::string warning);
 PmatchUtilityTransducers* get_utils();
 void zero_minimization_guard(void);
-HfstTransducer * get_minimization_guard(void);
+bool symbol_in_global_context(std::string & sym);
+bool symbol_in_local_context(std::string & sym);
+bool should_use_cache(void);
+PmatchObject * symbol_from_global_context(std::string & sym);
+PmatchObject * symbol_from_local_context(std::string & sym);
 
 /**
  * @brief input handling function for flex that parses strings.
@@ -81,9 +100,9 @@ char* strip_newline(char *s);
 /**
  * @brief get a transition name for use in Ins, RC and LC statements
  */
-char* get_Ins_transition(const char *s);
-char* get_RC_transition(const char *s);
-char* get_LC_transition(const char *s);
+std::string get_Ins_transition(const char *s);
+std::string get_RC_transition(const char *s);
+std::string get_LC_transition(const char *s);
 
 /**
  * @brief add special beginning and ending arcs for pmatch compatibility
@@ -91,13 +110,26 @@ char* get_LC_transition(const char *s);
 HfstTransducer * add_pmatch_delimiters(HfstTransducer * regex);
 
 /**
- * @brief concatenate with an appropriate end tag transducer
+ * @brief utility functions for making special arcs
  */
-void add_end_tag(HfstTransducer * regex, std::string tag);
-HfstTransducer * make_end_tag(std::string tag);
-HfstTransducer * make_counter(std::string name);
-HfstTransducer * make_list(HfstTransducer * t);
+PmatchTransducerContainer * epsilon_to_symbol_container(std::string s);
+PmatchTransducerContainer * make_end_tag(std::string tag);
+PmatchTransducerContainer * make_counter(std::string name);
+HfstTransducer * make_list(HfstTransducer * t,
+                           ImplementationType f = format);
+HfstTransducer * make_exc_list(HfstTransducer * t,
+                               ImplementationType f = format);
 HfstTransducer * make_sigma(HfstTransducer * t);
+PmatchTransducerContainer * make_minimization_guard(void);
+PmatchTransducerContainer * make_passthrough(void);
+PmatchTransducerContainer * make_rc_entry(void);
+PmatchTransducerContainer * make_lc_entry(void);
+PmatchTransducerContainer * make_nrc_entry(void);
+PmatchTransducerContainer * make_nlc_entry(void);
+PmatchTransducerContainer * make_rc_exit(void);
+PmatchTransducerContainer * make_lc_exit(void);
+PmatchTransducerContainer * make_nrc_exit(void);
+PmatchTransducerContainer * make_nlc_exit(void);
 
 /**
  * @brief find first segment from strign @a s delimited by char delim.
@@ -112,7 +144,7 @@ char* parse_quoted(const char *s);
 
 unsigned int next_utf8_to_codepoint(unsigned char **c);
 std::string codepoint_to_utf8(unsigned int codepoint);
-HfstTransducer * parse_range(const char *s);
+PmatchTransducerContainer * parse_range(const char *s);
 
 int* get_n_to_k(const char* s);
 
@@ -253,37 +285,37 @@ struct PmatchUtilityTransducers
     const HfstTransducer * capify;
     const HfstTransducer * lowerfy;
     
-    HfstTransducer * make_latin1_acceptor(
+    static HfstTransducer * make_latin1_acceptor(
         ImplementationType type = TROPICAL_OPENFST_TYPE);
     
-    HfstTransducer * make_latin1_alpha_acceptor(
+    static HfstTransducer * make_latin1_alpha_acceptor(
         ImplementationType type = TROPICAL_OPENFST_TYPE);
     
-    HfstTransducer * make_latin1_lowercase_acceptor(
+    static HfstTransducer * make_latin1_lowercase_acceptor(
         ImplementationType type = TROPICAL_OPENFST_TYPE);
     
-    HfstTransducer * make_latin1_uppercase_acceptor(
+    static HfstTransducer * make_latin1_uppercase_acceptor(
         ImplementationType type = TROPICAL_OPENFST_TYPE);
     
-    HfstTransducer * make_combining_accent_acceptor(
+    static HfstTransducer * make_combining_accent_acceptor(
         ImplementationType type = TROPICAL_OPENFST_TYPE);
     
 /** @brief Return a transducer that accepts one arabic numeral character. 
  */
-    HfstTransducer * make_latin1_numeral_acceptor(
+    static HfstTransducer * make_latin1_numeral_acceptor(
         ImplementationType type = TROPICAL_OPENFST_TYPE);
     
 /** @brief Return a transducer that accepts one utf-8 symbol that is also a
  *  latin-1 punctuation character.
  */
-    HfstTransducer * make_latin1_punct_acceptor(
+    static HfstTransducer * make_latin1_punct_acceptor(
         ImplementationType type = TROPICAL_OPENFST_TYPE);
     
 /** @brief Return a transducer that accepts one utf-8 symbol that is also a
  *  latin-1 whitespace character.
  */
 
-    HfstTransducer * make_latin1_whitespace_acceptor(
+    static HfstTransducer * make_latin1_whitespace_acceptor(
         ImplementationType type = TROPICAL_OPENFST_TYPE);
     
     HfstTransducer * make_lowerfy(
@@ -292,126 +324,362 @@ struct PmatchUtilityTransducers
     HfstTransducer * make_capify(
         ImplementationType type = TROPICAL_OPENFST_TYPE);
     
+    HfstTransducer * cap(HfstTransducer & t);
     HfstTransducer * optcap(HfstTransducer & t);
     HfstTransducer * tolower(HfstTransducer & t);
     HfstTransducer * toupper(HfstTransducer & t);
+    HfstTransducer * opt_tolower(HfstTransducer & t);
+    HfstTransducer * opt_toupper(HfstTransducer & t);
 };
 
-enum PmatchAstOperation {
-    AstAddDelimiters,
-    AstConcatenate,
-    AstCompose,
-    AstCrossProduct,
-    AstLenientCompose,
-    AstOptionalize,
-    AstDisjunct,
-    AstIntersect,
-    AstSubtract,
-    AstRepeatStar,
-    AstRepeatPlus,
-    AstReverse,
-    AstInvert,
-    AstInputProject,
-    AstOutputProject,
-    AstRepeatN,
-    AstRepeatNPlus,
-    AstRepeatNMinus,
-    AstRepeatNToK,
-    AstOptCap,
-    AstToLower,
-    AstToUpper,
-    None
-};
+struct PmatchObject;
 
-enum PmatchAstType { AstTransducer, AstSymbol, AstBinaryOp, AstUnaryOp };
+enum PmatchEvalType {
+    InputSide,
+    OutputSide,
+    Transducer
+};
 
-struct PmatchAstNode {
+struct PmatchObject {
+    std::string name; // optional, given if the object appears as a definition
+    double weight;
+    int line_defined;
+    HfstTransducer * cache;
+    PmatchObject(void);
+    void start_timing(void)
+        {
+            if (verbose && name != "") {
+                tmp_timer = clock();
+            }
+        }
+    void report_time(void)
+        {
+            if (verbose && name != "") {
+                double duration = (clock() - tmp_timer) /
+                    (double) CLOCKS_PER_SEC;
+                std::cerr << name << " compiled in " << duration << " seconds\n";
+            }
+        }
+    virtual HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer) = 0;
+    virtual HfstTransducer * evaluate(std::vector<PmatchObject *> args);
+    virtual std::string as_string(void) { return ""; }
+    virtual StringPair as_string_pair(void)
+        { return StringPair("", ""); }
+};
 
+struct PmatchSymbol: public PmatchObject {
+    // This handles argumentless function calls and definition invocations,
+    // which are the same thing under the hood.
+    std::string sym;
+    PmatchSymbol(std::string str): sym(str) { }
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+};
 
-    PmatchAstNode * left_child;
-    PmatchAstNode * right_child;
-    HfstTransducer * transducer;
-    PmatchAstOperation op;
-    std::string symbol;
-    PmatchAstType type;
-    std::vector<int> numeric_args;
+struct PmatchString: public PmatchObject {
+    std::string string;
+    bool multichar;
+    PmatchString(std::string str, bool is_multichar = false):
+        string(str), multichar(is_multichar) {}
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+    std::string as_string(void) { return string; }
+    StringPair as_string_pair(void)
+        { return StringPair(string, string); }
+};
 
-    PmatchAstNode(PmatchAstNode * l,
-                  PmatchAstNode * r,
-                  PmatchAstOperation o):
-        left_child(l), right_child(r), op(o), type(AstBinaryOp),
-        transducer(NULL) { }
-    
-    PmatchAstNode(HfstTransducer * l,
-                  HfstTransducer * r,
-                  PmatchAstOperation o):
-        left_child(new PmatchAstNode(l)),
-        right_child(new PmatchAstNode(r)),
-        op(o), type(AstBinaryOp),
-        transducer(NULL) { }
+struct PmatchQuestionMark: public PmatchObject {
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+    std::string as_string(void) { return hfst::internal_unknown; }
+    StringPair as_string_pair(void)
+        { return StringPair(
+                hfst::internal_identity, hfst::internal_identity); }
     
-    PmatchAstNode(HfstTransducer * l,
-                  PmatchAstNode * r,
-                  PmatchAstOperation o):
-    left_child(new PmatchAstNode(l)),
-        right_child(r),
-        op(o), type(AstBinaryOp),
-        transducer(NULL) { }
-    
-    PmatchAstNode(PmatchAstNode * l,
-                  HfstTransducer * r,
-              PmatchAstOperation o):
-    left_child(l),
-    right_child(new PmatchAstNode(r)),
-        op(o), type(AstBinaryOp),
-        transducer(NULL) { }
-    
-    PmatchAstNode(PmatchAstNode * l,
-                  PmatchAstOperation o):
-    left_child(l), right_child(NULL), op(o), type(AstUnaryOp),
-        transducer(NULL) {}
+};
 
-    PmatchAstNode(HfstTransducer * l,
-                  PmatchAstOperation o):
-        left_child(new PmatchAstNode(l)), right_child(NULL), op(o), type(AstUnaryOp),
-        transducer(NULL) {}
+enum PmatchUnaryOp {
+    AddDelimiters,
+    Optionalize,
+    RepeatStar,
+    RepeatPlus,
+    Reverse,
+    Invert,
+    InputProject,
+    OutputProject,
+    Complement,
+    Containment,
+    ContainmentOnce,
+    ContainmentOptional,
+    TermComplement,
+    Cap,
+    OptCap,
+    ToLower,
+    ToUpper,
+    OptToLower,
+    OptToUpper,
+    AnyCase,
+    MakeSigma,
+    MakeList,
+    MakeExcList
+};
 
-PmatchAstNode(std::string sym): symbol(sym), type(AstSymbol) {}
-    
-    PmatchAstNode(const HfstTransducer * t): transducer(new HfstTransducer(*t)),
-    left_child(NULL), right_child(NULL), op(None), type(AstTransducer) {}
-    
-    PmatchAstNode(HfstTransducer & t): transducer(new HfstTransducer(t)),
-    left_child(NULL), right_child(NULL), op(None), type(AstTransducer) {}
-    
-    ~PmatchAstNode(void) {
-        delete left_child;
-        delete right_child;
-        delete transducer;
-    }
+enum PmatchBinaryOp {
+    Concatenate,
+    Compose,
+    CrossProduct,
+    LenientCompose,
+    Disjunct,
+    Intersect,
+    Subtract,
+    UpperSubtract,
+    LowerSubtract,
+    UpperPriorityUnion,
+    LowerPriorityUnion,
+    Shuffle,
+    Before,
+    After,
+    InsertFreely,
+    IgnoreInternally,
+    Merge
+};
+
+enum PmatchTernaryOp {
+    Substitute
+};
+
+enum PmatchNumericOp {
+    RepeatN,
+    RepeatNPlus,
+    RepeatNMinus,
+    RepeatNToK
+};
 
-    HfstTransducer * evaluate(std::map<std::string,
-                              HfstTransducer *> & funargs);
+enum PmatchPredefined {
+    Alpha,
+    UppercaseAlpha,
+    LowercaseAlpha,
+    Numeral,
+    Punctuation,
+    Whitespace
+};
 
-    HfstTransducer * compile(void);
+enum PmatchBuiltin {
+    Interpolate
+};
 
-    void push_numeric_arg(int arg)
-        { numeric_args.push_back(arg); }
+struct PmatchNumericOperation: public PmatchObject{
+    PmatchNumericOp op;
+    PmatchObject * root;
+    std::vector<int> values;
+    PmatchNumericOperation(PmatchNumericOp _op, PmatchObject * _root):
+        op(_op), root(_root) {}
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+};
 
+struct PmatchUnaryOperation: public PmatchObject{
+    PmatchUnaryOp op;
+    PmatchObject * root;
+    PmatchUnaryOperation(PmatchUnaryOp _op, PmatchObject * _root):
+        op(_op), root(_root) {}
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+};
+
+struct PmatchBinaryOperation: public PmatchObject{
+    PmatchBinaryOp op;
+    PmatchObject * left;
+    PmatchObject * right;
+    PmatchBinaryOperation(PmatchBinaryOp _op, PmatchObject * _left, PmatchObject * _right):
+        op(_op), left(_left), right(_right) {}
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+    StringPair as_string_pair(void);
+};
+
+struct PmatchTernaryOperation: public PmatchObject{
+    PmatchTernaryOp op;
+    PmatchObject * left;
+    PmatchObject * middle;
+    PmatchObject * right;
+    PmatchTernaryOperation(PmatchTernaryOp _op, PmatchObject * _left, PmatchObject * _middle, PmatchObject * _right):
+        op(_op), left(_left), middle(_middle), right(_right) {}
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+};
+
+struct PmatchTransducerContainer: public PmatchObject{
+    HfstTransducer * t;
+    PmatchTransducerContainer(HfstTransducer * target):
+        t(target) {}
+    ~PmatchTransducerContainer(void) { delete t; }
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer) {
+        if (t->get_type() != format) {
+            t->convert(format);
+        }
+        HfstTransducer * retval = new HfstTransducer(*t);
+        retval->set_final_weights(weight, true);
+        return retval;
+    }
 };
 
-struct PmatchFunction {
+struct PmatchFunction: public PmatchObject {
     std::vector<std::string> args;
-    PmatchAstNode * root;
+    PmatchObject * root;
     
     PmatchFunction(std::vector<std::string> argument_vector,
-                   PmatchAstNode * function_root):
+                   PmatchObject * function_root):
     args(argument_vector), root(function_root) { }
 
-    PmatchFunction(void) {}
+    HfstTransducer * evaluate(std::vector<PmatchObject *> funargs);
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+};
+
+struct PmatchFuncall: public PmatchObject {
+    std::vector<PmatchObject * >* args;
+    PmatchFunction * fun;
+    PmatchFuncall(std::vector<PmatchObject *>* argument_vector,
+                  PmatchFunction * function): args(argument_vector),
+                                              fun(function) { }
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer)
+        {
+            std::vector<PmatchObject * > evaluated_args;
+            for (std::vector<PmatchObject *>::iterator it = args->begin();
+                 it != args->end(); ++it) {
+                evaluated_args.push_back(
+                    new PmatchTransducerContainer((*it)->evaluate()));
+            }
+            HfstTransducer * retval = fun->evaluate(evaluated_args);
+            for (std::vector<PmatchObject *>::iterator it =
+                     evaluated_args.begin(); it != evaluated_args.end();
+                 ++it) {
+                delete static_cast<PmatchTransducerContainer*>(*it);
+            }
+            return retval;
+        }
+};
+
+struct PmatchBuiltinFunction: public PmatchObject {
+    std::vector<PmatchObject *>* args;
+    PmatchBuiltin type;
+    PmatchBuiltinFunction(PmatchBuiltin _type,
+                          std::vector<PmatchObject*>* argument_vector):
+        type(_type), args(argument_vector) {}
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+};
+
+using hfst::xeroxRules::ReplaceArrow;
+using hfst::xeroxRules::ReplaceType;
+typedef std::pair<PmatchObject *, PmatchObject *> PmatchObjectPair;
+typedef std::vector<PmatchObjectPair> MappingPairVector;
+
+struct PmatchRestrictionContainer: public PmatchObject
+{
+    PmatchObject * left;
+    MappingPairVector * contexts;
+    PmatchRestrictionContainer(PmatchObject * l, MappingPairVector * c):
+        left(l), contexts(c) { }
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+};
+
+struct PmatchMarkupContainer: public PmatchObject
+{
+    PmatchObject * left;
+    PmatchObject * right;
+    PmatchMarkupContainer(PmatchObject * l, PmatchObject * r):
+        left(l), right(r) {}
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+};
 
-    HfstTransducer * evaluate(std::map<std::string,
-                              HfstTransducer *> & funargs);
+struct PmatchMappingPairsContainer: public PmatchObject
+{
+    ReplaceArrow arrow;
+    MappingPairVector mapping_pairs;
+    PmatchMarkupContainer * markup_marks;
+    PmatchMappingPairsContainer(ReplaceArrow a, MappingPairVector pairs):
+        arrow(a), mapping_pairs(pairs) {}
+    PmatchMappingPairsContainer(ReplaceArrow a,
+                                PmatchObject * left, PmatchObject * right):
+        arrow(a) { mapping_pairs.push_back(PmatchObjectPair(left, right)); }
+    void push_back(PmatchMappingPairsContainer * one_pair)
+        {
+            for(MappingPairVector::iterator it = one_pair->mapping_pairs.begin();
+                it != one_pair->mapping_pairs.end(); ++it) {
+                mapping_pairs.push_back(PmatchObjectPair(
+                                            it->first, it->second));
+            }
+        }
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+};
+
+struct PmatchContextsContainer: public PmatchObject
+{
+    ReplaceType type;
+    MappingPairVector context_pairs;
+    PmatchContextsContainer(ReplaceType t, MappingPairVector pairs):
+        type(t), context_pairs(pairs) {}
+    PmatchContextsContainer(ReplaceType t, PmatchContextsContainer * context):
+        type(t), context_pairs(context->context_pairs)
+        { /* check for type compatibility */ }
+    PmatchContextsContainer(PmatchContextsContainer * context):
+        type(context->type), context_pairs(context->context_pairs) {}
+    PmatchContextsContainer(PmatchObject * left, PmatchObject * right)
+        { context_pairs.push_back(PmatchObjectPair(left, right)); }
+    void push_back(PmatchContextsContainer * one_context)
+        {
+            for(MappingPairVector::iterator it = one_context->context_pairs.begin();
+                it != one_context->context_pairs.end(); ++it) {
+                context_pairs.push_back(PmatchObjectPair(
+                                            it->first, it->second));
+            }
+        }
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+};
+
+struct PmatchReplaceRuleContainer: public PmatchObject
+{
+    ReplaceArrow arrow;
+    ReplaceType type;
+    MappingPairVector mapping;
+    MappingPairVector context;
+    PmatchReplaceRuleContainer(
+        ReplaceArrow a,
+        ReplaceType t,
+        MappingPairVector m,
+        MappingPairVector c):
+        arrow(a), type(t), mapping(m), context(c) {}
+    PmatchReplaceRuleContainer(PmatchMappingPairsContainer * pairs):
+        arrow(pairs->arrow), mapping(pairs->mapping_pairs) {}
+    PmatchReplaceRuleContainer(PmatchMappingPairsContainer * pairs,
+                               PmatchContextsContainer * contexts):
+        arrow(pairs->arrow), mapping(pairs->mapping_pairs),
+        context(contexts->context_pairs), type(contexts->type) {}
+    hfst::xeroxRules::Rule make_mapping(void);
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+};
+
+struct PmatchParallelRulesContainer: public PmatchObject
+{
+    ReplaceArrow arrow;
+    std::vector<PmatchReplaceRuleContainer *> rules;
+    PmatchParallelRulesContainer(PmatchReplaceRuleContainer * rule):
+        arrow(rule->arrow), rules(1, rule) {}
+    std::vector<hfst::xeroxRules::Rule> make_mappings(void);
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
+};
+
+struct PmatchEpsilonArc: public PmatchObject
+{
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer)
+        { return new HfstTransducer(hfst::internal_epsilon, format); }
+    std::string as_string(void) { return hfst::internal_epsilon; }
+};
+
+struct PmatchEmpty: public PmatchObject
+{
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer)
+        { return new HfstTransducer(format); }
+};
+
+struct PmatchAcceptor: public PmatchObject
+{
+    PmatchPredefined set;
+    PmatchAcceptor(PmatchPredefined s): set(s) {}
+    HfstTransducer * evaluate(PmatchEvalType eval_type = Transducer);
 };
 
 } } // namespaces
diff --git a/libhfst/src/parsers/xfst-lexer.ll b/libhfst/src/parsers/xfst-lexer.ll
index 21643cc..5338fa1 100644
--- a/libhfst/src/parsers/xfst-lexer.ll
+++ b/libhfst/src/parsers/xfst-lexer.ll
@@ -1,25 +1,21 @@
 %option 8Bit batch noyywrap prefix="hxfst"
 
 %{
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file xfst-lexer.ll
 //!
 //! @brief a lexer for xfst
 //!
 //! @author Tommi A. Pirinen
 
-
-//  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, version 3 of the License.
-//
-//  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 <http://www.gnu.org/licenses/>.
-
 #if HAVE_CONFIG_H
 #  include <config.h>
 #endif
@@ -28,7 +24,13 @@ namespace hfst {
   class HfstTransducer;
 }
 
-#include "xfst-parser.hh"
+#ifdef YACC_USE_PARSER_H_EXTENSION
+  #include "xfst-parser.h"
+#else
+  #include "xfst-parser.hh"
+#endif
+
+
 #include "xfst-utils.h"
 #include "XfstCompiler.h"
 
diff --git a/libhfst/src/parsers/xfst-parser.yy b/libhfst/src/parsers/xfst-parser.yy
index f99c973..8183cc2 100644
--- a/libhfst/src/parsers/xfst-parser.yy
+++ b/libhfst/src/parsers/xfst-parser.yy
@@ -1,22 +1,19 @@
 %{
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file xfst-parser.yy
 //!
 //! @brief A parser for xfst
 //!
 //! @author Tommi A. Pirinen
 
-
-//  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, version 3 of the License.
-//
-//  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 <http://www.gnu.org/licenses/>.
 #if HAVE_CONFIG_H
 #  include <config.h>
 #endif
diff --git a/libhfst/src/parsers/xfst-utils.cc b/libhfst/src/parsers/xfst-utils.cc
index c50aebc..4db72b4 100644
--- a/libhfst/src/parsers/xfst-utils.cc
+++ b/libhfst/src/parsers/xfst-utils.cc
@@ -1,22 +1,18 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file xfst-utils.cc
 //!
 //! @brief Implementation of some string handling in HFST xfst.
 //!
 //! @author Tommi A. Pirinen
 
-
-//  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, version 3 of the License.
-//
-//  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 <http://www.gnu.org/licenses/>.
-
 #if HAVE_CONFIG_H
 #  include <config.h>
 #endif
@@ -32,7 +28,12 @@
 
 #include <errno.h>
 
-#include "xfst-parser.hh"
+#ifdef YACC_USE_PARSER_H_EXTENSION
+  #include "xfst-parser.h"
+#else
+  #include "xfst-parser.hh"
+#endif
+
 #include "xfst-utils.h"
 
 using std::string;
diff --git a/libhfst/src/parsers/xfst-utils.h b/libhfst/src/parsers/xfst-utils.h
index e15bd3e..7fd27f1 100644
--- a/libhfst/src/parsers/xfst-utils.h
+++ b/libhfst/src/parsers/xfst-utils.h
@@ -1,22 +1,18 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 //! @file lexc-utils.h
 //!
 //! @brief Various string handling methods for HFST lexc.
 //! 
 //! @author Tommi A. Pirinen
 
-
-//   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, version 3 of the License.
-//
-//   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 <http://www.gnu.org/licenses/>.
-
 #ifndef GUARD_lexc_utils_h
 #define GUARD_lexc_utils_h
 #if HAVE_CONFIG_H
diff --git a/libhfst/src/parsers/xfst_help_message.cc b/libhfst/src/parsers/xfst_help_message.cc
index 830f7b6..d0ba649 100644
--- a/libhfst/src/parsers/xfst_help_message.cc
+++ b/libhfst/src/parsers/xfst_help_message.cc
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #include <string>
 #include <vector>
 
diff --git a/libhfst/src/parsers/xfst_help_message.h b/libhfst/src/parsers/xfst_help_message.h
index 1ee475d..cd61ec7 100644
--- a/libhfst/src/parsers/xfst_help_message.h
+++ b/libhfst/src/parsers/xfst_help_message.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 namespace hfst 
 {
 namespace xfst 
diff --git a/libhfst/src/parsers/xre_lex.ll b/libhfst/src/parsers/xre_lex.ll
index 92dc811..811a646 100644
--- a/libhfst/src/parsers/xre_lex.ll
+++ b/libhfst/src/parsers/xre_lex.ll
@@ -1,8 +1,15 @@
-
 %option 8Bit batch noyylineno noyywrap reentrant bison-bridge prefix="xre"
 
 %{
 
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
 
 #include <string.h>
 
@@ -10,7 +17,11 @@
 #include "HfstInputStream.h"
 #include "HfstXeroxRules.h"
 
-#include "xre_parse.hh"
+#ifdef YACC_USE_PARSER_H_EXTENSION
+  #include "xre_parse.h"
+#else
+  #include "xre_parse.hh"
+#endif
 #include "xre_utils.h"
 
 #undef YY_INPUT
@@ -137,7 +148,7 @@ BRACED      [{]([^}]|[\300-\337].|[\340-\357]..|[\360-\367]...)+[}]
 
 "\\\\\\" { CR; return LEFT_QUOTIENT; }
 
-"^"({UINTEGER}|"0")","({UINTEGER}|"0") { 
+"^"{WSP}*({UINTEGER}|"0")","({UINTEGER}|"0") { 
     CR;
     yylval->values = hfst::xre::get_n_to_k(yytext);
     return CATENATE_N_TO_K;
@@ -149,19 +160,19 @@ BRACED      [{]([^}]|[\300-\337].|[\340-\357]..|[\360-\367]...)+[}]
     return CATENATE_N_TO_K;
 }
 
-"^>"({UINTEGER}|"0") { 
+"^>"{WSP}*({UINTEGER}|"0") { 
     CR;
     yylval->value = strtol(yytext + 2, 0, 10);
     return CATENATE_N_PLUS; 
 }
 
-"^<"({UINTEGER}|"0") { 
+"^<"{WSP}*({UINTEGER}|"0") { 
     CR;
     yylval->value = strtol(yytext + 2, 0, 10);
     return CATENATE_N_MINUS;
 }
 
-"^"({UINTEGER}|"0")                  { 
+"^"{WSP}*({UINTEGER}|"0")                  { 
     CR;
     yylval->value = strtol(yytext + 1, 0, 10);
     return CATENATE_N;
diff --git a/libhfst/src/parsers/xre_lex.reentrant.ll b/libhfst/src/parsers/xre_lex.reentrant.ll
deleted file mode 100644
index 494d329..0000000
--- a/libhfst/src/parsers/xre_lex.reentrant.ll
+++ /dev/null
@@ -1,273 +0,0 @@
-%option 8Bit batch noyylineno noyywrap nounput reentrant bison-bridge
-
-%{
-
-
-#include <string.h>
-
-#include "HfstTransducer.h"
-#include "HfstInputStream.h"
-#include "HfstXeroxRules.h"
-
-#include "xre_parse.h"
-#include "xre_utils.h"
-
-#undef YY_INPUT
-#define YY_INPUT(buf, retval, maxlen)   (retval = hfst::xre::getinput(buf, maxlen))
-
-// These variablese are used when scanning a regex for a given SYMBOL
-// when performing variable substitution in function definition.
-namespace hfst { 
-  namespace xre {
-    extern unsigned int cr; // number of characters read
-    extern std::set<unsigned int> positions; // positions of a given SYMBOL
-    extern char * position_symbol;  // the given SYMBOL
-} }
-
-// increment the number of characters read
-#define CR hfst::xre::cr += (unsigned int)strlen(yytext)
-
-extern int yylex ( YYSTYPE * lvalp, yyscan_t scanner );
-
-%}
-
-/* c.f. Unicode Standard 5.1 D92 Table 3-7 */
-U1 [\x20-\x7e]
-U2 [\xc2-\xdf][\x80-\xbf]
-U31 \xe0[\xa0-\xbf][\x80-\xbf]
-U32 [\xe1-\xec][\x80-\xbf][\x80-\xbf]
-U33 \xed[\x80-\x9f][\x80-\xbf]
-U34 [\xee-\xef][\x80-\xbf][\x80-\xbf]
-U41 \xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]
-U42 [\xf1-\xf3][\x80-\xbf][\x80-\xbf][\x80-\xbf]
-U43 \xf4[\x80-\x8f][\x80-\xbf][\x80-\xbf]
-/* non US-ASCII */
-U8H {U43}|{U42}|{U41}|{U34}|{U33}|{U32}|{U31}|{U2}
-/* any UTF-8 */
-U8C {U8H}|{U1}
-/* Escaped */
-EC "%"{U8C}
-
-/* any ASCII */
-A7 [\x00-\x7e]
-/* special meaning in xre */
-A7RESTRICTED [- |<>%!,^:;@0~\\&?$+*/_(){}\]\[-]
-/* non-restricted ASCII */
-A7UNRESTRICTED [\x21-\x7e]{-}[- |<>%!,^:;@0~\\&?$+*/_(){}\]\[-]
-
-WEIGHT [0-9]+(\.[0-9]+)?
-
-/* token character */
-NAME_CH {A7UNRESTRICTED}|{U8H}|{EC}
-UINTEGER [1-9][0-9]*
-INTEGER -?[1-9][0-9]*
-WSP [\t ]
-LWSP [\t\r\n ]
-
-/* curly brackets */
-BRACED      [{]([^}]|[\300-\337].|[\340-\357]..|[\360-\367]...)+[}]
-%%
-
-
-
-
-{BRACED} {
-  CR;
-  yylval->label = hfst::xre::strip_curly(yytext);
-  return CURLY_BRACKETS;
-}
-
-
-
-"~"   { CR; return COMPLEMENT; }
-"\\"  { CR; return TERM_COMPLEMENT; }
-"&"   { CR; return INTERSECTION; }
-"-"   { CR; return MINUS; }
-
-"$."  { CR; return CONTAINMENT_ONCE; }
-"$?"  { CR; return CONTAINMENT_OPT; }
-"$"   { CR; return CONTAINMENT; }
-
-"+"   { CR; return PLUS; }
-"*"   { CR; return STAR; }
-
-"./." { CR; return IGNORE_INTERNALLY; }
-"/"   { CR; return IGNORING; }
-
-"|"   { CR; return UNION; }
-
-"<>"  { CR; return SHUFFLE; }
-"<"   { CR; return BEFORE; }
-">"   { CR; return AFTER; }
-
-".o." { CR; return COMPOSITION; }
-".O." { CR; return LENIENT_COMPOSITION; }
-".x." { CR; return CROSS_PRODUCT; }
-".P." { CR; return UPPER_PRIORITY_UNION; }
-".p." { CR; return LOWER_PRIORITY_UNION; }
-".-u." { CR; return UPPER_MINUS; }
-".-l." { CR; return LOWER_MINUS; }
-"`" {   CR; return SUBSTITUTE_LEFT; }
-
-"\\<=" { CR; return LEFT_RESTRICTION; }
-"<=>" { CR; return LEFT_RIGHT_ARROW; }
-"<=" { CR; return LEFT_ARROW; }
-"=>" { CR; return RIGHT_ARROW; }
-
-"->" { CR; return REPLACE_RIGHT; }
-"(->)" { CR; return OPTIONAL_REPLACE_RIGHT; }
-"<-" { CR; return REPLACE_LEFT; }
-"(<-)" { CR; return OPTIONAL_REPLACE_LEFT; }
-"<->" { CR; return REPLACE_LEFT_RIGHT; }
-"(<->)" { CR; return OPTIONAL_REPLACE_LEFT_RIGHT; }
-"@->" { CR; return LTR_LONGEST_MATCH; }
-"@>" { CR; return LTR_SHORTEST_MATCH; }
-"->@" { CR; return RTL_LONGEST_MATCH; }
-">@" { CR; return RTL_SHORTEST_MATCH; }
-
-"||" { CR; return REPLACE_CONTEXT_UU; }
-"//" { CR; return REPLACE_CONTEXT_LU; }
-"\\\\" { CR; return REPLACE_CONTEXT_UL; }
-"\\//" { CR; return REPLACE_CONTEXT_LL; }
-"_"+ { CR; return CENTER_MARKER; }
-"..."+ { CR; return MARKUP_MARKER; }
-
-"\\\\\\" { CR; return LEFT_QUOTIENT; }
-
-"^"{UINTEGER}","{UINTEGER} { 
-    CR;
-    yylval->values = hfst::xre::get_n_to_k(yytext);
-    return CATENATE_N_TO_K;
-}
-
-"^{"{UINTEGER}","{UINTEGER}"}" {
-    CR;
-    yylval->values = hfst::xre::get_n_to_k(yytext);
-    return CATENATE_N_TO_K;
-}
-
-"^>"{UINTEGER} { 
-    CR;
-    yylval->value = strtol(yytext + 2, 0, 10);
-    return CATENATE_N_PLUS; 
-}
-
-"^<"{UINTEGER} { 
-    CR;
-    yylval->value = strtol(yytext + 2, 0, 10);
-    return CATENATE_N_MINUS;
-}
-
-"^"{UINTEGER}                  { 
-    CR;
-    yylval->value = strtol(yytext + 1, 0, 10);
-    return CATENATE_N;
-}
-
-".r" { CR; return REVERSE; }
-".i" { CR; return INVERT; }
-".u" { CR; return UPPER; }
-".l" { CR; return LOWER; }
-
-"@bin\""[^""]+"\""|"@\""[^""]+"\"" { 
-    CR;
-    yylval->label = hfst::xre::get_quoted(yytext);
-    return READ_BIN;
-}
-
-"@txt\""[^""]+"\"" {
-    CR;
-    yylval->label = hfst::xre::get_quoted(yytext);
-    return READ_TEXT;
-}
-
-"@stxt\""[^""]+"\"" {
-    CR;
-    yylval->label = hfst::xre::get_quoted(yytext);
-    return READ_SPACED;
-}
-
-"@pl\""[^""]+"\"" {
-    CR;
-    yylval->label = hfst::xre::get_quoted(yytext);
-    return READ_PROLOG;
-}
-
-"@re\""[^""]+"\"" {
-    CR;
-    yylval->label = hfst::xre::get_quoted(yytext);
-    return READ_RE;
-}
-
-"[." { CR; return LEFT_BRACKET_DOTTED; }
-".]" { CR; return RIGHT_BRACKET_DOTTED; }
-"[" { CR; return LEFT_BRACKET; }
-"]" { CR; return RIGHT_BRACKET; }
-"(" { CR; return LEFT_PARENTHESIS; }
-")" { CR; return RIGHT_PARENTHESIS; }
-
-
-{LWSP}":"{LWSP} { CR; return PAIR_SEPARATOR_SOLE; }
-^":"$ { CR; return PAIR_SEPARATOR_SOLE; }
-{LWSP}":" { CR; return PAIR_SEPARATOR_WO_LEFT; }
-":"{LWSP} { CR; return PAIR_SEPARATOR_WO_RIGHT; }
-":" { CR; return PAIR_SEPARATOR; }
-
-"::"{WEIGHT} {
-    CR; 
-    yylval->weight = hfst::xre::get_weight(yytext + 2);
-    return WEIGHT;
-}
-
-"\""[^""]+"\"" {
-    CR; 
-    yylval->label = hfst::xre::parse_quoted(yytext); 
-    return QUOTED_LITERAL;
-}
-
-",," { CR; return COMMACOMMA; }
-"," { CR; return COMMA; }
-
-"\"\"" { CR; return EPSILON_TOKEN; }
-"0" { CR; return EPSILON_TOKEN; }
-"[]" { CR; return EPSILON_TOKEN; }
-"?" { CR; return ANY_TOKEN; }
-
-{NAME_CH}+ {
-    if (hfst::xre::position_symbol != NULL) {
-      if (strcmp(hfst::xre::position_symbol, yytext) == 0) {
-        hfst::xre::positions.insert(hfst::xre::cr);
-      }
-    }
-    CR;
-    yylval->label = hfst::xre::strip_percents(yytext);
-    return SYMBOL;
-}  
-
-{NAME_CH}+"(" {
-    CR;
-    yylval->label = yytext;
-    return FUNCTION_NAME;
-}
-
-";\t"{WEIGHT} {
-    CR; 
-    yylval->weight = hfst::xre::get_weight(yytext + 2);
-    return END_OF_WEIGHTED_EXPRESSION;
-}
-
-";" { 
-    CR; 
-    return END_OF_EXPRESSION;
-}
-
-{LWSP}* { CR; /* ignorable whitespace */ }
-
-("!"|"#")[^\n]*$ { CR; /* ignore comments */ }
-
-. { 
-    CR; 
-    return LEXER_ERROR;
-}
-
-%%
diff --git a/libhfst/src/parsers/xre_parse.reentrant.yy b/libhfst/src/parsers/xre_parse.reentrant.yy
deleted file mode 100644
index 7b77bbf..0000000
--- a/libhfst/src/parsers/xre_parse.reentrant.yy
+++ /dev/null
@@ -1,978 +0,0 @@
-%{
-#define YYDEBUG 1 
-
-#include <stdio.h>
-#include <assert.h>
-#include <iostream>
-
-#include "HfstTransducer.h"
-#include "HfstInputStream.h"
-#include "HfstXeroxRules.h"
-
-using namespace hfst;
-using hfst::HfstTransducer;
-using namespace hfst::xeroxRules;
-using namespace hfst::implementations;
-
-#include "xre_utils.h"
-
-namespace hfst { namespace xre {
-extern bool harmonize_;
-}}
-
-using hfst::xre::harmonize_;
-
-union YYSTYPE;
-class yy_buffer_state;
-typedef yy_buffer_state * YY_BUFFER_STATE;
-typedef void * yyscan_t;
-
-extern int yyparse(yyscan_t);
-extern int yylex_init (yyscan_t*);
-extern YY_BUFFER_STATE yy_scan_string (const char *, yyscan_t);
-extern void yy_delete_buffer (YY_BUFFER_STATE, yyscan_t);
-extern int yylex_destroy (yyscan_t);
-
-extern int yyerror(yyscan_t, const char*);
-extern int yyerror(const char*);
-int yylex ( YYSTYPE * , yyscan_t );
-
-%}
-
-%define api.pure
-%lex-param {void * scanner}
-%parse-param {void * scanner}
-%error-verbose
-%debug
-  
-%union {
-
-    int value;
-    int* values;
-    double weight;
-    char* label;
-    
-    char *subval1, *subval2;
-    
-    hfst::HfstTransducer* transducer;
-    hfst::HfstTransducerPair* transducerPair;
-    hfst::HfstTransducerPairVector* transducerPairVector;
-    hfst::HfstTransducerVector* transducerVector;
-
-   std::pair<hfst::xeroxRules::ReplaceArrow, std::vector<hfst::xeroxRules::Rule> >* replaceRuleVectorWithArrow;
-   std::pair< hfst::xeroxRules::ReplaceArrow, hfst::xeroxRules::Rule>* replaceRuleWithArrow;   
-   std::pair< hfst::xeroxRules::ReplaceArrow, hfst::HfstTransducerPairVector>* mappingVectorWithArrow;
-   std::pair< hfst::xeroxRules::ReplaceArrow, hfst::HfstTransducerPair>* mappingWithArrow;
-       
-   std::pair<hfst::xeroxRules::ReplaceType, hfst::HfstTransducerPairVector>* contextWithMark;
-   
-   hfst::xeroxRules::ReplaceType replType;
-   hfst::xeroxRules::ReplaceArrow replaceArrow; 
-
-}
-
-/* some parts have been ripped from foma’s parser now */
-
-%type <replaceArrow> REPLACE_ARROW
-
-%type <transducer> XRE REGEXP1 REGEXP2  REGEXP4 REGEXP5 REGEXP6 REGEXP7
-                    REGEXP8 REGEXP9 REGEXP10 REGEXP11 REGEXP12 LABEL
-                   REPLACE REGEXP3 SUB1  SUB3 SYMBOL_LIST
-%type <replaceRuleVectorWithArrow> PARALLEL_RULES
-%type <replaceRuleWithArrow>  RULE
-%type <mappingVectorWithArrow> MAPPINGPAIR_VECTOR
-%type <mappingWithArrow> MAPPINGPAIR
-
-%type <contextWithMark> CONTEXTS_WITH_MARK
-%type <transducerPairVector> CONTEXTS_VECTOR, RESTR_CONTEXTS_VECTOR
-%type <transducerPair> CONTEXT, RESTR_CONTEXT
-%type <replType>  CONTEXT_MARK
-%type <label>     HALFARC SUB2
-
-%type <transducerVector> REGEXP_LIST   // function call
-%type <label> FUNCTION                 // function call
-
-%nonassoc <weight> WEIGHT END_OF_WEIGHTED_EXPRESSION
-%nonassoc <label> SYMBOL CURLY_BRACKETS
-
-%left  CROSS_PRODUCT COMPOSITION LENIENT_COMPOSITION INTERSECTION
-%left  CENTER_MARKER MARKUP_MARKER
-%left  SHUFFLE
-%right LEFT_RESTRICTION LEFT_ARROW RIGHT_ARROW LEFT_RIGHT_ARROW
-%left  REPLACE_RIGHT REPLACE_LEFT
-       OPTIONAL_REPLACE_RIGHT OPTIONAL_REPLACE_LEFT
-       REPLACE_LEFT_RIGHT OPTIONAL_REPLACE_LEFT_RIGHT
-       RTL_LONGEST_MATCH RTL_SHORTEST_MATCH
-       LTR_LONGEST_MATCH LTR_SHORTEST_MATCH
-      
-%right REPLACE_CONTEXT_UU REPLACE_CONTEXT_LU 
-       REPLACE_CONTEXT_UL REPLACE_CONTEXT_LL
-
-%left  UNION MINUS UPPER_MINUS LOWER_MINUS UPPER_PRIORITY_UNION
-       LOWER_PRIORITY_UNION
-
-%left  IGNORING IGNORE_INTERNALLY LEFT_QUOTIENT
-
-%left  COMMACOMMA
-
-%left  COMMA 
-       
-%left  BEFORE AFTER
-
-%nonassoc SUBSTITUTE_LEFT TERM_COMPLEMENT
-%nonassoc COMPLEMENT CONTAINMENT CONTAINMENT_ONCE CONTAINMENT_OPT
-%nonassoc REVERSE INVERT UPPER LOWER STAR PLUS
-%nonassoc <values> CATENATE_N_TO_K
-%nonassoc <value> CATENATE_N CATENATE_N_PLUS CATENATE_N_MINUS
-
-%nonassoc <label> READ_BIN READ_TEXT READ_SPACED READ_PROLOG READ_RE
-%nonassoc <label> FUNCTION_NAME   // function call
-%token LEFT_BRACKET RIGHT_BRACKET LEFT_PARENTHESIS RIGHT_PARENTHESIS
-       LEFT_BRACKET_DOTTED RIGHT_BRACKET_DOTTED SUBVAL
-       PAIR_SEPARATOR_WO_RIGHT PAIR_SEPARATOR_WO_LEFT
-%token EPSILON_TOKEN ANY_TOKEN BOUNDARY_MARKER
-%token LEXER_ERROR
-%token END_OF_EXPRESSION
-%token PAIR_SEPARATOR PAIR_SEPARATOR_SOLE 
-       PAIR_SEPARATOR_WO_RIGHT PAIR_SEPARATOR_WO_LEFT
-%token EPSILON_TOKEN ANY_TOKEN BOUNDARY_MARKER
-%token LEXER_ERROR
-%nonassoc <label> QUOTED_LITERAL
-%%
-
-
-XRE: REGEXP1 { }
-     ;
-REGEXP1: REGEXP2 END_OF_EXPRESSION {
-      // std::cerr << "regexp1:regexp2 end of expr \n"<< std::endl; 
-       hfst::xre::last_compiled = & $1->minimize();
-       $$ = hfst::xre::last_compiled;
-   }
-   | REGEXP2 END_OF_WEIGHTED_EXPRESSION {
-        //std::cerr << "regexp1:regexp2 end of wighted expr \n"<< std::endl; 
-        hfst::xre::last_compiled = & $1->minimize().set_final_weights($2);
-        $$ = hfst::xre::last_compiled;
-   }
-   | REGEXP2 {
-   
-    //    std::cerr << "regexp1:regexp2\n"<< *$1 << std::endl; 
-        hfst::xre::last_compiled = & $1->minimize();
-        $$ = hfst::xre::last_compiled;
-   }
-;
-
-
-REGEXP2: REPLACE
-         { 
-            $$ = & $1->minimize();
-          //  std::cerr << "regexp2:replace \n"<< std::endl; 
-         }
-       | REGEXP2 COMPOSITION REPLACE {
-       	    
-            $$ = & $1->compose(*$3, harmonize_).minimize();
-            delete $3;
-        }
-       | REGEXP2 CROSS_PRODUCT REPLACE {
-            $$ = & $1->cross_product(*$3);
-            delete $3;
-        }
-       | REGEXP2 LENIENT_COMPOSITION REPLACE {
-            $$ = & $1->lenient_composition(*$3).minimize();
-            delete $3;
-        }
-        // function call
-       | FUNCTION REGEXP_LIST RIGHT_PARENTHESIS {
-            if (! hfst::xre::is_valid_function_call($1, $2)) {
-              return EXIT_FAILURE;
-            }
-            else {
-              yyscan_t scanner;
-              yylex_init(&scanner);
-              YY_BUFFER_STATE bs = yy_scan_string(hfst::xre::get_function_xre($1),scanner);
-
-              fprintf(stderr, "scanned string: '%s'\n", hfst::xre::get_function_xre($1)); // DEBUG
-
-              hfst::xre::define_function_args($1, $2);
-              yyparse(scanner);
-              hfst::xre::undefine_function_args($1);
-
-              yy_delete_buffer(bs,scanner);
-              yylex_destroy(scanner);
-
-              $$ = hfst::xre::last_compiled;              
-
-              // fprintf(stderr, "function %s@%i) called: function definitions not yet implemented, returning an empty transducer\n", $1, (int)$2->size());
-              // $$ = new hfst::HfstTransducer(hfst::xre::format);
-            }
-        }
-        // substitute
-       | SUB1 SUB2 SUB3 {
-            StringPair tmp($2, $2);
-            HfstTransducer * tmpTr = new HfstTransducer(* $1);
-
-	    bool empty_replace_transducer=false;
-	    HfstTransducer empty(hfst::xre::format);
-	    if (empty.compare(*$3))
-	    {
-		empty_replace_transducer=true;
-	    }	
-
-	    if (empty_replace_transducer)
-	    {
-	        // substitute all transitions {b:a, a:b, b:b} with b:b
-		// as they will be removed anyway
-		hfst::xre::set_substitution_function_symbol($2);
-		tmpTr->substitute(&hfst::xre::substitution_function);
-	    }	
-
-            // `[ a:b, b, x y ]
-            // substitute b with x | y
-            tmpTr->substitute(tmp, *$3, false); // no harmonization
-
-	    if (!empty_replace_transducer) 
-            {
-               // a:b .o. b -> x | y
-               // [[a:b].i .o. b -> x | y].i - this is for cases when b is on left side
-
-	       // build Replace transducer
-               HfstTransducerPair mappingPair(HfstTransducer($2, $2, hfst::xre::format), *$3);
-               HfstTransducerPairVector mappingPairVector;
-               mappingPairVector.push_back(mappingPair);
-               Rule rule(mappingPairVector);
-               HfstTransducer replaceTr(hfst::xre::format);
-               replaceTr = replace(rule, false);
-
-               tmpTr->compose(replaceTr).minimize();
-               tmpTr->invert().compose(replaceTr).invert();
-	    }
-            
-	    tmpTr->minimize();
-            $$ = tmpTr;
-            delete($1, $2, $3);
-         }
-        ;
-
-SUB1: SUBSTITUTE_LEFT LEFT_BRACKET REPLACE COMMA { $$ = $3; } ; // first argument
-SUB2: HALFARC COMMA { $$ = $1; } ;  // symbol that needs to be replaced
-SUB3: SYMBOL_LIST RIGHT_BRACKET {  $$ = $1;  }  // symbol list
-      |     
-      RIGHT_BRACKET { $$ = new HfstTransducer(hfst::xre::format); } // an empty symbol list
-      ;
-
-////////////////////////////
-// Replace operators
-///////////////////////////
-
-REPLACE : REGEXP3 { }
-       |  PARALLEL_RULES
-         {
-          // std::cerr << "replace:parallel_rules"<< std::endl;        
-            switch ( $1->first )
-            {
-               case E_REPLACE_RIGHT:
-                 $$ = new HfstTransducer( replace( $1->second, false ) );
-                 break;
-               case E_OPTIONAL_REPLACE_RIGHT:
-                 $$ = new HfstTransducer( replace( $1->second, true ) );
-                 break;
-              case E_REPLACE_LEFT:
-                 $$ = new HfstTransducer( replace_left( $1->second, false ) );
-                 break;
-               case E_OPTIONAL_REPLACE_LEFT:
-                 $$ = new HfstTransducer( replace_left( $1->second, true ) );
-                 break;
-               case E_RTL_LONGEST_MATCH:
-                 $$ = new HfstTransducer( replace_rightmost_longest_match( $1->second ) );
-                 break;
-               case E_RTL_SHORTEST_MATCH:
-                 $$ = new HfstTransducer( replace_rightmost_shortest_match($1->second) );
-                 break;
-               case E_LTR_LONGEST_MATCH:
-                 $$ = new HfstTransducer( replace_leftmost_longest_match( $1->second ) );
-                 break;
-               case E_LTR_SHORTEST_MATCH:
-                 $$ = new HfstTransducer( replace_leftmost_shortest_match( $1->second ) );
-                 break;
-               case E_REPLACE_RIGHT_MARKUP:
-               default:
-                yyerror("Unhandled arrow stuff I suppose");
-                break;
-            }
-       
-            delete $1;
-         }
-      ;
-
-PARALLEL_RULES: RULE
-         {
-         //   std::cerr << "parallel_rules:rule"<< std::endl;        
-            std::vector<Rule> * ruleVector = new std::vector<Rule>();
-            ruleVector->push_back($1->second);
-            
-            $$ =  new std::pair< ReplaceArrow, std::vector<Rule> > ($1->first, *ruleVector);
-            delete $1;
-         }
-         | PARALLEL_RULES COMMACOMMA RULE
-         {
-           // std::cerr << "parallel_rules: parallel_rules ,, rule"<< std::endl;      
-            Rule tmpRule($3->second);
-            $1->second.push_back(tmpRule);
-            $$ =  new std::pair< ReplaceArrow, std::vector<Rule> > ($3->first, $1->second);
-            delete $3;
-         }
-         ;
-
-RULE: MAPPINGPAIR_VECTOR
-      {
-         // std::cerr << "rule: mapping_vector"<< std::endl;      
-        // HfstTransducer allMappingsDisjuncted = disjunctVectorMembers($1->second);
-         
-         Rule rule( $1->second );;
-         $$ =  new std::pair< ReplaceArrow, Rule> ($1->first, rule);
-         delete $1;
-      }
-      | MAPPINGPAIR_VECTOR CONTEXTS_WITH_MARK
-      {
-        // std::cerr << "rule: mapping_vector contextsWM"<< std::endl;      
-     //   HfstTransducer allMappingsDisjuncted = disjunctVectorMembers($1->second);
-        
-        Rule rule( $1->second, $2->second, $2->first );
-        $$ =  new std::pair< ReplaceArrow, Rule> ($1->first, rule);
-        delete $1, $2;
-      }
-      ;
-      
-// Mappings: ( ie. a -> b , c -> d , ... , g -> d)
-MAPPINGPAIR_VECTOR: MAPPINGPAIR_VECTOR COMMA MAPPINGPAIR
-      {
-        // std::cerr << "mapping_vector : mapping_vector comma mapping"<< std::endl;      
-         // check if new Arrow is the same as the first one
-
-         if ($1->first != $3->first)
-         {
-            yyerror("Replace arrows should be the same. Calculated as if all replacements had the fist arrow.");
-            //exit(1);
-         }
- 
-         $1->second.push_back($3->second);
-         $$ =  new std::pair< ReplaceArrow, HfstTransducerPairVector> ($1->first, $1->second);
-         delete $3; 
-            
-      }
-      
-      | MAPPINGPAIR
-      {
-         // std::cerr << "mapping_vector : mapping"<< std::endl;      
-         HfstTransducerPairVector * mappingPairVector = new HfstTransducerPairVector();
-         mappingPairVector->push_back( $1->second );
-         $$ =  new std::pair< ReplaceArrow, HfstTransducerPairVector> ($1->first, * mappingPairVector);
-         delete $1; 
-      }
-     
-      ;
-
-    
-MAPPINGPAIR: REPLACE REPLACE_ARROW REPLACE
-      {
-        // std::cerr << "mapping : r2 arrow r2"<< std::endl;
-	hfst::xre::warn_about_special_symbols_in_replace($1);  
-	hfst::xre::warn_about_special_symbols_in_replace($3);  
-          HfstTransducerPair mappingPair(*$1, *$3);
-          $$ =  new std::pair< ReplaceArrow, HfstTransducerPair> ($2, mappingPair);
-
-          delete $1, $3;
-      }
-      | REPLACE REPLACE_ARROW REPLACE MARKUP_MARKER REPLACE
-      {
-      
-          HfstTransducerPair marks(*$3, *$5);
-          HfstTransducerPair tmpMappingPair(*$1, HfstTransducer(hfst::xre::format));
-          HfstTransducerPair mappingPair = create_mapping_for_mark_up_replace( tmpMappingPair, marks );
-          
-          $$ =  new std::pair< ReplaceArrow, HfstTransducerPair> ($2, mappingPair);
-         delete $1, $3, $5;
-      }
-      | REPLACE REPLACE_ARROW REPLACE MARKUP_MARKER
-      {
-   
-          HfstTransducer epsilon(hfst::internal_epsilon, hfst::xre::format);
-          HfstTransducerPair marks(*$3, epsilon);
-          HfstTransducerPair tmpMappingPair(*$1, HfstTransducer(hfst::xre::format));
-          HfstTransducerPair mappingPair = create_mapping_for_mark_up_replace( tmpMappingPair, marks );
-                   
-          $$ =  new std::pair< ReplaceArrow, HfstTransducerPair> ($2, mappingPair);
-         delete $1, $3;
-      }
-      | REPLACE REPLACE_ARROW MARKUP_MARKER REPLACE
-      {
-          HfstTransducer epsilon(hfst::internal_epsilon, hfst::xre::format);
-          HfstTransducerPair marks(epsilon, *$4);
-          HfstTransducerPair tmpMappingPair(*$1, HfstTransducer(hfst::xre::format));
-          HfstTransducerPair mappingPair = create_mapping_for_mark_up_replace( tmpMappingPair, marks );
-          
-          $$ =  new std::pair< ReplaceArrow, HfstTransducerPair> ($2, mappingPair);
-         delete $1, $4;
-      }
-       | LEFT_BRACKET_DOTTED RIGHT_BRACKET_DOTTED REPLACE_ARROW REPLACE
-      {
-          HfstTransducer epsilon(hfst::internal_epsilon, hfst::xre::format);
-          //HfstTransducer mappingTr(epsilon);
-          //mappingTr.cross_product(*$4);
-          HfstTransducerPair mappingPair(epsilon, *$4);
-          
-          $$ =  new std::pair< ReplaceArrow, HfstTransducerPair> ($3, mappingPair);
-          delete $4;
-      }
-      | LEFT_BRACKET_DOTTED REPLACE RIGHT_BRACKET_DOTTED REPLACE_ARROW REPLACE
-      {
-        //  HfstTransducer mappingTr(*$2);
-        //  mappingTr.cross_product(*$5);
-		  HfstTransducerPair mappingPair(*$2, *$5);
-          $$ =  new std::pair< ReplaceArrow, HfstTransducerPair> ($4, mappingPair);
-          delete $2, $5;
-      }
-      
-       | REPLACE REPLACE_ARROW LEFT_BRACKET_DOTTED RIGHT_BRACKET_DOTTED
-      {
-          HfstTransducer epsilon(hfst::internal_epsilon, hfst::xre::format);
-          HfstTransducerPair mappingPair(*$1, epsilon);
-          
-          $$ =  new std::pair< ReplaceArrow, HfstTransducerPair> ($2, mappingPair);
-          delete $1;
-      }
-      | REPLACE REPLACE_ARROW LEFT_BRACKET_DOTTED REPLACE RIGHT_BRACKET_DOTTED
-      {
-          HfstTransducerPair mappingPair(*$1, *$4);
-          $$ =  new std::pair< ReplaceArrow, HfstTransducerPair> ($2, mappingPair);
-          delete $1, $4;
-      }
-      
-      ;    
-
-// Contexts: ( ie. || k _ f , ... , f _ s )
-CONTEXTS_WITH_MARK:  CONTEXT_MARK CONTEXTS_VECTOR
-         {
-       
-         //std::cerr << "context w mark: conMark conVect"<< std::endl;      
-         
-         $$ =  new std::pair< ReplaceType, HfstTransducerPairVector> ($1, *$2);
-         //$$ = $2;
-         //std::cerr << "Context Mark: \n" << $1  << std::endl;
-   
-         }  
-         ;
-CONTEXTS_VECTOR: CONTEXT
-         {
-            HfstTransducerPairVector * ContextVector = new HfstTransducerPairVector();
-            ContextVector->push_back(*$1);
-            $$ = ContextVector;
-            delete $1; 
-         }
-
-      | CONTEXTS_VECTOR COMMA CONTEXT
-         {
-            $1->push_back(*$3);
-            $$ = $1;
-            delete $3; 
-         }
-      
-      ;
-CONTEXT: REPLACE CENTER_MARKER REPLACE 
-         {
-             HfstTransducer t1(*$1);
-             HfstTransducer t2(*$3);
-             t1.minimize().prune_alphabet(false);
-             t2.minimize().prune_alphabet(false);
-            $$ = new HfstTransducerPair(t1, t2);
-            delete $1, $3; 
-         }
-      | REPLACE CENTER_MARKER
-         {
-           // std::cerr << "Mapping: \n" << *$1  << std::endl;
-            HfstTransducer t1(*$1);
-            t1.minimize().prune_alphabet(false);
-
-            HfstTransducer epsilon(hfst::internal_epsilon, hfst::xre::format);
-            
-           // std::cerr << "Epsilon: \n" << epsilon  << std::endl;
-            $$ = new HfstTransducerPair(t1, epsilon);
-            delete $1; 
-         }
-      | CENTER_MARKER REPLACE
-         {
-            HfstTransducer t1(*$2);
-            t1.minimize().prune_alphabet(false);
-             
-            HfstTransducer epsilon(hfst::internal_epsilon, hfst::xre::format);
-            $$ = new HfstTransducerPair(epsilon, t1);
-            delete $2; 
-         }
-      ;
- CONTEXT_MARK: REPLACE_CONTEXT_UU
-         {
-            $$ = REPL_UP;
-         }
-         | REPLACE_CONTEXT_LU 
-         {
-            $$ = REPL_RIGHT;
-         }
-         | REPLACE_CONTEXT_UL
-         {
-            $$ = REPL_LEFT;
-         }
-         | REPLACE_CONTEXT_LL
-         {
-            $$ = REPL_DOWN;
-         }
-         ;
-     
-REPLACE_ARROW: REPLACE_RIGHT
-         {
-            $$ = E_REPLACE_RIGHT;
-         }
-         | OPTIONAL_REPLACE_RIGHT
-         {
-            $$ = E_OPTIONAL_REPLACE_RIGHT;
-         }
-         | RTL_LONGEST_MATCH
-          {
-            $$ = E_RTL_LONGEST_MATCH;
-         }
-         | RTL_SHORTEST_MATCH
-          {
-            $$ = E_RTL_SHORTEST_MATCH;
-         }
-         | LTR_LONGEST_MATCH
-          {
-            $$ = E_LTR_LONGEST_MATCH;
-         }
-         | LTR_SHORTEST_MATCH
-          {
-            $$ = E_LTR_SHORTEST_MATCH;
-         }
-         |  REPLACE_LEFT
-         {
-        	 $$ =  E_REPLACE_LEFT;
-         }
-         |   OPTIONAL_REPLACE_LEFT
-         {
-        	 $$ = E_OPTIONAL_REPLACE_LEFT;
-         }
-         ;
-
-////////////////
-REGEXP3: REGEXP4 { }
-       | REGEXP3 SHUFFLE REGEXP4 {
-            yyerror("No shuffle");
-            $$ = $1;
-            delete $3;
-        }
-       | REGEXP3 BEFORE REGEXP4 {
-            $$ = new HfstTransducer( before (*$1, *$3) );
-            delete $1, $3;
-        }
-       | REGEXP3 AFTER REGEXP4 {
-            $$ = new HfstTransducer( after (*$1, *$3) );
-            delete $1, $3;
-        }
-
-       ;
-  
-REGEXP4: REGEXP5 { }
-        // restriction rule
-       | REGEXP4 RIGHT_ARROW RESTR_CONTEXTS_VECTOR {
-            $$ = new HfstTransducer( restriction(*$1, *$3) ) ;
-            delete $1;
-            delete $3;
-        }
-       // doesn't exist in xfst
-       | REGEXP4 LEFT_ARROW REGEXP5 CENTER_MARKER REGEXP5 {
-            yyerror("No Arrows");
-            $$ = $1;
-            delete $3;
-            delete $5;
-        }
-       // doesn't exist in xfst
-       | REGEXP4 LEFT_RIGHT_ARROW REGEXP5 CENTER_MARKER REGEXP5 {
-            yyerror("No Arrows");
-            $$ = $1;
-            delete $3;
-            delete $5;
-        }
-       ;
-
-RESTR_CONTEXTS_VECTOR: RESTR_CONTEXT
-         {
-            HfstTransducerPairVector * ContextVector = new HfstTransducerPairVector();
-            ContextVector->push_back(*$1);
-            $$ = ContextVector;
-            delete $1; 
-         }
-
-      | RESTR_CONTEXTS_VECTOR COMMA RESTR_CONTEXT
-         {
-            $1->push_back(*$3);
-            $$ = $1;
-            delete $3; 
-         }
-      
-      ;
-      
-RESTR_CONTEXT: REGEXP4 CENTER_MARKER REGEXP4 
-         {
-            $$ = new HfstTransducerPair(*$1, *$3);
-            delete $1, $3; 
-         }
-      | REGEXP4 CENTER_MARKER
-         {
-           // std::cerr << "Mapping: \n" << *$1  << std::endl;
-            
-            HfstTransducer epsilon(hfst::internal_epsilon, hfst::xre::format);
-            
-           // std::cerr << "Epsilon: \n" << epsilon  << std::endl;
-            $$ = new HfstTransducerPair(*$1, epsilon);
-            delete $1; 
-         }
-      | CENTER_MARKER REGEXP4
-         {
-            HfstTransducer epsilon(hfst::internal_epsilon, hfst::xre::format);
-            $$ = new HfstTransducerPair(epsilon, *$2);
-            delete $2; 
-         }
-      | CENTER_MARKER
-         {
-            HfstTransducer empty(hfst::xre::format);
-            $$ = new HfstTransducerPair(empty, empty);
-         }
-      ;
-
-
-REGEXP5: REGEXP6 { }
-       | REGEXP5 UNION REGEXP6 {
-            $$ = & $1->disjunct(*$3, harmonize_);
-            delete $3;
-        }
-       | REGEXP5 INTERSECTION REGEXP6 {
-        // std::cerr << "Intersection: \n"  << std::endl;
-            $$ = & $1->intersect(*$3, harmonize_).minimize().prune_alphabet(false);
-            delete $3;
-        }
-       | REGEXP5 MINUS REGEXP6 {
-            $$ = & $1->subtract(*$3, harmonize_).prune_alphabet(false);
-            delete $3;
-        }
-       | REGEXP5 UPPER_MINUS REGEXP6 {
-            yyerror("No upper minus");
-            $$ = $1;
-            delete $3;
-        }
-       | REGEXP5 LOWER_MINUS REGEXP6 {
-            yyerror("No lower minus");
-            $$ = $1;
-            delete $3;
-        }
-       | REGEXP5 UPPER_PRIORITY_UNION REGEXP6 {
-            $$ = & $1->priority_union(*$3);
-            delete $3;
-        }
-       | REGEXP5 LOWER_PRIORITY_UNION REGEXP6 {
-            HfstTransducer* left = new HfstTransducer(*$1);
-            HfstTransducer* right =  new HfstTransducer(*$3);
-            right->invert();
-            left->invert();
-            $$ = & (left->priority_union(*right).invert());
-            delete $1, $3;
-        }
-       ;
-
-REGEXP6: REGEXP7 { }
-       | REGEXP6 REGEXP7 { 
-        $$ = & $1->concatenate(*$2, harmonize_);
-        delete $2;
-        }
-       ;
-
-REGEXP7: REGEXP8 { }
-       | REGEXP7 IGNORING REGEXP8 {
-            $$ = & $1->insert_freely(*$3, false); // no harmonization
-            delete $3;
-        }
-       | REGEXP7 IGNORE_INTERNALLY REGEXP8 {
-            yyerror("No ignoring internally");
-            $$ = $1;
-            delete $3;
-        }
-       | REGEXP7 LEFT_QUOTIENT REGEXP8 {
-            yyerror("No left quotient");
-            $$ = $1;
-            delete $3;
-        }
-       ;
-
-REGEXP8: REGEXP9 { }
-       | COMPLEMENT REGEXP8 {
-       		// TODO: forbid pair complement (ie ~a:b)
-       		HfstTransducer complement = HfstTransducer::identity_pair( hfst::xre::format );
-       		complement.repeat_star().minimize();
-       		complement.subtract(*$2).prune_alphabet(false);
-       		$$ = new HfstTransducer(complement);
-   			delete $2;
-        }
-       | CONTAINMENT REGEXP8 {
-    // std::cerr << "Containment: \n" << std::endl;
-            HfstTransducer* left = new HfstTransducer(hfst::internal_identity,
-                                    hfst::xre::format);
-            HfstTransducer* right = new HfstTransducer(hfst::internal_identity,
-                                    hfst::xre::format);
-            right->repeat_star();
-            left->repeat_star();
-
-            $$ = & right->concatenate(*$2).concatenate(*left).prune_alphabet(false);
-            delete $2;
-            delete left;
-        }
-       | CONTAINMENT_ONCE REGEXP8 {
-                                  std::cerr << "Contain 1 \n"<< std::endl;
-            HfstTransducer* left = new HfstTransducer(hfst::internal_unknown,
-                                    hfst::internal_unknown,
-                                    hfst::xre::format);
-            HfstTransducer* right = new HfstTransducer(hfst::internal_unknown,
-                                    hfst::internal_unknown,
-                                    hfst::xre::format);
-            right->repeat_star();
-            left->repeat_star();
-            HfstTransducer* contain_once = 
-                & (right->concatenate(*$2).concatenate(*left).prune_alphabet(false));
-            $$ = contain_once;
-            delete $2;
-            delete left;
-
-        }
-       | CONTAINMENT_OPT REGEXP8 {
-          
-            HfstTransducer* left = new HfstTransducer(hfst::internal_unknown,
-                                    hfst::internal_unknown,
-                                    hfst::xre::format);
-            HfstTransducer* right = new HfstTransducer(hfst::internal_unknown,
-                                    hfst::internal_unknown,
-                                    hfst::xre::format);
-            right->repeat_star();
-            left->repeat_star();
-            HfstTransducer* contain_once = 
-                & ((right->concatenate(*$2).concatenate(*left)));
-            $$ = & (contain_once->optionalize().prune_alphabet(false));
-            delete $2;
-            delete left;
-        }
-       ;
-
-REGEXP9: REGEXP10 { }
-       | REGEXP9 STAR {
-            $$ = & $1->repeat_star();
-        }
-       | REGEXP9 PLUS {
-            $$ = & $1->repeat_plus();
-        }
-       | REGEXP9 REVERSE {
-            $$ = & $1->reverse();
-        }
-       | REGEXP9 INVERT {
-            $$ = & $1->invert();
-        }
-       | REGEXP9 UPPER {
-            $$ = & $1->input_project();
-        }
-       | REGEXP9 LOWER {
-            $$ = & $1->output_project();
-        }
-       | REGEXP9 CATENATE_N {
-            $$ = & $1->repeat_n($2);
-        }
-       | REGEXP9 CATENATE_N_PLUS {
-            $$ = & $1->repeat_n_plus($2);
-        }
-       | REGEXP9 CATENATE_N_MINUS {
-            $$ = & $1->repeat_n_minus($2);
-        }
-       | REGEXP9 CATENATE_N_TO_K {
-            $$ = & $1->repeat_n_to_k($2[0], $2[1]);
-            free($2);
-        }
-       ;
-
-REGEXP10: REGEXP11 { }
-       | TERM_COMPLEMENT REGEXP10 {
-            HfstTransducer* any = new HfstTransducer(hfst::internal_identity,
-                                        hfst::xre::format);
-            $$ = & ( any->subtract(*$2));
-            delete $2;
-        }
-        /*
-       | SUBSTITUTE_LEFT REGEXP10 COMMA REGEXP10 COMMA REGEXP10 RIGHT_BRACKET {
-            yyerror("no substitute");
-            $$ = $2;
-        }
-        */
-       ;
-
-REGEXP11: REGEXP12 { }
-        | LEFT_BRACKET REGEXP2 RIGHT_BRACKET {
-            $$ = & $2->minimize();
-        }
-        | LEFT_PARENTHESIS REGEXP2 RIGHT_PARENTHESIS {
-            $$ = & $2->optionalize();
-        }
-        ;
-
-// building 3rd argument in the substitute list        
-SYMBOL_LIST: HALFARC {
-            if (strcmp($1, hfst::internal_unknown.c_str()) == 0)
-              {
-                $$ = new HfstTransducer(hfst::internal_identity, hfst::xre::format);
-              }
-            else
-              {
-                $$ = new HfstTransducer($1, $1, hfst::xre::format);
-              }
-            free($1);
-        } 
-        | SYMBOL_LIST HALFARC {
-            HfstTransducer * tmp ;
-            if (strcmp($2, hfst::internal_unknown.c_str()) == 0)
-              {
-                 tmp = new HfstTransducer(hfst::internal_identity, hfst::xre::format);
-              }
-            else
-              {
-                 tmp = new HfstTransducer($2, $2, hfst::xre::format);
-              }
-
-            $1->disjunct(*tmp, false); // do not harmonize
-            $$ = & $1->minimize();
-            delete $2, tmp; 
-            }
-        ;
-
-REGEXP12: LABEL { }
-        | LABEL WEIGHT { 
-            $$ = & $1->set_final_weights($2);
-        }
-        | READ_BIN {
-            hfst::HfstInputStream instream($1);
-            $$ = new HfstTransducer(instream);
-            instream.close();
-            free($1);
-        }
-        | READ_TEXT {
-            yyerror("no read text");
-        }
-        | READ_SPACED {
-            yyerror("no read spaced");
-        }
-        | READ_PROLOG {
-            yyerror("no read prolog");
-        }
-        | READ_RE {
-            yyerror("Definitely no read regex");
-        }
-        ;
-
-LABEL: HALFARC {
-        if (strcmp($1, hfst::internal_unknown.c_str()) == 0)
-          {
-            $$ = new HfstTransducer(hfst::internal_identity, hfst::xre::format);
-          }
-        else
-          {
-            HfstTransducer * tmp = new HfstTransducer($1, hfst::xre::format);
-	    $$ = hfst::xre::expand_definition(tmp, $1);
-          }
-        free($1);
-     }
-     |
-     HALFARC PAIR_SEPARATOR HALFARC { // FIXED: add identities, if needed
-     	     $$ = hfst::xre::xfst_label_to_transducer($1,$3);
-     /*	if (strcmp($1, hfst::internal_unknown.c_str()) == 0 && 
-	    strcmp($3, hfst::internal_unknown.c_str()) == 0 )
-	    {
-	    HfstTransducer id(hfst::internal_identity, hfst::internal_identity, hfst::xre::format);
-            HfstTransducer * retval = new HfstTransducer(hfst::internal_unknown, hfst::internal_unknown,
-                                       hfst::xre::format);
-	    retval->disjunct(id).minimize();
-	    $$ = retval;
-	    }	
-	else
-	{
-		$$ = new HfstTransducer($1, $3, hfst::xre::format);
-        }*/
-        free($1);
-        free($3);
-     }
-     | HALFARC PAIR_SEPARATOR_WO_RIGHT {
-        $$ = hfst::xre::xfst_label_to_transducer($1,hfst::internal_unknown.c_str());
-        /*$$ = new HfstTransducer($1, hfst::internal_unknown, hfst::xre::format);*/
-        free($1);
-     }
-     | PAIR_SEPARATOR_WO_LEFT HALFARC {
-        $$ = hfst::xre::xfst_label_to_transducer(hfst::internal_unknown.c_str(),$2);
-        /*$$ = new HfstTransducer(hfst::internal_unknown, $2, hfst::xre::format);*/
-        free($2);
-     }
-     | PAIR_SEPARATOR_SOLE { // FIXED: add identities
-        /*HfstTransducer id(hfst::internal_identity, hfst::internal_identity, hfst::xre::format);
-        HfstTransducer * retval = new HfstTransducer(hfst::internal_unknown, hfst::internal_unknown,
-                                  hfst::xre::format);
-	retval->disjunct(id).minimize();
-	$$ = retval;*/
-	$$ = hfst::xre::xfst_label_to_transducer(hfst::internal_unknown.c_str(), hfst::internal_unknown.c_str());	
-     }
-     | CURLY_BRACKETS {
-        HfstTokenizer TOK;
-        $$ = new HfstTransducer($1, TOK, hfst::xre::format);
-        free($1);
-     }
-     | CURLY_BRACKETS PAIR_SEPARATOR CURLY_BRACKETS {
-        HfstTokenizer TOK;
-        $$ = new HfstTransducer($1, $3, TOK, hfst::xre::format);
-        free($1);
-	free($3);
-     }
-     /*
-     | QUOTE {
-        HfstTokenizer TOK;
-        $$ = new HfstTransducer($1, TOK, hfst::xre::format);
-        free($1);
-     }
-     */
-     ;
-
-HALFARC: SYMBOL
-     | EPSILON_TOKEN {
-        $$ = strdup(hfst::internal_epsilon.c_str());
-     }
-     | ANY_TOKEN {
-        $$ = strdup(hfst::internal_unknown.c_str());
-     }
-     | QUOTED_LITERAL  {}
-     | BOUNDARY_MARKER {
-        $$ = strdup("@#@");
-     }
-     ;
-
-REGEXP_LIST: REGEXP_LIST COMMA REGEXP2 { 
-       $$->push_back(*($3));
-       delete $3; 
-     } 
-     | REGEXP2 { 
-       $$ = new hfst::HfstTransducerVector();
-       $$->push_back(*($1)); 
-       delete $1;
-     }
-     ;
-
-FUNCTION: FUNCTION_NAME {
-        $$ = strdup($1);
-    };
-
-%%
-
diff --git a/libhfst/src/parsers/xre_parse.yy b/libhfst/src/parsers/xre_parse.yy
index 8b3ba31..ada97af 100644
--- a/libhfst/src/parsers/xre_parse.yy
+++ b/libhfst/src/parsers/xre_parse.yy
@@ -1,4 +1,13 @@
 %{
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 #define YYDEBUG 1 
 
 #include <stdio.h>
diff --git a/libhfst/src/parsers/xre_utils.cc b/libhfst/src/parsers/xre_utils.cc
index d9bef28..24d65d2 100644
--- a/libhfst/src/parsers/xre_utils.cc
+++ b/libhfst/src/parsers/xre_utils.cc
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 /**
  * @file xre.cc
  *
@@ -1033,9 +1042,12 @@ void warn_about_hfst_special_symbol(const char * symbol)
     return;
   if (!verbose_)
     return;
-  std::ostream * err = xreerrstr();
-  *err << "warning: '" << symbol << "' is not an ordinary symbol in hfst" << std::endl;
-  xreflush(err);
+  if (hfst::xre::verbose_)
+    {
+      std::ostream * err = xreerrstr();
+      *err << "warning: '" << symbol << "' is not an ordinary symbol in hfst" << std::endl;
+      xreflush(err);
+    }
 }
 
 void warn_about_special_symbols_in_replace(HfstTransducer * t)
diff --git a/libhfst/src/parsers/xre_utils.h b/libhfst/src/parsers/xre_utils.h
index 3197fe2..058584b 100644
--- a/libhfst/src/parsers/xre_utils.h
+++ b/libhfst/src/parsers/xre_utils.h
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 /**
  * @file xre_utils.h
  *
diff --git a/libhfst/src/parsers/xre_utils.reentrant.cc b/libhfst/src/parsers/xre_utils.reentrant.cc
deleted file mode 100644
index da5e2dc..0000000
--- a/libhfst/src/parsers/xre_utils.reentrant.cc
+++ /dev/null
@@ -1,577 +0,0 @@
-/**
- * @file xre.cc
- *
- * @brief implements xre routines.
- */
-
-#include <cassert>
-#include <cstdlib>
-#include <cstring>
-
-#include "xre_utils.h"
-#include "HfstTransducer.h"
-
-using std::string;
-using std::map;
-using std::ostringstream;
-
-//extern char* yytext;
-//extern int yyparse();
-//extern int yynerrs;
-
-class yy_buffer_state;
-typedef yy_buffer_state * YY_BUFFER_STATE;
-typedef void * yyscan_t;
-extern int yyparse(yyscan_t);
-extern int yylex_init (yyscan_t*);
-extern YY_BUFFER_STATE yy_scan_string (const char *, yyscan_t);
-extern void yy_delete_buffer (YY_BUFFER_STATE, yyscan_t);
-extern int yylex_destroy (yyscan_t);
-
-int yyerror(void*, const char*)
-{
-  return 0;
-}
-
-int
-yyerror(const char *msg)
-{
-  /*
-#ifndef NDEBUG
-    fprintf(stderr, "*** xre parsing failed: %s\n", msg);
-    if (strlen(hfst::xre::data) < 60)
-    {
-        fprintf(stderr, "***    parsing %s [near %s]\n", hfst::xre::data,
-                yytext);
-    }
-    else
-    {
-        fprintf(stderr, "***    parsing %60s [near %s]...\n", 
-                hfst::xre::data, yytext);
-    }
-#endif
-  */
-    return 0;
-}
-
-namespace hfst 
-{ 
-namespace xre 
-{
-
-char* data;
-std::map<std::string,hfst::HfstTransducer*> definitions;
-  std::map<std::string,std::string>  function_definitions;
-  std::map<std::string,unsigned int> function_arguments;
-char* startptr;
-hfst::HfstTransducer* last_compiled;
-hfst::ImplementationType format;
-size_t len;
-
-  bool expand_definitions=false;
-  bool harmonize_=true;
-  bool verbose_=false;
-  FILE * warning_stream=NULL;
-
-  std::string substitution_function_symbol;
-
-void set_substitution_function_symbol(const std::string &symbol)
-{
-  substitution_function_symbol=symbol;
-}
-
-bool substitution_function(const hfst::StringPair &p, hfst::StringPairSet &sps)
-{
-  if (p.first == substitution_function_symbol ||
-      p.second == substitution_function_symbol)
-    {
-      sps.insert(hfst::StringPair(substitution_function_symbol, 
-                                  substitution_function_symbol));
-      return true;
-    }
-  return false;
-}
-
-
-int*
-get_n_to_k(const char* s)
-{
-    int* rv = static_cast<int*>(malloc(sizeof(int)*2));
-    char *endptr;
-    char *finalptr;
-    if (*(s + 1) == '{')
-      {
-        rv[0] = strtol(s + 2, &endptr, 10);
-        rv[1] = strtol(endptr + 1, &finalptr, 10);
-        assert(*finalptr == '}');
-      }
-    else
-      {
-        rv[0] = strtol(s + 1, &endptr, 10);
-        rv[1] = strtol(endptr + 1, &finalptr, 10);
-        assert(*finalptr == '\0');
-      }
-    return rv;
-}
-
-
-
-int
-getinput(char *buf, int maxlen)
-{
-    int retval = 0;
-    if ( maxlen > len ) {
-        maxlen = len;
-    }
-    memcpy(buf, data, maxlen);
-    data += maxlen;
-    len -= maxlen;
-    retval = maxlen;
-    return retval;
-}
-
-char*
-strip_curly(const char *s)
-{
-    const char *c = s;
-    char *stripped = (char*)calloc(sizeof(char),strlen(s)+1);
-    int i = 0;
-    while (*c != '\0')
-    {
-        // If first char is { or last one }, then skip it
-        if ( ( *c == '{' && i == 0 ) || ( *c == '}' && *(c + 1) == '\0' ) )
-                {
-                if (*(c + 1) == '\0')
-                        {
-                                break;
-                        }
-                        else
-                        {
-                                stripped[i] = *(c + 1);
-                                i++;
-                                c += 2;
-                        }
-                }
-        else
-        {
-                stripped[i] = *c;
-            i++;
-            c++;
-        }
-
-    }
-    stripped[i] = '\0';
-    return stripped;
-}
-
-
-char*
-strip_percents(const char *s)
-{
-    const char *c = s;
-    char *stripped = (char*)calloc(sizeof(char),strlen(s)+1);
-    size_t i = 0;
-    while (*c != '\0')
-    {
-        if (*c == '%')
-        {
-            if (*(c + 1) == '\0')
-            {
-                break;
-            }
-            else
-            {
-                stripped[i] = *(c + 1);
-                i++;
-                c += 2;
-            }
-        }
-        else
-        {
-            stripped[i] = *c;
-            i++;
-            c++;
-        }
-    }
-    stripped[i] = '\0';
-    return stripped;
-}
-
-char*
-add_percents(const char *s)
-  {
-    char* ns = static_cast<char*>(malloc(sizeof(char)*strlen(s)*2+1));
-    char* p = ns;
-    while (*s != '\0')
-      {
-        if ((*s == '@') || (*s == '-') || (*s == ' ') || (*s == '|') ||
-            (*s == '!') || (*s == ':') || (*s == ';') || (*s == '0') ||
-            (*s == '\\') || (*s == '&') || (*s == '?') || (*s == '$') ||
-            (*s == '+') || (*s == '*') || (*s == '/') || (*s == '/') ||
-            (*s == '_') || (*s == '(') || (*s == ')') || (*s == '{') ||
-            (*s == '}') || (*s == '[') || (*s == ']'))
-          {
-            *p = '%';
-            p++;
-          }
-        *p = *s;
-        p++;
-        s++;
-      }
-    *p = '\0';
-    return ns;
-  }
-
-char *
-get_quoted(const char *s)
-{
-    const char *qstart = strchr((char*) s, '"') + 1;
-    const char *qend = strrchr((char*) s, '"');
-    char* qpart = strdup(qstart);
-    *(qpart+ (size_t) (qend - qstart)) = '\0';
-    return qpart;
-}
-
-char*
-parse_quoted(const char *s)
-{
-    char* quoted = get_quoted(s);
-    char* rv = static_cast<char*>(malloc(sizeof(char)*strlen(quoted)));
-    char* p = quoted;
-    char* r = rv;
-    while (*p != '\0')
-      {
-        if (*p != '\\')
-          {
-            *r = *p;
-            r++;
-            p++;
-          }
-        else if (*p == '\\')
-          {
-            switch (*(p + 1))
-              {
-              case '0':
-              case '1':
-              case '2':
-              case '3':
-              case '4':
-              case '5':
-              case '6':
-              case '7':
-                fprintf(stderr, "*** XRE unimplemented: "
-                        "parse octal escape in %s", p);
-                *r = '\0';
-                p = p + 5;
-                break;
-              case 'a':
-                *r = '\a';
-                r++;
-                p = p + 2;
-                break;
-              case 'b':
-                *r = '\b';
-                r++;
-                p = p + 2;
-                break;
-              case 'f':
-                *r = '\f';
-                r++;
-                p = p + 2;
-                break;
-              case 'n':
-                *r = '\n';
-                r++;
-                p = p + 2;
-                break;
-              case 'r':
-                *r = '\r';
-                r++;
-                p = p + 2;
-                break;
-              case 't':
-                *r = '\t';
-                r++;
-                p = p + 2;
-                break;
-              case 'u':
-                fprintf(stderr, "Unimplemented: parse unicode escapes in %s", p);
-                *r = '\0';
-                r++;
-                p = p + 6;
-                break;
-              case 'v':
-                *r = '\v';
-                r++;
-                p = p + 2;
-                break;
-              case 'x':
-                  {
-                    char* endp;
-                    int i = strtol(p + 2, &endp, 10);
-                    if ( 0 < i && i <= 127)
-                      {
-                        *r = static_cast<char>(i);
-                      }
-                    else
-                      {
-                        fprintf(stderr, "*** XRE unimplemented: "
-                                "parse \\x%d\n", i);
-                        *r = '\0';
-                      }
-                    r++;
-                    assert(endp != p);
-                    p = endp;
-                   break;
-                }
-              case '\0':
-                fprintf(stderr, "End of line after \\ escape\n");
-                *r = '\0';
-                r++;
-                p++;
-                break;
-              default:
-                *r = *(p + 1);
-                r++;
-                p += 2;
-                break;
-              }
-          }
-      }
-    *r = '\0';
-    free(quoted);
-    return rv;
-}
-
-double
-get_weight(const char *s)
-{
-    double rv = -3.1415;
-    const char* weightstart = s;
-    while ((*weightstart != '\0') && 
-           ((*weightstart == ' ') || (*weightstart == '\t') ||
-            (*weightstart == ';')))
-    {
-        weightstart++;
-    }
-    char* endp;
-    rv = strtod(weightstart, &endp);
-    assert(endp != weightstart);
-    return rv;
-}
-
-HfstTransducer*
-compile(const string& xre, map<string,HfstTransducer*>& defs,
-        map<string, string>& func_defs,
-        map<string, unsigned int > func_args,
-        ImplementationType impl)
-{
-    // lock here?
-    data = strdup(xre.c_str());
-    startptr = data;
-    len = strlen(data);
-    definitions = defs;
-    function_definitions = func_defs;
-    function_arguments = func_args;
-    format = impl;
-
-    yyscan_t scanner;
-    yylex_init(&scanner);
-    YY_BUFFER_STATE bs = yy_scan_string(startptr,scanner);
-    
-    yyparse(scanner);
-
-    yy_delete_buffer(bs,scanner);
-    yylex_destroy(scanner);
-
-    free(startptr);
-    data = 0;
-    len = 0;
-    //if (yynerrs == 0)
-    //  {
-        HfstTransducer* rv = new HfstTransducer(*last_compiled);
-        delete last_compiled;
-        return rv;
-        //  }
-        //else
-        // {
-        //return new HfstTransducer(impl);
-        // }
-}
-
-bool is_valid_function_call
-(const char * name, const std::vector<HfstTransducer> * args)
-{
-  std::map<std::string, std::string>::const_iterator name2xre
-    = function_definitions.find(name);
-  std::map<std::string, unsigned int >::const_iterator name2args
-    = function_arguments.find(name);
-
-  if (name2xre == function_definitions.end() || 
-      name2args == function_arguments.end())
-    {
-      fprintf(stderr, "No such function defined: '%s'\n", name);
-      return false;
-    }
-
-  unsigned int number_of_args = name2args->second;
-
-  if ( number_of_args != args->size())
-    {
-      fprintf(stderr, "Wrong number of arguments: function '%s' expects %i, %i given\n", 
-              name, (int)number_of_args, (int)args->size());
-      return false;
-    }
-
-  return true;
-}
-
-const char * get_function_xre(const char * name)
-{
-  std::map<std::string,std::string>::const_iterator it 
-    = function_definitions.find(name);
-  if (it == function_definitions.end())
-    {
-      return NULL;
-    }
-  return it->second.c_str();
-}
-
-void define_function_args(const char * name, const std::vector<HfstTransducer> * args)
-{
-  if (! is_valid_function_call(name, args))
-    {
-      fprintf(stderr, "Could not define function args\n");
-      exit(1);
-    }
-  unsigned int arg_number = 1;
-  for (std::vector<HfstTransducer>::const_iterator it = args->begin();
-       it != args->end(); it++)
-    {
-      std::string function_arg = "@" + std::string(name) +
-        (static_cast<ostringstream*>( &(ostringstream() << arg_number) )->str()) + "@";
-      definitions[function_arg] = new HfstTransducer(*it);
-      arg_number++;
-    }
-}
-
-void undefine_function_args(const char * name)
-{
-  std::map<std::string, unsigned int>::const_iterator it = function_arguments.find(name);
-  if (it == function_arguments.end())
-    {
-      return;
-    }
-  for (unsigned int arg_number = 1; arg_number <= it->second; arg_number++)
-    {
-      std::string function_arg = "@" + std::string(name) +
-        (static_cast<ostringstream*>( &(ostringstream() << arg_number) )->str()) + "@";
-      definitions.erase(function_arg);
-    }
-}
-
-bool is_definition(const char* symbol)
-{
-  std::string symbol_(symbol);
-  if (definitions.find(symbol_) == definitions.end())
-    return false;
-  return true;
-}
-
-HfstTransducer*
-expand_definition(HfstTransducer* tr, const char* symbol)
-{
-  if (expand_definitions)
-    {
-      for (std::map<std::string,hfst::HfstTransducer*>::const_iterator it
-             = definitions.begin(); it != definitions.end(); it++) 
-        {
-          if (strcmp(it->first.c_str(), symbol) == 0)
-            {
-              tr->substitute(hfst::StringPair(symbol,symbol), *(it->second));
-              tr->remove_from_alphabet(symbol);
-              break;
-            }
-        }
-    }
-  return tr;
-}
-
-static const char * get_print_format(const char * symbol)
-{
-  if (strcmp(hfst::internal_identity.c_str(), symbol) == 0)
-    return "?";
-  if (strcmp(hfst::internal_unknown.c_str(), symbol) == 0)
-    return "?";
-  if (strcmp(hfst::internal_epsilon.c_str(), symbol) == 0)
-    return "0";
-  return symbol;
-}
-
-HfstTransducer*
-xfst_label_to_transducer(const char* input, const char* output)
-{
-  HfstTransducer * retval = NULL;
-
-  // non-matching definitions
-  if ( (is_definition(input) || is_definition(output)) && 
-       strcmp(input, output) != 0 )
-    {
-      char msg[256];
-      sprintf(msg, "invalid use of definitions in label %s:%s", 
-              get_print_format(input), get_print_format(output));
-      yyerror(msg);
-    }
-  if  (strcmp(input, hfst::internal_unknown.c_str()) == 0 && 
-       strcmp(output, hfst::internal_unknown.c_str()) == 0)
-    {
-      retval = new HfstTransducer(hfst::internal_unknown, hfst::internal_unknown, hfst::xre::format);
-      HfstTransducer id(hfst::internal_identity, hfst::internal_identity, hfst::xre::format);
-      retval->disjunct(id).minimize();
-    }
-  else if (strcmp(input, hfst::internal_unknown.c_str()) == 0)
-    {
-      retval = new HfstTransducer(hfst::internal_unknown, output, hfst::xre::format);
-      HfstTransducer output_tr(output, output, hfst::xre::format);
-      retval->disjunct(output_tr).minimize();
-    }
-  else if (strcmp(output, hfst::internal_unknown.c_str()) == 0)
-    {
-      retval = new HfstTransducer(input, hfst::internal_unknown, hfst::xre::format);
-      HfstTransducer input_tr(input, input, hfst::xre::format);
-      retval->disjunct(input_tr).minimize();
-    }
-  else
-    {
-      retval = new HfstTransducer(input, output, hfst::xre::format);
-    }
-
-  if (is_definition(input))
-    retval = expand_definition(retval, input);
-
-  return retval;
-}
-
-void warn_about_special_symbols_in_replace(HfstTransducer * t)
-{
-  if (!verbose_)
-    return;
-
-  StringSet alphabet = t->get_alphabet();
-  for (StringSet::const_iterator it = alphabet.begin(); 
-       it != alphabet.end(); it++)
-    {
-      if (HfstTransducer::is_special_symbol(*it) && 
-          *it != hfst::internal_epsilon &&
-          *it != hfst::internal_unknown &&
-          *it != hfst::internal_identity)
-        {         
-          fprintf(warning_stream, "warning: using special symbol '%s' in replace rule, "
-                  "use substitute instead\n", it->c_str());
-        }
-    }
-}
-
-} }
-
-
diff --git a/libhfst/src/parsers/xre_utils.reentrant.h b/libhfst/src/parsers/xre_utils.reentrant.h
deleted file mode 100644
index 4cf55dc..0000000
--- a/libhfst/src/parsers/xre_utils.reentrant.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * @file xre_utils.h
- *
- * @brief auxiliary functions for handling Xerox compatible regular expressions
- * (XRE).
- */
-
-#ifndef GUARD_xre_utils_h
-#define GUARD_xre_utils_h
-
-#include <map>
-#include "HfstTransducer.h"
-
-namespace hfst { namespace xre {
-
-extern char* data;
-extern char* startptr;
-extern size_t len;
-extern std::map<std::string,hfst::HfstTransducer*> definitions;
-extern std::map<std::string,std::string> function_definitions;
-extern std::map<std::string,unsigned int> function_arguments;
-extern HfstTransducer* last_compiled;
-extern ImplementationType format;
-
-void set_substitution_function_symbol(const std::string &symbol);
-
-bool substitution_function(const hfst::StringPair &p, hfst::StringPairSet &sps);
-
-/**
- * @brief input handling function for flex that parses strings.
- */
-int getinput(char *buf, int maxlen);
-
-
-/**
- * @brief remove starting and ending curly bracket from given string @a.
- */
-char* strip_curly(const char *s);
-
-/**
- * @brief remove percent escaping from given string @a s.
- */
-char* strip_percents(const char *s);
-
-/**
- * @brief add percents to string to form valid XRE symbol.
- */
-char* add_percents(const char* s);
-
-/**
- * @brief find first quoted segment from strign @a s.
- */
-char* get_quoted(const char *s);
-
-char* parse_quoted(const char *s);
-
-int* get_n_to_k(const char* s);
-
-double get_weight(const char* s);
-/**
- * @brief compile new transducer
- */
-HfstTransducer* compile(const std::string& xre,
-                        std::map<std::string,hfst::HfstTransducer*>& defs,
-                        std::map<std::string,std::string>& func_defs,
-                        std::map<std::string,unsigned int> func_args,
-                        hfst::ImplementationType type);
-
-/** 
- * @brief For a single-transition transducer, if the transition symbol is a name for
- * transducer definition, expand the transition into the corresponding transducer.
- */
-HfstTransducer* expand_definition(HfstTransducer* tr, const char* symbol);
-
- void define_function_args(const char * name, const std::vector<HfstTransducer> * args);
- void undefine_function_args(const char * name);
-
- const char * get_function_xre(const char * name);
-
-bool is_definition(const char* symbol);
-
-bool is_valid_function_call(const char * name, const std::vector<HfstTransducer> * args);
-
-/** @brief Parse "input:output", ":output", "input:" or ":". */
- HfstTransducer* xfst_label_to_transducer(const char* input, const char* output);
-
- void warn_about_special_symbols_in_replace(HfstTransducer *t);
-
-} } // namespaces
-#endif
-// vim: set ft=cpp.doxygen:
diff --git a/libhfst/src/string-utils.cc b/libhfst/src/string-utils.cc
new file mode 100644
index 0000000..2501ce3
--- /dev/null
+++ b/libhfst/src/string-utils.cc
@@ -0,0 +1,34 @@
+// Copyright (c) 2016 University of Helsinki
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more
+// information.
+
+//! @file string-utils.cc
+//!
+//! @brief Implementation of some string manipulation utilities.
+
+#include "string-utils.h"
+
+using std::string;
+
+namespace hfst {
+
+string&
+replace_all(string& haystack, const string& needle, const string& replacement)
+  {
+    size_t last_needle = haystack.find(needle);
+    size_t needle_len = needle.length();
+    size_t replacement_len = replacement.length();
+    while (last_needle != string::npos)
+      {
+        haystack.replace(last_needle, needle_len, replacement);
+        last_needle = haystack.find(needle, last_needle + replacement_len);
+      }
+    return haystack;
+  }
+
+}
diff --git a/libhfst/src/string-utils.h b/libhfst/src/string-utils.h
new file mode 100644
index 0000000..7f916e1
--- /dev/null
+++ b/libhfst/src/string-utils.h
@@ -0,0 +1,31 @@
+// Copyright (c) 2016 University of Helsinki
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more
+// information.
+
+//! @file string-utils.h
+//!
+//! @brief String manipulation utilities.
+
+#ifndef GUARD_string_utils_h
+#define GUARD_string_utils_h
+
+#include <string>
+
+using std::string;
+
+namespace hfst {
+
+//! @brief Replace all strings needles in haystack with replacement, moving
+//! the cursor past the replacement each time, ie if needle is in replacement,
+//! it won't be replaced. */
+
+string& replace_all(string& haystack, const string& needle, const string& replacement);
+
+}
+
+#endif // GUARD_string_utils_h
diff --git a/m4/README b/m4/README
new file mode 100644
index 0000000..392f6aa
--- /dev/null
+++ b/m4/README
@@ -0,0 +1 @@
+Debian Wheezy and Ubuntu Precise's ancient autoconf need this folder to exist.
diff --git a/man/Makefile.am b/man/Makefile.am
index 767441d..ca043ad 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -34,7 +34,7 @@ hfst_tools=hfst-compare.1 hfst-compose.1 \
 	hfst-affix-guessify.1 hfst-edit-metadata.1 hfst-expand-equivalences.1 \
 	hfst-grep.1 hfst-guess.1 hfst-guessify.1 hfst-info.1 hfst-multiply.1 \
 	hfst-pair-test.1 hfst-prune-alphabet.1 hfst-reweight.1 hfst-shuffle.1 \
-	hfst-traverse.1 hfst-proc2.1 hfst-pmatch.1 hfst-pmatch2fst.1 \
+	hfst-traverse.1 hfst-tokenize.1 hfst-pmatch.1 hfst-pmatch2fst.1 \
 	hfst-optimized-lookup.1
 hfst_xfst=hfst-xfst.1 
 hfst_apertium_proc=hfst-apertium-proc.1 
@@ -50,7 +50,7 @@ hfst_twolc_subprograms= htwolcpre1.1 htwolcpre2.1 htwolcpre3.1 # hand-written
 aliases= hfst-determinise.1 hfst-expand.1 hfst-intersect.1 hfst-minimise.1 \
 	 hfst-minus.1 hfst-sfstpl2fst.1 hfst-summarise.1 hfst-union.1 hfst-proc.1 \
 	 hfst-optimised-lookup.1 hfst-train-tagger-loc.1 hfst-train-tagger-system.1 \
-	 hfst-twolc-loc.1 hfst-twolc-system.1
+	 hfst-twolc-loc.1 hfst-twolc-system.1 hfst-proc2.1 hfst-tokenise.1
 
 dist_man1_MANS=$(hfst_tools) $(hfst_xfst) $(hfst_apertium_proc) $(hfst_foma) $(hfst_foma_wrapper) \
 	$(hfst_tag_and_reweight) $(hfst_train_tagger) $(hfst_train_tagger_subprograms) $(hfst_twolc) \
@@ -100,6 +100,12 @@ hfst-twolc-system.1:
 hfst-union.1:
 	$(LN_S) hfst-disjunct.1 hfst-union.1
 
+hfst-proc2.1:
+	$(LN_S) hfst-tokenize.1 hfst-proc2.1
+
+hfst-tokenise.1:
+	$(LN_S) hfst-tokenize.1 hfst-tokenise.1
+
 
 # Generate man pages for all tools and their aliases
 man:
diff --git a/man/hfst-proc2.1 b/man/hfst-tokenize.1
similarity index 67%
rename from man/hfst-proc2.1
rename to man/hfst-tokenize.1
index 984818b..79821ad 100644
--- a/man/hfst-proc2.1
+++ b/man/hfst-tokenize.1
@@ -1,10 +1,10 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.40.4.
-.TH HFST-PROC2 "1" "December 2015" "HFST" "User Commands"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.46.4.
+.TH HFST-TOKENIZE "1" "January 2016" "HFST" "User Commands"
 .SH NAME
-hfst-proc2 \- =perform matching/lookup on text streams
+hfst-tokenize \- =perform matching/lookup on text streams
 .SH SYNOPSIS
-.B hfst-proc2
-[\fI--segment | --xerox | --cg\fR] [\fIOPTIONS\fR...] \fIRULESET\fR
+.B hfst-tokenize
+[\fI\,--segment | --xerox | --cg\/\fR] [\fI\,OPTIONS\/\fR...] \fI\,RULESET\/\fR
 .SH DESCRIPTION
 perform matching/lookup on text streams
 .SS "Common options:"
@@ -35,7 +35,14 @@ Print weights
 .TP
 \fB\-\-tokenize\-multichar\fR
 Tokenize multicharacter symbols
-(by default only one utf\-8 character is tokenized at a time                         regardless of what is present in the alphabet)  \fB\-\-segment\fR              Segmenting / tokenization mode (default)
+(by default only one utf\-8 character is tokenized at a time
+regardless of what is present in the alphabet)
+.TP
+\fB\-t\fR, \fB\-\-time\-cutoff\fR=\fI\,S\/\fR
+Limit search after having used S seconds per input
+.TP
+\fB\-\-segment\fR
+Segmenting / tokenization mode (default)
 .TP
 \fB\-\-xerox\fR
 Xerox output
@@ -51,8 +58,8 @@ Use standard streams for input and output (for now).
 Report bugs to <hfst\-bugs at helsinki.fi> or directly to our bug tracker at:
 <https://sourceforge.net/tracker/?atid=1061990&group_id=224521&func=browse>
 .PP
-hfst\-proc2 home page:
-<https://kitwiki.csc.fi/twiki/bin/view/KitWiki//HfstProc2>
+hfst\-tokenize home page:
+<https://kitwiki.csc.fi/twiki/bin/view/KitWiki//HfstTokenize>
 .br
 General help using HFST software:
 <https://kitwiki.csc.fi/twiki/bin/view/KitWiki//HfstHome>
diff --git a/new_library/Makefile b/new_library/Makefile
deleted file mode 100644
index a19b29f..0000000
--- a/new_library/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-
-FPIC = -fPIC
-
-CXX = g++
-WARNING = -Wall -Wcast-qual -Wconversion -std=c++98 -Wno-deprecated -ansi
-
-CC = g++
-CL = $(CC)
-CFLAGS = -O3 $(WARNING) $(SGILIB) $(CDT) $(READLINE) $(FPIC)
-LDFLAGS =
-
-CXXFLAGS = $(CFLAGS)
-LXXFLAGS = $(LDFLAGS)
-
-INSTALL = install
-INSTALL_DIR = install -d -m 755
-INSTALL_LIBS = $(INSTALL) -s
-
-DESTDIR =
-PREFIX = /usr/local/
-
-OBJ = MyFst.o
-
-libmfstl.so: MyFst.o
-	$(CL) -shared -o $@ $^ $(LDFLAGS)
-
-clean:
-	rm -f *.o libmfstl.so
-
-libinstall: dynlib hfiles
-
-dynlib:	libmfstl.so
-	$(INSTALL_LIBS) $^ $(PREFIX)lib
-	(ldconfig || true)
-
-hfiles: MyFst.h
-	- at if [ ! -d $(PREFIX)include/mfstl ]; then mkdir -p $(PREFIX)include/mfstl; fi
-	$(INSTALL) $^ $(PREFIX)include/mfstl
-
diff --git a/new_library/MyFst.cc b/new_library/MyFst.cc
deleted file mode 100644
index f22f99b..0000000
--- a/new_library/MyFst.cc
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "MyFst.h"
-#include <stdio.h>
-
-/** @file MyFst.cc
-    @brief Contains a very simple transducer library,
-    My Finite-State Transducer Library - MFSTL, which is used 
-    to exemplify how a new library is added under HFST.
-*/
-
-namespace mfstl {
-
-  MyFst::MyFst() :
-    istring(""), ostring("") {
-  }
-
-  MyFst::MyFst(std::string str) :
-    istring(str), ostring(str) {
-  }
-
-  MyFst::MyFst(std::string istr, std::string ostr) :
-    istring(istr), ostring(ostr) {
-  }
-
-  MyFst::~MyFst() {
-  }
-  
-  void MyFst::invert() {
-    istring = ostring;
-    ostring = istring;
-  }
-
-  MyFst * MyFst::copy() {
-    return new MyFst(this->istring, this->ostring);
-  }
-  
-}
-
-using namespace mfstl;
-
-int main(int argc, char **argv) {
-  (void)argc;
-  (void)argv;
-
-  MyFst * test = new MyFst("foo", "bar");
-  delete test;
-
-  fprintf(stderr, "test: OK\n");
-
-  return 0;
-}
-
diff --git a/new_library/MyFst.h b/new_library/MyFst.h
deleted file mode 100644
index 5f2bfdf..0000000
--- a/new_library/MyFst.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#include <string>
-
-/** @file MyFst.h
-    @brief Contains declarations for a very simple transducer library,
-    My Finite-State Transducer Library - MFSTL, which is used 
-    to exemplify how a new library is added under HFST.
-
-    The classes and functions do not work in any way properly
-    but serve as an example of a transducer library that is
-    added under HFST.
-*/
-
-/** @brief Namespace for classes in the example transducer library MFSTL. */
-namespace mfstl {
-
-  /** @brief The transducer class of MFSTL. */
-  class MyFst {
-  private:
-    std::string istring;
-    std::string ostring;
-  public:
-    /** @brief Basic constructor. */
-    MyFst();
-    /** @brief Another constructor. */
-    MyFst(std::string str);
-    /** @brief Yet another constructor. */
-    MyFst(std::string istr, std::string ostr);
-    /** @brief Delete transducer. */
-    ~MyFst();
-    
-    /** @brief Invert the transducer. */
-    void invert();
-    /** @brief Return a deep copy of the transducer. */
-    MyFst * copy(); 
-  };
-
-}
-
diff --git a/new_library/README b/new_library/README
deleted file mode 100644
index f39395b..0000000
--- a/new_library/README
+++ /dev/null
@@ -1,9 +0,0 @@
-This is a directory that contains a very simple example of a transducer library
-that is added under HFST. 
-The name of the library is My Finite-State Transducer Library - MFSTL.
-The library contains only two files, MyFst.h and MyFst.cc. 
-In the files is defined a transducer class MyFst that is written in namespace mfstl.
-
-The file libhfst/src/implementations/MfstlTransducer.cc forms a bridge between HFST and MFSTL.
-
-More info coming..
diff --git a/new_library/test.cc b/new_library/test.cc
deleted file mode 100644
index a33321e..0000000
--- a/new_library/test.cc
+++ /dev/null
@@ -1,16 +0,0 @@
-#include "MyFst.h"
-#include <stdio.h>
-
-using namespace mfstl;
-
-int main(int argc, char **argv) {
-  (void)argc;
-  (void)argv;
-
-  MyFst * test = new MyFst("foo", "bar");
-  delete test;
-
-  fprintf(stderr, "test: OK\n");
-
-  return 0;
-}
diff --git a/old_python/Makefile.am b/old_python/Makefile.am
deleted file mode 100644
index 451fd8e..0000000
--- a/old_python/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-SUBDIRS = test
-EXTRA_DIST = hfstBot.py hfst_swig_extensions.h libhfst.i omor_query.py README setup.py
-AUTOMAKE_OPTIONS = subdir-objects
diff --git a/old_python/README b/old_python/README
deleted file mode 100644
index 5e509cb..0000000
--- a/old_python/README
+++ /dev/null
@@ -1,55 +0,0 @@
-This is the old SWIG binding for using HFST library with Python.
-A newer binding is in the directory "../python".
-
-It is recommended to use python version 3 as it has a better support for
-UTF-8 than version 2. All examples are tested with python3.
-
-
-Building and installation is done using the standard Python module distutils.
-Once you've successfully built libhfst, use the script setup.py to build the
-Python extension eg. like so:
-
-    python3 setup.py build_ext --inplace
-
-
-If you wish to install the extension, run
-
-    python3 setup.py install
-
-
-To test the Python bindings after installation, go to directory 'test' and
-run there
-
-    ./test.sh (--python python3.X)
-
-
-For further information, consult
-
-    python3 setup.py --help
-    python3 setup.py --help-commands
-
-and the distutils documentation.
-
-
-Some version combinations of SWIG and Python make HFST exception classes
-subclasses of Python's _object instead of Exception. Then you will get an
-error like
-
-    TypeError: catching classes that do not inherit from BaseException is not allowed
-
-If this is the case, run
-
-    sed -i 's/class HfstException(_object):/class HfstException(Exception):/' libhfst.py
-
-after build to be able to use HfstException and its subclasses in Python. 
-
-
-If you are using SWIG bindings locally, or want to run ./test/test.sh before
-installation, add path/to/hfst-top-dir/swig/ to PYTHONPATH and 
-path/to/hfst-top-dir/libhfst/src/.libs/ to LD_LIBRARY_PATH.
-
-
-Demonstration utilities:
-	      omor_query.py, lookup and basic usage (needs omorfi installed)
-	      hfstBot.py, a irc bot for lookup
-
diff --git a/old_python/doc/Doxyfile b/old_python/doc/Doxyfile
deleted file mode 100644
index 5bc2bcb..0000000
--- a/old_python/doc/Doxyfile
+++ /dev/null
@@ -1,1514 +0,0 @@
-# Doxyfile 1.6.1
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
-# iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME           = "HFST - Helsinki Finite-State Transducer Technology - Python API"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER         = "version 3.8.3"
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       =
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
-# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
-# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
-# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC    = YES
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH        =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH    =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF      = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for
-# Java. For instance, namespaces will be presented as packages, qualified
-# scopes will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources only. Doxygen will then generate output that is more tailored for
-# Fortran.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for
-# VHDL.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it parses.
-# With this tag you can assign which parser to use for a given extension.
-# Doxygen has a built-in mapping, but you can override or extend it using this tag.
-# The format is ext=language, where ext is a file extension, and language is one of
-# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
-# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
-# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
-# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
-
-EXTENSION_MAPPING      =
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate getter
-# and setter methods for a property. Setting this option to YES (the default)
-# will make doxygen to replace the get and set methods by a property in the
-# documentation. This will only work if the methods are indeed getting or
-# setting a simple type. If this is not the case, or you want to show the
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-# is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
-# determine which symbols to keep in memory and which to flush to disk.
-# When the cache is full, less often used symbols will be written to disk.
-# For small to medium size projects (<1000 input files) the default value is
-# probably good enough. For larger projects a too small cache size can cause
-# doxygen to be busy swapping symbols to and from disk most of the time
-# causing a significant performance penality.
-# If the system has enough physical memory increasing the cache will improve the
-# performance by keeping more symbols in memory. Note that the value works on
-# a logarithmic scale so increasing the size by one will rougly double the
-# memory usage. The cache size is given by this formula:
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols
-
-SYMBOL_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC         = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = NO
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base
-# name of the file that contains the anonymous namespace. By default
-# anonymous namespace are hidden.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = YES
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = YES
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = YES
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = YES
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS        = YES
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
-# hierarchy of group names into alphabetical order. If set to NO (the default)
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = YES
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS       =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES       = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page.
-# This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER    =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
-# doxygen. The layout file controls the global structure of the generated output files
-# in an output format independent way. The create the layout file that represents
-# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
-# file name after the option, if omitted DoxygenLayout.xml will be used as the name
-# of the layout file.
-
-LAYOUT_FILE            =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS               = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE           =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT                  = "libhfst.py" # api_documentation.dox
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-# also the default input encoding. Doxygen uses libiconv (or the iconv built
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
-# the list of possible encodings.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
-
-FILE_PATTERNS          =
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE              = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE                =
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS        =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH           =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS       =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH             =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output.
-# If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER           =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis.
-# Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match.
-# The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
-FILTER_PATTERNS        =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code.
-# Otherwise they will link to the documentation.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER            =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER            =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET        =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS     = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded. For this to work a browser that supports
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files
-# will be generated that can be used as input for Apple's Xcode 3
-# integrated development environment, introduced with OSX 10.5 (Leopard).
-# To create a documentation set, doxygen will generate a Makefile in the
-# HTML output directory. Running make will produce the docset in that
-# directory and running "make install" will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
-
-GENERATE_DOCSET        = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
-# feed. A documentation feed provides an umbrella under which multiple
-# documentation sets from a single provider (such as a company or product suite)
-# can be grouped.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
-# should uniquely identify the documentation set bundle. This should be a
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE               =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
-
-CHM_INDEX_ENCODING     =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
-# are set, an additional index file will be generated that can be used as input for
-# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
-# HTML documentation.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
-# be used to specify the file name of the resulting .qch file.
-# The path specified is relative to the HTML output folder.
-
-QCH_FILE               =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#namespace
-
-QHP_NAMESPACE          =
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
-# For more information please see
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
-
-QHP_CUST_FILTER_NAME   =
-
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
-
-QHP_CUST_FILTER_ATTRS  =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
-# filter section matches.
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
-
-QHP_SECT_FILTER_ATTRS  =
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
-# be used to specify the location of Qt's qhelpgenerator.
-# If non-empty doxygen will try to run qhelpgenerator on the generated
-# .qhp file.
-
-QHG_LOCATION           =
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX          = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE   = 1
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to YES, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
-# Windows users are probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW      = NO
-
-# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
-# and Class Hierarchy pages using a tree view instead of an ordered list.
-
-USE_INLINE_TREES       = YES
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-# Use this tag to change the font size of Latex formulas included
-# as images in the HTML documentation. The default is 10. Note that
-# when you change the font size after a successful doxygen run you need
-# to manually remove any form_*.png images from the HTML output directory
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE       = 10
-
-# When the SEARCHENGINE tag is enable doxygen will generate a search box for the HTML output. The underlying search engine uses javascript
-# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP) or Qt help (GENERATE_QHP)
-# there is already a search function so this one should typically
-# be disabled.
-
-SEARCHENGINE           = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = "/dev/null"
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER.
-
-LATEX_SOURCE_CODE      = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA             =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD                =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader.
-# This is useful
-# if you want to understand what is going on.
-# On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = YES
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF     = YES
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH           =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS  =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED             = HAVE_OPENFST HAVE_SFST HAVE_FOMA
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED      = HFST_EXCEPTION_CHILD_DECLARATION
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-#
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-#
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES               =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
-# powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = NO
-
-# By default doxygen will write a font called FreeSans.ttf to the output
-# directory and reference it in all dot files that doxygen generates. This
-# font does not include all possible unicode characters however, so when you need
-# these (or just want a differently looking font) you can specify the font name
-# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
-# which can be done by putting it in a standard location or by setting the
-# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
-# containing the font.
-
-DOT_FONTNAME           = FreeSans
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
-# The default size is 10pt.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the output directory to look for the
-# FreeSans.ttf font (which doxygen will put there itself). If you specify a
-# different font using DOT_FONTNAME you can set the path where dot
-# can find it using this tag.
-
-DOT_FONTPATH           =
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK               = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
-# doxygen will generate a call dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable call graphs
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
-# doxygen will generate a caller dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable caller
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT       = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH               =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS           =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the
-# number of direct children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not
-# seem to support this out of the box. Warning: Depending on the platform used,
-# enabling this option may lead to badly anti-aliased labels on the edges of
-# a graph (i.e. they become hard to read).
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS      = YES
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP            = YES
diff --git a/old_python/doc/libhfst.py b/old_python/doc/libhfst.py
deleted file mode 100644
index aae8860..0000000
--- a/old_python/doc/libhfst.py
+++ /dev/null
@@ -1,2424 +0,0 @@
-## @package libhfst 
-# This package contains all HFST functionalities.
-
-## @mainpage
-#
-# HFST - The Helsinki Finite-State Transducer technology is intended for creating and manipulating weighted or unweighted synchronic transducers implementing regular relations.
-# UTF-8 is chosen as the character encoding used in the HFST software. Currently, HFST has been implemented using the
-# <a href="http://www.ims.uni-stuttgart.de/projekte/gramotron/SOFTWARE/SFST.html">SFST</a>, 
-# <a href="http://www.openfst.org">OpenFst</a> and 
-# <a href="http://code.google.com/p/foma/">foma</a> software libraries.
-# Other versions may be added in some future release. SFST and foma implementations are unweighted and OpenFst implementation is weighted.
-#
-# Some of the HFST interface functionalities have also been implemented for HFST's own two transducer formats, HfstBasicTransducer and optimized lookup format.
-# The previous is useful for converting between transducer formats and storing transducersin an implementation-independent format. The latter is used for fast lookup
-# of strings in a transducer.
-#
-# All implementations work according to the same interface, so it is possible to compile the same piece of code using different backend libraries.
-#
-# For a quick start to the HFST interface with examples, see <a href="QuickStart.html">here</a>.
-#
-# The examples given in this documentation use <a href="http://www.fsmbook.com/">Xerox transducer notation</a>.
-#
-# <br>
-#
-# \section features Features
-#
-#   - Create transducers and apply \link libhfst.HfstTransducer operations\endlink on them
-#
-#   - Create transducers \link libhfst.HfstBasicTransducer from scratch\endlink
-#
-#   - \link libhfst.HfstBasicTransducer.states Iterate\endlink through a transducer's states and transitions
-#
-#   - Create transducers by \link libhfst.HfstTokenizer tokenizing\endlink UTF-8 strings with multicharacter symbols
-#
-#   - Apply two-level, replace, restriction and coercion \link libhfst.two_level_if rules\endlink
-#
-#
-# \section tutorial Tutorial
-#
-#   - A <a href="QuickStart.html">quick start</a> to the HFST interface with examples
-#
-#   - <a href="HfstWithSFSTOpenFstAndFoma.html">Using HFST</a> with SFST, OpenFst and foma
-#
-# \section download_hfst Download
-#
-#   - <a href="http://sourceforge.net/projects/hfst/files/hfst">Download</a> and 
-#   <a href="InstallHfst.html">install</a> the HFST interface and command line tools
-#
-#
-#\section links Links
-#
-#   - <a href="https://kitwiki.csc.fi/twiki/bin/view/KitWiki/HfstCommandLineToolFunctionalities">Examples</a> of programs implemented using the HFST interface
-#
-#   - <a href="https://kitwiki.csc.fi/twiki/bin/view/KitWiki/HfstHome">Documentation</a> of the HFST project
-#
-#   <br>
-
-
-
-## A class that represents a path in a transducer
-# 
-# Has members weight, input and output.
-#
-class HfstPath:
-    pass
-
-## Base class for HfstExceptions. Holds its own name and the file and line number where it was thrown.
-class HfstException:
-    pass
-
-## Two or more HfstTransducers are not of the same type.
-class HfstTransducerTypeMismatchException(HfstException):
-    pass
-
-## The library required by the implementation type requested is not linked to HFST. 
-# 
-# An example:
-# \verbatim
-# try:
-#     tr = libhfst.HfstTransducer('foo', 'bar', type)
-# except libhfst.ImplementationTypeNotAvailableException:
-#     print "ERROR: Type requested is not available."
-# \endverbatim
-class ImplementationTypeNotAvailableException(HfstException):
-    pass
-
-## Function has not been implemented (yet).
-class FunctionNotImplementedException(HfstException):
-    pass
-
-## Stream cannot be read. 
-# 
-# Thrown by
-# libhfst.HfstTransducer.__init__
-# 
-# An example:
-# \verbatim
-# try:
-#     instr = libhfst.HfstInputStream('foofile')
-# except libhfst.StreamNotReadableException:
-#     print "ERROR: file cannot be read."
-# \endverbatim
-class StreamNotReadableException(HfstException):
-    pass
-
-## Stream cannot be written. 
-# 
-# Thrown by #libhfst.HfstOutputStream.redirect and #libhfst.HfstTransducer.write_in_att_format
-# 
-# An example:
-# \verbatim
-# try:
-#     tr = libhfst.HfstTransducer('foo', libhfst.FOMA_TYPE)
-#     outstr = libhfst.HfstOutputStream('testfile')
-#     outstr.redirect(tr)
-# except libhfst.StreamCannotBeWrittenException:
-#     print "ERROR: file cannot be written."
-# \endverbatim
-class StreamCannotBeWrittenException(HfstException):
-    pass
-
-## Stream is closed. 
-# 
-# Thrown by #libhfst.HfstTransducer.write_in_att_format
-# #libhfst.HfstTransducer.__init__
-# #libhfst.HfstOutputStream::redirect
-# 
-# An example:
-# 
-# \verbatim
-# try:
-#     tr = libhfst.HfstTransducer('foo', libhfst.TROPICAL_OPENFST_TYPE)
-#     outstr = libhfst.HfstOutputStream('testfile', tr.get_type())
-#     outstr.close()
-#     outstr.redirect(tr)
-# except libhfst.StreamIsClosedException:
-#     print "ERROR: stream to file is closed."
-# \endverbatim
-class StreamIsClosedException(HfstException):
-    pass
-
-## The stream is at end.
-# 
-#     Thrown by
-#     #libhfst.HfstTransducer
-#     #libhfst.HfstInputStream.__init__
-class EndOfStreamException(HfstException):
-    pass
-
-## Transducer is cyclic. 
-# 
-#     Thrown by #libhfst.extract_paths and
-#     #libhfst.extract_paths_fd. An example:
-# \verbatim
-# transducer = libhfst.HfstTransducer('a', 'b', libhfst.TROPICAL_OPENFST_TYPE)
-# transducer.repeat_star()
-# try:
-#     results = libhfst.detokenize_paths(libhfst.extract_paths(transducer))
-#     print "The transducer has %i paths" % len(results)
-# except libhfst.TransducerIsCyclicException:
-#     print "The transducer is cyclic and has an infinite number of paths."
-# \endverbatim
-class TransducerIsCyclicException(HfstException):
-    pass
-
-## The stream does not contain transducers. 
-# 
-#     Thrown by 
-#     #libhfst.HfstTransducer
-#     #libhfst.HfstInputStream.__init__
-# 
-#     An example. The file 'foofile' contains
-# \verbatim
-# This is a text file.
-# Here is another line.
-# The file ends here.
-# \endverbatim
-# 
-# When we try to read it, an exception will be thrown:
-# 
-# \verbatim
-# try:
-#     instr = libhfst.HfstInputStream('foofile')
-# except libhfst.NotTransducerStreamException:
-#     print "ERROR: file does not contain transducers."
-# \endverbatim
-class NotTransducerStreamException(HfstException):
-    pass
-
-## The stream is not in valid AT&T format. 
-# 
-#     An example. The file 'testfile.att' contains
-# 
-# \verbatim
-# 0       1       a      b
-# 1
-# c
-# \verbatim
-# 
-# When we try to read it, an exception is thrown:
-# 
-# \verbatim
-# ifile = open('testfile.att', 'rb')
-# try:
-#     t = libhfst.HfstTransducer(ifile, libhfst.TROPICAL_OPENFST_TYPE, 'epsilon')
-#     print "read one transducer"
-# except libhfst.NotValidAttFormatException:
-#     print "Error reading transducer: not valid AT&T format."
-# ifile.close()
-# \endverbatim
-#
-#     thrown by 
-#     #libhfst.HfstTransducer.__init__
-class NotValidAttFormatException(HfstException):
-    pass
-
-## documentation (todo)
-class NotValidLexcFormatException(HfstException):
-    pass
-
-## State is not final (and cannot have a final weight). 
-# 
-#     An example:
-# 
-# \verbatim
-# tr = libhfst.HfstBasicTransducer()
-# tr.add_state(1)
-# # An exception is thrown as state number 1 is not final
-# try:
-#     w = tr.get_final_weight(1)
-# except libhfst.StateIsNotFinalException:
-#     print "ERROR: State is not final."
-# \endverbatim
-# 
-# You should use function #libhfst.HfstBasicTransducer.is_final_state if you are not sure whether a
-# state is final.
-# 
-# Thrown by #libhfst.HfstBasicTransducer get_final_weight.
-class StateIsNotFinalException(HfstException):
-    pass
-
-## Context transducers are not automata.
-# 
-#     This exception is thrown by
-#     #libhfst.replace_up
-#     when either context transducer does not have equivalent input and
-#     output symbols in all its transitions.
-# 
-#     An example:
-# 
-# \verbatim
-# type = libhfst.SFST_TYPE
-# # The second context transducer is 
-# contexts = (libhfst.HfstTransducer('c', type), libhfst.HfstTransducer('c', 'd', type))
-# mapping = libhfst.HfstTransducer('a', 'b', type)
-# alphabet = ('a','a'), ('b','b'), ('c','c'), ('d','d')
-# # An exception is thrown
-# try:
-#     rule = libhfst.replace_up(contexts, mapping, True, alphabet)
-# except libhfst.ContextTransducersAreNotAutomataException:
-#     print "ERROR: Context transducers must be automata!"
-# \endverbatim
-class ContextTransducersAreNotAutomataException(HfstException):
-    pass
-
-## Transducers are not automata.
-# 
-#     This exception is thrown by
-#     #libhfst.HfstTransducer.cross_product
-#     when either input transducer does not have equivalent input and
-#     output symbols in all its transitions.
-class TransducersAreNotAutomataException(HfstException):
-    pass
-
-## The state number argument is not valid.
-# 
-#     An example:
-# 
-# \verbatim
-# tr = libhfst.HfstBasicTransducer()
-# tr.add_state(1)
-# # An exception is thrown as there is no state number 2
-# w = tr.get_final_weight(2)
-# \endverbatim
-class StateIndexOutOfBoundsException(HfstException):
-    pass
-
-## Transducer has a malformed HFST header. 
-# 
-# Thrown by #libhfst.HfstTransducer.__init__ #libhfst.HfstInputStream
-class TransducerHeaderException(HfstException):
-    pass
-
-## An OpenFst transducer does not have an input symbol table. 
-# 
-#     When converting from OpenFst to tropical or log HFST, the OpenFst transducer
-#     must have at least an input symbol table. If the output symbol table
-#     is missing, it is assumed to be equivalent to the input symbol table.
-# 
-#     Thrown by libhfst.HfstTransducer.__init__
-class MissingOpenFstInputSymbolTableException(HfstException):
-    pass
-
-## Two or more transducers do not have the same type.
-# 
-#     This can happen if (1) the calling and called transducer in a binary
-#     operation, (2) two transducers in a pair of transducers,
-#     (3) two consecutive transducers coming from an HfstInputStream or
-#     (4) two transducers in a function taking two or more transducers as
-#     arguments do not have the same type.
-# 
-# An example:
-# \verbatim
-# foo = libhfst.HfstTransducer('foo', libhfst.SFST_TYPE)
-# bar = libhfst.HfstTransducer('bar', libhfst.FOMA_TYPE)
-# foo.disjunct(bar)   # an exception is thrown 
-# \endverbatim
-class TransducerTypeMismatchException(HfstException):
-    pass
-
-## TODO: The set of transducer pairs is empty. 
-# 
-#     Thrown by rule functions. An example:
-# 
-# \verbatim
-#     contexts = (),  # contexts is empty
-#     restr = libhfst.restriction(contexts, mapping, alphabet, twol_type, direction); 
-# \endverbatim
-class EmptySetOfContextsException(HfstException):
-    pass
-
-## The type of a transducer is not specified.
-# 
-#    This exception is thrown when an implementation type argument
-#    is ERROR_TYPE.
-class SpecifiedTypeRequiredException(HfstException):
-    pass
-
-## An error happened probably due to a bug in the HFST code.
-class HfstFatalException(HfstException):
-    pass
-
-## Transducer has wrong type. 
-# 
-#     This exception suggests that an HfstTransducer has not been properly
-#     initialized, probably due to a bug in the HFST library. Alternatively
-#     the default constructor of HfstTransducer has been called at some point. 
-# 
-#     @see #libhfst.HfstTransducer.__init__
-class TransducerHasWrongTypeException(HfstException):
-    pass
-
-## String is not valid utf-8. 
-# 
-#     This exception suggests that an input string is not valid utf8.
-# 
-class IncorrectUtf8CodingException(HfstException):
-    pass
-
-## An argument string is an empty string.
-# A transition symbol cannot be an empty string.
-class EmptyStringException(HfstException):
-    pass
-
-## A bug in the HFST code.
-class SymbolNotFoundException(HfstException):
-    pass
-
-## A piece of metadata in an HFST header is not supported.
-class MetadataException(HfstException):
-    pass
-
-## An SFST transducer, unweighted.
-SFST_TYPE = _libhfst.SFST_TYPE
-
-## An OpenFst transducer with tropical weights.
-TROPICAL_OPENFST_TYPE = _libhfst.TROPICAL_OPENFST_TYPE
-
-## An OpenFst transducer with logarithmic weights (limited support). 
-LOG_OPENFST_TYPE = _libhfst.LOG_OPENFST_TYPE
-
-## A foma transducer, unweighted.
-FOMA_TYPE = _libhfst.FOMA_TYPE
-
-## An HFST optimized lookup transducer, unweighted.
-HFST_OL_TYPE = _libhfst.HFST_OL_TYPE
-
-## An HFST optimized lookup transducer with weights.
-HFST_OLW_TYPE = _libhfst.HFST_OLW_TYPE
-
-## HFST2 header present, conversion required.
-HFST2_TYPE = _libhfst.HFST2_TYPE
-
-## Format left open by e.g. default constructor.
-UNSPECIFIED_TYPE = _libhfst.UNSPECIFIED_TYPE
-
-## Type not recognised. This type might be returned by a function if an error occurs.
-ERROR_TYPE = _libhfst.ERROR_TYPE
-
-## Push weights toward initial state.
-# @see #libhfst.HfstTransducer.push_weights
-TO_INITIAL_STATE = _libhfst.TO_INITIAL_STATE
-
-## Push weights toward final state(s).
-# @see #libhfst.HfstTransducer.push_weights
-TO_FINAL_STATE = _libhfst.TO_FINAL_STATE
-
-
-## A wrapper for file, possibly needed in Windows
-class HfstFile:
-  ## Close the file
-  def close():
-      pass
-  ## Write \a string to the file
-  def write(string):
-      pass
-
-## Opens the file \a filename with arguments \a args
-# @return HfstFile
-def hfst_open(filename, args):
-    pass
-
-
-## A simple transducer class with tropical weights.
-#
-#    An example of creating an HfstBasicTransducer [foo:bar baz:baz] 
-#    with weight 0.4 from scratch:
-#
-# \verbatim
-#  # Create an empty transducer
-#  # The transducer has initially one start state (number zero) 
-#  # that is not final
-#  fsm = libhfst.HfstBasicTransducer()
-#  # Add two states to the transducer
-#  fsm.add_state(1)
-#  fsm.add_state(2)
-#  # Create a transition [foo:bar] leading to state 1 with weight 0.1
-#  tr = libhfst.HfstBasicTransition(1, 'foo', 'bar', 0.1)
-#  # and add it to state zero
-#  fsm.add_transition(0, tr)
-#  # Add a transition [baz:baz] with weight 0 from state 1 to state 2 
-#  fsm.add_transition(1, libhfst.HfstBasicTransition(2, 'baz', 'baz', 0.0))
-#  # Set state 2 as final with weight 0.3
-#  fsm.set_final_weight(2, 0.3)
-# \endverbatim
-#
-#    An example of iterating through the states and transitions of the above transducer
-#    when printing them in AT&T format to standard output:
-#
-# \verbatim
-#  # Go through all states
-#  for state in fsm.states(): 
-#        # Go through all transitions
-#        for transition in fsm.transitions(state):
-#              print "%i %i %s %s %f" % (state, transition.get_target_state(), transition.get_input_symbol(), transition.get_output_symbol(), transition,get_weight())
-#        # Print final states 
-#        if fsm.is_final_state(state): 
-#              print "%i %f" % (state, fsm.get_final_weight(state))
-# \endverbatim
-#
-# @see #libhfst.HfstBasicTransition
-class HfstBasicTransducer:
-
-
-    ## Add a new state to this transducer and return its number.      
-    #  @return The next (smallest) free state number.
-    def add_state():
-        pass
-
-    ## Add a state \a s to this graph.
-    # If the state already exists, it is not added again.
-    # All states with state number smaller than \a s are also
-    # added to the transducer if they did not exist before.
-    # @return \a state
-    def add_state(state):
-        pass
-
-    ## The states of the transducer.
-    # @return A tuple of state numbers.
-    def states():
-        pass
-
-    ## Explicitly add \a symbol to the alphabet of the graph.
-    # @note Usually the user does not have to take care of the alphabet
-    #       of a graph. This function can be useful in some special cases.
-    # @ param symbol The string to be added.
-    def add_symbol_to_alphabet(symbol):
-        pass
-
-    ## Explicitly add \a symbols to the alphabet of the graph.
-    # @note Usually the user does not have to take care of the alphabet of a graph. This function can be useful in some special cases.
-    # @param symbols A tuple of strings to be added.
-    def add_symbols_to_alphabet(symbols):
-        pass
-
-    ## Add a transition \a transition to state \a state, \a add_symbols_to_alphabet defines whether the transition symbols are added to the alphabet. 
-    # If state \a state does not exist, it is created.
-    def add_transition(state, transition, add_symbols_to_alphabet=True):
-        pass
-    
-    ## Disjunct this transducer with a one-path transducer defined by consecutive string pairs in \a spv that has weight \a weight.
-    #
-    # @pre This graph must be a trie where all weights are in final states,
-    #      i.e. all transitions have a zero weight.
-    #
-    # There is no way to test whether a graph is a trie, so the use
-    # of this function is probably limited to fast construction of a lexicon.
-    # Here is an example:
-    # 
-    # \verbatim
-    # lexicon = libhfst.HfstBasicTransducer()
-    # TOK = libhfst.HfstTokenizer
-    # lexicon.disjunct(TOK.tokenize('dog'), 0.3)
-    # lexicon.disjunct(TOK.tokenize('cat'), 0.5)
-    # lexicon.disjunct(TOK.tokenize('elephant'), 1.6)
-    # \endverbatim
-    def disjunct(stringpairpath, weight):
-        pass
-
-    ## The symbols in the alphabet of the transducer.     
-    # The symbols do not necessarily occur in any transitions of the transducer. 
-    # Epsilon, unknown and identity symbols are always included in the alphabet.
-    # @return A tuple of symbols (strings).
-    def get_alphabet():
-        pass
-
-    ## Get the final weight of state \a state in this transducer.
-    def get_final_weight(state):
-        pass
-
-    ## Get the biggest state number in use. 
-    # @return The biggest state number in use.
-    def get_max_state():
-        pass
-
-    ## Harmonize this transducer and \a another.
-    #
-    # In harmonization the unknown and identity symbols in transitions of both graphs
-    # are expanded according to the symbols that are previously unknown to the graph.
-    #
-    # For example the graphs
-    # \verbatim
-    # [a:b ?:?]
-    # [c:d ? ?:c]\endverbatim
-    # are expanded to
-    # \verbatim
-    # [ a:b [?:? | ?:c | ?:d | c:d | d:c | c:? | d:?] ]
-    # [ c:d [? | a | b] [?:c| a:c | b:?] ]\endverbatim
-    # when harmonized.
-    #
-    # The symbol '?' means \@_UNKNOWN_SYMBOL_\@ in either or both sides of a transition
-    # (transitions of type [?:x], [x:?] and [?:?]). The transition [?] means [\@_IDENTITY_SYMBOL_\@].
-    #
-    # @note This function is always called for all transducer arguments of functions
-    #       that take two or more graphs as their arguments, unless otherwise said.
-    def harmonize(another):
-        pass
-
-    ## Create a transducer with one initial state that has state number zero and is not a final state, i.e. create an empty transducer.
-    def __init__(self):
-        pass
-
-    ## Create a deep copy of HfstBasicTransducer \a transducer.
-    def __init__(self, transducer):
-        pass
-
-    ## Create a transducer equivalent to HfstTransducer \a transducer.
-    def __init__(self, transducer):
-        pass
-
-    ## Create a transducer as defined in file \a file in AT&T format.
-    # TODO: An example.
-    # @pre \a file is not at end, otherwise an exception is thrown.
-    # @note Multiple AT&T transducer definitions are separated with the line "--".
-    def __init__(self, file):
-        pass
-
-    ## Insert freely any number of \a symbol_pair in the transducer with weight \a weight.
-    # @param symbol_pair A string pair to be inserted.
-    # @param weight The weight of the inserted symbol pair.
-    def insert_freely(symbol_pair, weight):
-        pass
-
-    ## Insert freely any number of any symbol in \a symbol_pairs in the graph with weight \a weight.
-    # @param symbol_pairs A tuple of string pairs to be inserted.
-    # @param weight The weight of the inserted symbol pair.
-    def insert_freely(symbol_pairs, weight):
-        pass
-
-   ## Insert freely any number of \a transducer in this transducer.
-   # param transducer An HfstBasicTransducer to be inserted.
-    def insert_freely(transducer):
-        pass
-
-    ## Whether state \a state is final. 
-    def is_final_state(state):
-        pass
-
-    ## The assignment operator.
-    # @return This transducer.
-    def assign(transducer):
-        pass
-    
-   ## Get the transitions of state \a state in this transducer. 
-   # If the state does not exist, a @a StateIndexOutOfBoundsException is thrown.
-   # @return A tuple of state numbers.
-    def transitions(state):
-        pass
-
-   ## Remove all symbols that do not occur in transitions of the transudcer from its alphabet. 
-   #  Epsilon, unknown and identity symbols are always included in the alphabet.
-    def prune_alphabet():
-        pass
-    
-    ## Remove symbol \a symbol from the alphabet of the graph. 
-    #  @note Use with care, removing symbols that occur in the transitions of the graph can have unexpected results.
-    # @param symbol The string to be removed.
-    def remove_symbol_from_alphabet(symbol):
-        pass
-    
-    ## Remove symbols \a symbols from the alphabet of the graph. 
-    #  @note Use with care, removing symbols that occur in the transitions of the graph can have unexpected results.
-    # @param symbols A tuple of strings to be removed.
-    def remove_symbols_from_alphabet(symbols):
-        pass
-
-    ## Set the final weight of state \a state in this transducer to \a weight. 
-    # If the state does not exist, it is created.
-    def set_final_weight(state, weight):
-        pass
-    
-    ## Sort the arcs of this transducer according to input and output symbols.
-    # @return This transducer.
-    def sort_arcs():
-        pass
-
-    ## Substitute \a old_symbol with \a new_symbol in all transitions. \a input_side and \a output_side define whether the substitution is made on input and output sides.
-    # @return This transducer.
-    def substitute(old_symbol, new_symbol, input_side=True, output_side=True):
-        pass
-    
-    ## Substitute all transition symbols as defined in \a substitutions.
-    # For each transition symbol x, \a substitutions is searched and if a mapping x -> X is found,
-    # the transition symbol x is replaced with X. If no mapping is found, the transition remains the same.
-    # The weights remain the same.
-    # @param substitutions A dictionary that maps symbols (strings) to symbols (strings).
-    def substitute_symbols(substitutions):
-        pass
-    
-    ## Substitute all transitions as defined in \a substitutions.
-    # For each transition x:y, \a substitutions is searched and if a mapping x:y -> X:Y is found,
-    # the transition x:y is replaced with X:Y. If no mapping is found, the transition remains the same.
-    # The weights remain the same.
-    # @param substitutions A dictionary that maps transitions (string pairs) to transitions (string pairs).
-    def substitute_symbol_pairs(substitutions):
-        pass
-    
-    ## Substitute all transitions \a sp with a set of transitions \a sps.
-    # The weights remain the same.
-    # @param sp A transition (string pair) to be substituted.
-    # @param sps A tuple of substituting transitions (string pairs).
-    def substitute(sp, sps):
-        pass
-    
-    ## Substitute all transitions \a old_pair with \a new_pair.
-    # @param old_pair The transition (string pair) to be substituted.
-    # @param new_pair The substituting transition (string pair).
-    def substitute(old_pair, new_pair):
-        pass
-        
-    ## Substitute all transitions equal to \a sp with a copy of \a transducer
-    #
-    # Copies of \a transducer are attached to this graph with epsilon transitions.
-    #
-    # The weights of the transitions to be substituted are copied
-    # to epsilon transitions leaving from the source state of
-    # the transitions to be substituted to the initial state
-    # of a copy of \a transducer.
-    #
-    # The final weights in \a transducer are copied to epsilon transitions leading from
-    # the final states (after substitution non-final states)
-    # of \a transducer to target states of transitions equal to \a sp
-    # (that are substituted) in this transducer.
-    #
-    # @param sp The transition (string pair) to be substituted.
-    # @param transducer The substituting transducer.
-    def substitute(sp, transducer):
-        pass
-    
-    ## Write this transducer in AT&T format to file \a file, \a write_weights defines whether weights are written.
-    def write_in_att_format(file, write_weights=True):
-        pass
-
-
-## Print an HfstBasicTransducer
-def print(hfst_basic_transducer):
-    pass
-
-## A transition class that consists of a target state, input and output symbols and a a tropical weight.
-# @see libhfst.HfstBasicTransducer
-class HfstBasicTransition:
-
-    ## Create an HfstBasicTransition leading to target state \a state with input symbol \a input, output symbol \a output and weight \a weight.
-    # @param state Number of the target state.
-    # @param input The input string.
-    # @param output The output string.
-    # @param weight The weight.
-    # @throws EmptyStringException
-    def __init__(self, state, input, output, weight):
-        pass
-
-    ## Get the input symbol of the transition.
-    def get_input_symbol():
-        pass
-
-    ## Get the output symbol of the transition.
-    def get_output_symbol():
-        pass
-
-    ## Get number of the target state of the transition.
-    def get_target_state():
-        pass
-        
-    ## Get the weight of the transition.
-    def get_weight():
-        pass
-
-
-## Print an HfstBasicTransition
-def print(hfst_basic_transition):
-    pass
-
-
-
-## A synchronous finite-state transducer.
-# 
-# \section argument_handling Argument handling
-# 
-# Transducer functions modify their calling object and return 
-# a reference to the calling object after modification, 
-# unless otherwise mentioned.
-# Transducer arguments are usually not modified.
-# \verbatim
-# # transducer is reversed
-# transducer.reverse()
-# # transducer2 is not modified, but a copy of it is disjuncted with
-# # transducer1 
-# transducer1.disjunct(transducer2)                                       
-# # a chain of functions is possible
-# transducer.reverse().determinize().reverse().determinize()      
-# \endverbatim
-# 
-# \section implementation_types Implementation types
-# 
-# Currently, an HfstTransducer has three implementation types that are well supported.
-# When an HfstTransducer is created, its type is defined with an argument.
-# For functions that take a transducer as an argument, the type of the calling transducer
-# must be the same as the type of the argument transducer:
-# \verbatim
-# # this will cause an error
-# tropical_transducer.disjunct(sfst_transducer)
-# # this works, but weights are lost in the conversion
-# tropical_transducer.convert(libhfst.SFST_TYPE).disjunct(sfst_transducer)     
-# # this works, information is not lost
-# tropical_transducer.disjunct(sfst_transducer.convert(libhfst.TROPICAL_OPENFST_TYPE)) 
-# \endverbatim
-# 
-# \section creating_transducers Creating transducers
-# 
-# With HfstTransducer constructors it is possible to create empty, 
-# epsilon, one-transition and single-path transducers.
-# Transducers can also be created from scratch with #libhfst.HfstBasicTransducer
-# and converted to an HfstTransducer.
-# More complex transducers can be combined from simple ones with various functions.
-# 
-# <a name="symbols"></a> 
-# \section special_symbols Special symbols
-# 
-# The HFST transducers support transitions with epsilon, unknown and identity symbols.
-# The special symbols are explained in TODO
-# 
-# An example:
-# \verbatim
-# # In the xerox formalism used here, '?' means the unknown symbol
-# # and '?:?' the identity pair 
-# 
-# tr1 = libhfst.HfstBasicTransducer()
-# tr1.add_state(1)
-# tr1.set_final_weight(1, 0)
-# tr1.add_transition(0, libhfst.HfstBasicTransition(1, '@_UNKNOWN_SYMBOL_@, 'foo', 0) )
-# 
-# # tr1 is now [ ?:foo ]
-# 
-# tr2 = libhfst.HfstBasicTransducer tr2
-# tr2.add_state(1)
-# tr2.add_state(2)
-# tr2.set_final_weight(2, 0)
-# tr2.add_transition(0, libhfst.HfstBasicTransition(1, '@_IDENTITY_SYMBOL_@', '@_IDENTITY_SYMBOL_@', 0) )
-# tr2.add_transition(1, libhfst.HfstBasicTransition(2, 'bar', 'bar', 0) )
-# 
-# # tr2 is now [ [ ?:? ] [ bar:bar ] ]
-# 
-# type = libhfst.SFST_TYPE
-# Tr1 = HfstTransducer (tr1, type)
-# Tr2 = HfstTransducer (tr2, type)
-# Tr1.disjunct(Tr2)
-# 
-# # Tr1 is now [ [ ?:foo | bar:foo ]  |  [[ ?:? | foo:foo ] [ bar:bar ]] ] 
-# \endverbatim
-class HfstTransducer:
-
-    ## Whether HFST is linked to the transducer library needed by implementation type \a type.
-    def is_implementation_type_available(type):
-        pass
-
-    ## Create an uninitialized transducer (use with care). 
-    # 
-    # @note This constructor leaves the backend implementation variable
-    # uninitialized. An uninitialized transducer is likely to cause a
-    # TransducerHasWrongTypeException at some point unless it is given
-    # a value at some point. 
-    def __init__(self):
-        pass
-
-    ## Read a binary transducer from transducer stream \a instr. 
-    # 
-    # The stream can contain tranducers or OpenFst, foma or SFST
-    # type in their native format, i.e. without an HFST header. 
-    # If the backend implementations are used as such, they are converted into HFST transducers.
-    # 
-    # For more information on transducer conversions and the HFST header
-    # structure, see 
-    # <a href="https://kitwiki.csc.fi/twiki/bin/view/KitWiki/HfstTransducerHeader">here</a>.
-    # 
-    # @pre ((instr.is_eof() == instr.is_bad() == False) and instr.is_fst() ), Otherwise, an exception is thrown.
-    # 
-    # @throws NotTransducerStreamException 
-    # @throws StreamNotReadableException
-    # @throws StreamIsClosedException 
-    # @throws TransducerTypeMismatchException
-    # @throws MissingOpenFstInputSymbolTableException
-    # 
-    # @see libhfst.HfstInputStream libhfst.HfstTransducer.__init__
-    def __init__(self, instr):
-        pass
-
-    ## Create a deep copy of transducer \a another. 
-    def __init__(self, another):
-        pass
-
-    ## Create a transducer by tokenizing the utf8 string \a utf8_string with tokenizer \a multichar_symbol_tokenizer. The type of the transducer is defined by \a type. 
-    # 
-    # \a utf8_str is read one token at a time and for each token 
-    # a new transition is created in the resulting
-    # transducer. The input and output symbols of that transition are 
-    # the same as the token read.
-    # 
-    # An example:
-    # \verbatim
-    # ustring = 'foobar'
-    # TOK = libhfst.HfstTokenizer()
-    # tr = libfhst.HfstTransducer(ustring, TOK, FOMA_TYPE)
-    # # tr now contains one path [f o o b a r]
-    # \endverbatim
-    # 
-    # @see libhfst.HfstTokenizer 
-    def __init__(self, utf8_str, multichar_symbol_tokenizer, type):
-        pass
-
-    ## Create a transducer by tokenizing  the utf8 input string \a input_utf8_string and output string \a output_utf8_string with tokenizer \a multichar_symbol_tokenizer. The type of the transducer is defined by \a type. 
-    # 
-    # \a input_utf8_str and \a output_utf8_str are read one token at a time
-    # and for each token a new transition is created in the resulting transducer. 
-    # The input and output symbols of that transition are the same as 
-    # the input and output tokens read. If either string contains less tokens
-    # than another, epsilons are used as transition symbols for the shorter string.
-    # 
-    # An example:
-    # \verbatim
-    # input = 'foo'
-    # output = 'barr'
-    # TOK = libhfst.HfstTokenizer()
-    # tr = libhfst.HfstTransducer(input, output, TOK, libhfst.SFST_TYPE)
-    # # tr now contains one path [f:b o:a o:r 0:r]
-    # \endverbatim
-    # 
-    # @see libhfst.HfstTokenizer 
-    def __init__(self, input_utf8_str, output_utf8_str, multichar_symbol_tokenizer, type):
-        pass
-
-    ## Create an HFST transducer equivalent to HfstBasicTransducer \a t. The type of the created transducer is defined by \a type.  
-    def __init__(self, t, type):
-        pass
-
-    ## Create an empty transducer, i.e. a transducer that does not recognize any string. The type of the transducer is defined by \a type.
-    # 
-    # @note Use HfstTransducer('\@_EPSILON_SYMBOL_\@') to create an epsilon transducer. 
-    def __init__(self, type):
-        pass
-
-    ## Create a transducer that recognizes the string pair <'symbol','symbol'>, i.e. [symbol:symbol]. The type of the transducer is defined by \a type. 
-    def __init__(self, symbol, type):
-        pass
-
-    ## Create a transducer that recognizes the string pair <'isymbol','osymbol'>, i.e [isymbol:osymbol]. The type of the transducer is defined by \a type. 
-    def __init__(self, isymbol, osymbol, type):
-        pass
-
-    ## Create a transducer of type \a type as defined in AT&T format in file \a ifile. \a epsilon_symbol defines how epsilons are represented.
-    # 
-    # In AT&T format, the transition lines are of the form:
-    # 
-    # \verbatim 
-    # [0-9]+[\w]+[0-9]+[\w]+[^\w]+[\w]+[^\w]([\w]+(-)[0-9]+(\.[0-9]+)) 
-    # \endverbatim
-    # 
-    # and final state lines:
-    # 
-    # \verbatim
-    # [0-9]+[\w]+([\w]+(-)[0-9]+(\.[0-9]+))
-    # \endverbatim
-    # 
-    # If several transducers are listed in the same file, they are separated by lines of 
-    # two consecutive hyphens "--". If the weight (<tt>([\\w]+(-)[0-9]+(\.[0-9]+))</tt>) 
-    # is missing, the transition or final state is given a zero weight.
-    # 
-    # NOTE: If transition symbols contains spaces, they must be escaped
-    # as '\@_SPACE_\@' because spaces are used as field separators.
-    # Both '\@0\@' and '\@_EPSILON_SYMBOL_\@' are always interpreted as
-    # epsilons.
-    # 
-    # 
-    # An example:
-    # \verbatim
-    # 0      1      foo      bar      0.3
-    # 1      0.5
-    # --
-    # 0      0.0
-    # --
-    # --
-    # 0      0.0
-    # 0      0      a        <eps>    0.2
-    # \endverbatim
-    # 
-    # The example lists four transducers in AT&T format: 
-    # one transducer accepting the string pair <'foo','bar'>, one
-    # epsilon transducer, one empty transducer and one transducer 
-    # that accepts any number of 'a's and produces an empty string
-    # in all cases. The transducers can be read with the following commands (from a file named 
-    # 'testfile.att'):
-    # \verbatim
-    # transducers = []
-    # ifile = open('testfile.att', 'rb')
-    # try:
-    #     while (not ifile.eof()):
-    #         t = libhfst.HfstTransducer(ifile, libhfst.TROPICAL_OPENFST_TYPE, '<eps>')
-    #         transducers.append(t)
-    #         print("read one transducer")
-    # except libhfst.NotValidAttFormatException:
-    #     print("Error reading transducer: not valid AT&T format.")
-    # ifile.close()
-    # print "Read %i transducers in total" % len(transducers)
-    # \endverbatim
-    # 
-    # Epsilon will be represented as '\@_EPSILON_SYMBOL_\@' in the resulting transducer.
-    # The argument \a epsilon_symbol only denotes how epsilons are represented 
-    # in \a ifile.
-    # 
-    # @throws NotValidAttFormatException 
-    # @throws StreamNotReadableException
-    # @throws StreamIsClosedException
-    # @throws EndOfStreamException
-    # @see #write_in_att_format 
-    def __init__(self, ifile, type, epsilon_symbol):
-        pass
-
-    ## Create a transducer that recognizes (any number of, if \a cyclic is True) the union of string pairs in \a sps. The type of the transducer is defined by \a type. 
-    # @param sps A tuple of consecutive string input/output pairs
-    # @param type The type of the transducer.
-    # @param cyclic Whether the transducer recognizes any number (from zero to infinity, inclusive) of consecutive string pairs in \a sps. 
-    def __init__(self, sps, type, cyclic=False):
-        pass
- 
-    ## Create a transducer that recognizes the concatenation of string pairs in \a spv. The type of the transducer is defined by \a type.
-    # @param spv A tuple of string pairs.
-    # @param type The type of the transducer. 
-    def __init__(self, spv, type):
-        pass
- 
-    ## Create a transducer that recognizes the concatenation of the unions of string pairs in string pair sets in \a spsv. The type of the transducer is defined by \a type. 
-    # @param spsv A tuple of tuples of string input/output pairs.
-    # @param type The type of the transducer.
-    def __init__(self, spsv, type):
-        pass
-
-    ## Rename the transducer \a name. 
-    # @see #get_name 
-    def set_name(name):
-        pass
- 
-    ## Get the name of the transducer. 
-    # @see #set_name 
-    def get_name():
-        pass
-
-    ## Set arbitrary string property \a property to \a value.
-    #
-    # set_property('name') equals set_name(string&).
-    #
-    # @note  While this function is capable of creating endless amounts of arbitrary metadata, it is suggested that property names are
-    # drawn from central repository, or prefixed with "x-". A property that does not follow this convention may affect the behavior of
-    # transducer in future releases.
-    def set_property(property, value):
-        pass
-
-    ## Get arbitrary string propert @a property.
-    # get_property('name') works like get_name.
-    def get_property(property):
-        pass
-
-    ## Get all properties from the transducer.
-    # @return A dictionary of string-to-string mappings.
-    def get_properties():
-        pass
-
-    ## Get the alphabet of the transducer. 
-    # 
-    # The alphabet is defined as the set of symbols known to the transducer. 
-    # @return A tuple of strings.
-    def get_alphabet():
-        pass
-
-    ## Explicitly insert \a symbol to the alphabet of the transducer. 
-    # 
-    # @note Usually this function is not needed since new symbols are
-    # added to the alphabet by default. 
-    def insert_to_alphabet(symbol):
-        pass
- 
-    ## Remove \a symbol from the alphabet of the transducer. CURRENTLY NOT IMPLEMENTED.
-    # 
-    # @pre \a symbol does not occur in any transition of the transducer.
-    # @note Use with care, removing a symbol that occurs in a transition
-    # of the transducer can have unexpected results. 
-    def remove_from_alphabet(symbol):
-        pass
-
-    ## Whether the transducer is cyclic. 
-    def is_cyclic(void):
-        pass
-
-    ## The implementation type of the transducer. 
-    def get_type(void):
-        pass
- 
-    ## Whether this transducer and \a another are equivalent.
-    # 
-    # Two transducers are equivalent iff they accept the same input/output
-    # string pairs with the same weights and the same alignments. 
-    def compare(another):
-        pass
-
-    ## Remove all <i>epsilon:epsilon</i> transitions from the transducer so that the resulting transducer is equivalent to the original one. 
-    def remove_epsilons():
-        pass
-
-    ## Determinize the transducer.
-    # 
-    # Determinizing a transducer yields an equivalent transducer that has
-    # no state with two or more transitions whose input:output symbol
-    # pairs are the same. 
-    def determinize():
-        pass
-    
-    ## Minimize the transducer.
-    # 
-    # Minimizing a transducer yields an equivalent transducer with 
-    # the smallest number of states. 
-    # 
-    # @bug OpenFst's minimization algorithm seems to add epsilon transitions to weighted transducers? 
-    def minimize():
-        pass
-    
-    ## Extract \a n best paths of the transducer. 
-    # 
-    # In the case of a weighted transducer (#TROPICAL_OPENFST_TYPE or 
-    # #LOG_OPENFST_TYPE), best paths are defined as paths with 
-    # the lowest weight.
-    # In the case of an unweighted transducer (#SFST_TYPE or #FOMA_TYPE), 
-    # the function returns random paths.
-    # 
-    # This function is not implemented for #FOMA_TYPE or #SFST_TYPE.
-    # If this function is called by an HfstTransducer of type #FOMA_TYPE 
-    # or #SFST_TYPE, it is converted to #TROPICAL_OPENFST_TYPE,
-    # paths are extracted and it is converted back to #FOMA_TYPE or 
-    # #SFST_TYPE. If HFST is not linked to OpenFst library, an
-    # ImplementationTypeNotAvailableException is thrown.
-    def n_best(n):
-        pass
-    
-    ## A concatenation of N transducers where N is any number from zero to infinity. 
-    def repeat_star():
-        pass
-    
-    ## A concatenation of N transducers where N is any number from one to infinity. 
-    def repeat_plus():
-        pass
-    
-    ## A concatenation of \a n transducers. 
-    def repeat_n(unsigned int n):
-        pass
-    
-    ## A concatenation of N transducers where N is any number from zero to \a n, inclusive.
-    def repeat_n_minus(n):
-        pass
-    
-    ## A concatenation of N transducers where N is any number from \a n to infinity, inclusive.
-    def repeat_n_plus(n):
-        pass
-    
-    ## A concatenation of N transducers where N is any number from \a n to \a k, inclusive.
-    def repeat_n_to_k(n, k):
-        pass
-    
-    ## Disjunct the transducer with an epsilon transducer. 
-    def optionalize():
-        pass
-    
-    ## Swap the input and output symbols of each transition in the transducer. 
-    def invert():
-        pass
-    
-    ## Reverse the transducer. 
-    # 
-    # A reverted transducer accepts the string 'n(0) n(1) ... n(N)' 
-    # iff the original
-    # transducer accepts the string 'n(N) n(N-1) ... n(0)' 
-    def reverse():
-        pass
-    
-    ## Extract the input language of the transducer. 
-    # 
-    # All transition symbol pairs <i>isymbol:osymbol</i> are changed 
-    # to <i>isymbol:isymbol</i>. 
-    def input_project():
-        pass
-    
-    ## Extract the output language of the transducer.
-    # 
-    # All transition symbol pairs <i>isymbol:osymbol</i> are changed 
-    # to <i>osymbol:osymbol</i>. 
-    def output_project():
-        pass
-    
-    ## Compose this transducer with \a another. 
-    def compose(another):
-        pass
-    
-    ## Compose this transducer with the intersection of
-    # transducers in \a v. If \a invert is true, then compose the
-    # intersection of the transducers in \a v with this transducer.
-    # 
-    # The algorithm used by this function is faster than intersecting 
-    # all transducers one by one and then composing this transducer 
-    # with the intersection. 
-    # 
-    # @pre The transducers in \a v are deterministic and epsilon-free.
-    # @param v A tuple of transducers.
-    # @param invert Whether the intersection of the transducers in \a v is composed with this transducer.
-    def compose_intersect(v, invert=False):
-        pass
-    
-    ## Concatenate this transducer with \a another. 
-    def concatenate(another):
-        pass
-    
-    ## Disjunct this transducer with \a another. 
-    def disjunct(another):
-        pass
-
-    ## Intersect this transducer with \a another. 
-    def intersect(another):
-        pass
-    
-    ## Subtract transducer \a another from this transducer. 
-    def subtract(another):
-        pass
-
-    ## Convert the transducer into an equivalent transducer in format \a type. 
-    # 
-    # If a weighted transducer is converted into an unweighted one, 
-    # all weights are lost. In the reverse case, all weights are initialized to the 
-    # semiring's one. 
-    # 
-    # A transducer of type #libhfst.SFST_TYPE, #libhfst.TROPICAL_OPENFST_TYPE,
-    # #libhfst.LOG_OPENFST_TYPE or #libhfst.FOMA_TYPE can be converted into an 
-    # #libhfst.HFST_OL_TYPE or #libhfst.HFST_OLW_TYPE transducer, but an #libhfst.HFST_OL_TYPE
-    # or #libhfst.HFST_OLW_TYPE transducer cannot be converted to any other type.
-    # 
-    # @note For conversion between HfstBasicTransducer and HfstTransducer,
-    # see #libhfst.HfstTransducer.__init__ and #libhfst.HfstBasicTransducer.__init__
-    def convert(type, options=''):
-        pass
-    
-    ## Write the transducer in AT&T format to file \a ofile, \a write_weights defines whether weights are written.
-    # 
-    # The fields in the resulting AT&T format are separated by tabulator characters.
-    # 
-    # NOTE: If the transition symbols contain space characters,the spaces are printed as '\@_SPACE_\@' because
-    # whitespace characters are used as field separators in AT&T format. Epsilon symbols are printed as '\@0\@'.
-    # 
-    # If several transducers are written in the same file, they must be separated by a line of two consecutive hyphens "--", so that
-    # they will be read correctly by HfstTransducer(file, type, epsilon).
-    # 
-    # An example:
-    # \verbatim
-    # type = libhfst.FOMA_TYPE
-    # foobar = libhfst.HfstTransducer('foo','bar',type)
-    # epsilon = libhfst.HfstTransducer('@_EPSILON_SYMBOL_@',type)
-    # empty = libhfst.HfstTransducer(type)
-    # a_star = libhfst.HfstTransducer('a',type)
-    # a_star.repeat_star()
-    # 
-    # ofile = open('testfile.att', 'wb')
-    # foobar.write_in_att_format(ofile)
-    # ofile.write("--\n")
-    # epsilon.write_in_att_format(ofile)
-    # ofile.write("--\n")
-    # empty.write_in_att_format(ofile)
-    # ofile.write("--\n")
-    # a_star.write_in_att_format(ofile)
-    # ofile.close()
-    # \endverbatim
-    # 
-    # This will yield a file 'testfile.att' that looks as follows:
-    # \verbatim
-    # 0    1    foo  bar  0.0
-    # 1    0.0
-    # --
-    # 0    0.0
-    # --
-    # --
-    # 0    0.0
-    # 0    0    a    a    0.0
-    # \endverbatim
-    # 
-    # @throws StreamCannotBeWrittenException 
-    # @throws StreamIsClosedException
-    # 
-    # @see #libhfst.HfstOutputStream.redirect
-    # @see #libhfst.HfstTransducer.__init__
-    def write_in_att_format(ofile, write_weights=True):
-        pass
-
-    ## Write the transducer in AT&T format to file named \a filename. \a write_weights defines whether weights are written.
-    # 
-    # If the file exists, it is overwritten. If the file does not exist, it is created. 
-    def write_in_att_format(filename, write_weights=True):
-        pass
-
-    ## Make priority union of this transducer with \a another.
-    #
-    # For the operation t1.priority_union(t2), the result is a union of t1 and t2,
-    # except that whenever t1 and t2 have the same string on left side,
-    # the path in t2 overrides the path in t1.
-    # 
-    # Example
-    # \verbatim
-    # Transducer 1 (t1):
-    # a : a
-    # b : b
-    # 
-    # Transducer 2 (t2):
-    # b : B
-    # c : C
-    # 
-    # Result ( t1.priority_union(t2) ):
-    # a : a
-    # b : B
-    # c : C
-    # \endverbatim
-    # For more information, read <a href="http://www.fsmbook.com/">fsmbook</a>.
-    #  
-    def priority_union(another):
-        pass
-    
-    ## Make cross product of this transducer with \a another. It pairs every string of this with every string of \a another.
-    # If strings are not the same length, epsilon padding will be added in the end of the shorter string.
-    # @pre Both transducers must be automata, i.e. map strings onto themselves.
-    def cross_product(another):
-        pass
-    
-    ## Shuffle this transducer with transducer \a another.
-    # 
-    # If transducer A accepts string 'foo' and transducer B string 'bar',
-    # the transducer that results from shuffling A and B accepts all strings
-    # [(f|b)(o|a)(o|r)].
-    #   
-    # @pre Both transducers must be automata, i.e. map strings onto themselves.
-    def shuffle(another):
-        pass
-        
-    ## Freely insert symbol pair \a symbol_pair into the transducer. 
-    # 
-    # To each state in this transducer is added a transition that 
-    # leads from that state to itself with input and output symbols 
-    # defined by \a symbol_pair.
-    # @param symbol_pair A string pair to be inserted.
-    def insert_freely(symbol_pair):
-        pass
-    
-    ## Freely insert a copy of \a tr into the transducer. 
-    # 
-    # A copy of \a tr is attached with epsilon transitions 
-    # to each state of this transducer. After the operation, for each 
-    # state S in this transducer, there is an epsilon transition 
-    # that leads from state S to the initial state of \a tr, 
-    # and for each final state of \a tr, there is an epsilon transition
-    # that leads from that final state to state S in this transducer.
-    # The weights of the final states in \a tr are copied to the 
-    # epsilon transitions leading to state S.
-    # 
-    # Implemented only for HfstBasicTransducer. 
-    # Conversion is carried out for an HfstTransducer, if this function
-    # is called.
-    # 
-    def insert_freely(tr):
-        pass
-    
-    ## Set the weights of all final states to \a weight. 
-    # If the HfstTransducer is of unweighted type (#libhfst.SFST_TYPE or #libhfst.FOMA_TYPE), nothing is done.
-    def set_final_weights(float weight):
-        pass
-    
-    ## Push weights towards initial or final state(s) 
-    # as defined by \a type.
-    # 
-    # If the HfstTransducer is of unweighted type 
-    # (#SFST_TYPE or #FOMA_TYPE), nothing is done.
-    # @see #libhfst.TO_INITIAL_STATE #libhfst.TO_FINAL_STATE
-    # 
-    def push_weights(PushType type):
-        pass
-
-    ## Substitute \a old_symbol with \a new_symbol in all transitions. \a input_side and \a output_side define whether the substitution is made on input and output sides.
-    # @return This transducer.
-    def substitute(old_symbol, new_symbol, input_side=True, output_side=True):
-        pass
-    
-    ## Substitute all transition symbols as defined in \a substitutions.
-    # For each transition symbol x, \a substitutions is searched and if a mapping x -> X is found,
-    # the transition symbol x is replaced with X. If no mapping is found, the transition remains the same.
-    # The weights remain the same.
-    # @param substitutions A dictionary that maps symbols (strings) to symbols (strings).
-    def substitute_symbols(substitutions):
-        pass
-    
-    ## Substitute all transitions as defined in \a substitutions.
-    # For each transition x:y, \a substitutions is searched and if a mapping x:y -> X:Y is found,
-    # the transition x:y is replaced with X:Y. If no mapping is found, the transition remains the same.
-    # The weights remain the same.
-    # @param substitutions A dictionary that maps transitions (string pairs) to transitions (string pairs).
-    def substitute_symbol_pairs(substitutions):
-        pass
-    
-    ## Substitute all transitions \a sp with a set of transitions \a sps.
-    # The weights remain the same.
-    # @param sp A transition (string pair) to be substituted.
-    # @param sps A tuple of substituting transitions (string pairs).
-    def substitute(sp, sps):
-        pass
-    
-    ## Substitute all transitions \a old_pair with \a new_pair.
-    # @param old_pair The transition (string pair) to be substituted.
-    # @param new_pair The substituting transition (string pair).
-    def substitute(old_pair, new_pair):
-        pass
-        
-    ## Substitute all transitions equal to \a sp with a copy of \a transducer
-    #
-    # Copies of \a transducer are attached to this graph with epsilon transitions.
-    #
-    # The weights of the transitions to be substituted are copied
-    # to epsilon transitions leaving from the source state of
-    # the transitions to be substituted to the initial state
-    # of a copy of \a transducer.
-    #
-    # The final weights in \a transducer are copied to epsilon transitions leading from
-    # the final states (after substitution non-final states)
-    # of \a transducer to target states of transitions equal to \a sp
-    # (that are substituted) in this transducer.
-    #
-    # @param sp The transition (string pair) to be substituted.
-    # @param transducer The substituting transducer.
-    def substitute(sp, transducer):
-        pass
-
-    ## Lookup or apply a single tokenized string \a tok_input and return a maximum of \a limit results.
-    # 
-    # TODO: This is a version of lookup that handles flag diacritics as ordinary
-    # symbols and does not validate the sequences prior to outputting. Currently, this function calls lookup_fd.
-    #
-    # @todo Handle flag diacritics as ordinary symbols instead of calling lookup_fd.
-    # @sa lookup_fd
-    # @return HfstOneLevelPaths pointer
-    # @param tok_input A tuple of consecutive symbols (strings).
-    # @param limit Number of strings to look up. -1 tries to look up all and may get stuck if infinitely ambiguous.
-    def lookup(tok_input, limit=-1):
-        pass
-    
-    # @brief Lookup or apply a single string \a input and return a maximum of \a limit results.
-    # 
-    # This is an overloaded lookup function that leaves tokenizing to the transducer.
-    # @return HfstOneLevelPaths pointer
-    # @see #lookup(tok_string, limit=-1)
-    def lookup(input, limit=-1):
-        pass
-    
-    ## Lookup or apply a single string \a input and return a maximum of \a limit results. \a tok defined how \a s is tokenized.
-    #
-    # This is an overloaded lookup function that leaves tokenizing to \a tok.
-    # @return HfstOneLevelPaths pointer
-    # @see #lookup(tok_string, limit=-1)
-    def lookup(tok, input, limit=-1):
-        pass
-    
-    
-    ## Lookup or apply a single string \a tok_input minding flag diacritics properly and return a maximum of \a limit results.
-    #
-    # Traverse all paths on logical first level of the transducer to produce
-    # all possible outputs on the second.
-    # This is in effect a fast composition of single path from left
-    # hand side.
-    #
-    # This is a version of lookup that handles flag diacritics as epsilons
-    # and validates the sequences prior to outputting.
-    # Epsilons on the second level are represented by empty strings
-    # in the results.
-    #
-    # @pre The transducer must be of type #libhfst.HFST_OL_TYPE or #libhfst.HFST_OLW_TYPE. This function is not implemented for other transducer types.
-    #
-    # @param tok_input  A tuple of consecutive symbols (strings) to look up.
-    # @param limit  (Currently ignored.) Number of strings to look up. -1 tries to look up all and may get stuck if infinitely ambiguous.
-    # 
-    # @see #is_lookup_infinitely_ambiguous
-    # @return HfstOneLevelPaths pointer
-    #
-    # @todo Do not ignore argument \a limit.
-    def lookup_fd(tok_input, limit = -1):
-        pass
-    
-    ## Lookup or apply a single string \a s minding flag diacritics properly and return a maximum of \a limit results.
-    #
-    # This is an overloaded lookup function that leaves tokenizing to the transducer.
-    # @return HfstOneLevelPaths pointer
-    # @see #lookup(tok_string, limit=-1)
-    def lookup_fd(input, limit = -1):
-        pass
-    
-    
-    ## Lookup or apply a single string \a input minding flag diacritics properly and return a maximum of \a limit results. \a tok defines how s is tokenized.
-    #
-    # This is an overloaded lookup function that leaves tokenizing to \a tok.
-    # @return HfstOneLevelPaths pointer
-    # @see #lookup(tok_string, limit=-1)
-    def lookup_fd(tok, input, limit = -1):
-        pass
-
-    ## Whether lookup of path \a input will have infinite results.
-    #
-    # Currently, this function will return whether the transducer
-    # is infinitely ambiguous on any lookup path found in the transducer,
-    # i.e. the argument \a input is ignored.
-    #
-    # @todo Do not ignore the argument \a input
-    # @see #lookup(tok_input, limit=-1)
-    def is_lookup_infinitely_ambiguous(tok_input):
-        pass
-
-    ## Compile a lexc file in file \a filename into an HfstTransducer of type \a type and return the transducer.
-    # This function is a static one.  
-    def read_lexc(filename, type):
-        pass
-
-
-## Return the HfstTransducer pointed by \a transducer_ptr.
-def ptrvalue(transducer_ptr):
-    pass
-
-## Extract a maximum of \a max_num paths that are recognized by \a transducer following a maximum of \a cycles cycles.
-# 
-# @return An HfstTwoLevelPaths that contains the extracted paths.
-# @param max_num The total number of resulting strings is capped at \a max_num, with 0 or negative indicating unlimited. 
-# @param cycles Indicates how many times a cycle will be followed, with negative numbers indicating unlimited.
-# @param transducer The transducer where paths are searched.
-# 
-# This is a version of extract_paths that handles flag diacritics 
-# as ordinary symbols and does not validate the sequences prior to
-# outputting as opposed to #libhfst.extract_paths_fd
-# 
-# If this function is called on a cyclic transducer with unlimited
-# values for both \a max_num and \a cycles, an exception will be thrown.
-# 
-# This example
-# 
-# \verbatim
-# type = libhfst.SFST_TYPE
-# tr1 = libhfst.HfstTransducer('a', 'b', type)
-# tr1.repeat_star()
-# tr2 = libhfst.HfstTransducer('c', 'd', type)
-# tr2.repeat_star()
-# tr1.concatenate(tr2).minimize()
-# results = libhfst.detokenize_paths(libhfst.extract_paths(tr1, MAX_NUM, CYCLES))
-# 
-# for path in results:
-#     print "%s : &s" % (path.input, path.output)
-# \endverbatim
-# 
-# prints with values MAX_NUM == -1 and CYCLES == 1 all paths
-# that have no consecutive cycles:
-# 
-# \verbatim
-# a : b
-# ac : bd
-# acc : bdd
-# c : d
-# cc : dd
-# \endverbatim
-# 
-# and with values MAX_NUM == 7 and CYCLES == 2 a maximum of 7 paths
-# that follow a cycle a maximum of 2 times (there are 11 such paths,
-# but MAX_NUM limits their number to 7):
-# 
-# \verbatim
-# a : b
-# aa : bb
-# aac : bbd
-# aacc : bbdd
-# c : d
-# cc : dd
-# ccc : ddd
-# \endverbatim
-# 
-# @bug Does not work for HFST_OL_TYPE or HFST_OLW_TYPE?
-# @throws TransducerIsCyclicException
-# @see #libhfst.HfstTransducer.n_best 
-# @see #libhfst.extract_paths_fd
-# 
-def extract_paths(transducer, max_num=-1, cycles=-1):
-    pass
-
-## Extract a maximum of \a max_num paths that are recognized by the transducer and are not invalidated by flag diacritic rules following a maximum of \a cycles cycles. \a filter_fd defines whether the flag diacritics themselves are filtered out of the result strings.
-#
-# @return An HfstTwoLevelPaths that contains the extracted paths.
-# @param max_num The total number of resulting strings is capped at \a max_num, with 0 or negative indicating unlimited. 
-# @param cycles Indicates how many times a cycle will be followed, with negative numbers indicating unlimited.
-# @param filter_fd  Whether the flag diacritics are filtered out of the result strings.
-# @param transducer The transducer where paths are searched.
-# 
-# If this function is called on a cyclic transducer with unlimited
-# values for both \a max_num and \a cycles, an exception will be thrown.
-# 
-# Flag diacritics are of the form @[PNDRCU][.][A-Z]+([.][A-Z]+)?@. 
-# 
-# For example the transducer 
-# 
-# \verbatim
-# [[@U.FEATURE.FOO@ foo] | [@U.FEATURE.BAR@ bar]]  |  [[foo @U.FEATURE.FOO@] | [bar @U.FEATURE.BAR@]]
-# \endverbatim
-# 
-# will yield the paths <CODE>[foo foo]</CODE> and <CODE>[bar bar]</CODE>.
-# <CODE>[foo bar]</CODE> and <CODE>[bar foo]</CODE> are invalidated
-# by the flag diacritics so thay will not be included in \a results.
-# 
-# 
-# @bug Does not work for HFST_OL_TYPE or HFST_OLW_TYPE?
-# @throws TransducerIsCyclicException
-# @see #libhfst.extract_paths 
-def extract_paths_fd(transducer, max_num=-1, cycles=-1, filter_fd=False):
-    pass
-
-## Detokenize \a tokenized_paths.
-#
-# Concatenate all transition symbols on input and output levels for each path in \a tokenized_paths.
-# 
-# @param tokenized_paths An HfstOneLevelPaths pointer or an HfstTwoLevelPaths.
-# @return A tuple of HfstPaths.
-def detokenize_paths(tokenized_paths):
-    pass
-
-## Detokenize and remove all flag diacritics from \a tokenized_paths.
-#
-# Concatenate all transition symbols except flag diacritics on input and output levels for each path in \a tokenized_paths.
-# 
-# @param tokenized_paths An HfstOneLevelPaths pointer or an HfstTwoLevelPaths.
-# @return A tuple of HfstPaths.
-def detokenize_and_purge_paths(tokenized_paths):
-    pass
-
-
- 
-# TODO: void extract_random_paths
-# (HfstTwoLevelPaths &results, int max_num) const;
-# 
-# void extract_random_paths_fd
-# (HfstTwoLevelPaths &results, int max_num, bool filter_fd) const;
-# 
-# /* \brief Call \a callback with extracted strings that are not 
-# invalidated by flag diacritic rules.
-# 
-# @see #extract_paths extract_paths_fd
-# (ExtractStringsCb& callback, int cycles=-1, bool filter_fd=true) const;
-
-
-##  A stream for reading HFST binary transducers. 
-#
-# An example:
-# \verbatim
-# instr = 0
-# try:
-#     instr = libhfst.HfstInputStream('testfile') 
-# except libhfst.StreamNotReadableException: 
-#     print "ERROR: File does not exist."
-#     exit()
-#
-# transducers_read = 0
-#
-# while not in.is_eof(): 
-#     if instr.is_bad():
-#         print "ERROR: Stream cannot be read."
-#         exit(1) 
-#     t = libhfst.HfstTransducer(instr)
-#     print "One transducer successfully read."
-#     transducers_read++
-#
-# print "Read %i transducers in total" % transducers_read
-# in.close()
-#\endverbatim
-#
-# For documentation on the HFST binary transducer format, see
-# <a href="HeaderFormatAndConversions.html">here</a>.
-#
-# @see #libhfst.HfstTransducer.__init__
-class HfstInputStream:
-
-    ##  Create a stream to standard input for reading binary transducers. 
-    #
-    # @throws StreamNotReadableException 
-    # @throws NotTransducerStreamException
-    # @throws EndOfStreamException
-    # @throws TransducerHeaderException
-    def __init__(self):
-        pass
-
-    ##  Open a stream to file \a filename for reading binary transducers. 
-    #
-    # @pre The file exists. Otherwise, a StreamNotReadableException is thrown.
-    # @throws StreamNotReadableException 
-    # @throws NotTransducerStreamException
-    # @throws EndOfStreamException
-    # @throws TransducerHeaderException
-    def __init__(self, filename):
-        pass
-
-    ##  Close the stream.
-    #
-    # If the stream points to standard input, nothing is done.
-    def close():
-        pass
-
-    ##  Whether the stream is at end.
-    def is_eof():
-        pass
-
-    ##  Whether badbit is set.
-    def is_bad():
-        pass
-
-    ##  Whether the state of the stream is good for input operations.
-    def is_good():
-        pass
-    
-    ## The type of the first transducer in the stream. 
-    #
-    # By default, all transducers in a stream have the same type, else
-    # a TransducerTypeMismatchException is thrown when reading the first
-    # transducer that has a different type than the previous ones.
-    def get_type():
-        pass
-    
-## A stream for writing binary transducers. 
-#
-#  An example:
-# \verbatim
-# #Write three HFST transducers in binary format to file named 'testfile'
-# out = libhfst.HfstOutputStream('testfile', libhfst.FOMA_TYPE)
-# out.redirect(foma_transducer1) 
-# out.redirect(foma_transducer2)
-# out.redirect(foma_transducer3)
-# out.close()
-# \endverbatim
-#
-# For more information on HFST transducer structure, see <a href="HeaderFormatAndConversions.html">this page</a>.
-class HfstOutputStream:
-
-    ## Create a stream to standard output for writing binary transducers of type \a type. \a hfst_format defines whether transducers are written in hfst format or as such in their backend format. 
-    def __init__(type, hfst_format=True):
-        pass
-
-    ## Open a stream to file \a filename for writing binary transducers of type \a type. \a hfst_format defines whether transducers are written in hfst format or as such in their backend format.
-    #
-    # If the file exists, it is overwritten. 
-    def __init__(filename, type, hfst_format=True):
-        pass
-
-    ##  Write the transducer \a transducer in binary format to the stream. 
-    #
-    # All transducers must have the same type as the stream, else a TransducerTypeMismatchException is thrown. 
-    #
-    # @throws TransducerTypeMismatchException
-    def redirect(transducer):
-        pass
-
-    ##  Close the stream. 
-    # If the stream points to standard output, nothing is done.
-    def close():
-        pass
-
-## TODO: documentation
-class MultiCharSymbolTrie:
-    ## TODO: documentation
-    def __init__(self):
-        pass
-    ## TODO: documentation
-    # @param string const char *
-    def add(string):
-        pass
-    ## TODO: documentation
-    # @param string const char *
-    # @return const char *
-    def find(string)  
-
-  
-## A tokenizer for creating transducers from UTF-8 strings.
-#
-# Strings are tokenized from left to right using longest match tokenization.
-# For example, if the tokenizer contains a multicharacter symbol 
-# 'foo' and a skip symbol 'fo', the string "foo" is tokenized as 'foo:foo'.
-# If the tokenizer contains a multicharacter symbol 'fo' and a skip 
-# symbol 'foo', the string "foo" is tokenized as an empty string.
-#
-# An example:
-# \verbatim
-# TOK = libhfst.HfstTokenizer()
-# TOK.add_multichar_symbol('<br />')
-# TOK.add_skip_symbol('<p>')
-# TOK.add_skip_symbol('</p>')
-# spv = TOK.tokenize("<p>A<br />paragraph!</p>")
-# # spv now contains
-# #    ('A','A'), ('<br />','<br />'), ('p','p' ('a','a'), ('r','r'), ('a','a'), 
-# #    ('g','g'), ('r','r'), ('a','a'), ('p','p'), ('h','h'), ('!','!')
-#\endverbatim
-#
-# @note The tokenizer only tokenizes utf-8 strings. 
-# Special symbols are not included in the tokenizer 
-# unless added to it.
-#
-# @see #libhfst.HfstTransducer.__init__
-class HfstTokenizer:
-
-    ## Create a tokenizer that recognizes utf-8 symbols. 
-    def __init__(self):
-        pass
-
-    ## Add a symbol to be skipped to this tokenizer. 
-    #
-    # After skipping a symbol, tokenization is always started again.
-    # For example if we have a multicharacter symbol 'foo' and a 
-    # skip symbol 'bar', the string "fobaro" will be tokenized 
-    # 'f' 'o' 'o', not 'foo'. 
-    def add_skip_symbol(symbol):
-        pass
-
-    ## Add a multicharacter symbol \a symbol to this tokenizer. 
-    #
-    # If a multicharacter symbol has a skip symbol inside it, it is
-    # not considered a multicharacter symbol. For example if we have 
-    # a multicharacter symbol 'foo' and a skip symbol 'bar', the string
-    # "fobaro" will be tokenized 'f' 'o' 'o', not 'foo'. 
-    def add_multichar_symbol(symbol):
-        pass
-
-    ## Tokenize the string \a input_string. 
-    # @return A tuple of string pairs.
-    def tokenize(input_string):
-        pass
-
-    ## Tokenize the string \a input_string.
-    # @return A tuple of strings.
-    def tokenize_one_level(input_string):
-        pass
-
-    ## Tokenize the string pair \a input_string : \a output_string. 
-    #
-    # If one string has more tokens than the other, epsilons will be
-    # inserted to the end of the tokenized string with less tokens
-    # so that both tokenized strings have the same number of tokens.
-    #
-    # @return A tuple of string pairs.
-    def tokenize(input_string, output_string):
-        pass
-
-    ## If \a input_string is not valid utf-8, throw an IncorrectUtf8CodingException.
-    #
-    # A string is non-valid if: 
-    #   - It contains one of the unsigned bytes 192, 193, 245, 246 and 247.
-    #   - If it is not made up of sequences of one initial byte (0xxxxxxx, 
-    #     110xxxxx, 1110xxxx or 11110xxx) followed by an appropriate number 
-    #     of continuation bytes (10xxxxxx).
-    #     -# Initial bytes 0xxxxxxx represent ASCII chars and may not be
-    #        followed by a continuation byte.
-    #     -# Initial bytes 110xxxxx are followed by exactly one 
-    #        continuation byte.
-    #     -# Initial bytes 1110xxxx are followed by exactly two continuation
-    #        bytes.
-    #     -# Initial bytes 11110xxx are followed by exactly three 
-    #        continuation bytes.
-    # (For reference: http://en.wikipedia.org/wiki/UTF-8)
-    #
-    # This function is a static one.
-    check_utf8_correctness(input_string);
-
-
-## A compiler holding information contained in lexc style lexicons.
-# A single LexcCompiler can be extended by adding entries to it, but little
-# else can be done with it. It is sufficient to implement clone of lexc.
-class LexcCompiler:
-
-  ## Create a lexc compiler for unspecified transducer format.
-  def __init__(self):
-      pass
-
-  ## Create a lexc compiler with \a impl as transducer format.
-  def __init__(self, impl):
-      pass
-
-  ## Compile lexc description from \a infile into current compiler.
-  def parse(infile):
-      pass
-
-  ## Compile lexc description from file @a filename into current compiler.
-  def parse(filename):
-      pass
-
-  # @brief Set verbosity options. When \a verbose is true, LexcCompiler will output the messages that Xerox lexc compiler does.
-  def setVerbosity(verbose):
-      pass
-
-  ## Add @a alphabet to multicharacter symbol set.
-  # These symbols may be used for regular expression ? for backends that do
-  # not support open alphabets.
-  def addAlphabet(alphabet):
-      pass
-
-  ## Set current processing lexicon name to @a lexicon_name.
-  def setCurrentLexiconName(lexicon_name):
-      pass
-
-  ## Add entry defined by a @a entry to current lexicon, pointing to @a continuation weighing @a weight to current lexicon.
-  def addStringEntry(entry, continuation, weight):
-      pass
-
-  ## Add entry defined by @a upper:@a lower, pointing to @a continuation weighing @a weight to current lexicon.
-  def addStringPairEntry(upper, lower, continuation, weight):
-      pass
-
-  ## Add entry defined by regular expression @a xre, pointing to @a continuation weighing @a weight to current lexicon.
-  def addXreEntry(xre, continuation, weight):
-      pass
-
-  ## Add macro definition named @a name matching regular expression @a xre to known xerox regular expressions.
-  def addXreDefinition(name, xre):
-      pass
-
-  ## Set start lexicon's name to @a lexicon_name.
-  def setInitialLexiconName(lexicon_name):
-      pass
-
-  ## Create final usable version of current lexicons and entries.
-  # @return HfstTransducer pointer.
-  def compileLexical():
-      pass
-
-  ## Check that current morphotax is connected and print anomalies.
-  # Works like xerox lexc, for compatibility.
-  def printConnectedness():
-      pass
-
-## A compiler holding information needed to compile XREs.
-class XreCompiler
-
-  ## Construct compiler for unknown format transducers.
-  def __init__(self):
-      pass
-
-  ## Create compiler for @a impl format transducers
-  def __init__(self, impl):
-      pass
-
-  ## Add a definition macro. Compilers will replace arcs labeled @a name, with the transducer defined by @a xre in later phases of compilation.
-  def define(name, xre):
-      pass
-
-  ## Compile a transducer defined by @a xre.
-  # May return a pointer to @e empty transducer on non-fatal error.
-  # A None pointer is returned on fatal error, if abort is not called.
-  # @return An HfstTransducer pointer.
-  def compile(xre):
-      pass
-
-class FdOperation:
-    ## TODO: document
-    def __init__(self, fd_operation):
-        pass
-    ## TODO: document
-    def is_diacritic(diacritic_str):
-        pass
-
-## A transducer that obligatorily performs the mappings defined by \a mappings in the context \a context when the alphabet is \a alphabet. 
-# 
-# @param context A pair of transducers where the first transducer defines the left context and the second transducer the right context.
-# @param mappings A set of mappings (a tuple of string pairs) that the resulting transducer will perform in the context given in \a context.
-# @param alphabet The set of symbol pairs (a tuple of string pairs) that defines the alphabet (see the example).
-# 
-# For example, a transducer yielded by the following arguments (in pseudcode)
-# \verbatim
-# context = pair( [c|d], [e] )
-# mappings = set(a:b)
-# alphabet = set(a, a:b, b, c, d, e, ...)
-# \endverbatim
-# obligatorily maps the symbol a to b if c or d precedes and e follows. (Elsewhere,
-# the mapping of a to b is optional). This expression is identical to ![.* [c|d] [a:. & !a:b] [e] .*]
-# Note that the alphabet must contain the pair a:b here.        
-# @see <a href="ftp://ftp.ims.uni-stuttgart.de/pub/corpora/SFST/SFST-Manual.pdf">SFST manual</a>
-def two_level_if(context, mappings, alphabet):
-    pass
-
-     
-## A transducer that allows the mappings defined by \a mappings only in the context \a context, when the alphabet is \a alphabet. 
-#         
-# If called with the same arguments as in the example of #two_level_if, the transducer
-# allows the mapping of symbol a to b only if c or d precedes and e follows. 
-# The mapping of a to b is optional in this context but cannot occur in any other context.
-#
-# The expression is equivalent to 
-# ![  [ ![.* [c|d]] a:b .* ] | [ .* a:b ![[e] .*] ]  ]
-#         
-# @see #two_level_if
-def two_level_only_if(context, mappings, alphabet):
-    pass
- 
-## A transducer that always performs the mappings defined by \a mappings in the context \a context and only in that context, when the alphabet is \a alphabet. 
-# 
-# If called with the same arguments as in the example of #two_level_if, the transducer
-# maps symbol a to b only and only if c or d precedes and e follows.
-# The mapping of a to b is obligatory in this context and cannot occur in any other context.
-#
-# The expression is equivalent to ![.* [c|d] [a:. & !a:b] [e] .*]  &
-# ![  [ ![.* [c|d]] a:b .* ] | [ .* a:b ![[e] .*] ]  ]
-#         
-# @see #two_level_if
-def two_level_if_and_only_if(context, mappings, alphabet):
-    pass
- 
-## A transducer that performs an upward mapping \a mapping in the context \a context when the alphabet is \a alphabet. \a optional defines whether the mapping is optional. 
-# 
-# @param context A pair of transducers where the first transducer defines the left context and the second transducer the right context. Both transducers must be automata, i.e. map strings onto themselves.
-# @param mapping The mapping (transducer) that the resulting transducer will perform in the context given in \a context.
-# @param optional Whether the mapping is optional.
-# @param alphabet The set of symbol pairs that defines the alphabet (a tuple of string pairs).                         
-# 
-# Each substring s of the input string which is in the input language of the transducer \a mapping and whose left context is matched 
-# by the expression [.* l] (where l is the first element of \a context) and whose right context is matched by [r .*] 
-# (where r is the second element in the context) is mapped to the respective surface strings defined by transducer \a mapping. Any other 
-# character is mapped to the characters specified in \a alphabet. The left and right contexts must
-# be automata (i.e. transducers which map strings onto themselves).
-# 
-# For example, a transducer yielded by the following arguments (in pseudocode)
-# \verbatim
-# context = pair( [c], [c] )
-# mappings = [ a:b a:b ]
-# alphabet = set(a, b, c)
-# \endverbatim
-# would map the string "caacac" to "cbbcac".
-# 
-# Note that the alphabet must contain the characters a and b, but not the pair
-# a:b (unless this replacement is to be allowed everywhere in the context).
-# 
-# Note that replace operations (unlike the two-level rules) have to be combined by composition
-# rather than intersection.
-# 
-# @throws ContextTransducersAreNotAutomataException
-# 
-# @see <a href="ftp://ftp.ims.uni-stuttgart.de/pub/corpora/SFST/SFST-Manual.pdf">SFST manual</a>
-def replace_up(context, mapping, optional, alphabet):
-    pass
-
-## The same as replace_up, but matching is done on the output side of \a mapping 
-# 
-# @see replace_up 
-# <a href="ftp://ftp.ims.uni-stuttgart.de/pub/corpora/SFST/SFST-Manual.pdf">SFST manual</a>.
-def replace_down(context, mapping, optional, alphabet):
-    pass
-
-## TODO: document
-def replace_down_karttunen(context, mapping, optional, alphabet):
-    pass
- 
-## The same as replace_up, but left context matching is done on the output side of \a mapping and right context on the input side of \a mapping.
-# 
-# @see replace_up 
-def replace_left(context, mapping, optional, alphabet):
-    pass
-
-## The same as replace_up, but left context matching is done on the input side of \a mapping and right context on the output side of \a mapping. 
-# 
-# @see replace_up 
-# <a href="ftp://ftp.ims.uni-stuttgart.de/pub/corpora/SFST/SFST-Manual.pdf">SFST manual</a>.
-def replace_right(context, mapping, optional, alphabet):
-    pass
-
-## The same as replace_up but \a mapping is performed in every context. 
-# 
-# @see replace_up
-def replace_up(mapping, optional, alphabet):
-    pass
-
-## The same as replace_down(context, mapping, optional, alphabet) but \a mapping is performed in every context.
-# 
-# @see replace_up
-def replace_down(mapping, optional, alphabet):
-    pass
-
-## Inversion of the replace_up and the result needs to be composed on the upper side of the input language.
-#
-# B <- A is the inversion of A -> B.
-# \a mapping is performed in every context.
-# @see replace_up
-def left_replace_up(mapping, optional, alphabet):
-    pass
-
-## Inversion of the replace_up and the result needs to be composed on the upper side of the input language.
-#
-# B <- A is the inversion of A -> B.
-# @see replace_up
-def left_replace_up(context, mapping, optional, alphabet):
-    pass
-
-## Inversion of the replace_up and the result needs to be composed on the upper side of the input language. However, matching is done on the output side of \a mapping.
-#
-# @see replace_up
-def left_replace_down(context, mapping, optional, alphabet):
-    pass
- 
-## Inversion of the replace_up and the result needs to be composed on the upper side of the input language. However, matching is done on the output side of \a mapping.
-#
-# @see replace_up
-def left_replace_down_karttunen(context, mapping, optional, alphabet):
-    pass
- 
-## Inversion of the replace_up and the result needs to be composed on the upper side of the input language. However, left context matching is done on the input side of \a mapping and right context on the output side of \a mapping.
-#
-# @see replace_up */
-def left_replace_left(context, mapping, optional, alphabet):
-    pass
- 
-## Inversion of the replace_up and the result needs to be composed on the upper side of the input language. However, left context matching is done on the output side of \a mapping and right context on the input side of \a mapping.
-#
-# @see replace_up
-def left_replace_right(context, mapping, optional, alphabet):
-    pass
-
-
-
-## A transducer that allows any (substring) mapping defined by \a mapping only if it occurs in any of the contexts in \a contexts. Symbols outside of the matching substrings are mapped to any symbol allowed by \a alphabet. 
-# 
-# @throws EmptySetOfContextsException
-# 
-# @see <a href="ftp://ftp.ims.uni-stuttgart.de/pub/corpora/SFST/SFST-Manual.pdf">SFST manual</a>.
-# @param contexts A tuple of HfstTransducer pairs.
-# @param mapping An HfstTransducer.
-# @param alphabet A tuple of string pairs.
-def restriction(contexts, mapping, alphabet):
-    pass
-
-## A transducer that requires that one of the mappings defined by \a mapping must occur in each context in \a contexts. Symbols outside of the matching substrings are mapped to any symbol allowed by \a alphabet.
-# 
-# @see <a href="ftp://ftp.ims.uni-stuttgart.de/pub/corpora/SFST/SFST-Manual.pdf">SFST manual</a>.
-# @param contexts A tuple of HfstTransducer pairs.
-# @param mapping An HfstTransducer.
-# @param alphabet A tuple of string pairs.
-def coercion(contexts, mapping, alphabet):
-    pass
-
-## A transducer that is equivalent to the intersection of restriction and coercion and requires that the mappings defined by \a mapping occur always and only in the given contexts in \a contexts. Symbols outside of the matching substrings are mapped to any symbol allowed by \a alphabet.
-# 
-# @see #restriction #coercion <a href="ftp://ftp.ims.uni-stuttgart.de/pub/corpora/SFST/SFST-Manual.pdf">SFST manual</a>
-# @param contexts A tuple of HfstTransducer pairs.
-# @param mapping An HfstTransducer.
-# @param alphabet A tuple of string pairs.
-def restriction_and_coercion(contexts, mapping, alphabet):
-    pass
-
- 
-## A transducer that specifies that a string from the input language of the transducer \a mapping may only be mapped to one of its output strings (according to transducer \a mapping) if it appears in any of the contexts in \a contexts. Symbols outside of the matching substrings are mapped to any symbol allowed by \a alphabet.
-# 
-# @see <a href="ftp://ftp.ims.uni-stuttgart.de/pub/corpora/SFST/SFST-Manual.pdf">SFST manual</a>.
-# @param contexts A tuple of HfstTransducer pairs.
-# @param mapping An HfstTransducer.
-# @param alphabet A tuple of string pairs.
-def surface_restriction(contexts, mapping, alphabet):
-    pass
-
-## A transducer that specifies that a string from the input language of the transducer \a mapping always has to the mapped to one of its output strings according to transducer \a mapping if it appears in any of the contexts in \a contexts. Symbols outside of the matching substrings are mapped to any symbol allowed by \a alphabet.
-# 
-# @see <a href="ftp://ftp.ims.uni-stuttgart.de/pub/corpora/SFST/SFST-Manual.pdf">SFST manual</a>.
-# @param contexts A tuple of HfstTransducer pairs.
-# @param mapping An HfstTransducer.
-# @param alphabet A tuple of string pairs.
-def surface_coercion(contexts, mapping, alphabet):
-    pass
-
-## A transducer that is equivalent to the intersection of surface_restriction and surface_coercion.
-# 
-# @see #surface_restriction #surface_coercion <a href="ftp://ftp.ims.uni-stuttgart.de/pub/corpora/SFST/SFST-Manual.pdf">SFST manual</a>.
-# @param contexts A tuple of HfstTransducer pairs.
-# @param mapping An HfstTransducer.
-# @param alphabet A tuple of string pairs.
-def surface_restriction_and_coercion(contexts, mapping, alphabet):
-    pass
-
-## A transducer that specifies that a string from the output language of the transducer \a mapping may only be mapped to one of its input strings (according to transducer \a mappings) if it appears in any of the contexts in \a contexts.Symbols outside of the matching substrings are mapped to any symbol allowed by \a alphabet.
-# 
-# @see <a href="ftp://ftp.ims.uni-stuttgart.de/pub/corpora/SFST/SFST-Manual.pdf">SFST manual</a>.
-# @param contexts A tuple of HfstTransducer pairs.
-# @param mapping An HfstTransducer.
-# @param alphabet A tuple of string pairs.
-def deep_restriction(contexts, mapping, alphabet):
-    pass
-
-## A transducer that specifies that a string from the output language of the transducer \a mapping always has to be mapped to one of its input strings (according to transducer \a mappings) if it appears in any of the contexts in \a contexts. Symbols outside of the matching substrings are mapped to any symbol allowed by \a alphabet.
-# 
-# @see <a href="ftp://ftp.ims.uni-stuttgart.de/pub/corpora/SFST/SFST-Manual.pdf">SFST manual</a>.
-# @param contexts A tuple of HfstTransducer pairs.
-# @param mapping An HfstTransducer.
-# @param alphabet A tuple of string pairs.
-def deep_coercion(contexts, mapping, alphabet):
-    pass
-
-## A transducer that is equivalent to the intersection of deep_restriction and deep_coercion.
-# 
-# @see #deep_restriction #deep_coercion <a href="ftp://ftp.ims.uni-stuttgart.de/pub/corpora/SFST/SFST-Manual.pdf">SFST manual</a>.
-# @param contexts A tuple of HfstTransducer pairs.
-# @param mapping An HfstTransducer.
-# @param alphabet A tuple of string pairs.
-def deep_restriction_and_coercion(contexts, mapping, alphabet):
-    pass
-
-
-## @page QuickStart.html Quick Start to HFST
-# 
-# \section using_hfst Using HFST in your own code
-# 
-# After <a href="InstallHfst.html">installing</a> HFST on your computer, start python and execute <code>import libhfst</code>.
-# 
-# For example, the following simple program
-#
-# \verbatim
-# import libhfst
-# import sys
-# 
-# tr1 = libhfst.HfstTransducer('foo', 'bar', libhfst.SFST_TYPE)
-# tr2 = libhfst.HfstTransducer('bar', 'baz', libhfst.SFST_TYPE)
-# tr1.compose(tr2)
-# tr1.write_in_att_format(sys.stdout);
-# \endverbatim
-# 
-# should print to standard output the following text when run:
-# 
-# \verbatim
-# 0      1     foo    baz
-# 1
-# \endverbatim
-# 
-# <BR>
-# 
-# \section hfst_structure Structure of the API
-# 
-# The HFST API is written in module libhfst that includes the following classes:
-# 
-#    - HfstTransducer: A class for creating transducers and performing operations on them.
-# 
-#    - HfstInputStream and HfstOutputStream: Classes for writing and reading binary transducers.
-# 
-#    - HfstBasicTransducer: A class for creating transducers from scratch and iterating through their states and transitions.
-# 
-#    - HfstTokenizer: A class used in creating transducers from UTF-8 strings.
-#  
-# <BR>
-# 
-# \section hfst_examples Examples of HFST functionalities
-# 
-# An example of creating a simple transducer from scratch and converting between transducer formats and testing
-# transducer properties and handling exceptions:
-# 
-# \verbatim
-# import libhfst 
-#
-# # Create a HFST basic transducer [a:b] with transition weight 0.3 and final weight 0.5.
-# t = libhfst.HfstBasicTransducer()
-# t.add_state(1)
-# t.add_transition(0, libhfst.HfstBasicTransition(1, 'a', 'b', 0.3))
-# t.set_final_weight(1, 0.5)
-# 
-# # Convert to tropical OpenFst format and push weights toward final state.
-# T = libhfst.HfstTransducer(t, libhfst.TROPICAL_OPENFST_TYPE)
-# T.push_weights(libhfst.TO_FINAL_STATE)
-# 
-# # Convert back to HFST basic transducer.
-# tc = libhfst.HfstBasicTransducer(T)
-# try:
-#     # Rounding might affect the precision. 
-#     if (0.79 < tc.get_final_weight(1)) and (tc.get_final_weight(1) < 0.81):
-#         print "TEST OK"
-#         exit(0)
-#     else:
-#         print "TEST FAILED"
-#         exit(1)
-# # If the state does not exist or is not final */
-# except libhfst.HfstException:
-#     print "TEST FAILED: An exception thrown."
-# exit(1)
-# \endverbatim
-# 
-# 
-# An example of creating transducers from strings, applying rules to them and printing the string pairs recognized by the resulting transducer.
-# 
-# \verbatim
-# import libhfst
-# type = libhfst.FOMA_TYPE
-# 
-# # Create a simple lexicon transducer [[foo bar foo] | [foo bar baz]].
-# 
-# tok = libhfst.HfstTokenizer()
-# tok.add_multichar_symbol('foo')
-# tok.add_multichar_symbol('bar')
-# tok.add_multichar_symbol('baz')
-#   
-# words = libhfst.HfstTransducer("foobarfoo", tok, type)
-# t = libhfst.HfstTransducer("foobarbaz", tok, type);
-# words.disjunct(t)
-# 
-#   
-# # Create a rule transducer that optionally replaces 'bar' with 'baz' between 'foo' and 'foo'.
-# 
-# context = (libhfst.HfstTransducer('foo', type), libhfst.HfstTransducer('foo', type) )
-# mapping = libhfst.HfstTransducer('bar', 'baz', type)
-# optional = True
-# alphabet = (('foo','foo'), ('bar','bar'), ('baz','baz'))
-#   
-# rule = libhfst.replace_up(context, mapping, optional, alphabet)
-# 
-# 
-# # Apply the rule transducer to the lexicon. 
-# words.compose(rule).minimize()
-#   
-#   
-# # Extract all string pairs from the result and print them to standard output.
-# 
-# results = 0
-# try:
-#     # Extract paths and remove tokenization
-#     results = libhfst.detokenize_paths(libhfst.extract_paths(words))
-# except libhfst.TransducerIsCyclicException:
-#     # This should not happen because transducer is not cyclic.
-#     print "TEST FAILED"
-#     exit(1)
-# 
-# # Go through all paths and print them.
-# for path in results:
-#     print "%s : %s   %f" % (path.input, path.output, path.weight)
-# \endverbatim
-# 
-# An example of reading binary transducers from standard input, converting them to SFST format and writing them 
-# in binary format to standard output as well as in AT&T format to file 'testfile.att':
-# 
-# \verbatim
-# instr = libhfst.HfstInputStream()
-# outstr = libhfst.HfstOutputStream(libhfst.SFST_TYPE)
-# att_file = open('testfile.att', 'wb')
-# first_transducer = True
-# 
-# while not instr.is_eof():
-#     if not first_transducer:
-#         att_file.write("--") # AT&T format separator
-#     t = libhfst.HfstTransducer(instr)
-#     tc = libhfst.HfstTransducer(t, libhfst.SFST_TYPE)
-#     outstr.redirect(tc)
-#     tc.write_in_att_format(att_file)
-#     first_transducer = False
-# instr.close()
-# outstr.close()
-# att_file.close()
-# \endverbatim
-# 
-# <BR>
-
-## @page HfstWithSFSTOpenFstAndFoma.html Using HFST with SFST, OpenFst and foma
-# 
-# A binary HfstTransducer consists of an HFST header (more on HFST headers on the
-# <a href="https://kitwiki.csc.fi/twiki/bin/view/KitWiki/HfstTransducerHeader">
-# wiki pages</a>) and the transducer of the backend implementation. 
-# If you want to write backend transducers as such, you can specify it with 
-# the <i>hfst_format</i> argument of HfstOutputStream constructor:
-# 
-# \verbatim
-#    HfstOutputStream(type, hfst_format=True)
-# \endverbatim
-# 
-# The following piece of code will write a native OpenFst transducer 
-# with tropical weights to standard output:
-# 
-# \verbatim
-#    ab = libhfst.HfstTransducer('a', 'b', libhfst.TROPICAL_OFST_TYPE)
-#    out = libhfst.HfstOutputStream(ab.get_type(), False)
-#    out.redirect(ab)
-# \endverbatim
-# 
-# An HfstInputStream can also read backend transducers that do not have an
-# HFST header. If the standard input contains an SFST transducer, the following
-# piece of code will read it successfully and convert it into an HFST transducer
-# of type SFST_TYPE and write it to standard output (with the HFST header 
-# included).
-# 
-# \verbatim
-#    instr = HfstInputStream()
-#    tr = libhfst.HfstTransducer(instr)
-#    outstr = libhfst.HfstOutputStream(tr.get_type(), True)
-#    outstr.redirect(tr)
-# \endverbatim
-# 
-# For more information on HFST transducer formats and conversions, see the
-# <a href="https://kitwiki.csc.fi/twiki/bin/view/KitWiki/HfstTransducerFormats">
-# wiki pages</a>.
-# 
-# 
-# 
-# <H3>An issue with foma</H3>
-# 
-# Foma writes its binary transducers in gzipped format using the gz tools.
-# However, we experienced problems when trying to write to standard output or
-# read from standard in with gz tools (foma tools do not write to or read
-# from standard streams). So we choose to write, and accordingly read, 
-# foma transducers unzipped when writing or reading binary HfstTransducers 
-# of FOMA_TYPE. As a result, when we write an HfstTransducer of FOMA_TYPE
-# in its plain backend format, the user must zip it themselves before it 
-# can be used by foma tools. Similarily, a foma transducer must be unzipped 
-# before it can be read by HFST tools.
-# 
-# Suppose we have written a FOMA_TYPE HfstTransducer and want to use it with
-# foma tools. First we write it, in its plain backend format, to file 'ab.foma'
-# with the following piece of code:
-# 
-# \verbatim
-#    ab = libhfst.HfstTransducer ab('a', 'b', libhfst.FOMA_TYPE)
-#    out = libhfst.HfstOutputStream('ab.foma', libhfst.FOMA_TYPE, False)
-#    out.redirect(ab)
-# \endverbatim
-# 
-# The command 
-# 
-# \verbatim
-# gzip ab.foma
-# \endverbatim
-# 
-# will create a file 'ab.foma.gz' that can be used by foma tools.
-# 
-# The same with command line tools:
-# 
-# \verbatim
-#    echo 'a:b' | hfst-strings2fst -f foma > ab.hfst
-#    hfst-fst2fst --use-backend-format -f foma > ab.foma
-#    gzip ab.foma
-# \endverbatim
-# 
-# An example of the opposite case follows. Suppose we have a foma transducer
-# 'transducer.foma' and want to read it inside an HFST program.
-# The name of the file must be appended a .gz extension so that the program 
-# 'gunzip' knows it is a zipped file. The commands
-# 
-# \verbatim
-# mv transducer.foma transducer.foma.gz
-# gunzip transducer.foma.gz
-# \endverbatim
-# 
-# overwrite the original file 'transducer.foma' with an unzipped version of the
-# same file. Now the file can be used by HFST:
-# 
-# \verbatim
-#    instr = libhfst.HfstInputStream('transducer.foma')
-#    tr = libhfst.HfstTransducer(instrOA)
-# \endverbatim
-# 
-# The same with command line tools:
-# 
-# \verbatim
-#    mv transducer.foma transducer.foma.gz
-#    gunzip transducer.foma.gz
-#    hfst-sometool transducer.foma
-# \endverbatim
-
-## @page InstallHfst.html Installing the HFST API library and Swig/Python bindings
-# 
-# TODO
diff --git a/old_python/hfstBot.py b/old_python/hfstBot.py
deleted file mode 100644
index 69b5dbb..0000000
--- a/old_python/hfstBot.py
+++ /dev/null
@@ -1,176 +0,0 @@
-"""
-hfst-bot
-
-If someone says the bot's name in the channel followed by a ': ' and a string,
-e.g.
-
-  <foo> hfstbot: koira
-
-the bot will perform a lookup on the first word in the string and return the
-results:
-
-  <hfstbot> foo: koira<N><Sg><Nom><cap>
-
-Run this script with three arguments: the irc server the bot should
-connect to, the channel it should join and the file to use for analysis, e.g.:
-
-  $ python hfstbot.py chat.freenode.net hfst /home/sam/ircbot/omorfi.hfstol
-
-If the file $IRCSERVER-$CHANNELNAME-$TRANSDUCERFILE-misses.txt is writeable,
-hfstbot will append to it words that it wasn't able to return any analyses for.
-"""
-
-# twisted imports
-from twisted.words.protocols import irc
-from twisted.internet import reactor, protocol
-#from twisted.python import log
-
-# system imports
-import sys
-import time
-
-import libhfst
-from itertools import ifilterfalse as ffilter
-
-logfilename = sys.argv[1] + "-" + sys.argv[2].replace('#','') + "-" + \
-    sys.argv[3].split('/')[-1] + "-misses.txt"
-
-class MorphologicalAnalyzer:
-    """
-    Class for morphological analysis
-    """
-    def __init__(self, filename):
-        self.istr = libhfst.HfstInputStream(filename)
-        self.transducer = libhfst.HfstTransducer(self.istr)
-
-    def process_result_vector(self, rvector):
-        results = []
-        for entry in rvector:
-            if len(entry) < 2:
-                continue
-            weight = entry[0]
-            string = ''.join(
-                ffilter(libhfst.FdOperation.is_diacritic, entry[1]))
-            results.append(string)
-        return results
-
-    def analyze(self, message):
-        """Return analyses"""
-        results = self.transducer.lookup_fd(message)
-        vresults = libhfst.vectorize(results)
-        return self.process_result_vector(vresults)
-
-    def close(self):
-        pass
-#        self.istr.close()
-
-class HfstBot(irc.IRCClient):
-    """Hfst-utilizing bot"""
-    
-    nickname = "hfstbot"
-    
-    def connectionMade(self):
-        irc.IRCClient.connectionMade(self)
-        self.analyzer = MorphologicalAnalyzer(self.factory.filename)
-
-    def connectionLost(self, reason):
-        irc.IRCClient.connectionLost(self, reason)
-        if self.logfilehandle != None:
-            self.logfilehandle.close()
-        self.analyzer.close()
-
-    # callbacks for events
-
-    def signedOn(self):
-        """Called when bot has successfully signed on to server."""
-        self.join(self.factory.channel)
-
-    def joined(self, channel):
-        """This will get called when the bot joins the channel."""
-        print logfilename
-        try:
-            self.logfilehandle = open(logfilename, 'a')
-        except IOError:
-            self.logfilehandle = None
-
-    def privmsg(self, user, channel, msg):
-        """This will get called when the bot receives a message."""
-        # Check to see if they're sending me a private message
-        if channel == self.nickname:
-            msg = msg.strip().split(' ')[0].strip()
-            analysis_results = self.analyzer.analyze(msg)
-            if len(analysis_results) == 0:
-                self.msg(user, "I don't know that word!")
-                if self.logfilehandle != None:
-                    self.logfilehandle.write(msg + '\n')
-            else:
-                for result in analysis_results:
-                    self.msg(user, result)
-            return
-
-        # Otherwise check to see if it is a message directed at me
-        if msg.startswith(self.nickname) and msg[len(self.nickname)] in ':,':
-            msg = msg[len(self.nickname) + 1:].strip().split(' ')[0].strip()
-            replyprefix = "%s: " % user.split('!')[0]
-            analysis_results = self.analyzer.analyze(msg)
-            if len(analysis_results) == 0:
-                self.notice(user, "I don't know that word!")
-                if self.logfilehandle != None:
-                    self.logfilehandle.write(msg + '\n')
-            else:
-                timeout = 0
-                for result in analysis_results:
-                    if timeout == 5:
-                        time.sleep(1)
-                        timeout = 0
-                    self.msg(channel, replyprefix + result)
-                    timeout += 1
-
-    def action(self, user, channel, msg):
-        """This will get called when the bot sees someone do an action."""
-        pass
-#        user = user.split('!', 1)[0]
-#        self.logger.log("* %s %s" % (user, msg))
-
-    # irc callbacks
-
-    def irc_NICK(self, prefix, params):
-        """Called when an IRC user changes their nickname."""
-        pass
-#        old_nick = prefix.split('!')[0]
-#        new_nick = params[0]
-#        self.logger.log("%s is now known as %s" % (old_nick, new_nick))
-
-
-class HfstBotFactory(protocol.ClientFactory):
-    """A factory for LogBots.
-
-    A new protocol instance will be created each time we connect to the server.
-    """
-
-    # the class of the protocol to build when new connection is made
-    protocol = HfstBot
-
-    def __init__(self, channel, filename):
-        self.channel = channel
-        self.filename = filename
-
-    def clientConnectionLost(self, connector, reason):
-        """If we get disconnected, reconnect to server."""
-        connector.connect()
-
-    def clientConnectionFailed(self, connector, reason):
-        print "connection failed:", reason
-        reactor.stop()
-
-
-if __name__ == '__main__':
-    
-    # create factory protocol and application
-    f = HfstBotFactory(sys.argv[2], sys.argv[3])
-
-    # connect factory to this host and port
-    reactor.connectTCP(sys.argv[1], 6667, f)
-
-    # run bot
-    reactor.run()
diff --git a/old_python/hfst_swig_extensions.h b/old_python/hfst_swig_extensions.h
deleted file mode 100644
index b554c57..0000000
--- a/old_python/hfst_swig_extensions.h
+++ /dev/null
@@ -1,189 +0,0 @@
-#include <string>
-#include <vector>
-#include <utility>
-#include <iostream>
-#include <fstream>
-#include "HfstDataTypes.h"
-#include "HfstTransducer.h"
-#include "HfstFlagDiacritics.h"
-#include "implementations/optimized-lookup/pmatch.h"
-
-// NO EFFECT in Swig...
-// Make sure that all standard streams are in binary mode.
-// Line feed and carriage return characters are not handled correctly
-// in text mode.
-//#include <fcntl.h>
-//int _CRT_fmode = _O_BINARY;
-
-
-typedef std::vector<std::pair <float, std::vector<std::string> > >
-OneLevelPathVector;
-
-typedef std::vector<std::pair <float, std::vector<std::pair<std::string, std::string> > > >
-TwoLevelPathVector;
-
-typedef std::vector<std::pair <std::string, float> > StringFloatVector;
-
-class HfstPath {
- public:
-  float weight;
-  std::string input;
-  std::string output;
-  HfstPath() {
-    weight = 0;
-    input = std::string("");
-    output = std::string("");
-  };
-  HfstPath(const HfstPath &path) {
-    weight = path.weight;
-    input = path.input;
-    output = path.output;
-  };
-  HfstPath(float weight_, std::string &input_, std::string &output_) {
-    weight = weight_;
-    input = input_;
-    output = output_;
-  };
-  ~HfstPath() {};
-  void operator=(const HfstPath &path) {
-    weight = path.weight;
-    input = path.input;
-    output = path.output;
-  };
-};
-
-typedef std::vector<HfstPath> HfstPathVector;
-
-namespace hfst {
-
-  HfstTransducer ptrvalue(const HfstTransducer * t) {
-    return *t;
-  }
-
-  HfstTwoLevelPaths extract_paths(const HfstTransducer &t, int max_num=-1, int cycles=-1)
-  {
-    HfstTwoLevelPaths result;
-    t.extract_paths(result, max_num, cycles);
-    return result;
-  }
-
-  HfstTwoLevelPaths extract_paths_fd(const HfstTransducer &t, int max_num=-1, int cycles=-1, bool filter_fd=false)
-  {
-    HfstTwoLevelPaths result;
-    t.extract_paths_fd(result, max_num, cycles, filter_fd);
-    return result;
-  }
-
-  OneLevelPathVector vectorize(HfstOneLevelPaths * holps)
-  {
-    std::vector<std::pair <float, std::vector<std::string> > > retval;
-    for (HfstOneLevelPaths::const_iterator it = holps->begin();
-         it != holps->end(); ++it) {
-      retval.push_back(*it);
-    }
-    return retval;
-  }
-  
-  TwoLevelPathVector vectorize(HfstTwoLevelPaths htlps)
-  {
-    std::vector<std::pair <float, std::vector<std::pair<std::string, std::string > > > > retval;
-    for (HfstTwoLevelPaths::const_iterator it = htlps.begin();
-         it != htlps.end(); ++it) {
-      retval.push_back(*it);
-    }
-    return retval;
-  }
-
-  OneLevelPathVector purge_flags(OneLevelPathVector olpv)
-  {
-    OneLevelPathVector retval;
-    for (OneLevelPathVector::const_iterator it = olpv.begin(); it != olpv.end();
-         ++it) {
-      std::vector<std::string> temp;
-      for (std::vector<std::string>::const_iterator str_it =
-             it->second.begin(); str_it != it->second.end(); ++str_it) {
-        if (!FdOperation::is_diacritic(*str_it)) {
-          temp.push_back(*str_it);
-        }
-      }
-      retval.push_back(std::pair<float, std::vector<std::string> >(it->first, temp));
-    }
-    return retval;
-  }
-
-  TwoLevelPathVector purge_flags(TwoLevelPathVector tlpv)
-  {
-    TwoLevelPathVector retval;
-    for (TwoLevelPathVector::const_iterator it = tlpv.begin(); it != tlpv.end();
-         ++it) {
-      std::vector<std::pair<std::string, std::string> > temp;
-      for (std::vector<std::pair<std::string, std::string> >::const_iterator pair_it =
-             it->second.begin(); pair_it != it->second.end(); ++pair_it) {
-        if (!FdOperation::is_diacritic(pair_it->first)) {
-          temp.push_back(*pair_it);
-        }
-      }
-      retval.push_back(std::pair<float, std::vector<std::pair<std::string, std::string> > >(it->first, temp));
-    }
-    return retval;
-  }
-  
-  HfstPathVector detokenize_vector(OneLevelPathVector olpv)
-  {
-    HfstPathVector retval;
-    for (OneLevelPathVector::const_iterator it = olpv.begin(); it != olpv.end();
-         ++it) {
-      std::string temp;
-      for (std::vector<std::string>::const_iterator str_it =
-             it->second.begin(); str_it != it->second.end(); ++str_it) {
-        temp.append(*str_it);
-      }
-      retval.push_back(HfstPath(it->first, temp, temp));
-    }
-    return retval;
-  }
-
-  HfstPathVector detokenize_vector(TwoLevelPathVector tlpv)
-  {
-    HfstPathVector retval;
-    for (TwoLevelPathVector::const_iterator it = tlpv.begin(); it != tlpv.end();
-         ++it) {
-      std::string temp_in;
-      std::string temp_out;
-      for (std::vector<std::pair<std::string, std::string> >::const_iterator pair_it =
-             it->second.begin(); pair_it != it->second.end(); ++pair_it) {
-        temp_in.append(pair_it->first);
-        temp_out.append(pair_it->second);
-      }
-      retval.push_back(HfstPath(it->first, temp_in, temp_out));
-    }
-    return retval;
-  }
-  
-  HfstPathVector detokenize_paths(HfstOneLevelPaths * holps)
-  {
-    return detokenize_vector(vectorize(holps));
-  }
-
-  HfstPathVector detokenize_paths(HfstTwoLevelPaths htlps)
-  {
-    return detokenize_vector(vectorize(htlps));
-  }
-
-  HfstPathVector detokenize_and_purge_paths(HfstOneLevelPaths * holps)
-  {
-    return detokenize_vector(purge_flags(vectorize(holps)));
-  }
-
-  HfstPathVector detokenize_and_purge_paths(HfstTwoLevelPaths htlps)
-  {
-    return detokenize_vector(purge_flags(vectorize(htlps)));
-  }
-
-}
-
-hfst_ol::PmatchContainer & load_pmatch(std::string filename)
-{
-    std::ifstream instream(filename.c_str());
-    return * (new hfst_ol::PmatchContainer(instream));
-}
diff --git a/old_python/libhfst.i b/old_python/libhfst.i
deleted file mode 100644
index 40309b9..0000000
--- a/old_python/libhfst.i
+++ /dev/null
@@ -1,566 +0,0 @@
-%module libhfst
-%include "std_string.i"
-%include "std_set.i"
-%include "std_vector.i"
-%include "std_pair.i"
-%include "std_map.i"
-%include "std_iostream.i"
-%include "std_ios.i"
-%include "file.i"
-%include "exception.i"
-
-%{
-#define SWIG_FILE_WITH_INIT
-#include "HfstTransducer.h"
-#include "HfstInputStream.h"
-#include "HfstOutputStream.h"
-#include "HfstDataTypes.h"
-#include "HfstFlagDiacritics.h"
-#include "parsers/XreCompiler.h"
-#include "hfst_swig_extensions.h"
-#include "HfstExceptionDefs.h"
-#include "implementations/optimized-lookup/pmatch.h"
-
-namespace hfst {
-  class HfstFile {
-    private:
-      FILE * file;
-    public:
-      HfstFile();
-      ~HfstFile();
-      void set_file(FILE * f);
-      FILE * get_file();
-      void close();
-      void write(const char * str);
-      bool is_eof(void);
-  };
-
-  HfstFile::HfstFile(): file(NULL){};
-  HfstFile::~HfstFile() {};
-  void HfstFile::set_file(FILE * f) { file = f; };
-  FILE * HfstFile::get_file() { return file; };
-  void HfstFile::close() { if (file != stdout && file != stderr && file != stdin) { fclose(file); } };
-  void HfstFile::write(const char * str) { fprintf(file, "%s", str); };
-  bool HfstFile::is_eof(void) { return (feof(file) != 0); };
-
-  HfstFile hfst_open(const char * filename, const char * mode) {
-    FILE * f = fopen(filename, mode);
-    HfstFile file;
-    file.set_file(f);
-    return file;
-  };
-
-  HfstFile hfst_stdin() {
-    HfstFile file;
-    file.set_file(stdin);
-    return file;
-  };
-
-  HfstFile hfst_stdout() {
-    HfstFile file;
-    file.set_file(stdout);
-    return file;
-  };
-}
-
-%}
-
-
-class HfstPath {
-public:
-  float weight;
-  std::string input;
-  std::string output;
-  ~HfstPath();
-};
-
-namespace std {
-%template(StringVector) vector<string>;
-%template(StringPairVector) vector<pair<string, string > >;
-%template(OneLevelPath) pair<float, vector<string> >;
-%template(OneLevelPathVector) vector<pair<float, vector<string> > >;
-%template(OneLevelPaths) set<pair<float, vector<string> > >;
-#%template(StringFloatVector) vector<pair<string, float> >;
-%template(StringPair) pair<string, string>;
-%template(StringPairSet) set<pair<string, string> >;
-%template(StringSet) set<string>;
-%template(HfstTransitions) vector<hfst::implementations::HfstBasicTransition>;
-%template(IntVector) vector<unsigned int>;
-%template(HfstTwoLevelPaths) set<pair<float, vector<pair <string, string> > > >;
-%template(HfstPathVector) vector<HfstPath>;
-%template(HfstSymbolSubstitutions) map<string, string>;
-%template(HfstSymbolPairSubstitutions) map<pair<string, string>, pair<string, string> >;
-%template(HfstTransducerPair) pair<hfst::HfstTransducer, hfst::HfstTransducer>;
-%template(HfstTransducerPairVector) vector<pair<hfst::HfstTransducer, hfst::HfstTransducer> >;
-}
-
-%include <typemaps.i>
-%apply unsigned int & INPUT { unsigned int & linecount };
-
-class HfstException {
-public:
-HfstException(const std::string&, const std::string&, size_t);
-    %extend {
-    char *__str__() {
-      std::string msg = $self->operator()();
-      return strdup(msg.c_str());
-    }
-    }
-};
-
-class HfstTransducerTypeMismatchException: public HfstException {};
-class ImplementationTypeNotAvailableException: public HfstException {};
-class FunctionNotImplementedException: public HfstException {};
-class StreamNotReadableException: public HfstException {};
-class StreamCannotBeWrittenException: public HfstException {};
-class StreamIsClosedException: public HfstException {};
-class EndOfStreamException: public HfstException {};
-class TransducerIsCyclicException: public HfstException {};
-class NotTransducerStreamException: public HfstException {};
-class NotValidAttFormatException: public HfstException {};
-class NotValidLexcFormatException: public HfstException {};
-class StateIsNotFinalException: public HfstException {};
-class ContextTransducersAreNotAutomataException: public HfstException {};
-class TransducersAreNotAutomataException: public HfstException {};
-class StateIndexOutOfBoundsException: public HfstException {};
-class TransducerHeaderException: public HfstException {};
-class MissingOpenFstInputSymbolTableException: public HfstException {};
-class TransducerTypeMismatchException: public HfstException {};
-class EmptySetOfContextsException: public HfstException {};
-class SpecifiedTypeRequiredException: public HfstException {};
-class HfstFatalException: public HfstException {};
-class TransducerHasWrongTypeException: public HfstException {};
-class IncorrectUtf8CodingException: public HfstException {};
-class EmptyStringException: public HfstException {};
-class SymbolNotFoundException: public HfstException {};
-class MetadataException: public HfstException {};
-
-std::string hfst_get_exception();
-
-namespace hfst
-{
-
-class HfstFile {
-  public:
-    HfstFile();
-    ~HfstFile();
-    void write(const char * str);
-    void close();
-    bool is_eof(void);
-};
-
-HfstFile hfst_stdout();
-HfstFile hfst_stdin();
-HfstFile hfst_open(const char * filename, const char * mode);
-
-
-/*
- * One of the (apparent) peculiarities of swig is that things break in the
- * wrapper very easily if things aren't defined in precisely the right order,
- * and often it's necessary to forward define things. For that reason there's
- * some overkill in the forward definitions in this file.
- */
-
-  enum ImplementationType
-  {
-    SFST_TYPE,
-    TROPICAL_OPENFST_TYPE,
-    LOG_OPENFST_TYPE,
-    FOMA_TYPE,
-    HFST_OL_TYPE,
-    HFST_OLW_TYPE,
-    HFST2_TYPE,
-    UNSPECIFIED_TYPE,
-    ERROR_TYPE
-  };
-
-  enum PushType
-  {
-    TO_INITIAL_STATE,
-    TO_FINAL_STATE
-  };
-
-
-class HfstInputStream;
-typedef HfstOneLevelPaths std::set<pair<float, vector<string> > >;
-//class HfstTwoLevelPaths;
-class HfstOutputStream;
-class HfstTransducer;
-class FdOperation;
-class HfstTokenizer;
-typedef std::vector<HfstTransducer> HfstTransducerVector;
-typedef std::set<std::string> StringSet;
-typedef std::pair<std::string, std::string> StringPair;
-typedef std::set<std::pair<std::string, std::string> > StringPairSet;
-typedef std::vector<std::string> StringVector;
-typedef std::vector<std::pair<std::string, std::string> > StringPairVector;
-
-typedef std::map<std::string, std::string> HfstSymbolSubstitutions;
-typedef std::map<std::pair<std::string, std::string>, std::pair<std::string, std::string> > HfstSymbolPairSubstitutions;
-
-typedef std::set<std::pair<float, std::vector<std::pair <std::string, std::string> > > > HfstTwoLevelPaths; 
-
-HfstTwoLevelPaths extract_paths(const HfstTransducer &t, int max_num=-1, int cycles=-1) throw (TransducerIsCyclicException);
-HfstTwoLevelPaths extract_paths_fd(const HfstTransducer &t, int max_num=-1, int cycles=-1, bool filter_fd=false) throw (TransducerIsCyclicException);
-
-typedef std::pair<HfstTransducer, HfstTransducer> HfstTransducerPair;
-typedef std::vector<std::pair<HfstTransducer, HfstTransducer> > HfstTransducerPairVector;
-
-namespace implementations {
-class HfstBasicTransducer;
-class HfstBasicTransition;
-
-typedef unsigned int HfstState;
-
-class HfstBasicTransducer {
-public:
-
-typedef std::vector<HfstBasicTransition> HfstTransitions;
-
-HfstState add_state (void);
-HfstState add_state (HfstState s);
-std::vector<unsigned int> states() const;
-void add_symbol_to_alphabet (const std::string &symbol);
-void add_symbols_to_alphabet (const hfst::StringSet &symbols);
-void add_transition (HfstState s, const HfstBasicTransition &transition, bool add_symbols_to_alphabet=true);
-HfstBasicTransducer & disjunct(const StringPairVector &spv, float weight);
-const StringSet &get_alphabet () const;
-float get_final_weight (HfstState s) const throw (StateIsNotFinalException);
-HfstState get_max_state () const;
-HfstBasicTransducer &harmonize (HfstBasicTransducer &another);
-HfstBasicTransducer (void);
-HfstBasicTransducer (const HfstBasicTransducer &graph);
-HfstBasicTransducer (const hfst::HfstTransducer &transducer);
-HfstBasicTransducer (FILE *file) throw (NotValidAttFormatException);
-//HfstBasicTransducer (HfstFile &file) throw (NotValidAttFormatException);
-HfstBasicTransducer & insert_freely (const StringPair &symbol_pair, float weight);
-HfstBasicTransducer & insert_freely (const StringPairSet &symbol_pairs, float weight);
-HfstBasicTransducer & insert_freely (const HfstBasicTransducer &graph);
-bool is_final_state (HfstState s) const;
-HfstBasicTransducer & assign (const HfstBasicTransducer &graph);
-const HfstTransitions & transitions (HfstState s) const;
-void prune_alphabet ();
-void remove_symbol_from_alphabet (const std::string &symbol);
-void set_final_weight (HfstState s, const float &weight);
-HfstBasicTransducer & sort_arcs (void);
-HfstBasicTransducer & substitute (const std::string &old_symbol, const std::string &new_symbol, bool input_side=true, bool output_side=true);
-HfstBasicTransducer & substitute_symbols (const HfstSymbolSubstitutions &substitutions);
-HfstBasicTransducer & substitute_symbol_pairs (const HfstSymbolPairSubstitutions &substitutions);
-HfstBasicTransducer & substitute (const StringPair &sp, const StringPairSet &sps);
-HfstBasicTransducer & substitute (const StringPair &old_pair, const StringPair &new_pair);
-HfstBasicTransducer & substitute (bool(*func)(const StringPair &sp, StringPairSet &sps));
-HfstBasicTransducer & substitute (const StringPair &sp, const HfstBasicTransducer &graph);
-void write_in_att_format (std::ostream &os, bool write_weights=true);
-void write_in_att_format (FILE *file, bool write_weights=true);
-void write_in_att_format_number (FILE *file, bool write_weights=true);
-
-    %extend {
-    char *__str__() {
-    	 static char tmp[1024]; 
-    	 $self->write_in_att_format(tmp);
-	 return tmp;    
-    }
-    HfstBasicTransducer(HfstFile &file) throw (NotValidAttFormatException) {
-         return new hfst::implementations::HfstBasicTransducer(file.get_file());                        
-    }
-    };
-
-};
-
-class HfstBasicTransition {
-public:
-	HfstBasicTransition(HfstState s, const std::string &input, const std::string &output, float weight) throw (EmptyStringException);
-	~HfstBasicTransition();
-	std::string get_input_symbol() const;
-	std::string get_output_symbol() const;
-	HfstState get_target_state() const;
-	float get_weight() const;
-	
-    %extend {
-    char *__str__() {
-    	 static char tmp[1024];
-    	 sprintf(tmp, "%s\t%s\t%i\t%f\n", 
-	 $self->get_input_symbol().c_str(), 
-	 $self->get_output_symbol().c_str(), 
-	 $self->get_target_state(), 
-	 $self->get_weight());
-	 return tmp;    
-    }
-    };
-
-};
-
-}
-
-// From hfst_swig_extensions.h
-std::vector<std::pair <float, std::vector<std::string> > > vectorize(hfst::HfstOneLevelPaths * olps);
-std::vector<std::pair <float, std::vector<std::pair<std::string, std::string> > > > vectorize(hfst::HfstTwoLevelPaths tlps);
-std::vector<std::pair <float, std::vector<std::string> > > purge_flags(std::vector<std::pair<float, std::vector<std::string> > > olpv);
-std::vector<HfstPath> detokenize_vector(OneLevelPathVector olpv);
-std::vector<HfstPath> detokenize_paths(hfst::HfstOneLevelPaths * olps);
-std::vector<HfstPath> detokenize_and_purge_paths(hfst::HfstOneLevelPaths * olps);
-std::vector<HfstPath> detokenize_vector(TwoLevelPathVector tlpv);
-std::vector<HfstPath> detokenize_paths(hfst::HfstTwoLevelPaths tlps);
-std::vector<HfstPath> detokenize_and_purge_paths(hfst::HfstTwoLevelPaths tlps);
-
-class HfstInputStream{
-public:
-    HfstInputStream(const std::string & filename) throw (NotTransducerStreamException);
-    HfstInputStream(void);
-    void close(void);
-    bool is_bad(void);
-    bool is_eof(void);
-    bool is_good(void);
-    ~HfstInputStream(void);
-};
-
-class HfstOutputStream{
-public:
-    HfstOutputStream(const std::string & filename, ImplementationType type, bool hfst_format=true);
-    HfstOutputStream(ImplementationType type, bool hfst_format=true);
-    void close(void);
-    HfstOutputStream & redirect (HfstTransducer & transducer) throw (StreamIsClosedException);
-    ~HfstOutputStream(void);
-};
-
-class HfstTransducer {
-public:
-    // First all the constructors
-    HfstTransducer();
-    HfstTransducer(HfstInputStream & in) throw (EndOfStreamException);
-    HfstTransducer(const HfstTransducer &another);
-    HfstTransducer(const std::string &utf8_str, const HfstTokenizer &multichar_symbol_tokenizer, ImplementationType type);
-    HfstTransducer(const std::string &input_utf8_str, const std::string &output_utf8_str, const HfstTokenizer &multichar_symbol_tokenizer, ImplementationType type);
-    HfstTransducer(const hfst::implementations::HfstBasicTransducer &t, ImplementationType type);
-    HfstTransducer(ImplementationType type);
-    HfstTransducer(const std::string &symbol, ImplementationType type);
-    HfstTransducer(const std::string &isymbol, const std::string &osymbol, ImplementationType type);
-    HfstTransducer(FILE *ifile, ImplementationType type, const std::string &epsilon_symbol) throw (EndOfStreamException, NotValidAttFormatException);
-    //HfstTransducer(HfstFile &ifile, ImplementationType type, const std::string &epsilon_symbol) throw (EndOfStreamException, NotValidAttFormatException);
-    
-    // Then everything else, in the (alphabetic) order in the API manual
-    bool compare(const HfstTransducer &another) const;
-    HfstTransducer & compose(const HfstTransducer &another);
-    HfstTransducer & compose_intersect(const HfstTransducerVector &v,
-                                       bool invert=false);
-    HfstTransducer & concatenate(const HfstTransducer &another);
-    HfstTransducer & convert(ImplementationType type, std::string options="");
-    HfstTransducer & determinize(void);
-    HfstTransducer & disjunct(const HfstTransducer &another) throw (TransducerTypeMismatchException);
-    void extract_paths(HfstTwoLevelPaths &results, int max_num=-1, int cycles=-1) const;
-    void extract_paths_fd(HfstTwoLevelPaths &results, int max_num=-1, int cycles=-1, bool filter_fd=true) const;
-    StringSet get_alphabet(void) const;
-    std::string get_name(void) const;
-    ImplementationType get_type(void) const;
-    HfstTransducer & input_project(void);
-    HfstTransducer & insert_freely(const StringPair &symbol_pair);
-    HfstTransducer & insert_freely(const HfstTransducer &tr);
-    void insert_to_alphabet(const std::string &symbol);
-    HfstTransducer & intersect(const HfstTransducer &another) throw (TransducerTypeMismatchException);
-    HfstTransducer & invert(void);
-    bool is_cyclic(void) const;
-    bool is_lookdown_infinitely_ambiguous(const StringVector &s) const;
-    bool is_lookup_infinitely_ambiguous (const StringVector &s) const;
-    hfst::HfstOneLevelPaths *	lookdown(const StringVector &s, ssize_t limit=-1) const;
-    hfst::HfstOneLevelPaths *	lookdown_fd(StringVector &s, ssize_t limit=-1) const;
-    hfst::HfstOneLevelPaths * lookup(const StringVector &s, ssize_t limit=-1) const;
-    hfst::HfstOneLevelPaths *	lookup(const std::string &s, ssize_t limit=-1) const;
-    hfst::HfstOneLevelPaths *	lookup(const HfstTokenizer &tok, const std::string &s, ssize_t limit=-1) const;
-    hfst::HfstOneLevelPaths * lookup_fd(const std::string & s, ssize_t limit = -1) const;
-    HfstTransducer & minimize(void);
-    HfstTransducer & n_best(unsigned int n);
-    HfstTransducer & assign (const HfstTransducer & another) throw (TransducerTypeMismatchException);
-    HfstTransducer & optionalize(void);
-    HfstTransducer & output_project(void);
-    HfstTransducer & priority_union (const HfstTransducer &another)  throw (TransducerTypeMismatchException);
-    HfstTransducer & push_weights(PushType type);
-    HfstTransducer & remove_epsilons(void);
-    void remove_from_alphabet(const std::string &symbol);
-    HfstTransducer & repeat_n(unsigned int n);
-    HfstTransducer & repeat_n_minus(unsigned int n);
-    HfstTransducer & repeat_n_plus(unsigned int n);
-    HfstTransducer & repeat_n_to_k(unsigned int n, unsigned int k);
-    HfstTransducer & repeat_plus(void);
-    HfstTransducer & repeat_star(void);
-    HfstTransducer & reverse (void);
-    HfstTransducer & set_final_weights(float weight);
-    void set_name(const std::string &name);
-    HfstTransducer & shuffle(const HfstTransducer &another) throw (TransducersAreNotAutomataException, TransducerTypeMismatchException);
-    HfstTransducer & substitute(bool(*func)(const StringPair &sp, StringPairSet &sps));
-    HfstTransducer & substitute(const StringPair &old_symbol_pair, const StringPairSet &new_symbol_pair_set);
-    HfstTransducer & substitute(const StringPair &symbol_pair, HfstTransducer &transducer);
-    HfstTransducer & substitute(const std::string &old_symbol, const std::string &new_symbol, bool input_side=true, bool output_side=true);
-    HfstTransducer & substitute(const StringPair &old_symbol_pair, const StringPair &new_symbol_pair);
-    HfstTransducer & substitute_symbols(const HfstSymbolSubstitutions &substitutions);
-    HfstTransducer & substitute_symbol_pairs(const HfstSymbolPairSubstitutions &substitutions);
-    HfstTransducer & subtract(const HfstTransducer &another) throw (TransducerTypeMismatchException);
-    HfstTransducer & transform_weights(float(*func)(float));
-    void write_in_att_format(const std::string &filename, bool write_weights=true) const;
-    void write_in_att_format(FILE *ofile, bool write_weights=true) const;
-    //void write_in_att_format(HfstFile &ofile, bool write_weights=true) const;
-    void write_in_att_format(char * buffer, bool write_weights=true) const;
-    virtual ~HfstTransducer(void);
-    static HfstTransducer read_lexc(const std::string &filename, ImplementationType type, bool );
-    static HfstTransducer universal_pair(ImplementationType type);
-
-    static bool is_implementation_type_available(ImplementationType impl);
-
-    %extend {
-
-    char *__str__() {
-    	 static char tmp[1024]; 
-    	 $self->write_in_att_format(tmp);
-	 return tmp;    
-    }
-
-    HfstTransducer(HfstFile &ifile, ImplementationType type, const std::string &epsilon_symbol) throw (EndOfStreamException, NotValidAttFormatException) {
-         return new hfst::HfstTransducer(ifile.get_file(), type, epsilon_symbol);
-    }
-
-    void write_in_att_format(HfstFile &ofile, bool write_weights=true) const {
-         return $self->write_in_att_format(ofile.get_file(), write_weights);
-    }
-
-    HfstTransducer & __add__(const HfstTransducer & another) {
-         return $self->concatenate(another);
-    }
-    HfstTransducer & __sub__(const HfstTransducer & another) {
-         return $self->subtract(another);
-    }
-    HfstTransducer & __or__(const HfstTransducer & another) {
-         return $self->intersect(another);
-    }
-    HfstTransducer & __and__(const HfstTransducer & another) {
-         return $self->disjunct(another);
-    }
-    
-    };
-
-};
-
-
-  class MultiCharSymbolTrie;
-  typedef std::vector<MultiCharSymbolTrie*> MultiCharSymbolTrieVector;
-  typedef std::vector<bool> SymbolEndVector;
-
-  class MultiCharSymbolTrie
-  {
-  public:
-    MultiCharSymbolTrie(void);
-    ~MultiCharSymbolTrie(void);
-    void add(const char * p);
-    const char * find(const char * p) const;  
-  };
-  
-  class HfstTokenizer
-  {  
-  public:
-
-    HfstTokenizer();
-    void add_skip_symbol(const std::string &symbol);
-    void add_multichar_symbol(const std::string& symbol);
-    StringPairVector tokenize(const std::string &input_string) const;
-    StringVector tokenize_one_level(const std::string &input_string) const;
-    StringPairVector tokenize(const std::string &input_string,
-                              const std::string &output_string) const;
-    static void check_utf8_correctness(const std::string &input_string);
-  };
-
-  HfstTransducer ptrvalue(const HfstTransducer * t);
-
-  namespace lexc {
-
-  class LexcCompiler
-  {
-  public:
-    LexcCompiler();
-    LexcCompiler(hfst::ImplementationType impl);
-    LexcCompiler& parse(FILE* infile);
-    LexcCompiler& parse(const char* filename);
-    LexcCompiler& setVerbosity(unsigned int verbose);
-    LexcCompiler& addAlphabet(const std::string& alphabet);
-    LexcCompiler& setCurrentLexiconName(const std::string& lexicon_name);
-    LexcCompiler& addStringEntry(const std::string& entry, const std::string& continuation, const double weight);
-    LexcCompiler& addStringPairEntry(const std::string& upper, const std::string& lower, const std::string& continuation, const double weight);
-    LexcCompiler& addXreEntry(const std::string& xre, const std::string& continuation, const double weight);
-    LexcCompiler& addXreDefinition(const std::string& name, const std::string& xre);
-    LexcCompiler& setInitialLexiconName(const std::string& lexicon_name);
-    hfst::HfstTransducer * compileLexical();
-    //const std::map<std::string,hfst::HfstTransducer>& getStringTries() const;
-    //const std::map<std::string,hfst::HfstTransducer>& getRegexpUnions() const;
-    const LexcCompiler& printConnectedness(bool & warnings);
-  };
-  };
-
-  namespace xre {
-
-    class XreCompiler
-    {
-    public:
-      XreCompiler();
-      XreCompiler(hfst::ImplementationType impl);
-      void define(const std::string& name, const std::string& xre);
-      void set_expand_definitions(bool);
-      HfstTransducer* compile(const std::string& xre); // TODO: Warning 321: 'compile' conflicts with a built-in name in python
-    };
-
-  };
-
-  namespace rules {
-
-    HfstTransducer two_level_if(HfstTransducerPair &context, StringPairSet &mappings, StringPairSet &alphabet);
-    HfstTransducer two_level_only_if(HfstTransducerPair &context, StringPairSet &mappings, StringPairSet &alphabet);
-    HfstTransducer two_level_if_and_only_if(HfstTransducerPair &context, StringPairSet &mappings, StringPairSet &alphabet);
-    HfstTransducer replace_up(HfstTransducerPair &context, HfstTransducer &mapping, bool optional, StringPairSet &alphabet);
-    HfstTransducer replace_down(HfstTransducerPair &context, HfstTransducer &mapping, bool optional, StringPairSet &alphabet);
-    HfstTransducer replace_down_karttunen(HfstTransducerPair &context, HfstTransducer &mapping, bool optional, StringPairSet &alphabet);
-    HfstTransducer replace_right(HfstTransducerPair &context, HfstTransducer &mapping, bool optional, StringPairSet &alphabet);
-    HfstTransducer replace_left(HfstTransducerPair &context, HfstTransducer &mapping, bool optional, StringPairSet &alphabet);
-    HfstTransducer replace_up(HfstTransducer &mapping, bool optional, StringPairSet &alphabet);
-    HfstTransducer replace_down(HfstTransducer &mapping, bool optional, StringPairSet &alphabet);
-    HfstTransducer left_replace_up(HfstTransducer&mapping, bool optional, StringPairSet  &alphabet);
-    HfstTransducer left_replace_up( HfstTransducerPair  &context, HfstTransducer &mapping,bool optional, StringPairSet  &alphabet);
-    HfstTransducer left_replace_down(HfstTransducerPair &context, HfstTransducer &mapping, bool optional, StringPairSet&alphabet);
-    HfstTransducer left_replace_down_karttunen( HfstTransducerPair &context, HfstTransducer&mapping, bool optional, StringPairSet &alphabet);
-    HfstTransducer left_replace_left(HfstTransducerPair &context, HfstTransducer &mapping, bool optional, StringPairSet&alphabet);
-    HfstTransducer left_replace_right(HfstTransducerPair&context,HfstTransducer &mapping,bool optional,StringPairSet &alphabet);
-    HfstTransducer restriction(HfstTransducerPairVector &contexts,HfstTransducer &mapping,StringPairSet &alphabet);
-    HfstTransducer coercion(HfstTransducerPairVector &contexts, HfstTransducer &mapping, StringPairSet &alphabet);
-    HfstTransducer restriction_and_coercion(HfstTransducerPairVector &contexts,HfstTransducer &mapping, StringPairSet &alphabet);
-    HfstTransducer surface_restriction(HfstTransducerPairVector &contexts, HfstTransducer &mapping, StringPairSet &alphabet);
-    HfstTransducer surface_coercion(HfstTransducerPairVector &contexts,HfstTransducer &mapping,StringPairSet &alphabet);
-    HfstTransducer surface_restriction_and_coercion (HfstTransducerPairVector &contexts,HfstTransducer &mapping,StringPairSet &alphabet);
-    HfstTransducer deep_restriction(HfstTransducerPairVector &contexts,HfstTransducer &mapping,StringPairSet &alphabet);
-    HfstTransducer deep_coercion(HfstTransducerPairVector &contexts, HfstTransducer &mapping, StringPairSet &alphabet);
-    HfstTransducer deep_restriction_and_coercion (HfstTransducerPairVector &contexts,HfstTransducer &mapping, StringPairSet &alphabet);
-
-  }; 
-
-class FdOperation{
-public:
-    FdOperation(const hfst::FdOperation&);
-    static bool is_diacritic(const std::string& diacritic_str);
-};
-
-}
-
-namespace hfst_ol{
-class PmatchContainer {
-public:
-//    PmatchContainer(std::ifstream filename, bool verbose=false, bool extract_tags=false);
-    std::string match(std::string input);
-//    std::string locate(std::string input);
-
-    // From hfst_swig_extensions
-};
-}
-hfst_ol::PmatchContainer & load_pmatch(std::string filename);
-
-%pythoncode %{
-def lookup_clean(transducer, string):
-    '''
-    fd-lookup string from transducer, purge flags, return
-    list of HfstPaths
-    '''
-    return detokenize_paths(purge_flags(transducer.lookup_fd(input)))
-%}
diff --git a/old_python/omor_query.py b/old_python/omor_query.py
deleted file mode 100644
index 84b5dfa..0000000
--- a/old_python/omor_query.py
+++ /dev/null
@@ -1,30 +0,0 @@
-'''This is a demo python script to show how you might do lookup through
-libhfst, in this case using an omorfi installation.'''
-
-import os, sys
-from itertools import ifilterfalse as ffilter
-import libhfst
-datadir = "/usr/local/share/hfst/fi"
-omorfipath = os.path.abspath(datadir + "/morphology.finntreebank.hfstol")
-
-def process_result_vector(vector):
-    results = []
-    for entry in vector:
-        if len(entry) < 2:
-            continue
-        weight = entry[0]
-        string = ''.join(ffilter(libhfst.FdOperation.is_diacritic, entry[1]))
-        results.append((string, weight))
-    return results
-
-istr = libhfst.HfstInputStream(omorfipath)
-transducer = libhfst.HfstTransducer(istr)
-input = raw_input()
-while input:
-    results = process_result_vector(libhfst.vectorize(transducer.lookup_fd(input)))
-    for result in results:
-        print result[0] + '\t' + str(result[1])
-    try:
-        input = raw_input()
-    except EOFError:
-        sys.exit()
diff --git a/old_python/setup.py b/old_python/setup.py
deleted file mode 100644
index af80c3a..0000000
--- a/old_python/setup.py
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/python
-
-"""
-setup for HFST-swig
-"""
-
-import os
-from distutils.core import setup, Extension
-
-libhfst_src_path = '../libhfst/src/'
-absolute_libhfst_src_path = os.path.abspath(libhfst_src_path)
-
-# when making the debian package, replace extra_link_args
-# with ["-L/usr/lib/", "-Wl,-rpath=/usr/lib/"]
-libhfst_module = Extension('_libhfst',
-                           language = "c++",
-                           sources = ["libhfst.i"],
-                           swig_opts = ["-c++",
-                                        "-I" + absolute_libhfst_src_path, "-Wall"],
-                           include_dirs = [absolute_libhfst_src_path],
-                           library_dirs = [absolute_libhfst_src_path + "/.libs"],
-                           libraries = ["hfst"],
-                           extra_link_args = []
-                           )
-# when making the windows package, replace data_files with
-# ["libhfst-NN.dll", "libgcc_s_seh-1.dll"] or
-# ["libhfst-NN.dll", "libgcc_s_dw2-1.dll"] or
-setup(name = 'libhfst_swig',
-      version = '3.8.3_beta',
-      author = 'HFST team',
-      author_email = 'hfst-bugs at helsinki.fi',
-      url = 'http://hfst.sourceforge.net',
-      description = 'SWIG-bound libhfst interface',
-      ext_modules = [libhfst_module],
-      py_modules = ["libhfst"],
-      data_files = []
-      )
diff --git a/old_python/test/Makefile.am b/old_python/test/Makefile.am
deleted file mode 100644
index e6201b3..0000000
--- a/old_python/test/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-EXTRA_DIST = test_constructors.py  test_extensions.py test_hfst_basic_transducer.py \
-	test_lexc.lexc test_rules.py test_std_streams.py test_streams.py \
-	test_transducer_functions.py test_examples.py test_flag_diacritics.py \
-	test_lexc_fail.lexc test_lexc.py test.sh test_std_streams.sh \
-	test_tokenizer.py  test_xre_compiler.py
diff --git a/old_python/test/test.sh b/old_python/test/test.sh
deleted file mode 100755
index 15f58c6..0000000
--- a/old_python/test/test.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-
-if [ "$1" = "-h" -o "$1" = "--help" ]; then
-    echo ""
-    echo "  Usage:  "$0" [--python PYTHONX.Y]"
-    echo ""
-    exit 0;
-fi
-
-PYTHON=python
-if [ "$1" = "--python" ]; then
-    PYTHON=$2;
-fi
-
-for pytest in \
-    test_constructors.py test_flag_diacritics.py \
-    test_hfst_basic_transducer.py test_streams.py test_tokenizer.py \
-    test_transducer_functions.py test_extensions.py \
-    test_examples.py test_xre_compiler.py; # test_lexc.py
-    do
-    echo $pytest":"
-    echo "==================================="
-    echo
-    if (! $PYTHON $pytest); then
-	echo "============================================="
-	echo "FAIL: " $pytest;
-	echo "============================================="
-	exit 1;
-    fi;
-    echo
-done
-
-echo "test_std_streams.sh:"
-echo "==================================="
-echo
-if ! ./test_std_streams.sh --python $PYTHON; then 
-    echo "==========================="
-    echo "FAIL: test_std_streams.sh";
-    echo "==========================="
-    exit 1;
-fi
-
-echo "====================="
-echo "All 10 tests passed."
-echo "====================="
diff --git a/old_python/test/test_constructors.py b/old_python/test/test_constructors.py
deleted file mode 100644
index 7d7cb83..0000000
--- a/old_python/test/test_constructors.py
+++ /dev/null
@@ -1,77 +0,0 @@
-#
-#   Test file for HfstTransducer constructors, destructor, operator=
-#   and member functions set_name, get_name and get_type.
-#
-
-import libhfst
-
-types = [libhfst.SFST_TYPE, libhfst.TROPICAL_OPENFST_TYPE, libhfst.FOMA_TYPE]
-
-for type in types:
-
-    if not libhfst.HfstTransducer.is_implementation_type_available(type):
-        continue
-
-    # The empty transducer
-    print("The empty transducer")
-    empty = libhfst.HfstTransducer(type)
-
-    # The epsilon transducer
-    print("The epsilon transducer")
-    epsilon = libhfst.HfstTransducer("@_EPSILON_SYMBOL_@", type)
-    
-    # One-transition transducer
-    print("One-transition transducer")
-    foo = libhfst.HfstTransducer("foo", type)
-    foobar = libhfst.HfstTransducer("foo", "bar", type)
-    
-    # The copy constructor
-    print("The copy constructor")
-    foobar_copy = libhfst.HfstTransducer(foobar)
-    assert(foobar.compare(foobar_copy))
-    
-    # Conversion from HfstBasicTransducer
-    print("Conversion from HfstBasicTransducer")
-    basic = libhfst.HfstBasicTransducer()
-    basic.add_state(1)
-    basic.add_transition(0, libhfst.HfstBasicTransition(1, "foo", "bar", 0))
-    basic.set_final_weight(1, 0)
-    foobar_basic = libhfst.HfstTransducer(basic, type)
-    assert(foobar.compare(foobar_basic))
-    
-    # By tokenizing
-    print("Construction by tokenization")
-    tok = libhfst.HfstTokenizer()
-    tok.add_skip_symbol("baz")
-    tok.add_multichar_symbol("foo")
-    tok.add_multichar_symbol("bar")
-    foo_tok = libhfst.HfstTransducer("bazfoobaz", tok, type)
-    foobar_tok = libhfst.HfstTransducer("bazfoo", "barbaz", tok, type)
-    assert(foo.compare(foo_tok))
-    assert(foobar.compare(foobar_tok))
-        
-    # Function assign
-    print("Function assign()")
-    foobar2 = libhfst.HfstTransducer("baz", type)
-    foobar.set_name("foobar")
-    assert(foobar.get_name() == "foobar")
-    foobar2.assign(foobar)
-    assert(foobar2.get_name() == "foobar")
-    assert(foobar.compare(foobar2))
-    empty_ol = libhfst.HfstTransducer(libhfst.HFST_OL_TYPE)
-    empty_olw = libhfst.HfstTransducer(libhfst.HFST_OLW_TYPE)
-    # reserving props in copy constructor (bug: #3405831)
-    t = libhfst.HfstTransducer("a", libhfst.TROPICAL_OPENFST_TYPE)
-    t.convert(libhfst.HFST_OLW_TYPE)
-    t.set_name("foo")
-    s = libhfst.HfstTransducer(t)
-    assert(s.get_name() == t.get_name())
-    try:
-        empty_ol = foobar2.convert(libhfst.HFST_OL_TYPE)
-        empty_olw = foobar2.convert(libhfst.HFST_OLW_TYPE)
-        assert(empty_ol.get_name() == "foobar")
-        assert(empty_olw.get_name() == "foobar")
-    except: # libhfst.FunctionNotImplementedException:
-        assert(False)
-    
-
diff --git a/old_python/test/test_examples.py b/old_python/test/test_examples.py
deleted file mode 100644
index 7258a66..0000000
--- a/old_python/test/test_examples.py
+++ /dev/null
@@ -1,481 +0,0 @@
-import libhfst
-import os
-import sys
-
-for file in 'foofile', 'testfile', 'testfile.att', 'testfile.hfst':
-    if os.path.exists(file):
-        pass # doesn't work on MinGW..
-        #os.remove(file)
-
-types = [libhfst.SFST_TYPE, libhfst.TROPICAL_OPENFST_TYPE, libhfst.FOMA_TYPE]
-
-# The library required by the implementation type requested is not linked to HFST.
-# --------------------------------------------------------------------------------
-print("ImplementationTypeNotAvailableException")
-
-for type in types:
-    try:
-        tr = libhfst.HfstTransducer("foo", "bar", type)
-    except: # libhfst.ImplementationTypeNotAvailableException:
-        assert(libhfst.hfst_get_exception() == "ImplementationTypeNotAvailableException")
-        pass
-
-assert(libhfst.hfst_get_exception() == "")
-
-# Stream cannot be read. 
-# ----------------------
-#print "StreamNotReadableException"
-#
-#try:
-#    instr = libhfst.HfstInputStream("foofile")
-#except libhfst.StreamNotReadableException:
-#    print "ERROR: file cannot be read."
-
-
-# Stream cannot be written. 
-# -------------------------
-#print "StreamCannotBeWrittenException"
-#
-#for type in types:
-#    try:
-#        tr = libhfst.HfstTransducer("foo", type)
-#        out = libhfst.HfstOutputStream("testfile", type)
-#        out.redirect(tr)
-#    except libhfst.StreamCannotBeWrittenException:
-#        print "ERROR: file cannot be written."
-
-
-# Stream is closed.
-# -----------------
-print("StreamIsClosedException")
-
-for type in types:
-    try:
-        tr = libhfst.HfstTransducer("foo", type)
-        out = libhfst.HfstOutputStream("testfile", type)
-        out.close()
-        out.redirect(tr)
-        assert(False)
-    except: # libhfst.StreamIsClosedException:
-        assert(libhfst.hfst_get_exception() == "StreamIsClosedException")
-        pass
-
-
-# Transducer is cyclic. 
-# ---------------------
-print("TransducerIsCyclicException")
-
-for type in types:
-    transducer = libhfst.HfstTransducer("a", "b", type)
-    transducer.repeat_star()
-    try:
-        results = libhfst.detokenize_paths(libhfst.extract_paths(transducer))
-        print("The transducer has {0} paths".format(len(results)))
-        assert(False)
-    except: # libhfst.TransducerIsCyclicException:
-        print("The transducer is cyclic and has an infinite number of paths.")
-
-
-# The stream does not contain transducers. 
-# ----------------------------------------
-print("NotTransducerStreamException")
-
-foofile = open('foofile', 'wb')
-foofile.write('This is a text file.\n'.encode('ascii'))
-foofile.write('Here is another line.\n'.encode('ascii'))
-foofile.write('The file ends here.'.encode('ascii'))
-foofile.close()
-try:
-    instr = libhfst.HfstInputStream("foofile")
-except: # libhfst.NotTransducerStreamException:
-    print("file does not contain transducers.")
-
-
-# The stream is not in valid AT&T format. 
-# ---------------------------------------
-print("NotValidAttFormatException")
-
-testfile_att = open("testfile.att", "wb")
-testfile_att.write('0 1 a b\n'.encode('ascii'))
-testfile_att.write('1\n'.encode('ascii'))
-testfile_att.write('c\n'.encode('ascii'))
-testfile_att.close()
-
-for type in types:
-    transducers = []
-    ifile = libhfst.hfst_open("testfile.att", "r")
-    try:
-        t = libhfst.HfstTransducer(ifile, type, "epsilon")
-        transducers.append(t)
-        print("read one transducer")
-    except: # libhfst.NotValidAttFormatException:
-        print("Error reading transducer: not valid AT&T format.")
-
-ifile.close()
-print("Read {0} transducers in total.".format(len(transducers)))
-
-
-# State is not final (and cannot have a final weight). 
-# ----------------------------------------------------
-print("StateIsNotFinalException")
-
-tr = libhfst.HfstBasicTransducer()
-tr.add_state(1)
-# An exception is thrown as state number 1 is not final
-try:
-    w = tr.get_final_weight(1)
-    assert(False)
-except: # libhfst.StateIsNotFinalException:
-    assert(libhfst.hfst_get_exception() == "StateIsNotFinalException")
-    pass
-
-
-# Context transducers are not automata.
-# -------------------------------------
-print("ContextTransducersAreNotAutomataException")
-
-for type in types:
-    # The second context transducer is 
-    contexts = (libhfst.HfstTransducer("c", type), libhfst.HfstTransducer("c", "d", type))
-    mapping = libhfst.HfstTransducer("a", "b", type)
-    alphabet = (('a','a'), ('b','b'), ('c','c'), ('d','d'))
-    # An exception is thrown
-    # rule = libhfst.replace_up(contexts, mapping, True, alphabet)
-
-
-# The state number argument is not valid.
-# ---------------------------------------
-print("NotValidStateNumberException")
-
-# tr = libhfst.HfstBasicTransducer()
-# tr.add_state(1)
-# An exception is thrown as there is no state number 2
-# w = tr.get_final_weight(2)
-
-
-# Two or more transducers do not have the same type.
-# --------------------------------------------------
-print("TransducerTypeMismatchException")
-
-foo = libhfst.HfstTransducer("foo", libhfst.SFST_TYPE)
-bar = libhfst.HfstTransducer("bar", libhfst.FOMA_TYPE)
-try:
-    foo.disjunct(bar)
-    assert(False)
-except: # libhfst.TransducerTypeMismatchException:
-    assert(libhfst.hfst_get_exception() == "TransducerTypeMismatchException")
-    pass
-
-
-# TODO: The set of transducer pairs is empty. 
-# -------------------------------------------
-#print "EmptyFooFoo"
-#
-#contexts = ()  # contexts is empty
-#restr = libhfst.restriction(contexts, mapping, alphabet, direction)
-## @package libhfst 
-# Documentation for libhfst
-
-
-# HfstBasicTransducer
-# -------------------
-print("HfstBasicTransducer")
-
-# Create an empty transducer
-# The transducer has initially one start state (number zero) 
-# that is not final
-fsm = libhfst.HfstBasicTransducer()
-# Add two states to the transducer
-fsm.add_state(1)
-fsm.add_state(2)
-# Create a transition [foo:bar] leading to state 1 with weight 0.1
-tr = libhfst.HfstBasicTransition(1, 'foo', 'bar', 0.1)
-# and add it to state zero
-fsm.add_transition(0, tr)
-# Add a transition [baz:baz] with weight 0 from state 1 to state 2 
-fsm.add_transition(1, libhfst.HfstBasicTransition(2, 'baz', 'baz', 0.0))
-# Set state 2 as final with weight 0.3
-fsm.set_final_weight(2, 0.3)
-
-# Go through all states
-for state in fsm.states(): 
-    # Go through all transitions
-    for transition in fsm.transitions(state):
-        print("{0} {1} {2} {3} {4}".format(state, transition.get_target_state(), transition.get_input_symbol(), transition.get_output_symbol(), transition.get_weight()))
-
-    if fsm.is_final_state(state): 
-        print("{0} {1}".format(state, fsm.get_final_weight(state)))
-    
-# HfstBasicTransducer.disjunct
-# ----------------------------
-print("HfstBasicTransducer.disjunct")
-
-lexicon = libhfst.HfstBasicTransducer()
-TOK = libhfst.HfstTokenizer()
-lexicon.disjunct(TOK.tokenize('dog'), 0.3)
-lexicon.disjunct(TOK.tokenize('cat'), 0.5)
-lexicon.disjunct(TOK.tokenize('elephant'), 1.6)
-
-
-# HfstTransducer
-# --------------
-print("HfstTransducer")
-
-for type in types:
-    transducer = libhfst.HfstTransducer('foo','bar', type)
-    # transducer is reversed
-    transducer.reverse()
-    # transducer2 is not modified, but a copy of it is disjuncted with transducer1 
-    transducer.disjunct(transducer)                                       
-    # a chain of functions is possible
-    transducer.reverse().determinize().reverse().determinize()      
-
-tropical_transducer = libhfst.HfstTransducer('foo', 'bar', libhfst.TROPICAL_OPENFST_TYPE)
-sfst_transducer = libhfst.HfstTransducer('foo', 'bar', libhfst.SFST_TYPE)
-try:
-    tropical_transducer.disjunct(sfst_transducer)
-    assert(False)
-except: # libhfst.TransducerTypeMismatchException:
-    assert(libhfst.hfst_get_exception() == "TransducerTypeMismatchException")
-    pass
-
-tropical_transducer = libhfst.HfstTransducer('foo', 'bar', libhfst.TROPICAL_OPENFST_TYPE)
-tropical_transducer.convert(libhfst.SFST_TYPE).disjunct(sfst_transducer)     
-tropical_transducer = libhfst.HfstTransducer('foo', 'bar', libhfst.TROPICAL_OPENFST_TYPE)
-tropical_transducer.disjunct(sfst_transducer.convert(libhfst.TROPICAL_OPENFST_TYPE)) 
-
-
-# In the xerox formalism used here, "?" means the unknown symbol and "?:?" the identity pair 
-tr1 = libhfst.HfstBasicTransducer()
-tr1.add_state(1)
-tr1.set_final_weight(1, 0)
-tr1.add_transition(0, libhfst.HfstBasicTransition(1, '@_UNKNOWN_SYMBOL_@', 'foo', 0) )
-# tr1 is now [ ?:foo ]
-
-tr2 = libhfst.HfstBasicTransducer()
-tr2.add_state(1)
-tr2.add_state(2)
-tr2.set_final_weight(2, 0)
-tr2.add_transition(0, libhfst.HfstBasicTransition(1, '@_IDENTITY_SYMBOL_@', '@_IDENTITY_SYMBOL_@', 0) )
-tr2.add_transition(1, libhfst.HfstBasicTransition(2, 'bar', 'bar', 0) )
-# tr2 is now [ [ ?:? ] [ bar:bar ] ]
-
-type = libhfst.SFST_TYPE
-Tr1 = libhfst.HfstTransducer (tr1, type)
-Tr2 = libhfst.HfstTransducer (tr2, type)
-Tr1.disjunct(Tr2)
-# Tr1 is now [ [ ?:foo | bar:foo ]  |  [[ ?:? | foo:foo ] [ bar:bar ]] ] 
-
-
-## Create a transducer by tokenizing the utf8 string \a utf8_string with tokenizer \a multichar_symbol_tokenizer. The type of the transducer is defined by \a type. 
-print("HfstTransducer.__init__")
-
-for type in types:
-    ustring = 'foobar'
-    TOK = libhfst.HfstTokenizer()
-    tr = libhfst.HfstTransducer(ustring, TOK, type)
-    input = 'foo'
-    output = 'barr'
-    TOK = libhfst.HfstTokenizer()
-    tr = libhfst.HfstTransducer(input, output, TOK, type)
-
-    ## Create a transducer of type \a type as defined in AT&T format in file \a ifile. \a epsilon_symbol defines how epsilons are represented.
-
-testfile_att = open("testfile.att", "wb")
-testfile_att.write("0      1      foo      bar      0.3\n".encode('ascii'))
-testfile_att.write("1      0.5\n".encode('ascii'))
-testfile_att.write("--\n".encode('ascii'))
-testfile_att.write("0      0.0\n".encode('ascii'))
-testfile_att.write("--\n".encode('ascii'))
-testfile_att.write("--\n".encode('ascii'))
-testfile_att.write("0      0.0\n".encode('ascii'))
-testfile_att.write("0      0      a        <eps>    0.2".encode('ascii'))
-testfile_att.close()
-
-for type in types:
-    transducers = []
-    ifile = libhfst.hfst_open("testfile.att", "rb")
-    while (True):
-        try:
-            t = libhfst.HfstTransducer(ifile, type, "<eps>")
-            transducers.append(t)
-            # print("read one transducer")
-        except: # libhfst.NotValidAttFormatException:
-            if libhfst.hfst_get_exception() == "NotValidAttFormatException":
-                print("Error reading transducer: not valid AT&T format.")
-                ifile.close()
-                assert(False)
-                break
-            else:
-                break # End of file
-    assert len(transducers) == 4
-
-
-## Write the transducer in AT&T format to file \a ofile, \a write_weights defines whether weights are written.
-print("HfstTransducer.write_in_att_format")
-
-for type in types:
-
-    foobar = libhfst.HfstTransducer("foo","bar",type)
-    epsilon = libhfst.HfstTransducer("@_EPSILON_SYMBOL_@",type)
-    empty = libhfst.HfstTransducer(type)
-    a_star = libhfst.HfstTransducer("a",type)
-    a_star.repeat_star()
-    
-    ofile = libhfst.hfst_open("testfile.att", "w")
-    foobar.write_in_att_format(ofile)
-    ofile.write("--\n")
-    epsilon.write_in_att_format(ofile)
-    ofile.write("--\n")
-    empty.write_in_att_format(ofile)
-    ofile.write("--\n")
-    a_star.write_in_att_format(ofile)
-    ofile.close()
-
-
-## Extract a maximum of \a max_num paths that are recognized by \a transducer following a maximum of \a cycles cycles.
-print("extract_paths")
-
-for type in types:
-    tr1 = libhfst.HfstTransducer("a", "b", type)
-    tr1.repeat_star()
-    tr2 = libhfst.HfstTransducer("c", "d", type)
-    tr2.repeat_star()
-    tr1.concatenate(tr2).minimize()
-    results = libhfst.detokenize_paths(libhfst.extract_paths(tr1, 5, 2))
-
-    for path in results:
-        print("{0} : {1}".format(path.input, path.output))
-
-
-## A stream for writing binary transducers. 
-print("HfstOutputStream")
-
-for type in types:
-    # Write three HFST transducers in binary format to file named "testfile.hfst"
-    out = libhfst.HfstOutputStream("testfile.hfst", type)
-    out.redirect(libhfst.HfstTransducer('a', 'b', type)) 
-    out.redirect(libhfst.HfstTransducer('c', 'd', type)) 
-    out.redirect(libhfst.HfstTransducer('e', 'f', type)) 
-    out.close()
-
-##  A stream for reading HFST binary transducers. 
-print("HfstInputStream")
-
-instr = 0
-try:
-    instr = libhfst.HfstInputStream("testfile.hfst") 
-except: # StreamNotReadableException: 
-    print("ERROR: File does not exist.")
-    exit(1)
-
-transducers_read = 0
-
-while not instr.is_eof(): 
-    if instr.is_bad():
-        print("ERROR: Stream cannot be read.")
-        exit(1) 
-    t = libhfst.HfstTransducer(instr)
-    print("One transducer successfully read.")
-    transducers_read += 1
-
-print("Read {0} transducers in total".format(transducers_read))
-instr.close()
-assert(transducers_read == 3)
-    
-
-## A tokenizer for creating transducers from UTF-8 strings.
-print("HfstTokenizer")
-
-TOK = libhfst.HfstTokenizer()
-TOK.add_multichar_symbol("<br />")
-TOK.add_skip_symbol("<p>")
-TOK.add_skip_symbol("</p>")
-spv = TOK.tokenize("<p>A<br />paragraph!</p>")
-assert spv == (('A','A'), ('<br />','<br />'), ('p','p'), ('a','a'), ('r','r'), ('a','a'), ('g','g'), ('r','r'), ('a','a'), ('p','p'), ('h','h'), ('!','!'))
-
-
-## Quick Start to HFST
-print("Tutorials")
-
-for type in types: 
-    tr1 = libhfst.HfstTransducer("foo", "bar", type)
-    tr2 = libhfst.HfstTransducer("bar", "baz", type)
-    tr1.compose(tr2)
-    tr1.write_in_att_format(libhfst.hfst_stdout());
-
-
-# Create an HFST basic transducer [a:b] with transition weight 0.3 and final weight 0.5.
-t = libhfst.HfstBasicTransducer()
-t.add_state(1)
-t.add_transition(0, libhfst.HfstBasicTransition(1, "a", "b", 0.3))
-t.set_final_weight(1, 0.5)
-
-# Convert to tropical OpenFst format and push weights toward final state.
-T = libhfst.HfstTransducer(t, libhfst.TROPICAL_OPENFST_TYPE)
-T.push_weights(libhfst.TO_FINAL_STATE)
-
-# Convert back to HFST basic transducer.
-tc = libhfst.HfstBasicTransducer(T)
-try:
-    # Rounding might affect the precision. 
-    if (0.79 < tc.get_final_weight(1)) and (tc.get_final_weight(1) < 0.81):
-        # print "TEST OK"
-        # exit(0)
-        pass
-    else:
-        print("TEST FAILED")
-        exit(1)
-# If the state does not exist or is not final */
-except: # libhfst.HfstException:
-    print("TEST FAILED: An exception thrown.")
-    exit(1)
-
-
-# An example of creating transducers from strings, applying rules to them and printing the string pairs recognized by the resulting transducer.
- 
-for type in types:
-
-    # Create a simple lexicon transducer [[foo bar foo] | [foo bar baz]].
- 
-    tok = libhfst.HfstTokenizer()
-    tok.add_multichar_symbol("foo")
-    tok.add_multichar_symbol("bar")
-    tok.add_multichar_symbol("baz")
-  
-    words = libhfst.HfstTransducer("foobarfoo", tok, type)
-    t = libhfst.HfstTransducer("foobarbaz", tok, type);
-    words.disjunct(t)
-
-  
-    # Create a rule transducer that optionally replaces "bar" with "baz" between "foo" and "foo".
-
-    context = (libhfst.HfstTransducer("foo", type), libhfst.HfstTransducer("foo", type) )
-    mapping = libhfst.HfstTransducer("bar", "baz", type)
-    optional = True
-    alphabet = (('foo','foo'), ('bar','bar'), ('baz','baz'))
-
-    rule = libhfst.HfstTransducer(type) #libhfst.replace_up(context, mapping, optional, alphabet) TODO
-
-    # Apply the rule transducer to the lexicon. 
-    words.compose(rule).minimize()
-  
-  
-    # Extract all string pairs from the result and print them to standard output.
-    results = 0
-    try:
-        # Extract paths and remove tokenization
-        results = libhfst.detokenize_paths(libhfst.extract_paths(words))
-    except: # libhfst.TransducerIsCyclicException:
-        # This should not happen because transducer is not cyclic.
-        print("TEST FAILED")
-        exit(1)
-
-    # Go through all paths and print them.
-    for path in results:
-        print("{0} : {1}   {2}".format(path.input, path.output, path.weight))
-
-
-for file in 'foofile', 'testfile', 'testfile.att', 'testfile.hfst':
-    if os.path.exists(file):
-        pass # os.remove(file) doesn't work on MinGW..
diff --git a/old_python/test/test_extensions.py b/old_python/test/test_extensions.py
deleted file mode 100644
index 3985367..0000000
--- a/old_python/test/test_extensions.py
+++ /dev/null
@@ -1,13 +0,0 @@
-import libhfst
-import io
-
-tr = libhfst.HfstTransducer('a', 'b', libhfst.TROPICAL_OPENFST_TYPE)
-paths = libhfst.extract_paths(tr)
-for path in libhfst.detokenize_paths(paths):
-    print("{0}:{1}  {2}".format(path.input, path.output, path.weight))
-
-tr = libhfst.HfstTransducer('a', 'b', libhfst.TROPICAL_OPENFST_TYPE)
-tr.convert(libhfst.HFST_OLW_TYPE)
-for path in libhfst.detokenize_paths(tr.lookup("a")):
-    print("{0}  {1}".format(path.output, path.weight))
-
diff --git a/old_python/test/test_flag_diacritics.py b/old_python/test/test_flag_diacritics.py
deleted file mode 100644
index dc15cc5..0000000
--- a/old_python/test/test_flag_diacritics.py
+++ /dev/null
@@ -1,69 +0,0 @@
-import libhfst
-
-t = libhfst.HfstBasicTransducer()
-s1 = t.add_state()
-s2 = t.add_state()
-s3 = t.add_state()
-s4 = t.add_state()
-s5 = t.add_state()
-s6 = t.add_state()
-t.set_final_weight(s6, 0)
-  
-fd1 = "@U.FEATURE.FOO@"
-fd2 = "@U.FEATURE.BAR@"
-  
-t.add_transition(0, libhfst.HfstBasicTransition(s1, fd1, fd1, 0))
-t.add_transition(0, libhfst.HfstBasicTransition(s2, "a", "a", 0))
-t.add_transition(s1, libhfst.HfstBasicTransition(s3, "b", "b", 0))
-t.add_transition(s2, libhfst.HfstBasicTransition(s3, fd2, fd2, 0))
-t.add_transition(s3, libhfst.HfstBasicTransition(s4, "c", "c", 0))
-t.add_transition(s3, libhfst.HfstBasicTransition(s5, "d", "d", 0))
-t.add_transition(s4, libhfst.HfstBasicTransition(s6, fd2, fd2, 0))
-t.add_transition(s5, libhfst.HfstBasicTransition(s6, fd1, fd1, 0))
-
-
-types = [libhfst.SFST_TYPE, libhfst.TROPICAL_OPENFST_TYPE, libhfst.FOMA_TYPE]
-
-for type in types:
-
-    if not libhfst.HfstTransducer.is_implementation_type_available(type):
-        continue
-
-
-    print("Identitites with flags")
-
-    id = libhfst.HfstTransducer("@_IDENTITY_SYMBOL_@", type)
-    id.repeat_star()
-    ab_flag = libhfst.HfstTransducer("a", "b", type)
-    flag = libhfst.HfstTransducer("@U.F.A@", type)
-    ab_flag.disjunct(flag)
-
-    ab_flag.concatenate(id)
-    id.minimize()
-
-    a_tr = libhfst.HfstTransducer("a", type)
-    b_tr = libhfst.HfstTransducer("b", type)
-    abid = libhfst.HfstTransducer("@_IDENTITY_SYMBOL_@", type)
-    abid.disjunct(a_tr)
-    abid.disjunct(b_tr)
-    abid.repeat_star()
-    abid.minimize()
-
-    assert(abid.compare(id))
-
-
-    print("Unification flags")
-      
-    tr = libhfst.HfstTransducer(t, type)
-    results = libhfst.extract_paths_fd(tr)
-    
-    assert(len(results) == 2)    
-    print(results)
-
-    #assert(result_strings.find(StringPair("ac","ac")) 
-    #       != result_strings.end())
-    #assert(result_strings.find(StringPair("bd","bd")) 
-    #       != result_strings.end())
-      
-
-
diff --git a/old_python/test/test_hfst_basic_transducer.py b/old_python/test/test_hfst_basic_transducer.py
deleted file mode 100644
index b129c06..0000000
--- a/old_python/test/test_hfst_basic_transducer.py
+++ /dev/null
@@ -1,142 +0,0 @@
-#
-#   Test file for HfstBasicTransducer.
-#   Some of the functions are already tested in other test files,
-#   because some HfstTransducer functions are implemented only 
-#   for HfstBasicTransducer.
-#
-
-import libhfst
-import os
-import sys
-
-def alphabet_contains(alphabet, symbol):
-    try:
-        ind = alphabet.index(symbol)
-    except ValueError:
-        return False
-    return True
-
-
-print("HfstBasicTransducer construction")
-
-# Create an HfstBasicTransducer [a:b c:d] with weight 3.0
-t = libhfst.HfstBasicTransducer()
-assert(not t.is_final_state(0))
-s1 = t.add_state()
-assert(s1 == 1)
-t.add_transition(0, libhfst.HfstBasicTransition(s1, "a", "b", 1.2))
-assert(not t.is_final_state(s1))
-s2 = t.add_state()
-assert(s2 == 2)
-t.add_transition(s1, libhfst.HfstBasicTransition(s2, "c", "d", 0.8))
-assert(not t.is_final_state(s2))
-t.set_final_weight(s2, 1.0)
-assert(t.is_final_state(s2) and t.get_final_weight(s2) == 1.0)
-
-# Take a copy
-tc = libhfst.HfstBasicTransducer(t);
-
-print("HfstBasicTransducer exceptions")
-
-# Asking the weight of a non-final state
-for s in range(5):
-    if s != s2:
-        try:
-            w = t.get_final_weight(s)
-            assert(False)
-        except: # libhfst.StateIsNotFinalException:
-            assert(libhfst.hfst_get_exception() == "StateIsNotFinalException")
-            pass
-
-# Reading a file in non-valid AT&T format
-ofile = open('test.att', 'wb')
-ofile.write("0\n0\t1\ta\tb\n1\t2\tb\n2\n".encode('ascii'))
-ofile.close()
-ifile = libhfst.hfst_open('test.att', 'rb') # ERROR On MinGW, using libhfst.hfst_open fails..
-
-try:
-    foo = libhfst.HfstBasicTransducer(ifile)
-    ifile.close()
-    os.remove('test.att')
-    assert(False)
-except: # libhfst.NotValidAttFormatException:
-    assert(libhfst.hfst_get_exception() == "NotValidAttFormatException")
-    ifile.close()
-    os.remove('test.att')
-
-  
-print("HfstBasicTransducer: symbol handling")
-
-t.add_symbol_to_alphabet("foo")
-assert(alphabet_contains(t.get_alphabet(), "foo"))
-t.prune_alphabet()
-alphabet = t.get_alphabet()
-assert(len(alphabet) == 7)
-for alpha in ['a', 'b', 'c', 'd']:
-    assert(alphabet_contains(alphabet, alpha))
-assert(not alphabet_contains(alphabet, "foo"))
-
-
-  
-print('HfstBasicTransducer: substitute')
-
-tr = libhfst.HfstBasicTransducer()
-tr.add_state()
-tr.add_transition(0, libhfst.HfstBasicTransition(s1, "a", "b", 0))
-tr.add_transition(0, libhfst.HfstBasicTransition(s1, "a", "b", 0))
-tr.set_final_weight(1, 0)
-
-sps = (("A","B"), ("C","D"))
-tr.substitute(("a","b"), sps);
-
-
-print("HfstBasicTransducer: EmptyStringException")
-  
-try:
-    empty_symbol = libhfst.HfstBasicTransducer()
-    empty_symbol.add_transition(0, libhfst.HfstBasicTransition(0, "", "", 0))
-    assert(False)
-except: # libhfst.EmptyStringException:
-    assert(libhfst.hfst_get_exception() == "EmptyStringException")
-    pass
-
-  
-print("HfstBasicTransducer: unknown and indentity symbols")
-
-# In the xerox formalism used here, "?" means the unknown symbol
-# and "?:?" the identity pair 
-   
-tr1 = libhfst.HfstBasicTransducer()
-tr1.add_state(1)
-tr1.set_final_weight(1, 0)
-tr1.add_transition(0, libhfst.HfstBasicTransition(1, "@_UNKNOWN_SYMBOL_@", "foo", 0) )
-
-# tr1 is now [ ?:foo ]
-# print(tr1)
-
-tr2 = libhfst.HfstBasicTransducer()
-tr2.add_state(1)
-tr2.add_state(2)
-tr2.set_final_weight(2, 0)
-tr2.add_transition(0, libhfst.HfstBasicTransition(1, "@_IDENTITY_SYMBOL_@", "@_IDENTITY_SYMBOL_@", 0) )
-tr2.add_transition(1, libhfst.HfstBasicTransition(2, "bar", "bar", 0) )
-
-# tr2 is now [ [ ?:? ] [ bar:bar ] ]
-# print(tr2)
-
-if libhfst.HfstTransducer.is_implementation_type_available(libhfst.SFST_TYPE):
-    Tr1 = libhfst.HfstTransducer(tr1, libhfst.SFST_TYPE)
-    Tr2 = libhfst.HfstTransducer(tr2, libhfst.SFST_TYPE)
-    Tr1.disjunct(Tr2).minimize()
-    # Tr1 is now [ [ ?:foo | bar:foo ]  |  [[ ?:? | foo:foo ] [ bar:bar ]]]
-    # print(Tr1)
-
-print("HfstBasicTransducer: iterating through");
-
-for state in t.states():
-    for transition in t.transitions(state):
-        # print '%i\t%i\t%s\t%s\t%f' % (state, transition.get_target_state(), transition.get_input_symbol(), transition.get_output_symbol(), transition.get_weight())
-        print("{0}\t{1}\t{2}\t{3}\t{4}".format(state, transition.get_target_state(), transition.get_input_symbol(), transition.get_output_symbol(), transition.get_weight()))
-    if t.is_final_state(state):
-        # print '%i\t%f' % (state, t.get_final_weight(state))
-        print("{0}\t{1}".format(state, t.get_final_weight(state)))
diff --git a/old_python/test/test_lexc.lexc b/old_python/test/test_lexc.lexc
deleted file mode 100644
index 38c2d34..0000000
--- a/old_python/test/test_lexc.lexc
+++ /dev/null
@@ -1,13 +0,0 @@
-LEXICON Root
-
-A;
-B;
-
-LEXICON A
-
-cat #;
-dog #;
-
-LEXICON B
-
-mouse #;
diff --git a/old_python/test/test_lexc.py b/old_python/test/test_lexc.py
deleted file mode 100644
index b455cb2..0000000
--- a/old_python/test/test_lexc.py
+++ /dev/null
@@ -1,54 +0,0 @@
-import libhfst
-
-types = [libhfst.SFST_TYPE, libhfst.TROPICAL_OPENFST_TYPE, libhfst.FOMA_TYPE]
-
-for type in types:
-
-    if not libhfst.HfstTransducer.is_implementation_type_available(type):
-        continue
-
-    # Test the lexc parser
-    print(" Testing...")
-
-    # (1) A file in valid lexc format
-    print(" valid file, parse... ")
-    compiler = libhfst.LexcCompiler(type)
-    compiler.parse("test_lexc.lexc")
-    print("")
-    parsed = compiler.compileLexical()
-    assert(parsed != 0)
-    tok = libhfst.HfstTokenizer()
-    cat = libhfst.HfstTransducer("cat", tok, type)
-    dog = libhfst.HfstTransducer("dog", tok, type)
-    mouse = libhfst.HfstTransducer("mouse", tok, type)
-
-    animals = libhfst.HfstTransducer(type)
-    animals.disjunct(cat)
-    animals.disjunct(dog)
-    animals.disjunct(mouse)
-
-    assert(animals.compare(libhfst.ptrvalue(parsed)))
-    del(parsed)
-
-
-    #try:
-    #    print(" valid file, read_lexc... ")
-    #    rlexc = libhfst.HfstTransducer.read_lexc("test_lexc.lexc", type)
-    #    assert(animals.compare(rlexc))
-    #except libhfst.FunctionNotImplementedException:
-    #    assert(False)
-
-
-    # (2) A file that does not follow lexc format
-    compiler2 = libhfst.LexcCompiler(type)
-    print(" invalid file, parse... ")
-    compiler2.parse("test_lexc_fail.lexc")
-    parsed = compiler2.compileLexical()
-    assert(parsed == None)
-
-    # (3) A file that does not exist
-    compiler3 = libhfst.LexcCompiler(type)
-    print(" missing file, parse... ")
-    compiler3.parse("nonexistent.lexc")
-    parsed = compiler3.compileLexical()
-    assert(parsed == None)
diff --git a/old_python/test/test_lexc_fail.lexc b/old_python/test/test_lexc_fail.lexc
deleted file mode 100644
index da30482..0000000
--- a/old_python/test/test_lexc_fail.lexc
+++ /dev/null
@@ -1,13 +0,0 @@
-LEXICON Root
-
-A;
-B;
-
-LEXICON A
-
-cat #;
-dog
-
-LEXICON B
-
-mouse #;
diff --git a/old_python/test/test_rules.py b/old_python/test/test_rules.py
deleted file mode 100644
index aed4767..0000000
--- a/old_python/test/test_rules.py
+++ /dev/null
@@ -1,43 +0,0 @@
-import libhfst  
-
-types = [libhfst.TROPICAL_OPENFST_TYPE, libhfst.SFST_TYPE, libhfst.FOMA_TYPE]
-
-# Transducers which the rule transducers are compared with
-rule1 = libhfst.HfstTransducer(libhfst.TROPICAL_OPENFST_TYPE)
-rule2 = libhfst.HfstTransducer(libhfst.TROPICAL_OPENFST_TYPE)
-rule3 = libhfst.HfstTransducer(libhfst.TROPICAL_OPENFST_TYPE)
-
-for type in types:
-
-    if not libhfst.HfstTransducer.is_implementation_type_available(type):
-        continue
-  
-    print("HfstTransducer two_level_if(HfstTransducerPair &context, StringPairSet &mappings, StringPairSet &alphabet)")
-    print("HfstTransducer two_level_only_if(HfstTransducerPair &context, StringPairSet &mappings, StringPairSet &alphabet)")
-    print("HfstTransducer two_level_if_and_only_if(HfstTransducerPair &context, StringPairSet &mappings, StringPairSet &alphabet)")
-
-    leftc = libhfst.HfstTransducer("c", type)
-    rightc = libhfst.HfstTransducer("c", type)
-    context = (leftc, rightc)
-    mapping = ("a", "b")
-    mappings = ("a", "b"),
-    alphabet = ('a','a'), ('a','b'), ('b','b'), ('c','c')
-
-    rule_transducer1 = libhfst.two_level_if(context, mappings, alphabet)
-    rule_transducer2 = libhfst.two_level_only_if(context, mappings, alphabet)
-    rule_transducer3 = libhfst.two_level_if_and_only_if(context, mappings, alphabet)
-
-    # Compare rule transducers with tropical rule transducers
-    if type != libhfst.TROPICAL_OPENFST_TYPE:
-        rule_transducer1.convert(libhfst.TROPICAL_OPENFST_TYPE)
-        rule_transducer2.convert(libhfst.TROPICAL_OPENFST_TYPE)
-        rule_transducer3.convert(libhfst.TROPICAL_OPENFST_TYPE)
-        assert(rule_transducer1.compare(rule1))
-        assert(rule_transducer2.compare(rule2))
-        assert(rule_transducer3.compare(rule3))
-    else:
-        rule1.assign(rule_transducer1)
-        rule2.assign(rule_transducer2)
-        rule3.assign(rule_transducer3)
-
-exit(0)
diff --git a/old_python/test/test_std_streams.py b/old_python/test/test_std_streams.py
deleted file mode 100755
index 6915a31..0000000
--- a/old_python/test/test_std_streams.py
+++ /dev/null
@@ -1,40 +0,0 @@
-import libhfst
-import sys
-
-if sys.platform == "win32":
-    import os, msvcrt
-    msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
-
-ttype = 0
-if sys.argv[1] == 'sfst':
-    ttype = libhfst.SFST_TYPE
-elif sys.argv[1] == 'openfst':
-    ttype = libhfst.TROPICAL_OPENFST_TYPE
-elif sys.argv[1] == 'foma':
-    ttype = libhfst.FOMA_TYPE
-else:
-    print("ERROR: could not parse transducer format argument.")
-    sys.exit(1)
-    
-transducers_in_stream = int(sys.argv[2])
-
-istr = libhfst.HfstInputStream()
-ostr = libhfst.HfstOutputStream(ttype)
-transducers_read = 0
-transducers_written = 0
-
-while True:
-    try:
-        tr = libhfst.HfstTransducer(istr)
-        transducers_read += 1
-        ostr.redirect(tr)
-        transducers_written += 1
-    except: # libhfst.EndOfStreamException:
-        assert(libhfst.hfst_get_exception() == "EndOfStreamException")
-        break;
-if transducers_read != transducers_in_stream:
-    print("ERROR: wrong number of transducers read")
-    sys.exit(1)
-
-istr.close()
-ostr.close()
diff --git a/old_python/test/test_std_streams.sh b/old_python/test/test_std_streams.sh
deleted file mode 100755
index 4cce59b..0000000
--- a/old_python/test/test_std_streams.sh
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/bin/sh
-#
-# Test writing to and reading from standard input and output streams
-# using swig bindings. The python used can be defined with option
-# '--python PYTHON'. The test depends on tools hfst-strings2fst and
-# hfst-compare as well as on the script test_std_streams.py.
-#
-
-# Check that these tools are found
-for tool in hfst-strings2fst hfst-compare hfst-format;
-do
-    if (which $tool | grep "not found" ); then
-	echo "ERROR: the tool "$tool" was not found, install it before running this test (test_std_streams.sh)"
-	exit 1;
-    fi
-done
-
-# Use silent mode
-STRINGS2FST=hfst-strings2fst" -s"
-COMPARE=hfst-compare" -s"
-
-# Define python
-PYTHON=python
-if [ "$1" = "--python" ]; then
-    PYTHON=$2;
-fi
-
-# Convert these strings into transducers
-
-STRING1="abcdefghijklmnopqrstuvwxyz"
-STRING2="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-
-if (hfst-format --list | grep 'sfst' > /dev/null); then
-    echo $STRING1 | $STRINGS2FST -f sfst > tr1.sfst
-    echo $STR1NG2 | $STRINGS2FST -f sfst > tr2.sfst
-    cat tr1.sfst tr2.sfst > tr.sfst
-    rm tr1.sfst tr2.sfst
-else
-    echo "warning: sfst back-end not available, assumed switched off and skipping"
-fi
-
-echo $STRING1 | $STRINGS2FST -f openfst-tropical > tr1.ofst
-echo $STRING2 | $STRINGS2FST -f openfst-tropical > tr2.ofst
-cat tr1.ofst tr2.ofst > tr.ofst
-rm tr1.ofst tr2.ofst
-
-if (hfst-format --list | grep 'foma' > /dev/null); then
-    echo $STRING1 | $STRINGS2FST -f foma > tr1.foma
-    echo $STRING2 | $STRINGS2FST -f foma > tr2.foma
-    cat tr1.foma tr2.foma > tr.foma
-    rm tr1.foma tr2.foma
-else
-    echo "warning: foma back-end not available, assumed switched off and skipping"
-fi
-
-
-# Perform the tests for all transducer types:
-
-# SFST
-if (hfst-format --list | grep 'sfst' > /dev/null); then
-    if ! (cat tr.sfst | $PYTHON ./test_std_streams.py sfst 2 > tmp.sfst); then
-	echo "ERROR: in sfst"
-	rm tr.sfst
-	exit 1
-    fi
-    if ! ($COMPARE tr.sfst tmp.sfst); then
-	echo "ERROR in sfst"
-	rm tr.sfst tmp.sfst
-	exit 1
-    fi
-    rm tr.sfst tmp.sfst
-fi
-
-# OPENFST
-if ! (cat tr.ofst | $PYTHON ./test_std_streams.py openfst 2 > tmp.ofst); then
-    echo "ERROR: in openfst"
-    rm tr.ofst
-    exit 1
-fi
-if ! ($COMPARE tr.ofst tmp.ofst); then
-    echo "ERROR: in openfst"
-    rm tr.ofst tmp.ofst
-    exit 1
-fi
-rm tr.ofst tmp.ofst
-
-# FOMA
-if (hfst-format --list | grep 'foma' > /dev/null); then
-    if ! (cat tr.foma | $PYTHON ./test_std_streams.py foma 2 > tmp.foma); then
-	rm tr.foma
-	echo "ERROR: in foma"
-	exit 1
-    fi  
-    if ! ($COMPARE tr.foma tmp.foma); then
-	echo "ERROR: in foma"
-	rm tr.foma tmp.foma
-	exit 1
-    fi  
-    rm tr.foma tmp.foma
-fi
diff --git a/old_python/test/test_streams.py b/old_python/test/test_streams.py
deleted file mode 100644
index 6876ee8..0000000
--- a/old_python/test/test_streams.py
+++ /dev/null
@@ -1,74 +0,0 @@
-import libhfst
-import sys
-import os
-
-def remove_generated_files():
-    # fails on MinGW..
-    #os.remove('foo.att')
-    #os.remove('foo.hfst')
-    pass
-
-for ttype in (libhfst.SFST_TYPE, libhfst.TROPICAL_OPENFST_TYPE, libhfst.FOMA_TYPE):
-
-    tr1 = libhfst.HfstTransducer('a', 'b', ttype)
-    tr2 = libhfst.HfstTransducer('c', 'd', ttype)
-    ostr = libhfst.HfstOutputStream('foo.hfst', tr1.get_type())
-    ostr.redirect(tr1)
-    ostr.redirect(tr2)
-    ostr.close()
-    att_file = libhfst.hfst_open('foo.att', 'w')
-
-    istr = libhfst.HfstInputStream('foo.hfst')
-
-    transducers_read = 0
-    while True:
-        try:
-            tr = libhfst.HfstTransducer(istr)
-            transducers_read += 1
-            if transducers_read == 1:
-                if not tr.compare(tr1):
-                    print("ERROR: transducer 1 changed.")
-                    remove_generated_files()
-                    sys.exit(1)
-            if transducers_read == 2:
-                if not tr.compare(tr2):
-                    print("ERROR: transducer 2 changed.")
-                    remove_generated_files()
-                    sys.exit(1)
-            tr.write_in_att_format(att_file)
-            if transducers_read < 2:
-                att_file.write('--\n')
-        except: # libhfst.EndOfStreamException:
-            assert(libhfst.hfst_get_exception() == "EndOfStreamException")
-            break
-    if transducers_read != 2:
-        print("ERROR: wrong number of transducers read")
-        remove_generated_files()
-        sys.exit(1)
-    att_file.close()
-
-    att_file = libhfst.hfst_open('foo.att', 'r')
-    transducers_read = 0
-    while True:
-        try:
-            tr = libhfst.HfstTransducer(att_file, ttype, '@0@')
-            transducers_read += 1
-            if transducers_read == 1:
-                if not tr.compare(tr1):
-                    print("ERROR: transducer 1 changed in ATT format.")
-                    remove_generated_files()
-                    sys.exit(1)
-            if transducers_read == 2:
-                if not tr.compare(tr2):
-                    print("ERROR: transducer 2 changed in ATT format.")
-                    remove_generated_files()
-                    sys.exit(1)
-        except: # libhfst.EndOfStreamException:
-            break
-    if transducers_read != 2:
-        print("ERROR: wrong number of ATT transducers read")
-        remove_generated_files()
-        sys.exit(1)
-    att_file.close()
-
-remove_generated_files()
diff --git a/old_python/test/test_tokenizer.py b/old_python/test/test_tokenizer.py
deleted file mode 100755
index 89742af..0000000
--- a/old_python/test/test_tokenizer.py
+++ /dev/null
@@ -1,158 +0,0 @@
-import libhfst
-
-
-# From one string
-
-print("Tokenization from one string with multichar symbol 'foo' and skip symbol 'bar'")
-
-tok1 = libhfst.HfstTokenizer()
-tok1.add_multichar_symbol("foo")
-tok1.add_skip_symbol("bar")
-tokenization1 = tok1.tokenize("fobaro")
-assert(len(tokenization1) == 3)
-assert(tokenization1[0] == ("f","f"))
-assert(tokenization1[1] == ("o","o"))
-assert(tokenization1[2] == ("o","o"))
-
-print("Tokenization from one string with multichar symbol 'foo' and skip symbol 'fo'")
-
-tok2 = libhfst.HfstTokenizer()
-tok2.add_multichar_symbol("foo")
-tok2.add_skip_symbol("fo")
-tokenization2 = tok2.tokenize("foo")
-assert(len(tokenization2) == 1)
-assert(tokenization2[0] == ("foo","foo"))
-
-print("Tokenization from one string with multichar symbol 'fo' and skip symbol 'foo'")
-
-tok3 = libhfst.HfstTokenizer()
-tok3.add_multichar_symbol("fo")
-tok3.add_skip_symbol("foo")
-tokenization3 = tok3.tokenize("foo")
-assert(len(tokenization3) == 0)
-
-
-# From two strings
-
-print("Tokenization from two strings with multichar symbol 'foo' and skip symbol 'bar'")
-
-tok4 = libhfst.HfstTokenizer()
-tok4.add_multichar_symbol("foo")
-tok4.add_skip_symbol("bar")
-tokenization4 = tok4.tokenize("fooba", "foobar")
-assert(len(tokenization4) == 3)
-assert(tokenization4[0] == ("foo","foo"))
-assert(tokenization4[1] == ("b","@_EPSILON_SYMBOL_@"))
-assert(tokenization4[2] == ("a","@_EPSILON_SYMBOL_@"))
-
-
-# Utf-8 correctness testing
-utf8_tokenizer = libhfst.HfstTokenizer()
-
-# Positive cases
-
-# Empty string
-try:
-    utf8_tokenizer.check_utf8_correctness("")
-except: # (libhfst.IncorrectUtf8CodingException):
-    assert(False)
-
-# ASCII string "ab"
-try:
-    utf8_tokenizer.check_utf8_correctness("ab")
-except: # (libhfst.IncorrectUtf8CodingException):
-    assert(False)
-
-# The rest of the tests don't work yet
-# TODO: find out how to convert binary data into strings
-exit(0)
-
-# Four byte, three byte, two byte and single byte sequence
-#print("Case: 11110000, 10000000, 10000000, 10000000")
-#print("11100000, 10000000, 10000000, 11010000, 10000000")
-#print("01000000")
-
-try:
-    utf8_tokenizer.check_utf8_correctness(b"11110000"b"10000000"b"10000000"b"10000000"b"11100000"b"10000000"b"10000000"b"11010000"b"10000000"b"01000000")
-except: # (libhfst.IncorrectUtf8CodingException):
-    assert(False)
-
-
-# Negative Cases
-
-# String with byte 192
-try:
-    utf8_tokenizer.check_utf8_correctness(b"0b11000000"b"0b10000000")
-    assert(False)
-except: # (libhfst.IncorrectUtf8CodingException):
-    pass
-
-# String with byte 193
-try:
-    utf8_tokenizer.check_utf8_correctness(b"11000001"b"10000000")
-    assert(False)
-except: # (libhfst.IncorrectUtf8CodingException):
-    pass
-
-# String with byte 245
-try:
-    utf8_tokenizer.check_utf8_correctness(b"11110101"b"10000000"b"10000000"b"10000000")
-    assert(False)
-except: # (libhfst.IncorrectUtf8CodingException):
-    pass
-
-# String with byte 246
-try:
-    utf8_tokenizer.check_utf8_correctness(b"11110110"b"10000000"b"10000000"b"10000000")
-    assert(False)
-except: # (libhfst.IncorrectUtf8CodingException):
-    pass
-
-# String with byte 247
-try:
-    utf8_tokenizer.check_utf8_correctness(b"11110111"b"10000000"b"10000000"b"10000000")
-    assert(False)
-except: # (libhfst.IncorrectUtf8CodingException):
-    pass
-
-# ASCII character followed by a continuation character
-try:
-    utf8_tokenizer.check_utf8_correctness(b"01000000"b"10000000")
-    assert(False)
-except: # (libhfst.IncorrectUtf8CodingException):
-    pass
-
-# 11010000 followed by ASCII character
-try:
-    utf8_tokenizer.check_utf8_correctness(b"11010000"b"01000000")
-    assert(False)
-except: # (libhfst.IncorrectUtf8CodingException):
-    pass
-
-# 11100000 followed by one continuation character and an ASCII character
-try:
-    utf8_tokenizer.check_utf8_correctness(b"11100000"b"10000000"b"01000000")
-    assert(False)
-except: # (libhfst.IncorrectUtf8CodingException):
-    pass
-
-# 11110000 followed by two continuation characters and an ASCII character
-try:
-    utf8_tokenizer.check_utf8_correctness(b"11110000"b"10000000"b"10000000"b"01000000")
-    assert(False)
-except: # (libhfst.IncorrectUtf8CodingException):
-    pass
-
-# 11110000 followed by two continuation characters and an ASCII character
-try:
-    utf8_tokenizer.check_utf8_correctness(b"11110000"b"10000000"b"10000000"b"01000000")
-    assert(False)
-except: # (libhfst.IncorrectUtf8CodingException):
-    pass
-
-# 11110000 followed by two continuation characters and 1101000010000000
-try:
-    utf8_tokenizer.check_utf8_correctness(b"11110000"b"10000000"b"10000000"b"11010000"b"10000000")
-    assert(False)
-except: # (libhfst.IncorrectUtf8CodingException):
-    pass
diff --git a/old_python/test/test_transducer_functions.py b/old_python/test/test_transducer_functions.py
deleted file mode 100644
index 2b197b9..0000000
--- a/old_python/test/test_transducer_functions.py
+++ /dev/null
@@ -1,384 +0,0 @@
-import libhfst
-
-def compare_alphabets(t1, t2):
-    alpha1 = t1.get_alphabet()
-    alpha2 = t2.get_alphabet()
-    return alpha1 == alpha2
-    
-
-types = [libhfst.SFST_TYPE, libhfst.TROPICAL_OPENFST_TYPE, libhfst.FOMA_TYPE]
-
-for type in types:
-
-    if not libhfst.HfstTransducer.is_implementation_type_available(type):
-        continue
-
-
-    print("Function compare")
-
-    t1 = libhfst.HfstTransducer("foo", "bar", type)
-    t2 = libhfst.HfstTransducer("foo", "@_EPSILON_SYMBOL_@", type)
-    t3 = libhfst.HfstTransducer("@_EPSILON_SYMBOL_@", "bar", type)
-    t2.concatenate(t3).minimize()
-    # Alignments must be the same
-    assert(not t1.compare(t2))
-
-    t4 = libhfst.HfstTransducer("foo", "bar", type)
-    t5 = libhfst.HfstTransducer("@_EPSILON_SYMBOL_@", type)
-    t4.concatenate(t5)
-    # One transducer is minimal, the other is not
-    assert(t1.compare(t4))
-
-    # Weights
-    if type == libhfst.TROPICAL_OPENFST_TYPE:
-        t6 = libhfst.HfstTransducer("foo", "bar", type)
-        t6.set_final_weights(0.3)
-        t7 = libhfst.HfstTransducer("foo", "bar", type)
-        t7.set_final_weights(0.1)
-
-        # Weights differ
-        assert(not t6.compare(t7))
-
-        t8 = libhfst.HfstTransducer("@_EPSILON_SYMBOL_@", type)
-        t8.set_final_weights(0.2)
-        t7.concatenate(t8)
-        # Weights are the same on each path
-        assert(t6.compare(t7))
-
-
-    print("Function compose")
-
-    t1 = libhfst.HfstTransducer("foo", "bar", type)
-    t1.set_final_weights(2)
-    t2 = libhfst.HfstTransducer("bar", "baz", type)
-    t2.set_final_weights(3)
-    t3 = libhfst.HfstTransducer("foo", "baz", type)
-    t3.set_final_weights(5)
-    t1.compose(t2)
-    assert(t1.compare(t3))
-    
-
-    print("Function shuffle")
-
-    tok = libhfst.HfstTokenizer()
-    t1 = libhfst.HfstTransducer("abc", "abc", tok, type)
-    t2 = libhfst.HfstTransducer("cde", "cde", tok, type)
-    t1.shuffle(t2)
-    
-    t3 = libhfst.HfstTransducer("abc", "abC", tok, type)
-    try:
-        t3.shuffle(t2)
-        assert(False)
-    except: # libhfst.TransducersAreNotAutomataException:
-        assert(libhfst.hfst_get_exception() == "TransducersAreNotAutomataException")
-        assert(True)
-
-
-    print("Function convert")
-
-    t1 = libhfst.HfstTransducer("foo", "bar", type)
-    t2 = libhfst.HfstTransducer("foo", "bar", type)
-    # Go through all implementation formats and get back to the original one
-    for conv_type in types:
-        t1.convert(conv_type)
-        assert(compare_alphabets(t1, t2))
-    t1.convert(type)
-    assert(t1.compare(t2))
-    assert(compare_alphabets(t1, t2))
-
-
-    print("Function extract_paths(_fd)")
-
-    # Create a transducer that contains animals
-    tok = libhfst.HfstTokenizer()
-    cat = libhfst.HfstTransducer("cat", "cats", tok, type)
-    cat.set_final_weights(3)
-    dog = libhfst.HfstTransducer("dog", "dogs", tok, type)
-    dog.set_final_weights(2.5)
-    mouse = libhfst.HfstTransducer("mouse", "mice",  tok, type)
-    mouse.set_final_weights(1.7)
-    animals = libhfst.HfstTransducer(type)
-    animals.disjunct(cat)
-    animals.disjunct(dog)
-    animals.disjunct(mouse)
-    animals.minimize()
-
-    results = libhfst.extract_paths(animals, 3, 0)
-    #print results
-
-    # Add an animal with two possible plurals
-    hippopotamus1 = libhfst.HfstTransducer("hippopotamus", "hippopotami", tok, type)
-    hippopotamus1.set_final_weights(1.2)
-    hippopotamus2 = libhfst.HfstTransducer("hippopotamus", "hippopotamuses", tok, type)
-    hippopotamus2.set_final_weights(1.4)
-    animals.disjunct(hippopotamus1)
-    animals.disjunct(hippopotamus2)
-    animals.minimize()
-
-    results = libhfst.extract_paths(animals, 5, 0)
-    #print results
-
-    # Convert into optimized lookup format
-    animals_ol = libhfst.HfstTransducer(animals)
-    if type == libhfst.TROPICAL_OPENFST_TYPE:
-        animals_ol.convert(libhfst.HFST_OLW_TYPE)
-    else:
-        animals_ol.convert(libhfst.HFST_OL_TYPE)
-    
-    result = libhfst.detokenize_paths(animals_ol.lookup("hippopotamus"))
-    #for res in result:
-    #    print res[0]
-    #    print res[1]
-
-    if type == libhfst.TROPICAL_OPENFST_TYPE:
-        best_animals = libhfst.HfstTransducer(animals)
-        best_animals.n_best(3)
-        best_animals.convert(libhfst.HFST_OLW_TYPE)
-        assert(libhfst.detokenize_paths(best_animals.lookup("mouse"))[0].output == "mice")
-        assert(libhfst.detokenize_paths(best_animals.lookup("hippopotamus"))[0].output == "hippopotami")
-        assert(libhfst.detokenize_paths(best_animals.lookup("hippopotamus"))[1].output == "hippopotamuses")
-    
-    
-    print("Function insert_freely")
-
-    t1 = libhfst.HfstTransducer("a", "b", type)
-    t1.insert_freely(("c", "d"))
-
-    t2 = libhfst.HfstTransducer("a", "b", type)
-    tr = libhfst.HfstTransducer("c", "d", type)
-    t2.insert_freely(tr)
-    assert(t1.compare(t2))
-
-    cd_star = libhfst.HfstTransducer("c", "d", type)
-    cd_star.repeat_star()
-    ab = libhfst.HfstTransducer("a", "b", type)
-    test = libhfst.HfstTransducer(type)
-    test.assign(cd_star)
-    test.concatenate(ab)
-    test.concatenate(cd_star)
-
-    assert(t1.compare(test))
-    assert(t2.compare(test))
-
-    unk2unk = libhfst.HfstTransducer("@_UNKNOWN_SYMBOL_@", "@_UNKNOWN_SYMBOL_@", type)
-    unk2unk.insert_freely(("c", "d"))
-    dc = libhfst.HfstTransducer("d", "c", type)
-
-    empty = libhfst.HfstTransducer(type)
-    assert(not unk2unk.intersect(dc).compare(empty))
-
-    unk2unk_ = libhfst.HfstTransducer("@_UNKNOWN_SYMBOL_@", "@_UNKNOWN_SYMBOL_@", type)
-    cd_ = libhfst.HfstTransducer("c", "d", type)
-    unk2unk_.insert_freely(cd_)
-
-    dc_ = libhfst.HfstTransducer("d", "c", type)
-    empty_ = libhfst.HfstTransducer(type)
-    assert(not unk2unk_.intersect(dc_).compare(empty))
-
-
-    print("function is_cyclic")
-
-    t1 = libhfst.HfstTransducer("a", "b", type)
-    assert(not t1.is_cyclic())
-    t1.repeat_star()
-    assert(t1.is_cyclic())
-
-
-    if (type == libhfst.TROPICAL_OPENFST_TYPE):
-
-        print("function push_weights")
-
-        # Create an HFST basic transducer [a:b] with transition
-        # weight 0.3 and final weight 0.5
-        t = libhfst.HfstBasicTransducer()
-        t.add_state(1)
-        t.add_transition(0, libhfst.HfstBasicTransition(1, "a", "b", 0.3))
-        t.set_final_weight(1, 0.5)
-
-        # Convert to tropical OpenFst format and push weights
-        # toward final and initial states
-        T_final = libhfst.HfstTransducer(t, libhfst.TROPICAL_OPENFST_TYPE)
-        T_final.push_weights(libhfst.TO_FINAL_STATE)
-        T_initial = libhfst.HfstTransducer(t, libhfst.TROPICAL_OPENFST_TYPE)
-        T_initial.push_weights(libhfst.TO_INITIAL_STATE)
-
-        # Convert back to HFST basic transducer
-        t_final = libhfst.HfstBasicTransducer(T_final)
-        t_initial = libhfst.HfstBasicTransducer(T_initial)
-
-        # Test the final weight
-        try:
-            # Rounding can affect the precision
-            assert((0.79 < t_final.get_final_weight(1)) and (t_final.get_final_weight(1) < 0.81))
-            # If the state does not exist or is not final
-        except: # (libhfst.HfstException):
-            assert(False)
-
-        # Test the transition weight
-        try:
-            transitions = t_initial.transitions(0)
-            assert(len(transitions) == 1)
-            weight = transitions[0].get_weight()
-            # Rounding can affect the precision
-            assert((0.79 < weight) and (weight < 0.81))
-            # If the state does not exist or is not final */
-        except: # (libhfst.HfstException):
-            assert(False)
-
-
-        # Functions set_final_weights and transform_weights
-
-        print("function set_final_weights")
-
-        # Create an HFST basic transducer [a:b] with transition
-        # weight 0.3 and final weight 0.5
-        t = libhfst.HfstBasicTransducer()
-        t.add_state(1)
-        t.add_transition(0, libhfst.HfstBasicTransition(1, "a", "b", 0.3))
-        t.set_final_weight(1, 0.5)
-
-        # Modify weights
-        T = libhfst.HfstTransducer(t, type)
-        T.set_final_weights(0.2)
-        # T.transform_weights(&modify_weights)
-        T.push_weights(libhfst.TO_FINAL_STATE)
-
-        # Convert back to HFST basic transducer and test the weight
-        tc = libhfst.HfstBasicTransducer(T)
-        try:
-          assert((0.49 < tc.get_final_weight(1)) and (tc.get_final_weight(1) < 0.51))
-        except: # (libhfst.HfstException):
-            assert(False)
-
-
-    # Functions substitute
-
-    print("functions substitute")
-
-    tok = libhfst.HfstTokenizer()
-    tok.add_multichar_symbol("<eps>")
-    t = libhfst.HfstTransducer("cat", "cats", tok, type)
-
-    # String with String
-    t1 = libhfst.HfstTransducer(t)
-    t1.substitute("c", "C", True, False)
-    t1.substitute("t", "T", False, True)
-    t1.substitute("@_EPSILON_SYMBOL_@", "<eps>")
-    t1.substitute("a", "A")
-    t1.substitute("T", "T")       # special
-    t1.substitute("foo", "bar")   # cases
-    t1_ = libhfst.HfstTransducer("CAt<eps>", "cATs", tok, type)
-    assert(t1.compare(t1_))
-
-    # StringPair with StringPair
-    t2 = libhfst.HfstTransducer(t)
-    t2.substitute(("c","c"), ("C","c"))
-    t2.substitute(("C","c"), ("H","h"))
-    t2.substitute(("a","a"), ("a","a"))      # special
-    t2.substitute(("foo","bar"), ("f","b"))  # cases
-    t2_ = libhfst.HfstTransducer("Hat", "hats", tok, type)
-    assert(t2.compare(t2_))
-
-    # StringPair with StringPairSet
-    t3 = libhfst.HfstTransducer(t)
-    sps = (("c","c"), ("C","C"), ("h","h"), ("H","H"))
-    t3.substitute(("c","c"), sps)
-    t3_ = libhfst.HfstTransducer("cat", "cats", tok, type)
-    t3_1 = libhfst.HfstTransducer("Cat", "Cats", tok, type)
-    t3_2 = libhfst.HfstTransducer("hat", "hats", tok, type)
-    t3_3 = libhfst.HfstTransducer("Hat", "Hats", tok, type)
-    t3_.disjunct(t3_1)
-    t3_.disjunct(t3_2)
-    t3_.disjunct(t3_3)
-    t3_.minimize()
-    assert(t3.compare(t3_))
-
-    # StringPair with HfstTransducer
-    t4 = libhfst.HfstTransducer(t)
-    subs = libhfst.HfstTransducer("ch", tok, type)
-    t4.substitute(("c","c"), subs)
-    t4_ = libhfst.HfstTransducer("chat", "chats", tok, type)
-    assert(t4.compare(t4_))
-
-    # Substitute with function
-    # t5 = libhfst.HfstTransducer(t);
-    # t5.substitute(&modify_transitions);
-    # tok.add_multichar_symbol("<ID>");
-    # HfstTransducer t5_("<ID><ID><ID>", "<ID><ID><ID>s", tok, types[i]);
-    # assert(t5.compare(t5_));
-
-    # Perform multiple string-to-string substitutions
-    t6 = libhfst.HfstTransducer(t)
-    subs_symbol = { 'c':'C', 'a':'A', 't':'T', 's':'S' }
-    t6.substitute_symbols(subs_symbol)
-    t6_ = libhfst.HfstTransducer("CAT", "CATS", tok, type)
-    assert(t6.compare(t6_))
-
-    # Perform multiple string pair-to-string pair substitutions
-    t7 = libhfst.HfstTransducer (t)
-    subs_pair = { ('a','a'):('A','a'), ('s','s'):('S','S'), ('t','t'):('t','T') }
-    t7.substitute_symbol_pairs(subs_pair)
-    t7_ = libhfst.HfstTransducer("cAt", "caTs", tok, type)
-    assert(t7.compare(t7_))
-
-    print("alphabets")
-
-    a2unk = libhfst.HfstTransducer("a", "@_UNKNOWN_SYMBOL_@", type)
-    assert(len(a2unk.get_alphabet()) == 4)
-    a2unk.insert_to_alphabet("FOO")
-    assert(len(a2unk.get_alphabet()) == 5)
-    a2unk.remove_from_alphabet("FOO")
-    assert(len(a2unk.get_alphabet()) == 4)
-    alpha = a2unk.get_alphabet()
-    try:
-        ind = alpha.index("FOO")
-        assert(False)
-    except (ValueError):
-        pass
-
-
-    # Test that binary operations do not change the transducer argument
-
-    print("binary operations")
-
-    id2id = libhfst.HfstTransducer("@_IDENTITY_SYMBOL_@", "@_IDENTITY_SYMBOL_@", type)
-    a2b = libhfst.HfstTransducer("a", "b", type)
-
-    for function in ('concatenate', 'disjunct', 'intersect', 'subtract', 'compose'):
-
-        a2b_copy = libhfst.HfstTransducer(a2b)
-        id2id_copy = libhfst.HfstTransducer(id2id)
-        id2id_copy2 = libhfst.HfstTransducer(id2id)
-
-        if function == 'concatenate':
-            a2b_copy.concatenate(id2id_copy)
-        elif function == 'disjunct':
-            a2b_copy.disjunct(id2id_copy)
-        elif function == 'intersect':
-            a2b_copy.intersect(id2id_copy)
-        elif function == 'subtract':
-            a2b_copy.subtract(id2id_copy)
-        elif function == 'compose':
-            a2b_copy.compose(id2id_copy)
-
-        assert(id2id_copy.compare(id2id_copy2))
-        assert(compare_alphabets(id2id_copy, id2id_copy2))
-
-    a2b_copy = libhfst.HfstTransducer(a2b)
-    id2id_copy = libhfst.HfstTransducer(id2id)
-    id2id_copy2 = libhfst.HfstTransducer(id2id)
-    a2b_copy.insert_freely(id2id_copy)
-    
-    assert(id2id_copy.compare(id2id_copy2))
-    assert(compare_alphabets(id2id_copy, id2id_copy2))
-
-
-    # Test that binary functions work when the argument and the calling
-    # object are the same
-    foo = libhfst.HfstTransducer("foo", type)
-    foo.concatenate(foo)
-    foofoo = libhfst.HfstTransducer("foo", type)
-    foo2 = libhfst.HfstTransducer("foo", type)
-    foofoo.concatenate(foo2)
-    assert(foo.compare(foofoo))
-
diff --git a/old_python/test/test_xre_compiler.py b/old_python/test/test_xre_compiler.py
deleted file mode 100644
index 46ff2f5..0000000
--- a/old_python/test/test_xre_compiler.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# Creates transducers of all implementation types from a set of regular expressions.
-# Prints regexps and their resulting transducers to standard output for tropical openfst type.
-# For other implementation types, compares the results with the result for tropical openfst type.
-# To make sure that everything is working, the user must hand-check the output.
-
-import libhfst
-
-types = [libhfst.SFST_TYPE, libhfst.TROPICAL_OPENFST_TYPE, libhfst.FOMA_TYPE]
-
-# A dictionary that maps transducer implementation types to
-# lists of transducer pointers
-transducers = {}
-
-# The regexps that we convert into transducers and store in
-# the lists in the dictionary
-regexps = ['a:b', '0:c', 'foo:bar', 'a:b c:d', 'baz:"0"*', 'a b+ a:c'] # , 'Var d Var'] TODO
-
-for type in types:
-
-    if not libhfst.HfstTransducer.is_implementation_type_available(type):
-        continue
-
-    transducers[type] = []
-    compiler = libhfst.XreCompiler(type)
-    # compiler.define('Var', 'v a r') TODO
-
-    for regexp in regexps:
-        # Print only results from tropical openfst implementation
-        if type == libhfst.TROPICAL_OPENFST_TYPE:
-            print("{0}".format(regexp))
-        # Compile the regexp and append it to the list
-        tr = compiler.compile(regexp)
-        transducers[type].append(tr)
-        # Print only results from tropical openfst implementation
-        if type == libhfst.TROPICAL_OPENFST_TYPE:
-            print(tr)
-
-
-# Compare all the transducers with the transducers for tropical openfst type
-for type_ind, type_val in enumerate(transducers):
-    for tr_ind, tr_val in enumerate(transducers[type_val]):
-        # Convert the transducer that we are comparing into tropical openfst format
-        tr = libhfst.ptrvalue(transducers[type_val][tr_ind].convert(libhfst.TROPICAL_OPENFST_TYPE))
-        # Get the transducer which we are comparing with
-        tr_tropical = libhfst.ptrvalue(transducers[libhfst.TROPICAL_OPENFST_TYPE][tr_ind])
-        # Compare
-        assert(tr.compare(tr_tropical))
-
diff --git a/python/COPYING b/python/COPYING
new file mode 100644
index 0000000..65c5ca8
--- /dev/null
+++ b/python/COPYING
@@ -0,0 +1,165 @@
+                   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/python/Makefile.am b/python/Makefile.am
index a23f51f..4c00a4c 100644
--- a/python/Makefile.am
+++ b/python/Makefile.am
@@ -1,3 +1,12 @@
+# Copyright (c) 2016 University of Helsinki                          
+#                                                                    
+# This library is free software; you can redistribute it and/or      
+# modify it under the terms of the GNU Lesser General Public         
+# License as published by the Free Software Foundation; either       
+# version 3 of the License, or (at your option) any later version.
+# See the file COPYING included with this distribution for more      
+# information.
+
 SUBDIRS = test
-EXTRA_DIST = libhfst.i README setup.py test.py
+EXTRA_DIST = libhfst.i README setup.py
 AUTOMAKE_OPTIONS = subdir-objects
diff --git a/python/README b/python/README
index fe11d49..a29eb4c 100644
--- a/python/README
+++ b/python/README
@@ -1,16 +1,16 @@
 
          ------------------------------------------------
-         *** THIS IS THE NEW PYTHON3 WRAPPER FOR HFST ***
-              *** IT IS STILL UNDER CONSTRUCTION ***
+         *** THIS IS THE NEW PYTHON WRAPPER FOR HFST ***
+             *** IT IS STILL UNDER CONSTRUCTION ***
          ------------------------------------------------
 
-This is the SWIG binding for using HFST library with python3.
+This is the SWIG binding for using HFST library with python.
 
 Building and installation is done using the standard Python module distutils.
 Once you've successfully built libhfst, use the script setup.py to build the
 Python extension eg. like so:
 
-    python3 setup.py build_ext --inplace
+    python setup.py build_ext --inplace
 
 
 NOTE: if you already have hfst installed, it is possible that SWIG will use 
@@ -23,13 +23,13 @@ LD_LIBRARY_PATH before building the Python extension, e.g. by executing
 
 If you wish to install the extension, run
 
-    python3 setup.py install
+    python setup.py install
 
 
 For further information, consult
 
-    python3 setup.py --help
-    python3 setup.py --help-commands
+    python setup.py --help
+    python setup.py --help-commands
 
 and the distutils documentation.
 
diff --git a/python/doc/Doxyfile b/python/doc/Doxyfile
index 1bb044c..ed5f7fe 100644
--- a/python/doc/Doxyfile
+++ b/python/doc/Doxyfile
@@ -31,7 +31,7 @@ PROJECT_NAME           = "HFST - Helsinki Finite-State Transducer Technology - P
 # This could be handy for archiving the generated documentation or
 # if some version control system is used.
 
-PROJECT_NUMBER         = "version 3.9.0"
+PROJECT_NUMBER         = "version 3.9.1"
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
 # base path where the generated documentation will be put.
@@ -976,7 +976,7 @@ FORMULA_FONTSIZE       = 10
 
 SEARCHENGINE = YES
 
-SERVER_BASED_SEARCH = YES
+SERVER_BASED_SEARCH = NO
 
 EXTERNAL_SEARCH = NO
 
diff --git a/python/doc/libhfst.py b/python/doc/libhfst.py
index 8b1964b..b3cff7a 100644
--- a/python/doc/libhfst.py
+++ b/python/doc/libhfst.py
@@ -1,11 +1,8 @@
 ## @package libhfst 
-# HFST API for Python3.
+# HFST API for Python
 
 ## @mainpage
 #
-# <p><b> <font color="red"> THIS PAGE IS FOR TESTING PURPOSES </font> </b>
-# We are moving from Sourceforge to <a href="http://www.github.com/hfst">Github</a> during autumn 2015.</p>
-#
 # HFST - The Helsinki Finite-State Transducer technology is intended for creating and manipulating weighted or unweighted synchronic transducers implementing regular relations.
 # UTF-8 is chosen as the character encoding used in HFST software. Currently, HFST has been implemented using the
 # <a href="http://www.ims.uni-stuttgart.de/projekte/gramotron/SOFTWARE/SFST.html">SFST</a>, 
@@ -1113,6 +1110,15 @@ class HfstTransducer:
 
     ## Create a deep copy of HfstTransducer \a another or a transducer equivalent to HfstBasicTransducer \a another.
     # @param another An HfstTransducer or HfstBasicTransducer.
+    #
+    # An example:
+    #
+    # \verbatim
+    # tr1 = libhfst.regex('foo bar foo')
+    # tr2 = libhfst.HfstTransducer(tr1)
+    # tr2.substitute('foo','FOO')
+    # tr1.concatenate(tr2)
+    # \endverbatim
     def __init__(self, another):
         pass
 
@@ -1599,6 +1605,12 @@ class HfstTransducer:
     # @param max_number Maximum number of results returned, defaults to -1, i.e. infinity.
     # @param time_cutoff How long the function can search for results before returning, expressed in seconds. Defaults to 0.0, i.e. infinitely.
     # @param output Possible values are 'tuple', 'text' and 'raw', 'tuple' being the default.
+    #
+    # @note This function is implemented only for optimized lookup format (libhfst.HFST_OL_TYPE or libhfst.HFST_OLW_TYPE). 
+    #       Either convert to optimized lookup format or to HfstBasicTransducer if you wish to perform lookup.
+    #       Conversion to OL might take a while but it lookup is fast.
+    #       Conversion to HfstBasicTransducer is quick but lookup is slower.
+    #
     def lookup(self, input, **kvargs):
         pass
 
@@ -1609,7 +1621,7 @@ class HfstTransducer:
     # @param max_cycles Indicates how many times a cycle will be followed, with negative numbers indicating unlimited (default -1 i.e. unlimited).
     # @param max_number The total number of resulting strings is capped at this value, with 0 or negative indicating unlimited (default -1 i.e. unlimited).
     # @param obey_flags Whether flag diacritics are validated (default True).
-    # @param output Output format. Values recognized: 'text' (as a string, separated by newlines), 'raw' (libhfst.HfstTwoLevelPaths), 'dict' (a dictionary that maps input strings into tuples of an output string and a weight, the default). 
+    # @param output Output format. Values recognized: 'text' (as a string, separated by newlines), 'raw' (a dictionary that maps each input string into a list of tuples of an output string and a weight), 'dict' (a dictionary that maps each input string into a tuple of tuples of an output string and a weight, the default). 
     # @param random Whether result strings are fetched randomly (default False).
     # @return The extracted strings. \a output controls how they are represented.
     #
@@ -1758,23 +1770,23 @@ class HfstTransducer:
     def has_flag_diacritics(self):
         pass
 
-## Detokenize \a tokenized_paths.
+# Detokenize \a tokenized_paths.
 #
 # Concatenate all transition symbols on input and output levels for each path in \a tokenized_paths.
 # 
 # @param tokenized_paths An HfstOneLevelPaths pointer or an HfstTwoLevelPaths.
 # @return A tuple of HfstPaths.
-def detokenize_paths(tokenized_paths):
-    pass
+# def detokenize_paths(tokenized_paths):
+#    pass
 
-## Detokenize and remove all flag diacritics from \a tokenized_paths.
+# Detokenize and remove all flag diacritics from \a tokenized_paths.
 #
 # Concatenate all transition symbols except flag diacritics on input and output levels for each path in \a tokenized_paths.
 # 
 # @param tokenized_paths An HfstOneLevelPaths pointer or an HfstTwoLevelPaths.
 # @return A tuple of HfstPaths.
-def detokenize_and_purge_paths(tokenized_paths):
-    pass
+# def detokenize_and_purge_paths(tokenized_paths):
+#    pass
 
 ##  A stream for reading HFST binary transducers. 
 #
@@ -2481,6 +2493,8 @@ def deep_restriction_and_coercion(contexts, mapping, alphabet):
 # 
 #    - HfstTokenizer: A class used in creating transducers from UTF-8 strings.
 #  
+# There are also functions in module libhfst that are not part of any class. For example #libhfst.fst
+#
 # <BR>
 # 
 # \section hfst_examples Examples of HFST functionalities
@@ -2594,7 +2608,7 @@ def deep_restriction_and_coercion(contexts, mapping, alphabet):
 #
 # run on command line (fstprint is native OpenFst tool):
 # \verbatim
-# python3 test.py > ab.fst
+# python test.py > ab.fst
 # fstprint ab.fst
 # \endverbatim
 #
@@ -2634,7 +2648,7 @@ def deep_restriction_and_coercion(contexts, mapping, alphabet):
 # the commands
 #
 # \verbatim
-# cat ab.txt | fstcompile --isymbols=symbols.txt --osymbols=symbols.txt --keep_isymbols --keep_osymbols | python3 test.py
+# cat ab.txt | fstcompile --isymbols=symbols.txt --osymbols=symbols.txt --keep_isymbols --keep_osymbols | python test.py
 # \endverbatim
 #
 # will compile a native OpenFst transducer (fstcompile is a native OpenFst tool), read it with HFST tools and print it to standard output in AT&T text format:
diff --git a/python/libhfst.i b/python/libhfst.i
index e8f780c..ae02082 100644
--- a/python/libhfst.i
+++ b/python/libhfst.i
@@ -1,3 +1,12 @@
+// Copyright (c) 2016 University of Helsinki                          
+//                                                                    
+// This library is free software; you can redistribute it and/or      
+// modify it under the terms of the GNU Lesser General Public         
+// License as published by the Free Software Foundation; either       
+// version 3 of the License, or (at your option) any later version.
+// See the file COPYING included with this distribution for more      
+// information.
+
 %module libhfst
 %include "std_string.i"
 %include "std_vector.i"
@@ -27,6 +36,7 @@
 #include "parsers/PmatchCompiler.h"
 #include "parsers/XfstCompiler.h"
 #include "implementations/HfstTransitionGraph.h"
+#include "implementations/optimized-lookup/pmatch.h"
 
 // todo instead: #include "hfst_extensions.h"
 
@@ -74,47 +84,118 @@ namespace hfst {
 
 typedef std::vector<float> FloatVector;
 
+// Add Default implementation type
 hfst::ImplementationType type = hfst::TROPICAL_OPENFST_TYPE;
-
-hfst::HfstTokenizer deftok; // default tokenizer
-
-void set_default_fst_type(hfst::ImplementationType t)
-{
-        type = t;
-}
-
-hfst::ImplementationType get_default_fst_type()
-{
-        return type;
-}
+void set_default_fst_type(hfst::ImplementationType t) { type = t; }
+hfst::ImplementationType get_default_fst_type() { return type; }
 
 std::string fst_type_to_string(hfst::ImplementationType t)
 {
         std::string retval = hfst::implementation_type_to_string(t);
         return retval;
 }
-
 bool is_diacritic(const std::string & symbol)
 {
         return hfst::FdOperation::is_diacritic(symbol);
 }
-        
 
+// Copy functions       
 HfstTransducer * copy_hfst_transducer(const hfst::HfstTransducer & t)
 {
         return new HfstTransducer(t);
 }
-
 HfstTransducer * copy_hfst_transducer_from_basic_transducer(const hfst::implementations::HfstBasicTransducer & t)
 {
         return new HfstTransducer(t, type);
 }
-
 HfstTransducer * copy_hfst_transducer_from_basic_transducer(const hfst::implementations::HfstBasicTransducer & t, hfst::ImplementationType impl)
 {
         return new HfstTransducer(t, impl);
 }
 
+// Mostly copied from file 'tools/src/hfst-pmatch2fst.cc'.
+// TODO: HfstTransducer pointers in variable 'definitions' need to be deleted manually?
+std::vector<hfst::HfstTransducer> compile_pmatch_expression(const std::string & pmatch)
+{
+    std::vector<hfst::HfstTransducer> retval;
+    hfst::pmatch::PmatchCompiler comp(get_default_fst_type());
+    comp.set_verbose(false/*verbose*/);
+    comp.set_flatten(false/*flatten*/);
+    std::map<std::string, hfst::HfstTransducer*> definitions = comp.compile(pmatch);
+
+    // A dummy transducer with an alphabet with all the symbols
+    hfst::HfstTransducer harmonizer(get_default_fst_type());
+
+    // First we need to collect a unified alphabet from all the transducers.
+    hfst::StringSet symbols_seen;
+    for (std::map<std::string, hfst::HfstTransducer *>::const_iterator it =
+             definitions.begin(); it != definitions.end(); ++it) {
+        hfst::StringSet string_set = it->second->get_alphabet();
+        for (hfst::StringSet::const_iterator sym = string_set.begin();
+             sym != string_set.end(); ++sym) {
+            if (symbols_seen.count(*sym) == 0) {
+                harmonizer.disjunct(hfst::HfstTransducer(*sym, get_default_fst_type()));
+                symbols_seen.insert(*sym);
+            }
+        }
+    }
+    if (symbols_seen.size() == 0) {
+        // We don't recognise anything, go home early
+        std::cerr << "Empty ruleset, nothing to write\n";
+        throw HfstException(); // TODO
+    }
+
+    // Then we convert it...
+    harmonizer.convert(hfst::HFST_OLW_TYPE);
+    // Use these for naughty intermediate steps to make sure
+    // everything has the same alphabet
+    hfst::HfstBasicTransducer * intermediate_tmp;
+    hfst_ol::Transducer * harmonized_tmp;
+    hfst::HfstTransducer * output_tmp;
+
+    // When done compiling everything, look for TOP and output it first.
+    if (definitions.count("TOP") == 1) {
+        intermediate_tmp = hfst::implementations::ConversionFunctions::
+            hfst_transducer_to_hfst_basic_transducer(*definitions["TOP"]);
+        harmonized_tmp = hfst::implementations::ConversionFunctions::
+            hfst_basic_transducer_to_hfst_ol(intermediate_tmp,
+                                             true, // weighted
+                                             "", // no special options
+                                             &harmonizer); // harmonize with this
+        output_tmp = hfst::implementations::ConversionFunctions::
+            hfst_ol_to_hfst_transducer(harmonized_tmp);
+        output_tmp->set_name("TOP");
+        retval.push_back(*output_tmp);
+        delete definitions["TOP"];
+        definitions.erase("TOP");
+        delete intermediate_tmp;
+        delete output_tmp;
+
+        for (std::map<std::string, hfst::HfstTransducer *>::iterator it =
+                 definitions.begin(); it != definitions.end(); ++it) {
+            intermediate_tmp = hfst::implementations::ConversionFunctions::
+                hfst_transducer_to_hfst_basic_transducer(*(it->second));
+            harmonized_tmp = hfst::implementations::ConversionFunctions::
+                hfst_basic_transducer_to_hfst_ol(intermediate_tmp,
+                                                 true, // weighted
+                                                 "", // no special options
+                                                 &harmonizer); // harmonize with this
+            output_tmp = hfst::implementations::ConversionFunctions::
+                hfst_ol_to_hfst_transducer(harmonized_tmp);
+            output_tmp->set_name(it->first);
+            retval.push_back(*output_tmp);
+            delete it->second;
+            delete intermediate_tmp;
+            delete output_tmp;
+        }
+    } else {
+        std::cerr << "Empty ruleset, nothing to write\n";
+        throw HfstException(); // TODO
+    }
+    return retval;
+}
+
+
 /* Wrapper variables for an IOString output. */
 std::string hfst_regex_error_message("");
 std::string get_hfst_regex_error_message() { return hfst::hfst_regex_error_message; }
@@ -198,6 +279,7 @@ hfst::HfstTransducer * hfst_compile_lexc(hfst::lexc::LexcCompiler & comp, const
         }        
 }
 
+
 /* Wrapper variables for an IOString output. */
 std::string hfst_xfst_string_one("");
 char * get_hfst_xfst_string_one() { return strdup(hfst::hfst_xfst_string_one.c_str()); }
@@ -264,6 +346,16 @@ int hfst_compile_xfst(hfst::xfst::XfstCompiler & comp, std::string input, const
 
 
 
+hfst_ol::PmatchContainer * create_pmatch_container(const std::string & filename)
+{
+    std::ifstream instream(filename.c_str(),
+                           std::ifstream::binary);
+    if (!instream.good()) {
+        return NULL;
+    }
+    return new hfst_ol::PmatchContainer(instream);
+}
+
 hfst::HfstOutputStream * create_hfst_output_stream(const std::string & filename, hfst::ImplementationType type, bool hfst_format)
 {
         if (filename == "") { return new hfst::HfstOutputStream(type, hfst_format); }
@@ -296,6 +388,21 @@ std::string one_level_paths_to_string(const hfst::HfstOneLevelPaths & paths)
     return oss.str();
 }
 
+hfst::HfstOneLevelPaths extract_output_side(const hfst::HfstTwoLevelPaths & paths)
+{
+    hfst::HfstOneLevelPaths result;
+    for(hfst::HfstTwoLevelPaths::const_iterator it = paths.begin(); it != paths.end(); it++)
+    {  
+      hfst::StringVector sv; 
+      for (hfst::StringPairVector::const_iterator svit = it->second.begin(); svit != it->second.end(); svit++)
+      {
+        sv.push_back(svit->second);
+      }
+      result.insert(std::pair<float, hfst::StringVector>(it->first, sv));
+    }
+    return result;
+}
+
 std::string two_level_paths_to_string(const hfst::HfstTwoLevelPaths & paths)
 {
     std::ostringstream oss;
@@ -313,6 +420,223 @@ std::string two_level_paths_to_string(const hfst::HfstTwoLevelPaths & paths)
     return oss.str();
 }
 
+/** Wrappers for lookup functions **/
+
+HfstOneLevelPaths lookup_vector_(const hfst::HfstTransducer * tr, bool fd, const StringVector& s, int limit = -1, double time_cutoff = 0.0) throw(FunctionNotImplementedException)
+{
+  if (tr->get_type() == hfst::HFST_OL_TYPE || tr->get_type() == hfst::HFST_OLW_TYPE)
+    {
+      if (fd) 
+        { return *(tr->lookup_fd(s, limit, time_cutoff)); }
+      else
+        { return *(tr->lookup(s, limit, time_cutoff)); }
+    }
+  hfst::HfstTransducer input(s, tr->get_type());
+  input.compose(*(tr));
+  input.minimize();
+  hfst::HfstTwoLevelPaths result;
+  if (fd)
+    { input.extract_paths_fd(result, limit, -1); }
+  else
+    { input.extract_paths(result, limit, -1); }
+  return hfst::extract_output_side(result);
+}
+
+HfstOneLevelPaths lookup_string_(const hfst::HfstTransducer * tr, bool fd, const std::string& s, int limit = -1, double time_cutoff = 0.0) throw(FunctionNotImplementedException)
+{
+  if (tr->get_type() == hfst::HFST_OL_TYPE || tr->get_type() == hfst::HFST_OLW_TYPE)
+    {
+      if (fd) 
+        { return *(tr->lookup_fd(s, limit, time_cutoff)); }
+      else
+        { return *(tr->lookup(s, limit, time_cutoff)); }
+    }
+  hfst::StringSet alpha = tr->get_alphabet();
+  hfst::HfstTokenizer tok;
+  for (hfst::StringSet::const_iterator it = alpha.begin(); it != alpha.end(); it++)
+    { tok.add_multichar_symbol(*it); }
+  hfst::HfstTransducer input(s, tok, tr->get_type());
+  input.compose(*(tr));
+  input.minimize();
+  hfst::HfstTwoLevelPaths result;
+  if (fd)
+    { input.extract_paths_fd(result, limit, -1); }
+  else
+    { input.extract_paths(result, limit, -1); }
+  return hfst::extract_output_side(result);
+}
+
+/** Wrappers for rule functions. **/
+
+namespace hfst_rules {
+
+  HfstTransducer two_level_if(const HfstTransducerPair & context, const StringPairSet & mappings, const StringPairSet & alphabet) 
+  {
+    hfst::HfstTransducerPair context_(context);
+    StringPairSet mappings_(mappings);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::two_level_if(context_, mappings_, alphabet_);
+  }
+  HfstTransducer two_level_only_if(const HfstTransducerPair &context, const StringPairSet &mappings, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPair context_(context);
+    StringPairSet mappings_(mappings);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::two_level_only_if(context_, mappings_, alphabet_);
+  }
+  HfstTransducer two_level_if_and_only_if(const HfstTransducerPair &context, const StringPairSet &mappings, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPair context_(context);
+    StringPairSet mappings_(mappings);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::two_level_if_and_only_if(context_, mappings_, alphabet_);
+  }
+  HfstTransducer replace_down(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPair context_(context);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::replace_down(context_, mapping_, optional, alphabet_);
+  }
+  HfstTransducer replace_down_karttunen(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPair context_(context);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::replace_down_karttunen(context_, mapping_, optional, alphabet_);
+  }
+  HfstTransducer replace_right(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPair context_(context);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::replace_right(context_, mapping_, optional, alphabet_);
+  }
+  HfstTransducer replace_left(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPair context_(context);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::replace_left(context_, mapping_, optional, alphabet_);
+  }
+  HfstTransducer replace_up(const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::replace_up(mapping_, optional, alphabet_);
+  }
+  HfstTransducer replace_down(const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet)  
+  {
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::replace_down(mapping_, optional, alphabet_);
+  }
+  HfstTransducer left_replace_up(const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::left_replace_up(mapping_, optional, alphabet_);
+  }
+  HfstTransducer left_replace_up(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPair context_(context);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::left_replace_up(context_, mapping_, optional, alphabet_);
+  }
+  HfstTransducer left_replace_down(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPair context_(context);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::left_replace_down(context_, mapping_, optional, alphabet_);
+  }
+  HfstTransducer left_replace_down_karttunen(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPair context_(context);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::left_replace_down_karttunen(context_, mapping_, optional, alphabet_);
+  }
+  HfstTransducer left_replace_left(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPair context_(context);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::left_replace_left(context_, mapping_, optional, alphabet_);
+  }
+  HfstTransducer left_replace_right(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPair context_(context);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::left_replace_right(context_, mapping_, optional, alphabet_);
+  }
+  HfstTransducer restriction(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPairVector contexts_(contexts);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::restriction(contexts_, mapping_, alphabet_);
+  }
+  HfstTransducer coercion(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPairVector contexts_(contexts);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::coercion(contexts_, mapping_, alphabet_);
+  }
+  HfstTransducer restriction_and_coercion(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPairVector contexts_(contexts);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::restriction_and_coercion(contexts_, mapping_, alphabet_);
+  }
+  HfstTransducer surface_restriction(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPairVector contexts_(contexts);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::surface_restriction(contexts_, mapping_, alphabet_);
+  }
+  HfstTransducer surface_coercion(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPairVector contexts_(contexts);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::surface_coercion(contexts_, mapping_, alphabet_);
+  }
+  HfstTransducer surface_restriction_and_coercion(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPairVector contexts_(contexts);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::surface_restriction_and_coercion(contexts_, mapping_, alphabet_);
+  }
+  HfstTransducer deep_restriction(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPairVector contexts_(contexts);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::deep_restriction(contexts_, mapping_, alphabet_);
+  }
+  HfstTransducer deep_coercion(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPairVector contexts_(contexts);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::deep_coercion(contexts_, mapping_, alphabet_);
+  }
+  HfstTransducer deep_restriction_and_coercion(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet)
+  {
+    hfst::HfstTransducerPairVector contexts_(contexts);
+    hfst::HfstTransducer mapping_(mapping);
+    StringPairSet alphabet_(alphabet);
+    return hfst::rules::deep_restriction_and_coercion(contexts_, mapping_, alphabet_);
+  }
+
+}
 
 }
 
@@ -341,6 +665,8 @@ namespace std {
 %template(HfstOneLevelPaths) set<pair<float, vector<string> > >;
 %template(HfstTwoLevelPath) pair<float, vector<pair<string, string > > >;
 %template(HfstTwoLevelPaths) set<pair<float, vector<pair<string, string > > > >;
+%template(HfstTransducerPair) pair<hfst::HfstTransducer, hfst::HfstTransducer>;
+%template(HfstTransducerPairVector) vector<pair<hfst::HfstTransducer, hfst::HfstTransducer> >;
 }
 
 //%ignore hfst::HfstTransducer::lookup_fd(const std::string & s) const;
@@ -410,6 +736,9 @@ typedef std::pair<float, std::vector<std::pair<std::string, std::string > > > Hf
 typedef std::set<std::pair<float, std::vector<std::pair<std::string, std::string> > > > HfstTwoLevelPaths;
 typedef std::map<std::string, std::string> HfstSymbolSubstitutions;
 typedef std::map<std::pair<std::string, std::string>, std::pair<std::string, std::string> > HfstSymbolPairSubstitutions;
+typedef std::vector<hfst::HfstTransducer> HfstTransducerVector;
+typedef std::pair<hfst::HfstTransducer, hfst::HfstTransducer> HfstTransducerPair;
+typedef std::vector<std::pair<hfst::HfstTransducer, hfst::HfstTransducer> > HfstTransducerPairVector;
 
 enum ImplementationType
 {
@@ -515,13 +844,17 @@ bool is_diacritic(const std::string & symbol);
       return tuple(retval)
 %}
 
+// NOTE: all functions returning an HfstTransducer& are commented out and extended by replacing them with equivalent functions that return void.
+// This is done in order to avoid use of references that are not handled well by swig/python.
+
 class HfstTransducer 
 {
 public:
 HfstTransducer();
+// Redefined with %extend:
 //HfstTransducer(const hfst::HfstTransducer &);
 //HfstTransducer(const hfst::implementations::HfstBasicTransducer &, hfst::ImplementationType);
-~HfstTransducer();
+//~HfstTransducer();
 
 void set_name(const std::string &name);
 std::string get_name() const;
@@ -531,18 +864,18 @@ std::string get_property(const std::string& property) const;
 const std::map<std::string,std::string>& get_properties() const;
 
 /* Basic binary operations */
-HfstTransducer & concatenate(const HfstTransducer&, bool harmonize=true) throw(TransducerTypeMismatchException);
-HfstTransducer & disjunct(const HfstTransducer&, bool harmonize=true) throw(TransducerTypeMismatchException);
-HfstTransducer & subtract(const HfstTransducer&, bool harmonize=true) throw(TransducerTypeMismatchException);
-HfstTransducer & intersect(const HfstTransducer&, bool harmonize=true) throw(TransducerTypeMismatchException);
-HfstTransducer & compose(const HfstTransducer&, bool harmonize=true) throw(TransducerTypeMismatchException);
+//HfstTransducer & concatenate(const HfstTransducer&, bool harmonize=true) throw(TransducerTypeMismatchException);
+//HfstTransducer & disjunct(const HfstTransducer&, bool harmonize=true) throw(TransducerTypeMismatchException);
+//HfstTransducer & subtract(const HfstTransducer&, bool harmonize=true) throw(TransducerTypeMismatchException);
+//HfstTransducer & intersect(const HfstTransducer&, bool harmonize=true) throw(TransducerTypeMismatchException);
+//HfstTransducer & compose(const HfstTransducer&, bool harmonize=true) throw(TransducerTypeMismatchException);
 
 /* More binary operations */
-HfstTransducer & compose_intersect(const hfst::HfstTransducerVector &v, bool invert=false, bool harmonize=true);
-HfstTransducer & priority_union(const HfstTransducer &another);
-HfstTransducer & lenient_composition(const HfstTransducer &another, bool harmonize=true);
-HfstTransducer & cross_product(const HfstTransducer &another, bool harmonize=true) throw(TransducersAreNotAutomataException);
-HfstTransducer & shuffle(const HfstTransducer &another, bool harmonize=true);
+//HfstTransducer & compose_intersect(const HfstTransducerVector &v, bool invert=false, bool harmonize=true);
+//HfstTransducer & priority_union(const HfstTransducer &another);
+//HfstTransducer & lenient_composition(const HfstTransducer &another, bool harmonize=true);
+//HfstTransducer & cross_product(const HfstTransducer &another, bool harmonize=true) throw(TransducersAreNotAutomataException);
+//HfstTransducer & shuffle(const HfstTransducer &another, bool harmonize=true);
 
 /* Testing */
 bool compare(const HfstTransducer&, bool harmonize=true) const throw(TransducerTypeMismatchException);
@@ -561,49 +894,49 @@ void remove_from_alphabet(const std::string &);
 static bool is_implementation_type_available(hfst::ImplementationType type);
 
 /* Optimization */
-HfstTransducer & remove_epsilons();
-HfstTransducer & determinize();
-HfstTransducer & minimize();
-HfstTransducer & prune();
-HfstTransducer & eliminate_flags();
-HfstTransducer & eliminate_flag(const std::string&) throw(HfstException);
-HfstTransducer & n_best(unsigned int n);
-HfstTransducer & convert(ImplementationType impl);
+//HfstTransducer & remove_epsilons();
+//HfstTransducer & determinize();
+//HfstTransducer & minimize();
+//HfstTransducer & prune();
+//HfstTransducer & eliminate_flags();
+//HfstTransducer & eliminate_flag(const std::string&) throw(HfstException);
+//HfstTransducer & n_best(unsigned int n);
+//HfstTransducer & convert(ImplementationType impl);
 
 /* Repeat */
-HfstTransducer & repeat_star();
-HfstTransducer & repeat_plus();
-HfstTransducer & repeat_n(unsigned int);
-HfstTransducer & repeat_n_to_k(unsigned int, unsigned int);
-HfstTransducer & repeat_n_minus(unsigned int);
-HfstTransducer & repeat_n_plus(unsigned int);
+//HfstTransducer & repeat_star();
+//HfstTransducer & repeat_plus();
+//HfstTransducer & repeat_n(unsigned int);
+//HfstTransducer & repeat_n_to_k(unsigned int, unsigned int);
+//HfstTransducer & repeat_n_minus(unsigned int);
+//HfstTransducer & repeat_n_plus(unsigned int);
 
 /* Other basic operations */
-HfstTransducer & invert();
-HfstTransducer & reverse();
-HfstTransducer & input_project();
-HfstTransducer & output_project();
-HfstTransducer & optionalize();
+//HfstTransducer & invert();
+//HfstTransducer & reverse();
+//HfstTransducer & input_project();
+//HfstTransducer & output_project();
+//HfstTransducer & optionalize();
 
 /* Insert freely, substitute */
 
-HfstTransducer & insert_freely(const StringPair &symbol_pair, bool harmonize=true);
-HfstTransducer & insert_freely(const HfstTransducer &tr, bool harmonize=true);
+//HfstTransducer & insert_freely(const StringPair &symbol_pair, bool harmonize=true);
+//HfstTransducer & insert_freely(const HfstTransducer &tr, bool harmonize=true);
 
 //HfstTransducer & substitute(bool (*func)(const StringPair &sp, hfst::StringPairSet &sps));
 
-HfstTransducer & substitute_symbol(const std::string &old_symbol, const std::string &new_symbol, bool input_side=true, bool output_side=true);
-HfstTransducer & substitute_symbol_pair(const StringPair &old_symbol_pair, const StringPair &new_symbol_pair);
-HfstTransducer & substitute_symbol_pair_with_set(const StringPair &old_symbol_pair, const hfst::StringPairSet &new_symbol_pair_set);
-HfstTransducer & substitute_symbol_pair_with_transducer(const StringPair &symbol_pair, HfstTransducer &transducer, bool harmonize=true);
-HfstTransducer & substitute_symbols(const hfst::HfstSymbolSubstitutions &substitutions); // alias for the previous function which is shadowed
-HfstTransducer & substitute_symbol_pairs(const hfst::HfstSymbolPairSubstitutions &substitutions); // alias for the previous function which is shadowed
+//HfstTransducer & substitute_symbol(const std::string &old_symbol, const std::string &new_symbol, bool input_side=true, bool output_side=true);
+//HfstTransducer & substitute_symbol_pair(const StringPair &old_symbol_pair, const StringPair &new_symbol_pair);
+//HfstTransducer & substitute_symbol_pair_with_set(const StringPair &old_symbol_pair, const hfst::StringPairSet &new_symbol_pair_set);
+//HfstTransducer & substitute_symbol_pair_with_transducer(const StringPair &symbol_pair, HfstTransducer &transducer, bool harmonize=true);
+//HfstTransducer & substitute_symbols(const hfst::HfstSymbolSubstitutions &substitutions); // alias for the previous function which is shadowed
+//HfstTransducer & substitute_symbol_pairs(const hfst::HfstSymbolPairSubstitutions &substitutions); // alias for the previous function which is shadowed
 
 
 /* Weight handling */
-HfstTransducer & set_final_weights(float weight, bool increment=false);
+//HfstTransducer & set_final_weights(float weight, bool increment=false);
 // Can 'transform_weights' be wrapped?  It maybe needs to be rewritten in python.
-HfstTransducer & push_weights(hfst::PushType type);
+//HfstTransducer & push_weights(hfst::PushType type);
 
 //void extract_shortest_paths(HfstTwoLevelPaths &results) const;
 //bool extract_longest_paths(HfstTwoLevelPaths &results, bool obey_flags=true) const;
@@ -611,6 +944,56 @@ int longest_path_size(bool obey_flags=true) const;
 
 %extend {
 
+  // First versions of all functions returning an HfstTransducer& that return void instead:
+
+  void concatenate(const HfstTransducer& tr, bool harmonize=true) throw(TransducerTypeMismatchException) { self->concatenate(tr, harmonize); }
+  void disjunct(const HfstTransducer& tr, bool harmonize=true) throw(TransducerTypeMismatchException) { self->disjunct(tr, harmonize); }
+  void subtract(const HfstTransducer& tr, bool harmonize=true) throw(TransducerTypeMismatchException) { self->subtract(tr, harmonize); }
+  void intersect(const HfstTransducer& tr, bool harmonize=true) throw(TransducerTypeMismatchException) { self->intersect(tr, harmonize); }
+  void compose(const HfstTransducer& tr, bool harmonize=true) throw(TransducerTypeMismatchException) { self->compose(tr, harmonize); }
+  void compose_intersect(const HfstTransducerVector &v, bool invert=false, bool harmonize=true) { self->compose_intersect(v, invert, harmonize); }
+  void priority_union(const HfstTransducer &another) { self->priority_union(another); }
+  void lenient_composition(const HfstTransducer &another, bool harmonize=true) { self->lenient_composition(another, harmonize); }
+  void cross_product(const HfstTransducer &another, bool harmonize=true) throw(TransducersAreNotAutomataException) { self->cross_product(another, harmonize); }
+  void shuffle(const HfstTransducer &another, bool harmonize=true) { self->shuffle(another, harmonize); }
+  void remove_epsilons() { self->remove_epsilons(); }
+  void determinize() { self->determinize(); }
+  void minimize() { self->minimize(); }
+  void prune() { self->prune(); }
+  void eliminate_flags() { self->eliminate_flags(); }
+  void eliminate_flag(const std::string& f) throw(HfstException) { self->eliminate_flag(f); }
+  void n_best(unsigned int n) { self->n_best(n); }
+  void convert(ImplementationType impl) { self->convert(impl); }
+  void repeat_star() { self->repeat_star(); }
+  void repeat_plus() { self->repeat_plus(); }
+  void repeat_n(unsigned int n) { self->repeat_n(n); }
+  void repeat_n_to_k(unsigned int n, unsigned int k) { self->repeat_n_to_k(n, k); }
+  void repeat_n_minus(unsigned int n) { self->repeat_n_minus(n); }
+  void repeat_n_plus(unsigned int n) { self->repeat_n_plus(n); }
+  void invert() { self->invert(); }
+  void reverse() { self->reverse(); }
+  void input_project() { self->input_project(); }
+  void output_project() { self->output_project(); }
+  void optionalize() { self->optionalize(); }
+  void insert_freely(const StringPair &symbol_pair, bool harmonize=true) { self->insert_freely(symbol_pair, harmonize); }
+  void insert_freely(const HfstTransducer &tr, bool harmonize=true) { self->insert_freely(tr, harmonize); }
+  void substitute_symbol(const std::string &old_symbol, const std::string &new_symbol, bool input_side=true, bool output_side=true) { self->substitute_symbol(old_symbol, new_symbol, input_side, output_side); }
+  void substitute_symbol_pair(const StringPair &old_symbol_pair, const StringPair &new_symbol_pair) { self->substitute_symbol_pair(old_symbol_pair, new_symbol_pair); }
+  void substitute_symbol_pair_with_set(const StringPair &old_symbol_pair, const hfst::StringPairSet &new_symbol_pair_set) { self->substitute_symbol_pair_with_set(old_symbol_pair, new_symbol_pair_set); }
+  void substitute_symbol_pair_with_transducer(const StringPair &symbol_pair, HfstTransducer &transducer, bool harmonize=true) { self->substitute_symbol_pair_with_transducer(symbol_pair, transducer, harmonize); }
+  void substitute_symbols(const hfst::HfstSymbolSubstitutions &substitutions) { self->substitute_symbols(substitutions); } // alias for the previous function which is shadowed
+  void substitute_symbol_pairs(const hfst::HfstSymbolPairSubstitutions &substitutions) { self->substitute_symbol_pairs(substitutions); } // alias for the previous function which is shadowed
+  void set_final_weights(float weight, bool increment=false) { self->set_final_weights(weight, increment); };
+  void push_weights(hfst::PushType type) { self->push_weights(type); };
+
+  // And some aliases:
+
+  // 'union' is a reserved word in python, so it cannot be used as an alias for function 'disjunct' 
+  void minus(const HfstTransducer& t, bool harmonize=true) { $self->subtract(t, harmonize); }
+  void conjunct(const HfstTransducer& t, bool harmonize=true) { $self->intersect(t, harmonize); }
+
+  // Then the actual extensions:
+
     hfst::HfstTwoLevelPaths extract_shortest_paths_()
     {
         hfst::HfstTwoLevelPaths results;
@@ -637,19 +1020,24 @@ int longest_path_size(bool obey_flags=true) const;
     {
         return hfst::copy_hfst_transducer_from_basic_transducer(t, impl);
     }
+    ~HfstTransducer()
+    {
+        if ($self->get_type() == hfst::UNSPECIFIED_TYPE || $self->get_type() == hfst::ERROR_TYPE)
+        {
+            return;
+        }
+        delete $self;
+    }
 
     char *__str__() {
          static char tmp[1024];
          $self->write_in_att_format(tmp);
          return tmp;
     }
-    HfstTransducer & write(hfst::HfstOutputStream & os) {
+    void write(hfst::HfstOutputStream & os) {
          (void) os.redirect(*$self);
-         return *$self;
+         //return *$self;
     }
-    // 'union' is a reserved word in python, so it cannot be used as an alias for function 'disjunct' 
-    HfstTransducer & minus(const HfstTransducer& t, bool harmonize=true) { return $self->subtract(t, harmonize); }
-    HfstTransducer & conjunct(const HfstTransducer& t, bool harmonize=true) { return $self->intersect(t, harmonize); }
 
     void write_att(hfst::HfstFile & f, bool write_weights=true)
     {
@@ -689,16 +1077,25 @@ int longest_path_size(bool obey_flags=true) const;
       return results;
     }
 
-// Wrappers for lookup functions
+HfstOneLevelPaths lookup_vector(const StringVector& s, int limit = -1, double time_cutoff = 0.0) const throw(FunctionNotImplementedException)
+{ 
+  return hfst::lookup_vector_($self, false /*fd*/, s, limit, time_cutoff);
+}
 
 HfstOneLevelPaths lookup_fd_vector(const StringVector& s, int limit = -1, double time_cutoff = 0.0) const throw(FunctionNotImplementedException)
-{ return *($self->lookup_fd(s, limit, time_cutoff)); }
+{ 
+  return hfst::lookup_vector_($self, true /*fd*/, s, limit, time_cutoff);
+}
+
 HfstOneLevelPaths lookup_fd_string(const std::string& s, int limit = -1, double time_cutoff = 0.0) const throw(FunctionNotImplementedException)
-{ return *($self->lookup_fd(s, limit, time_cutoff)); }
-HfstOneLevelPaths lookup_vector(const StringVector& s, int limit = -1, double time_cutoff = 0.0) const throw(FunctionNotImplementedException)
-{ return *($self->lookup(s, limit, time_cutoff)); }
+{ 
+  return hfst::lookup_string_($self, true /*fd*/, s, limit, time_cutoff);
+}
+
 HfstOneLevelPaths lookup_string(const std::string & s, int limit = -1, double time_cutoff = 0.0) const throw(FunctionNotImplementedException)
-{ return *($self->lookup(s, limit, time_cutoff)); }
+{ 
+  return hfst::lookup_string_($self, false /*fd*/, s, limit, time_cutoff);
+}
 
 
 %pythoncode %{
@@ -749,7 +1146,13 @@ HfstOneLevelPaths lookup_string(const std::string & s, int limit = -1, double ti
          else:
             retval=self.lookup_string(input, max_number, time_cutoff)
       else:
-         raise RuntimeError('Input argument must be string or tuple.')
+         try:
+            if obey_flags:
+                retval=self.lookup_fd_string(str(input), max_number, time_cutoff)
+            else:
+                retval=self.lookup_string(str(input), max_number, time_cutoff)         
+         except:
+            raise RuntimeError('Input argument must be string or tuple.')
 
       if output == 'text':
          return one_level_paths_to_string(retval)
@@ -967,11 +1370,12 @@ HfstOutputStream &flush();
 //HfstOutputStream& redirect (HfstTransducer &transducer);
 void close(void);
 
+
 %extend {
 
-HfstOutputStream & write(hfst::HfstTransducer & transducer) throw(StreamIsClosedException)
+void write(hfst::HfstTransducer & transducer) throw(StreamIsClosedException)
 {
-  return $self->redirect(transducer);
+  $self->redirect(transducer);
 }
 
 HfstOutputStream() { return new hfst::HfstOutputStream(hfst::get_default_fst_type()); }
@@ -1012,10 +1416,30 @@ public:
     ImplementationType get_type(void) const throw(TransducerTypeMismatchException);
 
 %extend {
+
 hfst::HfstTransducer * read() throw (EndOfStreamException)
 {
   return new hfst::HfstTransducer(*($self));
 }
+
+%pythoncode %{
+
+def __iter__(self):
+    return self
+
+# Python 2
+def next(self):
+    if self.is_eof():
+        raise StopIteration
+    else:
+        return self.read();
+
+# Python 3
+def __next__(self):
+    return self.next()
+
+%}
+
 }
 
 };
@@ -1087,24 +1511,24 @@ class HfstBasicTransducer {
     bool is_final_state(HfstState s) const;
     float get_final_weight(HfstState s) const throw(StateIsNotFinalException, StateIndexOutOfBoundsException);
     void set_final_weight(HfstState s, const float & weight);
-    HfstBasicTransducer &sort_arcs(void);
+    //HfstBasicTransducer &sort_arcs(void);
     const std::vector<HfstBasicTransition> & transitions(HfstState s) const;
-    HfstBasicTransducer &disjunct(const StringPairVector &spv, float weight);
-    HfstBasicTransducer &harmonize(HfstBasicTransducer &another);
+    //HfstBasicTransducer &disjunct(const StringPairVector &spv, float weight);
+    //HfstBasicTransducer &harmonize(HfstBasicTransducer &another);
 
     bool is_infinitely_ambiguous();
     bool is_lookup_infinitely_ambiguous(const StringVector & s);
     int longest_path_size();
 
-    HfstBasicTransducer & substitute_symbol(const std::string &old_symbol, const std::string &new_symbol, bool input_side=true, bool output_side=true);
-    HfstBasicTransducer & substitute_symbol_pair(const StringPair &old_symbol_pair, const StringPair &new_symbol_pair);
-    HfstBasicTransducer & substitute_symbol_pair_with_set(const StringPair &old_symbol_pair, const hfst::StringPairSet &new_symbol_pair_set);
-    HfstBasicTransducer & substitute_symbol_pair_with_transducer(const StringPair &symbol_pair, HfstBasicTransducer &transducer);
-    HfstBasicTransducer & substitute_symbols(const hfst::HfstSymbolSubstitutions &substitutions); // alias for the previous function which is shadowed
-    HfstBasicTransducer & substitute_symbol_pairs(const hfst::HfstSymbolPairSubstitutions &substitutions); // alias for the previous function which is shadowed
+    //HfstBasicTransducer & substitute_symbol(const std::string &old_symbol, const std::string &new_symbol, bool input_side=true, bool output_side=true);
+    //HfstBasicTransducer & substitute_symbol_pair(const StringPair &old_symbol_pair, const StringPair &new_symbol_pair);
+    //HfstBasicTransducer & substitute_symbol_pair_with_set(const StringPair &old_symbol_pair, const hfst::StringPairSet &new_symbol_pair_set);
+    //HfstBasicTransducer & substitute_symbol_pair_with_transducer(const StringPair &symbol_pair, HfstBasicTransducer &transducer);
+    //HfstBasicTransducer & substitute_symbols(const hfst::HfstSymbolSubstitutions &substitutions); // alias for the previous function which is shadowed
+    //HfstBasicTransducer & substitute_symbol_pairs(const hfst::HfstSymbolPairSubstitutions &substitutions); // alias for the previous function which is shadowed
 
-    HfstBasicTransducer & insert_freely(const StringPair &symbol_pair, float weight);
-    HfstBasicTransducer & insert_freely(const HfstBasicTransducer &tr);
+    //HfstBasicTransducer & insert_freely(const StringPair &symbol_pair, float weight);
+    //HfstBasicTransducer & insert_freely(const HfstBasicTransducer &tr);
     
     // void lookup_fd(const StringVector &lookup_path, HfstTwoLevelPaths &results, size_t infinite_cutoff, float * max_weight = NULL)
 
@@ -1114,6 +1538,18 @@ class HfstBasicTransducer {
 
 %extend {
 
+    void substitute_symbol(const std::string &old_symbol, const std::string &new_symbol, bool input_side=true, bool output_side=true) { self->substitute_symbol(old_symbol, new_symbol, input_side, output_side); }
+    void substitute_symbol_pair(const StringPair &old_symbol_pair, const StringPair &new_symbol_pair) { self->substitute_symbol_pair(old_symbol_pair, new_symbol_pair); }
+    void substitute_symbol_pair_with_set(const StringPair &old_symbol_pair, const hfst::StringPairSet &new_symbol_pair_set) { self->substitute_symbol_pair_with_set(old_symbol_pair, new_symbol_pair_set); }
+    void substitute_symbol_pair_with_transducer(const StringPair &symbol_pair, HfstBasicTransducer &transducer) { self->substitute_symbol_pair_with_transducer(symbol_pair, transducer); }
+    void substitute_symbols(const hfst::HfstSymbolSubstitutions &substitutions) { self->substitute_symbols(substitutions); } // alias for the previous function which is shadowed
+    void substitute_symbol_pairs(const hfst::HfstSymbolPairSubstitutions &substitutions) { self->substitute_symbol_pairs(substitutions); } // alias for the previous function which is shadowed
+    void insert_freely(const StringPair &symbol_pair, float weight) { self->insert_freely(symbol_pair, weight); }
+    void insert_freely(const HfstBasicTransducer &tr) { self->insert_freely(tr); }
+    void sort_arcs() { self->sort_arcs(); }
+    void disjunct(const StringPairVector &spv, float weight) { self->disjunct(spv, weight); }
+    void harmonize(HfstBasicTransducer &another) { self->harmonize(another); }
+
   HfstTwoLevelPaths lookup_fd_(const StringVector &lookup_path, size_t * infinite_cutoff, float * max_weight)
   {
     hfst::HfstTwoLevelPaths results;
@@ -1276,7 +1712,6 @@ class HfstBasicTransition {
 
 }
 
-
 namespace pmatch {
   class PmatchCompiler
   {
@@ -1416,10 +1851,78 @@ hfst::HfstTransducer * hfst::read_prolog(hfst::HfstFile & f) throw(EndOfStreamEx
 std::string hfst::one_level_paths_to_string(const HfstOneLevelPaths &);
 std::string hfst::two_level_paths_to_string(const HfstTwoLevelPaths &);
 
+
+hfst_ol::PmatchContainer * create_pmatch_container(const std::string & filename);
+
+namespace rules {
+  enum ReplaceType {REPL_UP, REPL_DOWN, REPL_RIGHT, REPL_LEFT, REPL_DOWN_KARTTUNEN};
+  enum TwolType {twol_right, twol_left, twol_both};
 }
 
+namespace hfst_rules {
+
+  HfstTransducer two_level_if(const HfstTransducerPair & context, const StringPairSet & mappings, const StringPairSet & alphabet);
+  HfstTransducer two_level_only_if(const HfstTransducerPair &context, const StringPairSet &mappings, const StringPairSet &alphabet); 
+  HfstTransducer two_level_if_and_only_if(const HfstTransducerPair &context, const StringPairSet &mappings, const StringPairSet &alphabet); 
+  HfstTransducer replace_down(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet); 
+  HfstTransducer replace_down_karttunen(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet); 
+  HfstTransducer replace_right(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet); 
+  HfstTransducer replace_left(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet); 
+  HfstTransducer replace_up(const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet); 
+  HfstTransducer replace_down(const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet); 
+  HfstTransducer left_replace_up(const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet); 
+  HfstTransducer left_replace_up(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet); 
+  HfstTransducer left_replace_down(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet); 
+  HfstTransducer left_replace_down_karttunen(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet); 
+  HfstTransducer left_replace_left(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet); 
+  HfstTransducer left_replace_right(const HfstTransducerPair &context, const HfstTransducer &mapping, bool optional, const StringPairSet &alphabet); 
+  HfstTransducer restriction(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet); 
+  HfstTransducer coercion(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet); 
+  HfstTransducer restriction_and_coercion(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet); 
+  HfstTransducer surface_restriction(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet); 
+  HfstTransducer surface_coercion(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet); 
+  HfstTransducer surface_restriction_and_coercion(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet); 
+  HfstTransducer deep_restriction(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet); 
+  HfstTransducer deep_coercion(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet); 
+  HfstTransducer deep_restriction_and_coercion(const HfstTransducerPairVector &contexts, const HfstTransducer &mapping, const StringPairSet &alphabet);
+
+} // namespace hfst_rules
+
+
+} // namespace hfst
+
+namespace hfst_ol {
+    class PmatchContainer
+    {
+    public:
+        //PmatchContainer(std::istream & is);
+        PmatchContainer(void);
+        ~PmatchContainer(void);
+        std::string match(const std::string & input, double time_cutoff = 0.0);
+        std::string get_profiling_info(void);
+        void set_verbose(bool b);
+        void set_extract_tags_mode(bool b);
+        void set_profile(bool b);
+
+%extend {
+
 %pythoncode %{
 
+def __init__(self, filename):
+    self.this = _libhfst.create_pmatch_container(filename)
+
+%}
+
+}
+
+    };
+}
+
+
+%pythoncode %{
+
+from sys import stdout
+ 
 EPSILON='@_EPSILON_SYMBOL_@'
 UNKNOWN='@_UNKNOWN_SYMBOL_@'
 IDENTITY='@_IDENTITY_SYMBOL_@'
@@ -1545,7 +2048,7 @@ def start_xfst(**kvargs):
         retval = -1
         if idle:
             retval = _libhfst.hfst_compile_xfst_to_string_one(comp, expression)
-            print(_libhfst.get_hfst_xfst_string_one(), end='')
+            stdout.write(_libhfst.get_hfst_xfst_string_one())
         else:
             retval = comp.parse_line(expression + "\n")
         if retval != 0:
@@ -1676,22 +2179,23 @@ def check_word(arg):
     return arg
 
 def fsa(arg):
+    deftok = HfstTokenizer()
+    retval = HfstBasicTransducer()
     if isinstance(arg, str):
-       return regex('{' + check_word(arg) + '}')
+       retval.disjunct(deftok.tokenize(check_word(arg)), 0)
     elif is_weighted_word(arg):
-       return regex('{' + check_word(arg[0]) + '}::' + str(arg[1]))
+       retval.disjunct(deftok.tokenize(check_word(arg[0])), arg[1])
     elif isinstance(arg, tuple) or isinstance(arg, list):
-       exp = '[0-0]' # empty automaton
        for word in arg:
            if is_weighted_word(word):
-              exp += ' | {' + check_word(word[0]) + '}::' + str(word[1])
+              retval.disjunct(deftok.tokenize(check_word(word[0])), word[1])
            elif isinstance(word, str):
-              exp += ' | {' + check_word(word) + '}'
+              retval.disjunct(deftok.tokenize(check_word(word)), 0)
            else:
               raise RuntimeError('Tuple/list element not a string or tuple of string and weight.')           
-       return regex(exp)
     else:
        raise RuntimeError('Not a string or tuple/list of strings.')
+    return HfstTransducer(retval, _libhfst.get_default_fst_type())
 
 def fst(arg):
     if isinstance(arg, dict):
@@ -1707,25 +2211,33 @@ def fst(arg):
               right = fsa(output)
            else:
               raise RuntimeError('Value not a string or tuple/list of strings.')
-           retval.disjunct(left.cross_product(right))
+           left.cross_product(right)
+           retval.disjunct(left)
        return retval
     return fsa(arg)
 
 def tokenized_fst(arg, weight=0):
-    exp = '[ '
+    retval = HfstBasicTransducer()
+    state = 0 
     if isinstance(arg, list) or isinstance(arg, tuple):
        for token in arg:
            if isinstance(token, str):
-              exp += '"' + token + '" '
+              new_state = retval.add_state()
+              retval.add_transition(state, new_state, token, token, 0)
+              state = new_state
            elif isinstance(token, list) or isinstance(token, tuple):
               if len(token) == 2:
-                 exp += '"' + token[0] + '":"' + token[1] + '" '
+                 new_state = retval.add_state()
+                 retval.add_transition(state, new_state, token[0], token[1], 0)
+                 state = new_state
               elif len(token) == 1:
-                 exp += '"' + token + '" '
+                 new_state = retval.add_state()
+                 retval.add_transition(state, new_state, token, token, 0)
+                 state = new_state
               else:
                  raise RuntimeError('Symbol or symbol pair must be given.')
-       exp += ']'
-       return regex("[" + exp + "]::" + str(weight))
+       retval.set_final_weight(state, weight)
+       return HfstTransducer(retval, _libhfst.get_default_fst_type())
     else:
        raise RuntimeError('Argument must be a list or a tuple')
 
@@ -1735,6 +2247,10 @@ def empty_fst():
 def epsilon_fst(weight=0):
     return regex('[0]::' + str(weight))
 
-
+def concatenate(transducers):
+    retval = empty_fst()
+    for tr in transducers:
+      retval.concatenate(tr)
+    return retval.minimize()
 
 %}
diff --git a/python/setup.py b/python/setup.py
index fd24316..734d9f2 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -26,7 +26,7 @@ libhfst_module = Extension('_libhfst',
 # ["libhfst-NN.dll", "libgcc_s_seh-1.dll"] or
 # ["libhfst-NN.dll", "libgcc_s_dw2-1.dll"] or
 setup(name = 'libhfst_swig',
-      version = '3.9.0_beta',
+      version = '3.10.0_beta',
       author = 'HFST team',
       author_email = 'hfst-bugs at helsinki.fi',
       url = 'http://hfst.sourceforge.net',
diff --git a/python/test/README b/python/test/README
index 38b7ce5..cc5a13e 100644
--- a/python/test/README
+++ b/python/test/README
@@ -4,8 +4,4 @@ still under construction, as are the python bindings.
 
 For the time being, run
 
-  python3 test_hfst.py && python3 examples.py && echo "TESTS PASSED"
-
-If "TESTS PASSED" is the last line that gets printed, it means that 
-the tests have passed.
-
+  ./test.sh
diff --git a/python/test/examples.py b/python/test/examples.py
index 1d7b5d3..4d79bfd 100644
--- a/python/test/examples.py
+++ b/python/test/examples.py
@@ -1,3 +1,7 @@
+import sys
+sys.path.insert(1, '/home/eaxelson/hfst-git/hfst/python/')
+
+
 # The examples given in doxygen documentation
 
 import libhfst
@@ -215,10 +219,15 @@ transducer1.reverse()
 transducer1.disjunct(transducer2)
 if not transducer2.compare(libhfst.regex('FOO:BAR BAZ')):
     raise RuntimeError('')
-transducer1.reverse().determinize().reverse().determinize()
+transducer1.reverse()
+transducer1.determinize()
+transducer1.reverse()
+transducer1.determinize()
 # implementation types
-tropical_transducer = libhfst.regex('foo').convert(libhfst.TROPICAL_OPENFST_TYPE)
-foma_transducer = libhfst.regex('foo').convert(libhfst.FOMA_TYPE)
+tropical_transducer = libhfst.regex('foo')
+tropical_transducer.convert(libhfst.TROPICAL_OPENFST_TYPE)
+foma_transducer = libhfst.regex('foo')
+foma_transducer.convert(libhfst.FOMA_TYPE)
 # TODO: segfaults
 try:
     tropical_transducer.compare(foma_transducer)
@@ -356,7 +365,8 @@ words.disjunct(t)
 rule = libhfst.regex('bar (->) baz || foo _ foo')
 
 # Apply the rule transducer to the lexicon.
-words.compose(rule).minimize()
+words.compose(rule)
+words.minimize()
 
 # Extract all string pairs from the result and print them to standard output.
 results = 0
diff --git a/python/test/foo_att_prolog b/python/test/foo_att_prolog
new file mode 100644
index 0000000..b14256a
--- /dev/null
+++ b/python/test/foo_att_prolog
@@ -0,0 +1,3 @@
+-- in ATT format --
+-- in prolog format --
+network(FOOBAR_TRANSDUCER).
diff --git a/python/test/foo_basic b/python/test/foo_basic
new file mode 100644
index 0000000..10d921b
--- /dev/null
+++ b/python/test/foo_basic
@@ -0,0 +1,4 @@
+0	1	foo	bar	0.500000
+0	0	baz	baz	0.000000
+0	0	baz	BAZ	0.100000
+1	0.300000
diff --git a/python/test/foobar2.hfst b/python/test/foobar2.hfst
new file mode 100644
index 0000000..580b1c4
Binary files /dev/null and b/python/test/foobar2.hfst differ
diff --git a/python/test/foofile b/python/test/foofile
new file mode 100644
index 0000000..e30ec9d
--- /dev/null
+++ b/python/test/foofile
@@ -0,0 +1 @@
+This is an ordinary text file.
diff --git a/python/test/test.py b/python/test/test.py
new file mode 100644
index 0000000..496a6c0
--- /dev/null
+++ b/python/test/test.py
@@ -0,0 +1,6 @@
+import libhfst
+ab = libhfst.regex('a:b::2.8')
+out = libhfst.HfstOutputStream(hfst_format=False)
+out.write(ab)
+out.flush()
+out.close()
diff --git a/python/test/test.sh b/python/test/test.sh
new file mode 100755
index 0000000..86b44de
--- /dev/null
+++ b/python/test/test.sh
@@ -0,0 +1,25 @@
+for file in test_hfst.py examples.py test.py; do
+    if python3 $file > /dev/null 2> /dev/null; then
+        echo $file" passed" 
+    else
+        echo $file" failed" 
+    fi
+done
+
+for n in 2 3 5 7 9; do
+    if python3 test$n.py > /dev/null 2> /dev/null; then
+        echo "test"$n".py passed" 
+    else
+        echo "test"$n".py failed" 
+    fi
+done
+
+#if (cat foobar.hfst foobar2.hfst | python3 test4.py > /dev/null 2> /dev/null); then
+#    echo "test4.py passed" 
+#else
+#    echo "test4.py failed" 
+#fi
+
+echo "skipping test4.py"
+echo "skipping test8.py"
+
diff --git a/python/test/test2.py b/python/test/test2.py
new file mode 100644
index 0000000..d59b0bd
--- /dev/null
+++ b/python/test/test2.py
@@ -0,0 +1,25 @@
+import libhfst
+# Create a HFST basic transducer [a:b] with transition weight 0.3 and final weight 0.5.
+t = libhfst.HfstBasicTransducer()
+t.add_state(1)
+t.add_transition(0, 1, 'a', 'b', 0.3)
+t.set_final_weight(1, 0.5)
+#
+# Convert to tropical OpenFst format (the default) and push weights toward final state.
+T = libhfst.HfstTransducer(t, libhfst.get_default_fst_type())
+T.push_weights(libhfst.TO_FINAL_STATE)
+#
+# Convert back to HFST basic transducer.
+tc = libhfst.HfstBasicTransducer(T)
+try:
+    # Rounding might affect the precision.
+    if (0.79 < tc.get_final_weight(1)) and (tc.get_final_weight(1) < 0.81):
+        print("TEST PASSED")
+        exit(0)
+    else:
+        print("TEST FAILED")
+        exit(1)
+# If the state does not exist or is not final */
+except libhfst.HfstException:
+    print("TEST FAILED: An exception thrown.")
+    exit(1)
diff --git a/python/test/test3.py b/python/test/test3.py
new file mode 100644
index 0000000..8ac950c
--- /dev/null
+++ b/python/test/test3.py
@@ -0,0 +1,6 @@
+import libhfst
+tok = libhfst.HfstTokenizer()
+tok.add_multichar_symbol('foo')
+tok.add_multichar_symbol('bar')
+tr = libhfst.tokenized_fst(tok.tokenize('foobar', 'foobaz'))
+print(tr)
diff --git a/python/test/test4.py b/python/test/test4.py
new file mode 100644
index 0000000..07b681b
--- /dev/null
+++ b/python/test/test4.py
@@ -0,0 +1,7 @@
+import libhfst
+istr = libhfst.HfstInputStream()
+while not istr.is_eof():
+    tr = istr.read()
+    print('Read transducer:')
+    print(tr)
+istr.close()
diff --git a/python/test/test5.py b/python/test/test5.py
new file mode 100644
index 0000000..0316cab
--- /dev/null
+++ b/python/test/test5.py
@@ -0,0 +1,7 @@
+import libhfst
+libhfst.set_default_fst_type(libhfst.FOMA_TYPE)
+ab = libhfst.regex('a:b')
+out = libhfst.HfstOutputStream(hfst_format=False)
+out.write(ab)
+out.flush()
+out.close()
diff --git a/python/test/test7.py b/python/test/test7.py
new file mode 100644
index 0000000..ec626f7
--- /dev/null
+++ b/python/test/test7.py
@@ -0,0 +1,23 @@
+import libhfst
+
+fsm = libhfst.HfstBasicTransducer()
+fsm.add_state(1)
+fsm.set_final_weight(1, 2.0)
+fsm.add_transition(0, 1, "foo", libhfst.EPSILON)
+if not libhfst.HfstTransducer(fsm).compare(libhfst.regex('foo:0::2.0')):
+    raise RuntimeError('')
+    
+fsm = libhfst.HfstBasicTransducer()
+fsm.add_state(1)
+fsm.set_final_weight(1, -0.5)
+fsm.add_transition(0, 1, "foo", libhfst.UNKNOWN)
+fsm.add_transition(0, 1, "foo", "foo")
+if not libhfst.HfstTransducer(fsm).compare(libhfst.regex('foo:?::-0.5')):
+    raise RuntimeError('')
+
+fsm = libhfst.HfstBasicTransducer()
+fsm.add_state(1)
+fsm.set_final_weight(1, 1.5)
+fsm.add_transition(0, 1, libhfst.IDENTITY, libhfst.IDENTITY)
+if not libhfst.HfstTransducer(fsm).compare(libhfst.regex('?::1.5')):
+    raise RuntimeError('')
diff --git a/python/test/test8.py b/python/test/test8.py
new file mode 100644
index 0000000..0678681
--- /dev/null
+++ b/python/test/test8.py
@@ -0,0 +1,12 @@
+import libhfst
+tr = libhfst.read_att_string('0 1 @0@ foo \n\
+1 2 ' + libhfst.UNKNOWN + ' ' + libhfst.UNKNOWN + '\n\
+2')
+print('lookup with output formats tuple, text, raw:')
+print(tr.lookup('b', output='tuple'))
+print(tr.lookup('b', output='text'))
+print(tr.lookup('b', output='raw'))
+
+print(tr.extract_paths(output='dict'))
+print(tr.extract_paths(output='text'))
+print(tr.extract_paths(output='raw'))
diff --git a/python/test/test9.py b/python/test/test9.py
new file mode 100644
index 0000000..daae083
--- /dev/null
+++ b/python/test/test9.py
@@ -0,0 +1,6 @@
+import libhfst
+tr = libhfst.regex('[a::1 a:b::0.3 (b::0)]::0.7;')
+tr.push_weights(libhfst.TO_INITIAL_STATE)
+print(tr)
+tr.push_weights(libhfst.TO_FINAL_STATE)
+print(tr)
diff --git a/python/test/test_hfst.py b/python/test/test_hfst.py
index 8e33f15..7c2c81c 100644
--- a/python/test/test_hfst.py
+++ b/python/test/test_hfst.py
@@ -1,3 +1,6 @@
+import sys
+sys.path.insert(1, '/home/eaxelson/hfst-git/hfst/python/')
+
 import libhfst
 import os.path
 from inspect import currentframe
@@ -82,8 +85,10 @@ for type in (libhfst.TROPICAL_OPENFST_TYPE, libhfst.FOMA_TYPE):
 
     # Read lexc
     tr = libhfst.compile_lexc_file('test.lexc')
-    tr.insert_freely(tr1).minimize()
-    tr.insert_freely(('A','B')).minimize()
+    tr.insert_freely(tr1)
+    tr.minimize()
+    tr.insert_freely(('A','B'))
+    tr.minimize()
 
     # Substitute
     tr = libhfst.regex('a a:b b;')
@@ -214,7 +219,9 @@ for type in (libhfst.TROPICAL_OPENFST_TYPE, libhfst.FOMA_TYPE):
     print(tr.extract_paths(obey_flags='True', filter_flags='False', max_number=3, output='dict'))
 
     def test_fst(input, result):
-        if not libhfst.fst(input).compare(libhfst.regex(result)):
+        tr1_ = libhfst.fst(input)
+        tr2_ = libhfst.regex(result)
+        if not tr1_.compare(tr2_):
             raise RuntimeError('test_fst failed with input: ' + input)
 
     # Create automaton:
@@ -415,8 +422,10 @@ if not (FSM.compare(FSM2)):
     raise RuntimeError(get_linenumber())
 
 for type in (libhfst.TROPICAL_OPENFST_TYPE, libhfst.FOMA_TYPE):
-    Fsm = libhfst.HfstBasicTransducer(FSM.convert(type))
-    Fsm2 = libhfst.HfstBasicTransducer(FSM2.convert(type))
+    FSM.convert(type)
+    Fsm = libhfst.HfstBasicTransducer(FSM)
+    FSM2.convert(type)
+    Fsm2 = libhfst.HfstBasicTransducer(FSM2)
 
 
 # Print basic transducer
diff --git a/python/test/test_streams_1.py b/python/test/test_streams_1.py
new file mode 100644
index 0000000..6a29789
--- /dev/null
+++ b/python/test/test_streams_1.py
@@ -0,0 +1,12 @@
+import libhfst
+
+tr1 = libhfst.regex('föö:bär')
+tr2 = libhfst.regex('0')
+tr3 = libhfst.regex('0-0')
+
+ostr = libhfst.HfstOutputStream()
+ostr.write(tr1)
+ostr.write(tr2)
+ostr.write(tr3)
+ostr.flush()
+ostr.close()
diff --git a/python/test/test_streams_2.py b/python/test/test_streams_2.py
new file mode 100644
index 0000000..61743af
--- /dev/null
+++ b/python/test/test_streams_2.py
@@ -0,0 +1,26 @@
+import libhfst
+
+transducers = []
+istr = libhfst.HfstInputStream()
+while not istr.is_eof():
+    transducers.append(istr.read())
+istr.close()
+
+if not len(transducers) == 3:
+    raise RuntimeError('Wrong number of transducers read.')
+
+i = 0
+for re in ['föö:bär','0','0-0']:
+    if not transducers[i].compare(libhfst.regex(re)):
+        raise RuntimeError('Transducers are not equivalent.')
+    i += 1
+
+if len(transducers) > 0:
+    f = libhfst.hfst_stdout()
+    i=0
+    transducers[i].write_att(f)
+    i += 1
+    while i < len(transducers):
+        f.write('--\n')
+        transducers[i].write_att(f)
+        i += 1
diff --git a/python/test/test_streams_3.py b/python/test/test_streams_3.py
new file mode 100644
index 0000000..ccd6221
--- /dev/null
+++ b/python/test/test_streams_3.py
@@ -0,0 +1,5 @@
+import libhfst
+
+f = libhfst.hfst_stdin()
+while not f.is_eof():
+    print(libhfst.read_att(f))
diff --git a/check_installation/morphology_tests/english-generate.input b/python/test/testfile
similarity index 100%
rename from check_installation/morphology_tests/english-generate.input
rename to python/test/testfile
diff --git a/python/test/testfile1.att b/python/test/testfile1.att
new file mode 100644
index 0000000..1b7e9f8
--- /dev/null
+++ b/python/test/testfile1.att
@@ -0,0 +1,3 @@
+0 1 a b
+1 2 c
+2
diff --git a/python/test/testfile1.hfst b/python/test/testfile1.hfst
new file mode 100644
index 0000000..e63db94
Binary files /dev/null and b/python/test/testfile1.hfst differ
diff --git a/python/test/testfile2.att b/python/test/testfile2.att
new file mode 100644
index 0000000..27b7ff6
--- /dev/null
+++ b/python/test/testfile2.att
@@ -0,0 +1,8 @@
+0 1 foo bar 0.3
+1 0.5
+--
+0 0.0
+--
+--
+0 0.0
+0 0 a <eps> 0.2
diff --git a/python/test/testfile3.att b/python/test/testfile3.att
new file mode 100644
index 0000000..4c7facd
--- /dev/null
+++ b/python/test/testfile3.att
@@ -0,0 +1,11 @@
+0	1	foo	bar	0.299805
+1	2	baz	@0@	0.000000
+2	3	@_SPACE_@	@_SPACE_@	0.000000
+3	0.000000
+--
+--
+0	0.500000
+--
+0	1	foo	foo	0.000000
+1	0.000000
+--
diff --git a/scripts/copy-for-windows.sh b/scripts/copy-for-windows.sh
index d6a13c8..fff261c 100755
--- a/scripts/copy-for-windows.sh
+++ b/scripts/copy-for-windows.sh
@@ -71,20 +71,21 @@ mkdir $1/libhfst/src/parsers
 for file in \
 FormatSpecifiers.h HarmonizeUnknownAndIdentitySymbols.h \
 HfstDataTypes.h HfstEpsilonHandler.h HfstExceptionDefs.h \
-HfstExceptions.h HfstExtractStrings.h HfstFlagDiacritics.h \
+HfstExtractStrings.h HfstFlagDiacritics.h \
 HfstInputStream.h HfstLookupFlagDiacritics.h HfstOutputStream.h \
 HfstSymbolDefs.h HfstTokenizer.h HfstTransducer.h HfstXeroxRules.h \
 HfstStrings2FstTokenizer.h hfst.h hfst.hpp.in hfst_apply_schemas.h hfstdll.h \
-HfstPrintDot.h HfstPrintPCKimmo.h;
+hfst-string-conversions.h HfstPrintDot.h HfstPrintPCKimmo.h;
 do
     cp libhfst/src/$file $1/libhfst/src/
 done
 
 for file in \
 HarmonizeUnknownAndIdentitySymbols HfstApply HfstDataTypes \
-HfstEpsilonHandler HfstExceptionDefs HfstExceptions HfstFlagDiacritics \
+HfstEpsilonHandler HfstExceptionDefs HfstFlagDiacritics \
 HfstInputStream HfstLookupFlagDiacritics HfstOutputStream HfstRules \
 HfstSymbolDefs HfstTokenizer HfstTransducer HfstXeroxRules \
+hfst-string-conversions \
 HfstStrings2FstTokenizer HfstXeroxRulesTest HfstPrintDot HfstPrintPCKimmo;
 do
     cp libhfst/src/$file.cc $1/libhfst/src/$file.cpp
@@ -92,7 +93,7 @@ done
 
 # libhfst/src/implementations without subdirectories
 for file in \
-ConvertTransducerFormat.h FomaTransducer.h HfstFastTransitionData.h \
+ConvertTransducerFormat.h FomaTransducer.h \
 HfstOlTransducer.h HfstTransition.h HfstTransitionGraph.h \
 HfstTropicalTransducerTransitionData.h LogWeightTransducer.h \
 TropicalWeightTransducer.h;
@@ -164,19 +165,19 @@ sed -i 's/#include <unistd.h>/#include <io.h>/' $1/libhfst/src/parsers/xfst-lexe
 sed -i 's/hxfstwrap( )/hxfstwrap(void)/' $1/libhfst/src/parsers/xfst-lexer.cpp
 
 
-cp scripts/make-python-bindings.bat $1/libhfst/src/
+cp scripts/windows/make-python-bindings.bat $1/libhfst/src/
 cp python/test/test_hfst.py $1/libhfst/src/
 cp python/test/examples.py $1/libhfst/src/
 cp python/test/foobar.hfst $1/libhfst/src/
 cp python/libhfst.i $1/libhfst/src/
-cp scripts/make-hfst-xfst.bat $1/libhfst/src/
-cp scripts/make-hfst-proc.bat $1/libhfst/src/
-cp scripts/make-hfst-lexc.bat $1/libhfst/src/
-cp scripts/make-hfst-tool.bat $1/libhfst/src/
-cp scripts/make-hfst-tools.bat $1/libhfst/src/
-cp scripts/make-htwolcpre1.bat $1/libhfst/src/
-cp scripts/make-htwolcpre2.bat $1/libhfst/src/
-cp scripts/make-htwolcpre3.bat $1/libhfst/src/
+cp scripts/windows/make-hfst-xfst.bat $1/libhfst/src/
+cp scripts/windows/make-hfst-proc.bat $1/libhfst/src/
+cp scripts/windows/make-hfst-lexc.bat $1/libhfst/src/
+cp scripts/windows/make-hfst-tool.bat $1/libhfst/src/
+cp scripts/windows/make-hfst-tools.bat $1/libhfst/src/
+cp scripts/windows/make-htwolcpre1.bat $1/libhfst/src/
+cp scripts/windows/make-htwolcpre2.bat $1/libhfst/src/
+cp scripts/windows/make-htwolcpre3.bat $1/libhfst/src/
 
 for file in test.lexc test.pmatch test.twolc test.xfst \
 test_xfst_result.txt test_twolc_result.txt test_pmatch_result.txt test_lexc_result.txt;
@@ -184,13 +185,13 @@ do
     cp scripts/windows_tests/$file $1/libhfst/src/
 done
 
-cp scripts/test-hfst-tools.bat $1/libhfst/src/
-cp scripts/README_xfst_win.txt $1/libhfst/src/
-cp scripts/README_eight_tools_win.txt $1/libhfst/src/
+cp scripts/windows/test-hfst-tools.bat $1/libhfst/src/
+cp scripts/readmes/README_xfst_win.txt $1/libhfst/src/
+cp scripts/readmes/README_eight_tools_win.txt $1/libhfst/src/
 
 # copy missing headers and change some headers included
-cp scripts/stdint.h $1/back-ends/foma/
-cp scripts/inttypes.h $1/back-ends/foma/
+cp scripts/windows/stdint.h $1/back-ends/foma/
+cp scripts/windows/inttypes.h $1/back-ends/foma/
 # unistd.h is included in some generated files
 for file in \
 $1/libhfst/src/parsers/pmatch_lex.cpp \
@@ -234,9 +235,9 @@ done
 # compare, strings2fst and txt2fst are needed for testing hfst-xfst
 for file in \
 hfst-program-options hfst-commandline hfst-tool-metadata \
-hfst-file-to-mem hfst-string-conversions hfst-getopt \
+hfst-file-to-mem hfst-getopt \
 hfst-lexc-compiler hfst-compare hfst-strings2fst hfst-txt2fst hfst-pmatch hfst-pmatch2fst \
-hfst-lookup hfst-optimized-lookup;
+hfst-lookup hfst-optimized-lookup hfst-flookup;
 do
     cp tools/src/$file.cc $1/tools/src/$file.cpp
 done
@@ -257,7 +258,6 @@ done
 
 for file in \
 hfst-commandline.h hfst-program-options.h hfst-tool-metadata.h \
-hfst-string-conversions.h \
 hfst-file-to-mem.h hfst-getopt.h hfst-optimized-lookup.h;
 do
     cp tools/src/$file $1/tools/src/
diff --git a/scripts/libhfst_win.i b/scripts/libhfst_win.i
deleted file mode 100644
index ab3d6fb..0000000
--- a/scripts/libhfst_win.i
+++ /dev/null
@@ -1,222 +0,0 @@
-%module libhfst
-%include "std_string.i"
-%include "std_vector.i"
-%include "std_pair.i"
-%include "std_set.i"
-
-%{
-#define HFSTIMPORT
-#include "HfstDataTypes.h"
-#include "HfstTransducer.h"
-#include "parsers/XreCompiler.h"
-#include "implementations/HfstTransitionGraph.h"
-
-// todo instead: #include "hfst_extensions.h"
-
-namespace hfst {
-
-typedef std::vector<float> FloatVector;
-
-hfst::ImplementationType type = hfst::TROPICAL_OPENFST_TYPE;
-
-hfst::HfstTokenizer deftok; // default tokenizer
-
-void set_default_fst_type(hfst::ImplementationType t)
-{
-	type = t;
-}
-
-hfst::ImplementationType get_default_fst_type()
-{
-	return type;
-}
-
-std::string fst_type_to_string(hfst::ImplementationType t)
-{
-	std::string retval = hfst::implementation_type_to_string(t);
-	return retval;
-}
-	
-hfst::HfstTransducer fst(const std::string & symbol)
-{
-	return hfst::HfstTransducer(symbol, type);
-}
-
-hfst::HfstTransducer fst(const std::string & isymbol, const std::string & osymbol)
-{
-	return hfst::HfstTransducer(isymbol, osymbol, type);
-}
-
-hfst::HfstTransducer * regex(const std::string & regex_string)
-{
-	hfst::xre::XreCompiler comp(type);
-	return comp.compile(regex_string);
-}
-
-hfst::HfstTransducer word(const std::string & w, float weight=0)
-{
-	return hfst::HfstTransducer(w, deftok, type);
-}
-
-hfst::HfstTransducer word_pair(const std::string & wi, const std::string & wo, float weight=0)
-{
-	return hfst::HfstTransducer(wi, wo, deftok, type);
-}
-
-hfst::HfstTransducer word_list_hfst(const StringVector & wl, const FloatVector & weights)
-{
-	hfst::implementations::HfstBasicTransducer retval;
-	unsigned int i=0;
-	for (std::vector<std::string>::const_iterator it = wl.begin();
-		it != wl.end(); it++)
-		{
-			retval.disjunct(deftok.tokenize(*it), weights[i]);
-			i++;
-		}
-	return hfst::HfstTransducer(retval, type);
-}
-
-hfst::HfstTransducer word_pair_list_hfst(const StringPairVector & wpl, const FloatVector & weights)
-{
-	hfst::implementations::HfstBasicTransducer retval;
-	unsigned int i=0;
-	for (std::vector<std::pair<std::string, std::string> >::const_iterator it = wpl.begin();
-		it != wpl.end(); it++)
-		{
-			retval.disjunct(deftok.tokenize(it->first, it->second), weights[i]);
-			i++;
-		}
-	return hfst::HfstTransducer(retval, type);
-}
-
-}
-
-%}
-
-%include <windows.h>
-
-%include "typemaps.i"
-
-namespace std {
-%template(StringVector) vector<string>;
-%template(StringPair) pair<string, string>;
-%template(StringPairVector) vector<pair<string, string > >;
-%template(FloatVector) vector<float>;
-%template(StringSet) set<string>;
-//%template(HfstOneLevelPath) pair<float, vector<string> >;
-//%template(HfstOneLevelPaths) set<pair<float, vector<string> > >;
-}
-
-%ignore hfst::HfstTransducer::lookup_fd(const std::string & s) const;
-
-namespace hfst
-{
-
-typedef std::vector<std::string> StringVector;
-typedef std::pair<std::string, std::string> StringPair;
-typedef std::vector<std::pair<std::string, std::string> > StringPairVector;
-typedef std::vector<float> FloatVector;
-typedef std::set<std::string> StringSet;
-typedef std::pair<float, std::vector<std::string> > HfstOneLevelPath;
-typedef std::set<std::pair<float, std::vector<std::string> > > HfstOneLevelPaths;
-
-enum ImplementationType
-{
-    SFST_TYPE,
-    TROPICAL_OPENFST_TYPE,
-    LOG_OPENFST_TYPE,
-    FOMA_TYPE,
-    XFSM_TYPE,
-    HFST_OL_TYPE,
-    HFST_OLW_TYPE,
-    HFST2_TYPE,
-    UNSPECIFIED_TYPE,
-    ERROR_TYPE
-};
-
-%typemap(out) HfstOneLevelPaths* {
-	$result = PyList_New((*$1).size());
-	unsigned int i = 0;
-	for (hfst::HfstOneLevelPaths::const_iterator it = (*$1).begin(); it != (*$1).end(); it++)
-	{
-		std::string result_string("");
-		for (hfst::StringVector::const_iterator svit = it->second.begin(); svit != it->second.end(); svit++)
-		{
-			result_string += *svit;
-		}
-		PyObject * res = PyTuple_New(2);
-		PyTuple_SetItem(res, 0, PyString_FromString(result_string.c_str()));
-		PyTuple_SetItem(res, 1, PyFloat_FromDouble(it->first));
-		PyList_SetItem($result, i, res);
-		i++;
-	}
-}
-
-class HfstTransducer 
-{
-public:	
-HfstTransducer(ImplementationType);
-HfstTransducer(const std::string &, const std::string &, ImplementationType);
-~HfstTransducer();
-HfstTransducer & concatenate(const HfstTransducer&, bool harmonize=true);
-void write_in_att_format(const std::string &, bool write_weights=true) const;
-
-HfstOneLevelPaths * lookup_fd(const std::string & s, int limit=-1) const;
-
-    %extend {
-    char *__str__() {
-         static char tmp[1024];
-         $self->write_in_att_format(tmp);
-         return tmp;
-    }
-    };
-
-
-};
-
-hfst::HfstTransducer fst(const std::string & symbol);
-hfst::HfstTransducer fst(const std::string & isymbol, const std::string & osymbol);
-hfst::HfstTransducer * regex(const std::string & regex_string);
-hfst::HfstTransducer word(const std::string & w, float weight=0);
-//hfst::HfstTransducer word(const std::string & w, const hfst::HfstTokenizer & tok);
-hfst::HfstTransducer word_pair(const std::string & wi, const std::string & wo, float weight=0);
-//hfst::HfstTransducer word_pair(const std::string & wi, const std::string & wo, const hfst::HfstTokenizer & tok);
-hfst::HfstTransducer word_list_hfst(const StringVector & wl, const FloatVector & weights);
-hfst::HfstTransducer word_pair_list_hfst(const StringPairVector & wpl, const FloatVector & weights);
-
-
-%pythoncode %{
-
-EPSILON='@_EPSILON_SYMBOL_@'
-UNKNOWN='@_UNKNOWN_SYMBOL_@'
-IDENTITY='@_IDENTITY_SYMBOL_@'
-
-def word_list(l):
-	v = StringVector()
-	f = FloatVector()
-	for word in l:
-		v.push_back(word[0])
-		if (len(word) > 1):
-			f.push_back(word[1])
-		else:
-			f.push_back(0)
-	return _libhfst.word_list_hfst(v,f)
-		
-def word_pair_list(l):
-	v = StringPairVector()
-	f = FloatVector()
-	for word in l:
-		v.push_back(StringPair(word[0],word[1]))
-		if (len(word) > 2):
-			f.push_back(word[2])
-		else:
-			f.push_back(0)	
-	return _libhfst.word_pair_list_hfst(v,f)
-
-%}
-
-void set_default_fst_type(hfst::ImplementationType t);
-hfst::ImplementationType get_default_fst_type();
-std::string fst_type_to_string(hfst::ImplementationType t);
-
-}
diff --git a/scripts/make-hfst-tools.bat b/scripts/make-hfst-tools.bat
deleted file mode 100644
index 44d6870..0000000
--- a/scripts/make-hfst-tools.bat
+++ /dev/null
@@ -1 +0,0 @@
-make-hfst-xfst.bat && make-hfst-lexc.bat && make-htwolcpre1.bat && make-htwolcpre2.bat && make-htwolcpre3.bat && make-hfst-proc.bat && make-hfst-tool.bat hfst-optimized-lookup && make-hfst-tool.bat hfst-lookup && make-hfst-tool.bat hfst-pmatch && make-hfst-tool.bat hfst-pmatch2fst && make-hfst-tool.bat hfst-compare && make-hfst-tool.bat hfst-strings2fst && make-hfst-tool.bat hfst-txt2fst
diff --git a/scripts/package-static-binaries.sh b/scripts/package-static-binaries.sh
deleted file mode 100755
index eea4624..0000000
--- a/scripts/package-static-binaries.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-if [ "$1" = "-h" ]; then
-    echo "Usage: $0 DIRNAME";
-    exit 0;
-fi
-
-if [ "$1" = "" ]; then
-    echo "Usage: $0 DIRNAME";
-    exit 1;
-fi
-
-if [ -d "$1" ]; then
-    echo "directory $1 exists"
-    exit 1;
-else
-    mkdir $1;
-fi
-
-# package all eight statically compiled tools
-cp tools/src/parsers/.libs/hfst-xfst $1/
-cp tools/src/.libs/hfst-lexc $1/
-cp tools/src/.libs/hfst-lookup $1/
-cp tools/src/.libs/hfst-optimized-lookup $1/
-cp tools/src/.libs/hfst-pmatch $1/
-cp tools/src/.libs/hfst-pmatch2fst $1/
-cp tools/src/hfst-proc/.libs/hfst-apertium-proc $1/hfst-proc
-cp tools/src/hfst-twolc/src/.libs/htwolcpre1 $1/
-cp tools/src/hfst-twolc/src/.libs/htwolcpre2 $1/
-cp tools/src/hfst-twolc/src/.libs/htwolcpre3 $1/
-cp scripts/hfst-twolc $1/hfst-twolc
diff --git a/scripts/README_eight_tools_mac.txt b/scripts/readmes/README_eight_tools_mac.txt
similarity index 100%
rename from scripts/README_eight_tools_mac.txt
rename to scripts/readmes/README_eight_tools_mac.txt
diff --git a/scripts/README_eight_tools_win.txt b/scripts/readmes/README_eight_tools_win.txt
similarity index 100%
rename from scripts/README_eight_tools_win.txt
rename to scripts/readmes/README_eight_tools_win.txt
diff --git a/scripts/README_xfst_mac.txt b/scripts/readmes/README_xfst_mac.txt
similarity index 100%
rename from scripts/README_xfst_mac.txt
rename to scripts/readmes/README_xfst_mac.txt
diff --git a/scripts/README_xfst_win.txt b/scripts/readmes/README_xfst_win.txt
similarity index 100%
rename from scripts/README_xfst_win.txt
rename to scripts/readmes/README_xfst_win.txt
diff --git a/scripts/generate-python-bindings.bat b/scripts/windows/generate-python-bindings.bat
similarity index 100%
rename from scripts/generate-python-bindings.bat
rename to scripts/windows/generate-python-bindings.bat
diff --git a/scripts/inttypes.h b/scripts/windows/inttypes.h
similarity index 100%
rename from scripts/inttypes.h
rename to scripts/windows/inttypes.h
diff --git a/scripts/make-foma.bat b/scripts/windows/make-foma.bat
similarity index 100%
rename from scripts/make-foma.bat
rename to scripts/windows/make-foma.bat
diff --git a/scripts/make-hfst-lexc.bat b/scripts/windows/make-hfst-lexc.bat
similarity index 98%
rename from scripts/make-hfst-lexc.bat
rename to scripts/windows/make-hfst-lexc.bat
index 5a379ce..d77baa0 100644
--- a/scripts/make-hfst-lexc.bat
+++ b/scripts/windows/make-hfst-lexc.bat
@@ -23,7 +23,6 @@ cl /EHsc /Zc:wchar_t /Fehfst-lexc.exe ^
 ..\..\tools\src\hfst-commandline.cpp ^
 ..\..\tools\src\hfst-file-to-mem.cpp ^
 ..\..\tools\src\hfst-program-options.cpp ^
-..\..\tools\src\hfst-string-conversions.cpp ^
 ..\..\tools\src\hfst-tool-metadata.cpp ^
 ..\..\tools\src\hfst-getopt.cpp ^
 ..\..\tools\src\hfst-lexc-compiler.cpp ^
@@ -44,6 +43,7 @@ HfstEpsilonHandler.cpp ^
 HfstStrings2FstTokenizer.cpp ^
 HfstPrintDot.cpp ^
 HfstPrintPCKimmo.cpp ^
+hfst-string-conversions.cpp ^
 implementations\HfstTransitionGraph.cpp ^
 implementations\ConvertTransducerFormat.cpp ^
 implementations\HfstTropicalTransducerTransitionData.cpp ^
diff --git a/scripts/make-hfst-proc.bat b/scripts/windows/make-hfst-proc.bat
similarity index 98%
rename from scripts/make-hfst-proc.bat
rename to scripts/windows/make-hfst-proc.bat
index 65a40c2..1b3afff 100644
--- a/scripts/make-hfst-proc.bat
+++ b/scripts/windows/make-hfst-proc.bat
@@ -26,7 +26,6 @@ cl /EHsc /Zc:wchar_t /Fehfst-proc.exe ^
 ..\..\tools\src\hfst-commandline.cpp ^
 ..\..\tools\src\hfst-file-to-mem.cpp ^
 ..\..\tools\src\hfst-program-options.cpp ^
-..\..\tools\src\hfst-string-conversions.cpp ^
 ..\..\tools\src\hfst-tool-metadata.cpp ^
 ..\..\tools\src\hfst-getopt.cpp ^
 ..\..\tools\src\hfst-proc\hfst-proc.cpp ^
@@ -54,6 +53,7 @@ HfstEpsilonHandler.cpp ^
 HfstStrings2FstTokenizer.cpp ^
 HfstPrintDot.cpp ^
 HfstPrintPCKimmo.cpp ^
+hfst-string-conversions.cpp ^
 implementations\HfstTransitionGraph.cpp ^
 implementations\ConvertTransducerFormat.cpp ^
 implementations\HfstTropicalTransducerTransitionData.cpp ^
diff --git a/scripts/make-hfst-tool.bat b/scripts/windows/make-hfst-tool.bat
similarity index 98%
rename from scripts/make-hfst-tool.bat
rename to scripts/windows/make-hfst-tool.bat
index 2d8e604..ba62127 100644
--- a/scripts/make-hfst-tool.bat
+++ b/scripts/windows/make-hfst-tool.bat
@@ -23,7 +23,6 @@ cl /EHsc /Zc:wchar_t /Fe%1.exe ^
 ..\..\tools\src\hfst-commandline.cpp ^
 ..\..\tools\src\hfst-file-to-mem.cpp ^
 ..\..\tools\src\hfst-program-options.cpp ^
-..\..\tools\src\hfst-string-conversions.cpp ^
 ..\..\tools\src\hfst-tool-metadata.cpp ^
 ..\..\tools\src\hfst-getopt.cpp ^
 ..\..\tools\src\%1.cpp ^
@@ -44,6 +43,7 @@ HfstEpsilonHandler.cpp ^
 HfstStrings2FstTokenizer.cpp ^
 HfstPrintDot.cpp ^
 HfstPrintPCKimmo.cpp ^
+hfst-string-conversions.cpp ^
 implementations\HfstTransitionGraph.cpp ^
 implementations\ConvertTransducerFormat.cpp ^
 implementations\HfstTropicalTransducerTransitionData.cpp ^
diff --git a/scripts/windows/make-hfst-tools.bat b/scripts/windows/make-hfst-tools.bat
new file mode 100644
index 0000000..8c21133
--- /dev/null
+++ b/scripts/windows/make-hfst-tools.bat
@@ -0,0 +1 @@
+make-hfst-xfst.bat && make-hfst-lexc.bat && make-htwolcpre1.bat && make-htwolcpre2.bat && make-htwolcpre3.bat && make-hfst-proc.bat && make-hfst-tool.bat hfst-optimized-lookup && make-hfst-tool.bat hfst-lookup && make-hfst-tool.bat hfst-flookup && make-hfst-tool.bat hfst-pmatch && make-hfst-tool.bat hfst-pmatch2fst && make-hfst-tool.bat hfst-compare && make-hfst-tool.bat hfst-strings2fst && make-hfst-tool.bat hfst-txt2fst
diff --git a/scripts/make-hfst-xfst.bat b/scripts/windows/make-hfst-xfst.bat
similarity index 98%
rename from scripts/make-hfst-xfst.bat
rename to scripts/windows/make-hfst-xfst.bat
index ec8af58..4603681 100644
--- a/scripts/make-hfst-xfst.bat
+++ b/scripts/windows/make-hfst-xfst.bat
@@ -23,7 +23,6 @@ cl /EHsc /Zc:wchar_t /Fehfst-xfst.exe ^
 ..\..\tools\src\hfst-commandline.cpp ^
 ..\..\tools\src\hfst-file-to-mem.cpp ^
 ..\..\tools\src\hfst-program-options.cpp ^
-..\..\tools\src\hfst-string-conversions.cpp ^
 ..\..\tools\src\hfst-tool-metadata.cpp ^
 ..\..\tools\src\hfst-getopt.cpp ^
 ..\..\tools\src\parsers\hfst-xfst.cpp ^
@@ -44,6 +43,7 @@ HfstEpsilonHandler.cpp ^
 HfstStrings2FstTokenizer.cpp ^
 HfstPrintDot.cpp ^
 HfstPrintPCKimmo.cpp ^
+hfst-string-conversions.cpp ^
 implementations\HfstTransitionGraph.cpp ^
 implementations\ConvertTransducerFormat.cpp ^
 implementations\HfstTropicalTransducerTransitionData.cpp ^
diff --git a/scripts/make-htwolcpre1.bat b/scripts/windows/make-htwolcpre1.bat
similarity index 98%
rename from scripts/make-htwolcpre1.bat
rename to scripts/windows/make-htwolcpre1.bat
index 1309ee7..6677960 100644
--- a/scripts/make-htwolcpre1.bat
+++ b/scripts/windows/make-htwolcpre1.bat
@@ -23,7 +23,6 @@ cl /EHsc /Zc:wchar_t /Fehtwolcpre1.exe ^
 /I..\..\tools\src\hfst-twolc\src /I..\..\tools\src\hfst-twolc\src\commandline_src /I..\..\tools\src\hfst-twolc\src\io_src ^
 /I..\..\tools\src\hfst-twolc\src\variable_src /I..\..\tools\src\hfst-twolc\src\string_src ^
 ..\..\tools\src\hfst-program-options.cpp ^
-..\..\tools\src\hfst-string-conversions.cpp ^
 ..\..\tools\src\hfst-tool-metadata.cpp ^
 ..\..\tools\src\hfst-getopt.cpp ^
 ..\..\tools\src\hfst-twolc\src\htwolcpre1.cpp ^
@@ -52,6 +51,7 @@ HfstEpsilonHandler.cpp ^
 HfstStrings2FstTokenizer.cpp ^
 HfstPrintDot.cpp ^
 HfstPrintPCKimmo.cpp ^
+hfst-string-conversions.cpp ^
 implementations\HfstTransitionGraph.cpp ^
 implementations\ConvertTransducerFormat.cpp ^
 implementations\HfstTropicalTransducerTransitionData.cpp ^
diff --git a/scripts/make-htwolcpre2.bat b/scripts/windows/make-htwolcpre2.bat
similarity index 98%
rename from scripts/make-htwolcpre2.bat
rename to scripts/windows/make-htwolcpre2.bat
index c6165b7..0cc0a55 100644
--- a/scripts/make-htwolcpre2.bat
+++ b/scripts/windows/make-htwolcpre2.bat
@@ -22,7 +22,6 @@ cl /EHsc /Zc:wchar_t /Fehtwolcpre2.exe ^
 /I..\..\back-ends /I..\..\back-ends\openfstwin\src\include /I..\..\tools\src ^
 /I..\..\tools\src\hfst-twolc\src /I..\..\tools\src\hfst-twolc\src\commandline_src /I..\..\tools\src\hfst-twolc\src\io_src ^
 ..\..\tools\src\hfst-program-options.cpp ^
-..\..\tools\src\hfst-string-conversions.cpp ^
 ..\..\tools\src\hfst-tool-metadata.cpp ^
 ..\..\tools\src\hfst-getopt.cpp ^
 ..\..\tools\src\hfst-twolc\src\htwolcpre2.cpp ^
@@ -46,6 +45,7 @@ HfstEpsilonHandler.cpp ^
 HfstStrings2FstTokenizer.cpp ^
 HfstPrintDot.cpp ^
 HfstPrintPCKimmo.cpp ^
+hfst-string-conversions.cpp ^
 implementations\HfstTransitionGraph.cpp ^
 implementations\ConvertTransducerFormat.cpp ^
 implementations\HfstTropicalTransducerTransitionData.cpp ^
diff --git a/scripts/make-htwolcpre3.bat b/scripts/windows/make-htwolcpre3.bat
similarity index 99%
rename from scripts/make-htwolcpre3.bat
rename to scripts/windows/make-htwolcpre3.bat
index 4843d93..c43f4e7 100644
--- a/scripts/make-htwolcpre3.bat
+++ b/scripts/windows/make-htwolcpre3.bat
@@ -23,7 +23,6 @@ cl /EHsc /Zc:wchar_t /Fehtwolcpre3.exe ^
 /I..\..\tools\src\hfst-twolc\src /I..\..\tools\src\hfst-twolc\src\commandline_src /I..\..\tools\src\hfst-twolc\src\io_src ^
 /I..\..\tools\src\hfst-twolc\src\alphabet_src /I..\..\tools\src\hfst-twolc\src\rule_src /I..\..\tools\src\hfst-twolc\src\string_src ^
 ..\..\tools\src\hfst-program-options.cpp ^
-..\..\tools\src\hfst-string-conversions.cpp ^
 ..\..\tools\src\hfst-tool-metadata.cpp ^
 ..\..\tools\src\hfst-getopt.cpp ^
 ..\..\tools\src\hfst-twolc\src\htwolcpre3.cpp ^
@@ -60,6 +59,7 @@ HfstEpsilonHandler.cpp ^
 HfstStrings2FstTokenizer.cpp ^
 HfstPrintDot.cpp ^
 HfstPrintPCKimmo.cpp ^
+hfst-string-conversions.cpp ^
 implementations\HfstTransitionGraph.cpp ^
 implementations\ConvertTransducerFormat.cpp ^
 implementations\HfstTropicalTransducerTransitionData.cpp ^
diff --git a/scripts/make-implementations.bat b/scripts/windows/make-implementations.bat
similarity index 100%
rename from scripts/make-implementations.bat
rename to scripts/windows/make-implementations.bat
diff --git a/scripts/make-libhfst.bat b/scripts/windows/make-libhfst.bat
similarity index 100%
rename from scripts/make-libhfst.bat
rename to scripts/windows/make-libhfst.bat
diff --git a/scripts/make-openfstwin.bat b/scripts/windows/make-openfstwin.bat
similarity index 100%
rename from scripts/make-openfstwin.bat
rename to scripts/windows/make-openfstwin.bat
diff --git a/scripts/make-parsers.bat b/scripts/windows/make-parsers.bat
similarity index 100%
rename from scripts/make-parsers.bat
rename to scripts/windows/make-parsers.bat
diff --git a/scripts/make-python-bindings.bat b/scripts/windows/make-python-bindings.bat
similarity index 98%
rename from scripts/make-python-bindings.bat
rename to scripts/windows/make-python-bindings.bat
index e119b1d..6154fa9 100644
--- a/scripts/make-python-bindings.bat
+++ b/scripts/windows/make-python-bindings.bat
@@ -50,6 +50,7 @@ HfstEpsilonHandler.cpp ^
 HfstStrings2FstTokenizer.cpp ^
 HfstPrintDot.cpp ^
 HfstPrintPCKimmo.cpp ^
+hfst-string-conversions.cpp ^
 implementations\HfstTransitionGraph.cpp ^
 implementations\ConvertTransducerFormat.cpp ^
 implementations\HfstTropicalTransducerTransitionData.cpp ^
@@ -88,7 +89,6 @@ parsers\pmatch_utils.cpp ^
 parsers\xre_utils.cpp ^
 parsers\xfst-utils.cpp ^
 parsers\xfst_help_message.cpp ^
-..\..\tools\src\hfst-string-conversions.cpp ^
 ..\..\back-ends\openfstwin\src\lib\compat.cpp ^
 ..\..\back-ends\openfstwin\src\lib\flags.cpp ^
 ..\..\back-ends\openfstwin\src\lib\fst.cpp ^
diff --git a/scripts/multiple_targets.sh b/scripts/windows/multiple_targets.sh
similarity index 100%
rename from scripts/multiple_targets.sh
rename to scripts/windows/multiple_targets.sh
diff --git a/scripts/stdint.h b/scripts/windows/stdint.h
similarity index 100%
rename from scripts/stdint.h
rename to scripts/windows/stdint.h
diff --git a/scripts/test-hfst-tools.bat b/scripts/windows/test-hfst-tools.bat
similarity index 100%
rename from scripts/test-hfst-tools.bat
rename to scripts/windows/test-hfst-tools.bat
diff --git a/scripts/test_libhfst_win.py b/scripts/windows/test_libhfst_win.py
similarity index 100%
rename from scripts/test_libhfst_win.py
rename to scripts/windows/test_libhfst_win.py
diff --git a/test/tools/Makefile.am b/test/tools/Makefile.am
index bf362fb..89f8a2c 100644
--- a/test/tools/Makefile.am
+++ b/test/tools/Makefile.am
@@ -68,6 +68,9 @@ endif
 if WANT_LOOKUP
 TESTS += lookup-functionality.sh
 endif
+if WANT_FLOOKUP
+TESTS += flookup-functionality.sh
+endif
 if WANT_OPTIMIZED_LOOKUP
 TESTS += optimized-lookup-functionality.sh
 endif
diff --git a/test/tools/flookup-functionality.sh b/test/tools/flookup-functionality.sh
new file mode 100755
index 0000000..639d4aa
--- /dev/null
+++ b/test/tools/flookup-functionality.sh
@@ -0,0 +1,122 @@
+#!/bin/sh
+TOOLDIR=../../tools/src
+if ! $TOOLDIR/hfst-flookup -R -s cat.hfst < $srcdir/cat.strings > test.lookups ; then
+    exit 1
+fi
+
+$TOOLDIR/hfst-format -l > TMP;
+
+# test what strings the transducer [a:b (ID:ID)*] recognizes
+for i in "" .sfst .ofst .foma; do
+if ((test -z "$i") || $TOOLDIR/hfst-format --list-formats | grep $i > /dev/null); then
+    if test -f abid$i ; then
+
+	if ! echo "aa" | $TOOLDIR/hfst-flookup -R -s abid$i \
+	    > test.lookups; 
+	then
+	    exit 1
+	fi
+	if ! grep -q "inf" test.lookups; then
+	    echo "FAIL: string 'aa' should not be recognized"
+	    exit 1
+	fi
+	
+	if ! echo "ab" | $TOOLDIR/hfst-flookup -R -s abid$i \
+	    > test.lookups; 
+	then
+	    exit 1
+	fi
+	if ! grep -q "inf" test.lookups; then
+	    echo "FAIL: string 'ab' should not be recognized"
+	    exit 1
+	fi
+	
+	if ! echo "ac" | $TOOLDIR/hfst-flookup -R -s abid$i \
+	    > test.lookups; 
+	then
+	    exit 1
+	fi
+	if grep -q "inf" test.lookups; then
+	    echo "FAIL: string 'ac' should be recognized"
+	    exit 1
+	fi
+
+        if ! echo "aa" | $TOOLDIR/hfst-flookup -s abid$i \
+            > test.lookups;
+        then
+            exit 1
+        fi
+        if ! grep -q "inf" test.lookups; then
+	    echo "FAIL: string 'aa' should not be recognized"
+	    exit 1
+        fi
+        
+        if ! echo "bc" | $TOOLDIR/hfst-flookup -s abid$i \
+	    > test.lookups; 
+        then
+	    exit 1
+        fi
+        if grep -q "inf" test.lookups; then
+	    echo "FAIL: string 'bc' should be recognized"
+	    exit 1
+        fi
+    fi
+
+    if test -f infinitely_ambiguous$i ; then
+	
+	if ! echo "ad" | $TOOLDIR/hfst-flookup -R infinitely_ambiguous$i \
+	    2> warnings > test.lookups;
+	then
+	    exit 1
+	fi
+	
+	if ! grep -q "infinite" warnings; then
+	    echo "FAIL: infinitely ambiguous string 'ad' should give a warning"
+	    exit 1;
+	fi
+
+	if ! echo "b" | $TOOLDIR/hfst-flookup -R infinitely_ambiguous$i \
+	    2> warnings > test.lookups;
+	then
+	    exit 1
+	fi
+	
+	if grep -q "infinite" warnings; then
+	    echo "FAIL: unambiguous string 'b' should not give a warning"
+	    exit 1;
+	fi
+
+    fi
+
+    if test -f infinitely_ambiguous_with_flags$i ; then
+
+	if ! echo "a" | $TOOLDIR/hfst-flookup -R infinitely_ambiguous_with_flags$i \
+	    2> warnings > test.lookups;
+	then
+	    exit 1
+	fi
+	
+	if ! grep -q "infinite" warnings; then
+	    echo "FAIL: infinitely ambiguous string 'a' should give a warning"
+	    exit 1;
+	fi
+
+	if ! echo "b" | $TOOLDIR/hfst-flookup -R infinitely_ambiguous_with_flags$i \
+	    2> warnings > test.lookups;
+	then
+	    exit 1
+	fi
+	
+	if grep -q "infinite" warnings; then
+	    echo "FAIL: unambiguous string 'b' should not give a warning"
+	    exit 1;
+	fi
+
+    fi
+
+fi
+done
+
+rm TMP
+rm test.lookups
+rm warnings
diff --git a/test/tools/fst2txt-functionality.sh b/test/tools/fst2txt-functionality.sh
index cbce151..1b1d5b1 100755
--- a/test/tools/fst2txt-functionality.sh
+++ b/test/tools/fst2txt-functionality.sh
@@ -13,13 +13,13 @@ mv TMP $srcdir/cat.txt;
 for i in "" .sfst .ofst .foma; do
 if ((test -z "$i") || $TOOLDIR/hfst-format --list-formats | grep $i > /dev/null); then
     if test -f cat$i ; then
-        if ! $TOOLDIR/hfst-fst2txt -D < cat$i > test.txt ; then
+        if ! $TOOLDIR/hfst-fst2txt -D < cat$i > test.txt 2> /dev/null ; then
             exit 1
         fi
         if ! diff test.txt $srcdir/cat.txt > /dev/null 2>&1 ; then
             exit 1
         fi
-        if ! $TOOLDIR/hfst-fst2txt -f dot < cat$i > test.txt ; then
+        if ! $TOOLDIR/hfst-fst2txt -f dot < cat$i > test.txt 2> /dev/null ; then
             exit 1
         fi
         if which dot > /dev/null 2>&1 ; then
@@ -27,10 +27,10 @@ if ((test -z "$i") || $TOOLDIR/hfst-format --list-formats | grep $i > /dev/null)
                 exit 1
             fi
         fi
-        if ! $TOOLDIR/hfst-fst2txt -f pckimmo < cat$i > test.txt ; then
+        if ! $TOOLDIR/hfst-fst2txt -f pckimmo < cat$i > test.txt 2> /dev/null ; then
             exit 1
         fi
-        if ! $TOOLDIR/hfst-fst2txt -f prolog < cat$i > test.txt ; then
+        if ! $TOOLDIR/hfst-fst2txt -f prolog < cat$i > test.txt 2> /dev/null ; then
             exit 1
         fi
         rm test.txt
diff --git a/test/tools/pmatch-tests.sh b/test/tools/pmatch-tests.sh
index b4ef178..a2aa380 100755
--- a/test/tools/pmatch-tests.sh
+++ b/test/tools/pmatch-tests.sh
@@ -185,7 +185,7 @@ Define TOP [ [T1 | T2] LC({ }) ] ;' \
 
 check_compile_run \
     --codetempl 'Define T [ Alpha+ EndTag(A) ] ;
-Define TOP [ T | [T @1@] ] ;' \
+Define TOP [ T::1 | [T @1@] ] ;' \
     --templargs 'LC before EndTag' 'LC({ }) EndTag(B)' \
     --templargs 'LC after EndTag' 'EndTag(B) LC({ })' \
     --inout 'Three-character match' 'abc' '<A>abc</A>' \
diff --git a/tools/src/Makefile.am b/tools/src/Makefile.am
index a03ad00..696af74 100644
--- a/tools/src/Makefile.am
+++ b/tools/src/Makefile.am
@@ -104,6 +104,9 @@ endif
 if WANT_LOOKUP
 MAYBE_LOOKUP=hfst-lookup$(EXEEXT)
 endif
+if WANT_FLOOKUP
+MAYBE_FLOOKUP=hfst-flookup$(EXEEXT)
+endif
 if WANT_PAIR_TEST
 MAYBE_PAIR_TEST=hfst-pair-test$(EXEEXT)
 endif
@@ -122,8 +125,8 @@ endif
 if WANT_PMATCH2FST
 MAYBE_PMATCH2FST=hfst-pmatch2fst$(EXEEXT)
 endif
-if WANT_PROC2
-MAYBE_PROC2=hfst-proc2$(EXEEXT)
+if WANT_TOKENIZE
+MAYBE_TOKENIZE=hfst-tokenize$(EXEEXT)
 endif
 if WANT_PROJECT
 MAYBE_PROJECT=hfst-project$(EXEEXT)
@@ -183,18 +186,23 @@ if WANT_SUBSTITUTE
 MAYBE_SUBSTITUTE=hfst-substitute$(EXEEXT)
 endif
 
+if YACC_USE_PARSER_H_EXTENSION
+  HEADER=h
+else
+  HEADER=hh
+endif
+
 noinst_HEADERS= \
 	calculate_functions.h hfst-commandline.h hfst-program-options.h \
-	hfst-compiler.hh HfstCompiler.h HfstBasic.h HfstAlphabet.h HfstUtf8.h \
+	HfstCompiler.h HfstBasic.h HfstAlphabet.h HfstUtf8.h \
 	inc/check-params-binary.h inc/check-params-common.h \
 	inc/check-params-unary.h  inc/getopt-cases-binary.h \
 	inc/getopt-cases-common.h inc/getopt-cases-error.h  \
 	inc/getopt-cases-unary.h  inc/globals-binary.h      \
 	inc/globals-common.h      inc/globals-unary.h \
 	hfst-file-to-mem.h \
-	hfst-string-conversions.h \
 	hfst-tool-metadata.h hfst-optimized-lookup.h \
-	guessify_fst.h generate_model_forms.h
+	guessify_fst.h generate_model_forms.h hfst-compiler.$(HEADER)
 # parsers/XreCompiler.h parsers/xre_utils.h
 
 # sort alphabetically
@@ -212,9 +220,9 @@ bin_PROGRAMS= \
 			 $(MAYBE_FORMAT) $(MAYBE_FST2FST) $(MAYBE_FST2STRINGS)      \
 			 $(MAYBE_FST2TXT) $(MAYBE_GREP) $(MAYBE_HEAD)               \
 			 $(MAYBE_INVERT)                                            \
-			 $(MAYBE_LOOKUP) $(MAYBE_MINIMIZE) $(MAYBE_NAME)            \
+			 $(MAYBE_LOOKUP) $(MAYBE_FLOOKUP) $(MAYBE_MINIMIZE) $(MAYBE_NAME)            \
 			 $(MAYBE_OPTIMIZED_LOOKUP) $(MAYBE_PMATCH)                  \
-			 $(MAYBE_PMATCH2FST) $(MAYBE_PROC2)                         \
+			 $(MAYBE_PMATCH2FST) $(MAYBE_TOKENIZE)                         \
 			 $(MAYBE_PROJECT) $(MAYBE_PRUNE_ALPHABET)                   \
 			 $(MAYBE_PUSH_WEIGHTS) $(MAYBE_REGEXP2FST)                  \
 			 $(MAYBE_REMOVE_EPSILONS) $(MAYBE_REPEAT) $(MAYBE_REVERSE)  \
@@ -234,7 +242,7 @@ HFST_COMMON_SRC=hfst-program-options.cc hfst-commandline.cc \
 				hfst-tool-metadata.cc
 # sort alphabetically
 hfst_affix_guessify_SOURCES=hfst-affix-guessify.cc $(HFST_COMMON_SRC)
-hfst_calculate_SOURCES=hfst-scanner.ll hfst-compiler.yy HfstCompiler.cc HfstBasic.cc HfstAlphabet.cc HfstUtf8.cc $(HFST_COMMON_SRC)
+hfst_calculate_SOURCES=hfst-compiler.yy hfst-scanner.ll HfstCompiler.cc HfstBasic.cc HfstAlphabet.cc HfstUtf8.cc $(HFST_COMMON_SRC)
 hfst_compare_SOURCES=hfst-compare.cc $(HFST_COMMON_SRC)
 hfst_compose_intersect_SOURCES=hfst-compose-intersect.cc $(HFST_COMMON_SRC)
 hfst_compose_SOURCES=hfst-compose.cc $(HFST_COMMON_SRC)
@@ -265,8 +273,8 @@ hfst_lexc_SOURCES=hfst-lexc-compiler.cc $(HFST_COMMON_SRC)
 #					  parsers/xre_lex.ll parsers/xre_utils.cc \
 #					  parsers/LexcCompiler.h parsers/lexc-utils.h
 #hfst_lexc2fst_BUILT=parsers/lexc-parser.h parsers/xre_parse.h
-hfst_lookup_SOURCES=hfst-lookup.cc $(HFST_COMMON_SRC) \
-hfst-string-conversions.cc
+hfst_lookup_SOURCES=hfst-lookup.cc $(HFST_COMMON_SRC)
+hfst_flookup_SOURCES=hfst-flookup.cc $(HFST_COMMON_SRC)
 hfst_pair_test_SOURCES=hfst-pair-test.cc $(HFST_COMMON_SRC) 
 hfst_minimize_SOURCES=hfst-minimize.cc $(HFST_COMMON_SRC)
 hfst_name_SOURCES=hfst-name.cc $(HFST_COMMON_SRC)
@@ -274,7 +282,7 @@ hfst_optimized_lookup_SOURCES=hfst-optimized-lookup.cc
 hfst_pmatch_SOURCES=hfst-pmatch.cc $(HFST_COMMON_SRC)
 #hfst_preprocess_for_optimized_lookup_format_SOURCES=hfst-preprocess-for-optimized-lookup-format.cc
 #	$(HFST_COMMON_SRC)
-hfst_proc2_SOURCES=hfst-proc2.cc $(HFST_COMMON_SRC)	
+hfst_tokenize_SOURCES=hfst-tokenize.cc $(HFST_COMMON_SRC)	
 hfst_project_SOURCES=hfst-project.cc $(HFST_COMMON_SRC)
 hfst_prune_alphabet_SOURCES=hfst-prune-alphabet.cc $(HFST_COMMON_SRC)
 hfst_push_weights_SOURCES=hfst-push-weights.cc $(HFST_COMMON_SRC)
@@ -307,7 +315,9 @@ install-exec-hook:
 		$(LN_S) -f hfst-subtract$(EXEEXT) hfst-minus$(EXEEXT) && \
 		$(LN_S) -f hfst-calculate$(EXEEXT) hfst-sfstpl2fst$(EXEEXT) && \
 		$(LN_S) -f hfst-summarize$(EXEEXT) hfst-summarise$(EXEEXT) && \
-		$(LN_S) -f hfst-disjunct$(EXEEXT) hfst-union$(EXEEXT)
+		$(LN_S) -f hfst-disjunct$(EXEEXT) hfst-union$(EXEEXT) && \
+		$(LN_S) -f hfst-tokenize$(EXEEXT) hfst-proc2$(EXEEXT) && \
+		$(LN_S) -f hfst-tokenize$(EXEEXT) hfst-tokenise$(EXEEXT)
 #		$(LN_S) -f hfst-preprocess-for-optimized-lookup-format$(EXEEXT) hfst-preprocess-for-optimised-lookup-format$(EXEEXT) &&
 
 uninstall-local:
@@ -320,11 +330,13 @@ uninstall-local:
 		rm hfst-minus && \
 		rm hfst-sfstpl2fst && \
 		rm hfst-summarise && \
-		rm hfst-union
+		rm hfst-union && \
+		rm hfst-tokenise && \
+		rm hfst-proc2
 
 BUILT_SOURCES=$(hfst_lexc_BUILT) 
 
-CLEANFILES=hfst-compiler.hh hfst-compiler.cc $(hfst_lexc_BUILT) 
+CLEANFILES=$(hfst_compiler_header_file) hfst-compiler.cc $(hfst_lexc_BUILT) 
 
 
 hfst_calculate_CXXFLAGS= -Wall -Wno-error -Wno-sign-compare -Wno-deprecated
@@ -333,9 +345,7 @@ hfst_calculate_CXXFLAGS= -Wall -Wno-error -Wno-sign-compare -Wno-deprecated
 AM_YFLAGS=-d
 AM_LFLAGS=--outfile=$(LEX_OUTPUT_ROOT).c 
 
-# make make realise headers automatically follow from flexing
-hfst-scanner.hh: hfst-scanner.cc
-CLEANFILES+=hfst-scanner.hh hfst-compiler.hh
-BUILT_SOURCES+=hfst-scanner.hh
+hfst-scanner.ll: hfst-compiler.$(HEADER)
 
-#EXTRA_DIST=hfst-scanner.cc hfst-compiler.cc hfst-compiler.hh
\ No newline at end of file
+CLEANFILES+=hfst-compiler.$(HEADER)
+EXTRA_DIST=hfst-scanner.cc hfst-compiler.cc hfst-compiler.$(HEADER)
diff --git a/tools/src/hfst-commandline.cc b/tools/src/hfst-commandline.cc
index e970374..abdf7ec 100644
--- a/tools/src/hfst-commandline.cc
+++ b/tools/src/hfst-commandline.cc
@@ -866,7 +866,7 @@ print_version()
 {
   // c.f. http://www.gnu.org/prep/standards/standards.html#g_t_002d_002dversion
     fprintf(message_out, "%s %s (" PACKAGE_STRING ")\n"
-             "Copyright (C) 2010 University of Helsinki,\n"
+             "Copyright (C) 2016 University of Helsinki,\n"
              "License GPLv3: GNU GPL version 3 "
              "<http://gnu.org/licenses/gpl.html>\n"
              "This is free software: you are free to change and "
@@ -880,7 +880,7 @@ print_report_bugs()
 {
   fprintf(message_out, "Report bugs to <" PACKAGE_BUGREPORT "> "
           "or directly to our bug tracker at:\n"
-          "<https://sourceforge.net/tracker/?atid=1061990&group_id=224521&func=browse>\n");
+          "<https://github.com/hfst/hfst/issues>\n");
 }
 
 
diff --git a/tools/src/hfst-lookup.cc b/tools/src/hfst-flookup.cc
similarity index 96%
copy from tools/src/hfst-lookup.cc
copy to tools/src/hfst-flookup.cc
index 0478e46..165c829 100644
--- a/tools/src/hfst-lookup.cc
+++ b/tools/src/hfst-flookup.cc
@@ -100,6 +100,9 @@ static size_t linen = 0;
 static bool lookup_given = false;
 static size_t infinite_cutoff = 5;
 static float beam=-1;
+static bool invert = false;
+static bool force_ol = false; // accept also ol transducers when -R is not specified
+                              // inverting is slow then
 
 // symbols actually seen in (non-ol) transducers
 static std::vector<std::set<std::string> > cascade_symbols_seen;
@@ -229,7 +232,8 @@ print_usage()
 {
     // c.f. http://www.gnu.org/prep/standards/standards.html#g_t_002d_002dhelp
     fprintf(message_out, "Usage: %s [OPTIONS...] [INFILE]\n"
-           "perform transducer lookup (apply)\n"
+           "Perform transducer lookup (apply). Lookup is done from right to left,\n"
+           "in the same way as in flookup of foma and lookup of xfst.\n"
         "\n", program_name);
 
     print_common_program_options(message_out);
@@ -240,6 +244,7 @@ print_usage()
         "  -p, --pipe-mode[=STREAM] Control input and output streams\n");
 
     fprintf(message_out, "Lookup options:\n"
+            "  -R, --invert                     Do lookdown instead of lookup\n"
             "  -I, --input-strings=SFILE        Read lookup strings from SFILE\n"
             "  -O, --output-format=OFORMAT      Use OFORMAT printing results sets\n"
             "  -e, --epsilon-format=EPS         Print epsilon as EPS\n"
@@ -251,7 +256,8 @@ print_usage()
             "                                   the best analysis\n"
             "  -t, --time-cutoff=S              Limit search after having used S seconds per input\n"
             "                                   (currently only works in optimized-lookup mode\n"
-            "  -P, --progress                   Show neat progress bar if possible\n");
+            "  -P, --progress                   Show neat progress bar if possible\n"
+            "  -f, --force-ol                   Force lookup of optimized lookup transducers (slow)\n");
     fprintf(message_out, "\n");
     print_common_unary_program_parameter_instructions(message_out);
     fprintf(message_out, 
@@ -281,16 +287,18 @@ print_usage()
 #endif
     fprintf(message_out, "\n");
 
-    fprintf(message_out, 
+/*    fprintf(message_out, 
             "Todo:\n"
             "  For optimized lookup format, only strings that pass "
             "flag diacritic checks\n"
             "  are printed and flag diacritic symbols are not printed.\n"
-            "  Support VARIABLE 'print-space' for optimized lookup format\n");
+            "  Support VARIABLE 'print-space' for optimized lookup format\n");*/
     fprintf(message_out,
-            "\n"
+            /*"\n"*/
             "Known bugs:\n"
-            "  'quote-special' quotes spaces that come from 'print-space'\n");
+            "  * 'quote-special' quotes spaces that come from 'print-space'\n"
+            "  * optimized lookup transducers are unidirectional and only support lookdown,\n"
+            "    --force-ol forces inversion but is slow\n");
 
     fprintf(message_out, "\n");
     print_report_bugs();
@@ -322,12 +330,14 @@ parse_options(int argc, char** argv)
             {"time-cutoff", required_argument, 0, 't'},
             {"pipe-mode", optional_argument, 0, 'p'},
             {"progress", no_argument, 0, 'P'},
+            {"invert", no_argument, 0, 'R'},
+            {"force-ol", no_argument, 0, 'f'},
             {0,0,0,0}
         };
         int option_index = 0;
         // add tool-specific options here 
         char c = getopt_long(argc, argv, HFST_GETOPT_COMMON_SHORT
-                             HFST_GETOPT_UNARY_SHORT "I:O:F:xc:X:e:E:b:t:p::P",
+                             HFST_GETOPT_UNARY_SHORT "I:O:F:xc:X:e:E:b:t:p::PRf",
                              long_options, &option_index);
         if (-1 == c)
         {
@@ -339,6 +349,9 @@ parse_options(int argc, char** argv)
 #include "inc/getopt-cases-common.h"
 #include "inc/getopt-cases-unary.h"
           // add tool-specific cases here
+        case 'R':
+            invert = true;
+            break;
         case 'I':
             lookup_file_name = hfst_strdup(optarg);
             lookup_file = hfst_fopen(lookup_file_name, "r");
@@ -460,6 +473,9 @@ parse_options(int argc, char** argv)
         case 'P':
             show_progress_bar = true;
             break;
+        case 'f':
+          force_ol = true;
+          break;
 #include "inc/getopt-cases-error.h"
         }
     }
@@ -1112,11 +1128,12 @@ line_to_lookup_path(char** s, hfst::HfstStrings2FstTokenizer& tok,
     return rv;
 }
 
+// HERE
 HfstOneLevelPaths*
 lookup_simple(const HfstOneLevelPath& s, HfstTransducer& t, bool* infinity)
 {
   HfstOneLevelPaths* results = 0;
-  if (t.is_lookup_infinitely_ambiguous(s.second))
+  if (time_cutoff == 0.0 && t.is_lookup_infinitely_ambiguous(s.second))
     {
       if (!silent && infinite_cutoff > 0) {
     warning(0, 0, "Got infinite results, number of cycles limited to " SIZE_T_SPECIFIER "",
@@ -1295,7 +1312,7 @@ void lookup_fd_and_print(HfstBasicTransducer &t, HfstOneLevelPaths& results,
   results = filtered;
 }
 
-
+// HERE
 HfstOneLevelPaths*
 lookup_simple(const HfstOneLevelPath& s, HfstBasicTransducer& t, bool* infinity)
 {
@@ -1524,6 +1541,20 @@ process_stream(HfstInputStream& inputstream, FILE* outstream)
           {
             only_optimized_lookup = false;
           }
+        else
+          {
+            if ((! invert))
+              {
+                if (! force_ol)
+                  {
+                    error(EXIT_FAILURE, 0, "lookup not supported for "
+                          "optimized lookup transducers: convert to openfst format,\n"
+                          "invert, and convert back to optimized lookup format "
+                          "or specify --force-ol\n");
+                  }
+              }
+          }
+
         char* inputname = strdup(trans.get_name().c_str());
         if (strlen(inputname) <= 0)
           {
@@ -1539,6 +1570,18 @@ process_stream(HfstInputStream& inputstream, FILE* outstream)
                            transducer_n); 
           }
 
+        if (! invert)
+          {
+            if (type != HFST_OL_TYPE && type != HFST_OLW_TYPE)
+              { trans.invert(); }
+            else
+              {
+                trans.convert(hfst::TROPICAL_OPENFST_TYPE);
+                trans.invert();
+                trans.convert(type);
+              }
+          }
+
         // add multicharacter symbols to mc_symbols
         if (type == hfst::SFST_TYPE || 
             type == hfst::TROPICAL_OPENFST_TYPE ||
@@ -1727,7 +1770,7 @@ process_stream(HfstInputStream& inputstream, FILE* outstream)
 
 int main( int argc, char **argv ) {
     hfst_setlocale();
-    hfst_set_program_name(argv[0], "0.6", "HfstLookup");
+    hfst_set_program_name(argv[0], "0.6", "HfstFlookup");
 
     int retval = parse_options(argc, argv);
     if (retval != EXIT_CONTINUE)
diff --git a/tools/src/hfst-fst2fst.cc b/tools/src/hfst-fst2fst.cc
index d0e4d3b..7e3b0ed 100644
--- a/tools/src/hfst-fst2fst.cc
+++ b/tools/src/hfst-fst2fst.cc
@@ -177,14 +177,22 @@ parse_options(int argc, char** argv)
 int
 process_stream(HfstInputStream& instream, HfstOutputStream& outstream)
 {
-  //instream.open();
-  //    outstream.open();
+  if (instream.get_type() == hfst::FOMA_TYPE && ! instream.is_hfst_header_included())
+    {
+      if (!silent)
+        {
+          fprintf(message_out, "warning: converting native foma transducer: "
+                  "inversion may be needed for hfst-lookup to work as expected "
+                  "(hfst-flookup works as foma's flookup)\n");
+        }
+    }
     
     size_t transducer_n = 0;
     while(instream.is_good())
     {
         transducer_n++;
         HfstTransducer orig(instream);
+
         char* inputname = hfst_get_name(orig, inputfilename);
         if (transducer_n == 1)
         {
@@ -259,7 +267,14 @@ int main( int argc, char **argv ) {
     try {
       instream = (inputfile != stdin) ?
         new HfstInputStream(inputfilename) : new HfstInputStream();
-    } catch(const HfstException e)  {
+    } 
+    catch(const FileIsInGZFormatException e)
+      {
+        error(EXIT_FAILURE, 0, "%s seems to be a gzipped native foma file, you must first unzip it",
+              inputfilename);
+        return EXIT_FAILURE;
+      }
+    catch(const HfstException e)  {
         error(EXIT_FAILURE, 0, "%s is not a valid transducer file",
               inputfilename);
 #if HAVE_XFSM
diff --git a/tools/src/hfst-lookup.cc b/tools/src/hfst-lookup.cc
index 0478e46..130bf83 100644
--- a/tools/src/hfst-lookup.cc
+++ b/tools/src/hfst-lookup.cc
@@ -230,6 +230,9 @@ print_usage()
     // c.f. http://www.gnu.org/prep/standards/standards.html#g_t_002d_002dhelp
     fprintf(message_out, "Usage: %s [OPTIONS...] [INFILE]\n"
            "perform transducer lookup (apply)\n"
+           "NOTE: hfst-lookup does lookup from left to right as opposed to xfst and foma\n"
+           "      lookup which is carried out from right to left. In order to do lookup\n"
+           "      in a similar way as xfst and foma, use 'hfst-flookup' instead.\n"
         "\n", program_name);
 
     print_common_program_options(message_out);
@@ -1116,7 +1119,7 @@ HfstOneLevelPaths*
 lookup_simple(const HfstOneLevelPath& s, HfstTransducer& t, bool* infinity)
 {
   HfstOneLevelPaths* results = 0;
-  if (t.is_lookup_infinitely_ambiguous(s.second))
+  if (time_cutoff == 0.0 && t.is_lookup_infinitely_ambiguous(s.second))
     {
       if (!silent && infinite_cutoff > 0) {
     warning(0, 0, "Got infinite results, number of cycles limited to " SIZE_T_SPECIFIER "",
diff --git a/tools/src/hfst-optimized-lookup.cc b/tools/src/hfst-optimized-lookup.cc
index c28fc90..a31e8a4 100644
--- a/tools/src/hfst-optimized-lookup.cc
+++ b/tools/src/hfst-optimized-lookup.cc
@@ -48,6 +48,9 @@ bool print_usage(void)
     "\n" <<
     "Usage: " << PACKAGE_NAME << " [OPTIONS] TRANSDUCER\n" <<
     "Run a transducer on standard input (one word per line) and print analyses\n" <<
+    "NOTE: hfst-optimized-lookup does lookup from left to right as opposed to xfst\n" <<
+    "      and foma lookup which is carried out from right to left. In order to do\n" <<
+    "      lookup in a similar way as xfst and foma, invert the transducer first.\n" <<
     "\n" <<
     "  -h, --help                  Print this help message\n" <<
     "  -V, --version               Print version information\n" <<
@@ -134,7 +137,7 @@ int main(int argc, char **argv)
         };
       
       int option_index = 0;
-      c = getopt_long(argc, argv, "hVvqsewb:uxfn:p::", long_options, &option_index);
+      c = getopt_long(argc, argv, "hVvqsewb:t:uxfn:p::", long_options, &option_index);
 
       if (c == -1) // no more options to look at
         break;
@@ -467,10 +470,6 @@ void runTransducer (genericTransducer T)
   *str = 0;
   char * old_str = str;
 
-  if (time_cutoff > 0.0) {
-      max_clock = clock() + CLOCKS_PER_SEC*time_cutoff;
-  }
-        
   while(true)
     {
 #ifdef WINDOWS
@@ -520,7 +519,6 @@ void runTransducer (genericTransducer T)
           input_string[i] = k;
           ++i;
         }
-
       str = old_str;
       if (failed)
         { // tokenization failed
@@ -528,23 +526,29 @@ void runTransducer (genericTransducer T)
             {
 #ifdef WINDOWS
           if (!pipe_output)
-              hfst_fprintf_console(stdout, "%s\t+?\n", str);
+              hfst_fprintf_console(stdout, "%s\t+?\n\n", str);
           else
 #endif
-            std::cout << str << "\t+?" << std::endl;
+              std::cout << str << "\t+?" << std::endl << std::endl;
 
 #ifdef WINDOWS
           if (!pipe_output)
-            hfst_fprintf_console(stdout, "\n");
+            hfst_fprintf_console(stdout, "\n\n");
           else
 #endif
-            std::cout << std::endl;
+              std::cout << std::endl << std::endl;
             }
           continue;
         }
 
       input_string[i] = NO_SYMBOL_NUMBER;
 
+      if (time_cutoff > 0.0) {
+          start_clock = clock();
+          call_counter = 0;
+          limit_reached = false;
+      }
+      
       T.analyze(input_string);
       T.printAnalyses(std::string(str));
     }
@@ -997,12 +1001,17 @@ void Transducer::get_analyses(SymbolNumber * input_symbol,
                               SymbolNumber * original_output_string,
                               TransitionTableIndex i)
 {
-  if (time_cutoff > 0.0) {
-    // quit if we've overspent our time
-    if (clock() > max_clock) {
-      return;
+    if (time_cutoff > 0.0) {
+        // Check to see if time has been overspent. For speed, only check every
+        // million calls and set a flag.
+        ++call_counter;
+        if (limit_reached ||
+            (call_counter % 1000000 == 0 &&
+             ((((double) clock() - start_clock) / CLOCKS_PER_SEC) > time_cutoff))) {
+            limit_reached = true;
+            return;
+        }
     }
-  }
 #if OL_FULL_DEBUG
   std::cout << "get_analyses " << i << std::endl;
 #endif
@@ -1081,17 +1090,17 @@ void Transducer::printAnalyses(std::string prepend)
         {
 #ifdef WINDOWS
           if (!pipe_output)
-            hfst_fprintf_console(stdout, "%s\t+?\n", prepend.c_str());
+            hfst_fprintf_console(stdout, "%s\t+?\n\n", prepend.c_str());
           else
 #endif
-            std::cout << prepend << "\t+?" << std::endl;
+          std::cout << prepend << "\t+?" << std::endl << std::endl;
 
 #ifdef WINDOWS
           if (!pipe_output)
-            hfst_fprintf_console(stdout, "\n");
+            hfst_fprintf_console(stdout, "\n\n");
           else
 #endif
-            std::cout << std::endl;
+          std::cout << std::endl << std::endl;
           return;
         }
       int i = 0;
@@ -1109,7 +1118,7 @@ void Transducer::printAnalyses(std::string prepend)
             }                   
 
 #ifdef WINDOWS
-          if (!pipe_mode)
+          if (!pipe_output)
             hfst_fprintf_console(stdout, "%s\n", it->c_str());
           else
 #endif
@@ -1121,7 +1130,7 @@ void Transducer::printAnalyses(std::string prepend)
       display_vector.clear(); // purge the display vector
 
 #ifdef WINDOWS
-      if (!pipe_mode)
+      if (!pipe_output)
         hfst_fprintf_console(stdout, "\n");
       else
 #endif
@@ -1136,18 +1145,18 @@ void TransducerUniq::printAnalyses(std::string prepend)
     {
 
 #ifdef WINDOWS
-      if (!pipe_mode)
-        hfst_fprintf_console(stdout, "%s\t+?\n", prepend.c_str());
+      if (!pipe_output)
+        hfst_fprintf_console(stdout, "%s\t+?\n\n", prepend.c_str());
       else
 #endif
-        std::cout << prepend << "\t+?" << std::endl;
+        std::cout << prepend << "\t+?" << std::endl << std::endl;
 
 #ifdef WINDOWS
-      if (!pipe_mode)
-        hfst_fprintf_console("\n");
+      if (!pipe_output)
+        hfst_fprintf_console(stdout, "\n\n");
       else
 #endif
-        std::cout << std::endl;
+        std::cout << std::endl << std::endl;
 
       return;
     }
@@ -1158,7 +1167,7 @@ void TransducerUniq::printAnalyses(std::string prepend)
       if (outputType == xerox)
         {
 #ifdef WINDOWS
-      if (!pipe_mode)
+      if (!pipe_output)
         hfst_fprintf_console(stdout, "%s\t", prepend.c_str());
       else
 #endif
@@ -1166,7 +1175,7 @@ void TransducerUniq::printAnalyses(std::string prepend)
         }
 
 #ifdef WINDOWS
-      if (!pipe_mode)
+      if (!pipe_output)
         hfst_fprintf_console(stdout, "%s\n", it->c_str());
       else
 #endif
@@ -1177,8 +1186,8 @@ void TransducerUniq::printAnalyses(std::string prepend)
     }
   display_vector.clear(); // purge the display set
 #ifdef WINDOWS
-  if (!pipe_mode)
-    hfst_fprintf_console("\n");
+  if (!pipe_output)
+    hfst_fprintf_console(stdout, "\n");
   else
 #endif
     std::cout << std::endl;
@@ -1189,19 +1198,18 @@ void TransducerFdUniq::printAnalyses(std::string prepend)
   if (outputType == xerox && display_vector.size() == 0)
     {
 #ifdef WINDOWS
-  if (!pipe_mode)
-    hfst_fprintf_console(stdout, "%s\t+?\n", prepend.c_str());
+  if (!pipe_output)
+    hfst_fprintf_console(stdout, "%s\t+?\n\n", prepend.c_str());
   else
 #endif
-    std::cout << prepend << "\t+?" << std::endl;
+      std::cout << prepend << "\t+?" << std::endl << std::endl;
 
 #ifdef WINDOWS
-  if (!pipe_mode)
-    hfst_fprintf_console(stdout, "\n");
+  if (!pipe_output)
+    hfst_fprintf_console(stdout, "\n\n");
   else
 #endif
-    std::cout << std::endl;
-
+      std::cout << std::endl << std::endl;
   return;
     }
   int i = 0;
@@ -1211,7 +1219,7 @@ void TransducerFdUniq::printAnalyses(std::string prepend)
       if (outputType == xerox)
         {
 #ifdef WINDOWS
-          if (!pipe_mode)
+          if (!pipe_output)
             hfst_fprintf_console(stdout, "%s\t", prepend.c_str());
           else
 #endif
@@ -1219,7 +1227,7 @@ void TransducerFdUniq::printAnalyses(std::string prepend)
         }
 
 #ifdef WINDOWS
-      if (!pipe_mode)
+      if (!pipe_output)
         hfst_fprintf_console(stdout, "%s\n", it->c_str());
       else
 #endif
@@ -1231,8 +1239,8 @@ void TransducerFdUniq::printAnalyses(std::string prepend)
   display_vector.clear(); // purge the display set
 
 #ifdef WINDOWS
-  if (!pipe_mode)
-    hfst_fprintf_console("\n");
+  if (!pipe_output)
+    hfst_fprintf_console(stdout, "\n");
   else
 #endif
     std::cout << std::endl;
@@ -1628,16 +1636,16 @@ void TransducerW::printAnalyses(std::string prepend)
     {
 #ifdef WINDOWS
       if (!pipe_output)
-        hfst_fprintf_console(stdout, "%s\t+?\n", prepend.c_str());
+        hfst_fprintf_console(stdout, "%s\t+?\n\n", prepend.c_str());
       else
 #endif
-        std::cout << prepend << "\t+?" << std::endl;
+          std::cout << prepend << "\t+?" << std::endl << std::endl;
 
 #ifdef WINDOWS
       if (!pipe_output)
-        hfst_fprintf_console(stdout, "\n");
+        hfst_fprintf_console(stdout, "\n\n");
       else
-        std::cout << std::endl;
+          std::cout << std::endl << std::endl;
 #endif
 
       return;
@@ -1757,7 +1765,7 @@ void TransducerWUniq::printAnalyses(std::string prepend)
         {
 #ifdef WINDOWS
           if (!pipe_output)
-            hfst_fprintf_console("\t%f", (*display_it).first);
+            hfst_fprintf_console(stdout, "\t%f", (*display_it).first);
           else
 #endif
             std::cout << '\t' << (*display_it).first;
@@ -1831,7 +1839,7 @@ void TransducerWFdUniq::printAnalyses(std::string prepend)
 
 #ifdef WINDOWS
       if (!pipe_output)
-        hfst_fprintf_console("%s", (*display_it).second);
+        hfst_fprintf_console(stdout, "%s", (*display_it).second);
       else
 #endif
         std::cout << (*display_it).second;
@@ -1839,16 +1847,16 @@ void TransducerWFdUniq::printAnalyses(std::string prepend)
       if (displayWeightsFlag)
         {
 #ifdef WINDOWS
-          if (!pipe_mode)
-            hfst_fprintf("\t%f", (*display_it).first);
+          if (!pipe_output)
+            hfst_fprintf_console(stdout, "\t%f", (*display_it).first);
           else
 #endif
             std::cout << '\t' << (*display_it).first;
         }
 
 #ifdef WINDOWS
-          if (!pipe_mode)
-            hfst_fprintf_console("\n");
+          if (!pipe_output)
+            hfst_fprintf_console(stdout, "\n");
           else
 #endif
             std::cout << std::endl;
@@ -1856,8 +1864,8 @@ void TransducerWFdUniq::printAnalyses(std::string prepend)
   display_map.clear();
 
 #ifdef WINDOWS
-  if (!pipe_mode)
-    hfst_fprintf_console("\n");
+  if (!pipe_output)
+    hfst_fprintf_console(stdout, "\n");
   else
 #endif
     std::cout << std::endl;
@@ -1871,6 +1879,17 @@ void TransducerW::get_analyses(SymbolNumber * input_symbol,
 #if OL_FULL_DEBUG
   std::cerr << "get analyses " << i << " " << current_weight << std::endl;
 #endif
+  if (time_cutoff > 0.0) {
+      // Check to see if time has been overspent. For speed, only check every
+      // million calls and set a flag.
+      ++call_counter;
+      if (limit_reached ||
+          (call_counter % 1000000 == 0 &&
+           ((((double) clock() - start_clock) / CLOCKS_PER_SEC) > time_cutoff))) {
+          limit_reached = true;
+          return;
+      }
+  }
   if (i >= TRANSITION_TARGET_TABLE_START )
     {
       i -= TRANSITION_TARGET_TABLE_START;
diff --git a/tools/src/hfst-optimized-lookup.h b/tools/src/hfst-optimized-lookup.h
index 4ae4118..7e19b4c 100644
--- a/tools/src/hfst-optimized-lookup.h
+++ b/tools/src/hfst-optimized-lookup.h
@@ -60,8 +60,10 @@ bool echoInputsFlag = false;
 bool beFast = false;
 int maxAnalyses = INT_MAX;
 bool preserveDiacriticRepresentationsFlag = false;
+bool limit_reached = false;
+unsigned long call_counter = 0;
 double time_cutoff = 0.0;
-clock_t max_clock;
+clock_t start_clock;
 
 #define MAX_IO_STRING 5000
 
diff --git a/tools/src/hfst-pair-test.cc b/tools/src/hfst-pair-test.cc
index 8ed198b..89fdd71 100644
--- a/tools/src/hfst-pair-test.cc
+++ b/tools/src/hfst-pair-test.cc
@@ -131,17 +131,17 @@ print_usage()
     fprintf(message_out,
         "In Xerox mode, the input should be a twolc file. Tests consist of\n"
         "two lines: an input form and an output form. The test cases are\n"
-        "specialized comments prefixed with either '!€' or '!$' depeding on\n"
+        "specialized comments prefixed with either '!!€' or '!!$' depeding on\n"
         "whether the pair should succeed or fail. An example of a positive\n"
         "test:\n\n"
 
-        "!€ earlYer\n"
-        "!€ earlier\n\n"
+        "!!€ earlYer\n"
+        "!!€ earlier\n\n"
 
         "An example of a negative test:\n\n"
 
-        "!$ earlYer\n"
-        "!$ earlyer\n");
+        "!!$ earlYer\n"
+        "!!$ earlyer\n");
     fprintf(message_out, "\n");
     fprintf(message_out,
         "In silent mode (-s), the program won't print anything. Only the\n"
@@ -172,7 +172,7 @@ parse_options(int argc, char** argv)
         int option_index = 0;
         // add tool-specific options here 
         char c = getopt_long(argc, argv, HFST_GETOPT_COMMON_SHORT
-                             HFST_GETOPT_UNARY_SHORT "I:Nx",
+                             HFST_GETOPT_UNARY_SHORT "I:NX",
                              long_options, &option_index);
         if (-1 == c)
         {
@@ -216,6 +216,31 @@ parse_options(int argc, char** argv)
     return EXIT_CONTINUE;
 }
 
+std::string &replace_all_substr(const std::string &substr, 
+                                const std::string &repl,
+                                std::string &str)
+{
+  int pos = 0;
+  while ((pos = str.find(substr, pos)) != std::string::npos)
+    {
+      str.replace(pos, substr.size(), repl);
+    }
+  return str;
+}
+#define PTPP "PAIR_TEST_PERC_PERC"
+#define PTPC "PAIR_TEST_PERC_COL"
+// perc_escaped is a string where special symols are escaped using
+// %. Transform it into a string where specail symbols are escaped
+// using \. 
+std::string backslash_escape(std::string perc_escaped)
+{
+  replace_all_substr("%%", PTPP, perc_escaped);
+  replace_all_substr("%:", PTPC, perc_escaped);
+  replace_all_substr("%", "", perc_escaped);
+  replace_all_substr(PTPC, "\\:", perc_escaped);
+  return replace_all_substr(PTPP, "%", perc_escaped);
+}
+
 HfstState get_target(const std::string &isymbol,
              const std::string &osymbol,
              HfstState s,const HfstBasicTransducer &t,
@@ -467,10 +492,10 @@ std::string strip_space(const std::string &line)
 }
 
 bool is_positive_test_line(const std::string &line)
-{ return strip_space(line).substr(0,sizeof("!€") - 1) == "!€"; }
+{ return strip_space(line).substr(0,sizeof("!!€") - 1) == "!!€"; }
 
 bool is_negative_test_line(const std::string &line)
-{ return strip_space(line).substr(0,sizeof("!$") - 1) == "!$"; }
+{ return strip_space(line).substr(0,sizeof("!!$") - 1) == "!!$"; }
 
 int
 process_stream(HfstInputStream& inputstream, FILE* outstream)
@@ -583,8 +608,8 @@ process_stream(HfstInputStream& inputstream, FILE* outstream)
         /*
           Read test cases from a twolc source file.
 
-          Positive test cases are prefixed by "!€" and negative test
-          cases by "!$".
+          Positive test cases are prefixed by "!!€" and negative test
+          cases by "!!$".
 
           Each test case spans two lines: the input and output cases.
          */
@@ -613,8 +638,8 @@ process_stream(HfstInputStream& inputstream, FILE* outstream)
 
             if (is_positive_test_line(line))
               {
-                // "!€ xyz" -> "xyz"
-                std::string test_case = strip_space(line).substr(sizeof("!€") - 1);
+                // "!!€ xyz" -> "xyz"
+                std::string test_case = strip_space(line).substr(sizeof("!!€") - 1);
                 test_case = strip_space(test_case);
 
                 positive_test_cases.push_back(test_case);
@@ -623,8 +648,8 @@ process_stream(HfstInputStream& inputstream, FILE* outstream)
               }
             else if (is_negative_test_line(line))
               {
-                // "!$ xyz" -> "xyz"
-                std::string test_case = strip_space(line).substr(sizeof("!$") - 1);
+                // "!!$ xyz" -> "xyz"
+                std::string test_case = strip_space(line).substr(sizeof("!!$") - 1);
                 test_case = strip_space(test_case);
                 
                 negative_test_cases.push_back(test_case);
@@ -657,9 +682,30 @@ process_stream(HfstInputStream& inputstream, FILE* outstream)
             const std::string &input_case = positive_test_cases[i];
             const std::string &output_case = positive_test_cases[i + 1];
 
-            StringPairVector test_case = input_tokenizer.tokenize_string_pair
-              (input_case + ":" + output_case, false);
-            
+            StringPairVector test_case;
+            try 
+              {
+                // We need to convert the %-escaped input and output
+                // string to \-escpaed strings for input_toknizer.
+                test_case = input_tokenizer.tokenize_string_pair
+                  (backslash_escape(input_case) + ":" + 
+                   backslash_escape(output_case), false);
+                test_case.insert
+                  (test_case.begin(),
+                   StringPair("@#@",hfst::internal_epsilon));
+                test_case.insert
+                  (test_case.end(),
+                   StringPair("@#@",hfst::internal_epsilon));
+
+              }
+            catch (const hfst::UnescapedColsFound &e)
+              {
+                error(EXIT_FAILURE, 0, 
+                      "The correspondence %s %s contains unescaped "
+                      "colon-symbols. Escape them using %%.",
+                      input_case.c_str(), output_case.c_str(), line);
+              }
+
             int new_exit_code = test(test_case,
                                      input_case + " : " + output_case,
                                      grammar,
@@ -677,9 +723,29 @@ process_stream(HfstInputStream& inputstream, FILE* outstream)
             const std::string &input_case = negative_test_cases[i];
             const std::string &output_case = negative_test_cases[i + 1];
 
-            StringPairVector test_case = input_tokenizer.tokenize_string_pair
-              (input_case + ":" + output_case, false);
-            
+            StringPairVector test_case;
+            try
+              {
+                // We need to convert the %-escaped input and output
+                // string to \-escpaed strings for input_toknizer.
+                test_case = input_tokenizer.tokenize_string_pair
+                  (backslash_escape(input_case) + ":" + 
+                   backslash_escape(output_case), false);
+                test_case.insert
+                  (test_case.begin(),
+                   StringPair("@#@",hfst::internal_epsilon));
+                test_case.insert
+                  (test_case.end(),
+                   StringPair("@#@",hfst::internal_epsilon));
+              }
+            catch (const hfst::UnescapedColsFound &e)
+              {
+                error(EXIT_FAILURE, 0, 
+                      "The correspondence %s %s contains unquoted "
+                      "colon-symbols. Quote them using %%.",
+                      input_case.c_str(), output_case.c_str(), line);
+              }
+
             int new_exit_code = test(test_case,
                                      input_case + " : " + output_case,
                                      grammar,
diff --git a/tools/src/hfst-pmatch.cc b/tools/src/hfst-pmatch.cc
index 8ce5a3e..c8f821a 100644
--- a/tools/src/hfst-pmatch.cc
+++ b/tools/src/hfst-pmatch.cc
@@ -56,10 +56,11 @@ using std::pair;
 #include "inc/globals-common.h"
 #include "inc/globals-unary.h"
 
-bool blankline_separated = true;
-bool extract_tags = false;
-bool locate_mode = false;
-bool profile = false;
+static bool blankline_separated = true;
+static bool extract_tags = false;
+static bool locate_mode = false;
+static double time_cutoff = 0.0;
+static bool profile = false;
 std::string pmatch_filename;
 
 void
@@ -74,6 +75,7 @@ print_usage()
             "  -n  --newline          Newline as input separator (default is blank line)\n"
             "  -x  --extract-tags     Only print tagged parts in output\n"
             "  -l  --locate           Only print locations of matches\n"
+            "  -t, --time-cutoff=S    Limit search after having used S seconds per input\n"
             "  -p  --profile          Produce profiling data\n");
     fprintf(message_out, 
             "Use standard streams for input and output.\n"
@@ -96,12 +98,12 @@ void match_and_print(hfst_ol::PmatchContainer & container,
     }
     if (!locate_mode) {
 #ifndef _MSC_VER
-      outstream << container.match(input_text);
+        outstream << container.match(input_text, time_cutoff);
 #else
-      hfst::hfst_fprintf_console(stdout, "%s", container.match(input_text).c_str());
+        hfst::hfst_fprintf_console(stdout, "%s", container.match(input_text, time_cutoff).c_str());
 #endif
     } else {
-        hfst_ol::LocationVectorVector locations = container.locate(input_text);
+        hfst_ol::LocationVectorVector locations = container.locate(input_text, time_cutoff);
         for(hfst_ol::LocationVectorVector::const_iterator it = locations.begin();
             it != locations.end(); ++it) {
             if (it->at(0).output.compare("@_NONMATCHING_@") != 0) {
@@ -173,11 +175,12 @@ int parse_options(int argc, char** argv)
                 {"newline", no_argument, 0, 'n'},
                 {"extract-tags", no_argument, 0, 'x'},
                 {"locate", no_argument, 0, 'l'},
+                {"time-cutoff", required_argument, 0, 't'},
                 {"profile", no_argument, 0, 'p'},
                 {0,0,0,0}
             };
         int option_index = 0;
-        char c = getopt_long(argc, argv, HFST_GETOPT_COMMON_SHORT "nxlp",
+        char c = getopt_long(argc, argv, HFST_GETOPT_COMMON_SHORT "nxlt:p",
                              long_options, &option_index);
         if (-1 == c)
         {
@@ -197,6 +200,14 @@ int parse_options(int argc, char** argv)
         case 'l':
             locate_mode = true;
             break;
+        case 't':
+            time_cutoff = atof(optarg);
+            if (time_cutoff < 0.0)
+            {
+                std::cerr << "Invalid argument for --time-cutoff\n";
+                return EXIT_FAILURE;
+            }
+            break;
         case 'p':
             profile = true;
             break;
diff --git a/tools/src/hfst-pmatch2fst.cc b/tools/src/hfst-pmatch2fst.cc
index 31690fb..07c8ac6 100644
--- a/tools/src/hfst-pmatch2fst.cc
+++ b/tools/src/hfst-pmatch2fst.cc
@@ -190,79 +190,77 @@ process_stream(HfstOutputStream& outstream)
         std::cerr << "Building hfst-ol alphabet... ";
     }
     
-    if (definitions.size() > 1) {
-        
-        // A dummy transducer with an alphabet with all the symbols
-        HfstTransducer harmonizer(compilation_format);
-        
-        // First we need to collect a unified alphabet from all the transducers.
-        hfst::StringSet symbols_seen;
-        for (std::map<std::string, HfstTransducer *>::const_iterator it =
-                 definitions.begin(); it != definitions.end(); ++it) {
-            hfst::StringSet string_set = it->second->get_alphabet();
-            for (hfst::StringSet::const_iterator sym = string_set.begin();
-                 sym != string_set.end(); ++sym) {
-                if (symbols_seen.count(*sym) == 0) {
-                    harmonizer.disjunct(HfstTransducer(*sym, compilation_format));
-                    symbols_seen.insert(*sym);
-                }
+    // A dummy transducer with an alphabet with all the symbols
+    HfstTransducer harmonizer(compilation_format);
+    
+    // First we need to collect a unified alphabet from all the transducers.
+    hfst::StringSet symbols_seen;
+    for (std::map<std::string, HfstTransducer *>::const_iterator it =
+             definitions.begin(); it != definitions.end(); ++it) {
+        hfst::StringSet string_set = it->second->get_alphabet();
+        for (hfst::StringSet::const_iterator sym = string_set.begin();
+             sym != string_set.end(); ++sym) {
+            if (symbols_seen.count(*sym) == 0) {
+                harmonizer.disjunct(HfstTransducer(*sym, compilation_format));
+                symbols_seen.insert(*sym);
             }
         }
-        if (symbols_seen.size() == 0) {
-            // We don't recognise anything, go home early
-            std::cerr << program_name << ": Empty ruleset, nothing to write\n";
-            return EXIT_FAILURE;
-        }
-        
-        // Then we convert it...
-        harmonizer.convert(hfst::HFST_OLW_TYPE);
-        // Use these for naughty intermediate steps to make sure
-        // everything has the same alphabet
-        hfst::HfstBasicTransducer * intermediate_tmp;
-        hfst_ol::Transducer * harmonized_tmp;
-        hfst::HfstTransducer * output_tmp;
-        
-        if (verbose) {
-            double duration = (clock() - timer) /
-                (double) CLOCKS_PER_SEC;
-            timer = clock();
-            std::cerr << "built in " << duration << " seconds\n";
-            std::cerr << "Converting TOP... ";
-        }
+    }
+    if (symbols_seen.size() == 0) {
+        // We don't recognise anything, go home early
+        std::cerr << program_name << ": Empty ruleset, nothing to write\n";
+        return EXIT_FAILURE;
+    }
+    
+    // Then we convert it...
+    harmonizer.convert(hfst::HFST_OLW_TYPE);
+    // Use these for naughty intermediate steps to make sure
+    // everything has the same alphabet
+    hfst::HfstBasicTransducer * intermediate_tmp;
+    hfst_ol::Transducer * harmonized_tmp;
+    hfst::HfstTransducer * output_tmp;
+    
+    if (verbose) {
+        double duration = (clock() - timer) /
+            (double) CLOCKS_PER_SEC;
+        timer = clock();
+        std::cerr << "built in " << duration << " seconds\n";
+        std::cerr << "Converting TOP... ";
+    }
         
     // When done compiling everything, look for TOP and output it first.
-        if (definitions.count("TOP") == 1) {
-            intermediate_tmp = hfst::implementations::ConversionFunctions::
-                hfst_transducer_to_hfst_basic_transducer(*definitions["TOP"]);
-            harmonized_tmp = hfst::implementations::ConversionFunctions::
-                hfst_basic_transducer_to_hfst_ol(intermediate_tmp,
-                                                 true, // weighted
-                                                 "", // no special options
-                                                 &harmonizer); // harmonize with this
-            output_tmp = hfst::implementations::ConversionFunctions::
-                hfst_ol_to_hfst_transducer(harmonized_tmp);
-            output_tmp->set_name("TOP");
-            outstream << *output_tmp;
-            delete definitions["TOP"];
-            definitions.erase("TOP");
-            delete intermediate_tmp;
-            delete output_tmp;
-        }
+    if (definitions.count("TOP") == 1) {
+        intermediate_tmp = hfst::implementations::ConversionFunctions::
+            hfst_transducer_to_hfst_basic_transducer(*definitions["TOP"]);
+        harmonized_tmp = hfst::implementations::ConversionFunctions::
+            hfst_basic_transducer_to_hfst_ol(intermediate_tmp,
+                                             true, // weighted
+                                             "", // no special options
+                                             &harmonizer); // harmonize with this
+        output_tmp = hfst::implementations::ConversionFunctions::
+            hfst_ol_to_hfst_transducer(harmonized_tmp);
+        output_tmp->set_name("TOP");
+        outstream << *output_tmp;
+        delete definitions["TOP"];
+        definitions.erase("TOP");
+        delete intermediate_tmp;
+        delete output_tmp;
+
         if (verbose) {
             double duration = (clock() - timer) /
                 (double) CLOCKS_PER_SEC;
             timer = clock();
             std::cerr << "converted in " << duration << " seconds\n";
         }
-        
+    
         for (std::map<std::string, HfstTransducer *>::iterator it =
                  definitions.begin(); it != definitions.end(); ++it) {
             if (verbose) {
                 std::cerr << "Converting " << it->first << "... ";
                 timer = clock();
-        }
+            }
             intermediate_tmp = hfst::implementations::ConversionFunctions::
-            hfst_transducer_to_hfst_basic_transducer(*(it->second));
+                hfst_transducer_to_hfst_basic_transducer(*(it->second));
             harmonized_tmp = hfst::implementations::ConversionFunctions::
                 hfst_basic_transducer_to_hfst_ol(intermediate_tmp,
                                                  true, // weighted
@@ -280,33 +278,11 @@ process_stream(HfstOutputStream& outstream)
                     (double) CLOCKS_PER_SEC;
                 std::cerr << "converted in " << duration << " seconds\n";
             }
-    }
-    } else if (definitions.size() == 1) {
-        // A common case of only one top-level definition
-        if (verbose) {
-            double duration = (clock() - timer) /
-                (double) CLOCKS_PER_SEC;
-            timer = clock();
-            std::cerr << "built in " << duration << " seconds\n";
-            std::cerr << "Converting TOP... ";
         }
-        
-        std::map<std::string, HfstTransducer *>::iterator only_entry = definitions.begin();
-        only_entry->second->convert(hfst::HFST_OLW_TYPE);
-        
-        if (verbose) {
-            double duration = (clock() - timer) /
-                (double) CLOCKS_PER_SEC;
-            timer = clock();
-            std::cerr << "converted in " << duration << " seconds\n";
-        }
-        
-        outstream << *(only_entry->second);
     } else {
         std::cerr << program_name << ": Empty ruleset, nothing to write\n";
         return EXIT_FAILURE;
     }
-    
     return EXIT_SUCCESS;
 }
 
diff --git a/tools/src/hfst-proc/hfst-proc.cc b/tools/src/hfst-proc/hfst-proc.cc
index 7e112b9..c0d293a 100644
--- a/tools/src/hfst-proc/hfst-proc.cc
+++ b/tools/src/hfst-proc/hfst-proc.cc
@@ -12,7 +12,7 @@
 
 #ifdef _MSC_VER
 #  include "hfst-getopt.h"
-#  include "../hfst-string-conversions.h"
+#  include "hfst-string-conversions.h"
 #else
 #  include <getopt.h>
 #endif
diff --git a/tools/src/hfst-reweight.cc b/tools/src/hfst-reweight.cc
index a81bf3c..c21a72c 100644
--- a/tools/src/hfst-reweight.cc
+++ b/tools/src/hfst-reweight.cc
@@ -95,7 +95,7 @@ print_usage()
             "  -u, --upper-bound=UVAL     match weights less than UVAL\n"
             "  -I, --input-symbol=ISYM    match arcs with input symbol ISYM\n"
             "  -O, --output-symbol=OSYM   match arcs with output symbol OSYM\n"
-            "  -S, --symbol=SYM           match arcs havins symbol SYM\n"
+            "  -S, --symbol=SYM           match arcs with input or output symbol SYM or both\n"
             "  -e, --end-states-only      match end states only, no arcs\n"
             "  -A, --arcs-only            match arcs only, no end states\n"
             "  -T, --tsv-file=TFILE       read reweighting rules from TFILE\n"
@@ -107,7 +107,7 @@ print_usage()
             "If LVAL or UVAL are omitted, they default to minimum and maximum "
             "values of the weight structure.\n"
             "If ISYM, OSYM or SYM are omitted, they default to a value that "
-            "matches all arcs.\n\n"
+            "matches all arcs.\nOnly one ISYM, OSYM and SYM can be given.\n\n"
             "Float values are parsed with strtod(3) and integers strtoul(3).\n"
             "The functions allowed for FNAME are <cmath> float functions with "
             "parameter count of 1 and a matching return value:\n"
@@ -320,12 +320,18 @@ reweight(float w, const char* i, const char* o)
         {
           return w;
         }
-      else if ((symbol != 0) && ((strcmp(i, symbol) != 0) && 
+      if ((symbol != 0) && ((strcmp(i, symbol) != 0) && 
                             (strcmp(o, symbol) != 0) ) )
         {
           // symbol doesn't match, don't apply
           return w;
         }
+      if ((input_symbol != 0) && (output_symbol != 0) &&
+          (strcmp(i, input_symbol) != 0) && (strcmp(o, output_symbol) != 0))
+        {
+          // input doesn't match, don't apply
+          return w;
+        }
       else if ((input_symbol != 0) && (strcmp(i, input_symbol) != 0))
         {
           // input doesn't match, don't apply
diff --git a/tools/src/hfst-scanner.ll b/tools/src/hfst-scanner.ll
index 7ae8d1f..ae9e0b7 100644
--- a/tools/src/hfst-scanner.ll
+++ b/tools/src/hfst-scanner.ll
@@ -1,4 +1,5 @@
-%option 8Bit batch yylineno nounput noyywrap header-file="hfst-scanner.h"
+%option 8Bit batch yylineno nounput noyywrap 
+/*header-file="hfst-scanner.h"*/
 
 /* the "incl" state is used to pick up the name of an include file */
 %x incl
@@ -15,7 +16,13 @@
 #include <string.h>
 
 #include "HfstCompiler.h"
-#include "hfst-compiler.hh"
+
+#ifdef YACC_USE_PARSER_H_EXTENSION
+  #include "hfst-compiler.h"
+#else
+  #include "hfst-compiler.hh"
+#endif
+
 #include "HfstBasic.h"
 #include "HfstUtf8.h"
 #include "HfstTransducer.h"
diff --git a/tools/src/hfst-substitute.cc b/tools/src/hfst-substitute.cc
index 8cf5d77..7347e40 100644
--- a/tools/src/hfst-substitute.cc
+++ b/tools/src/hfst-substitute.cc
@@ -545,7 +545,6 @@ process_stream(HfstInputStream& instream)
 
   hfst::ImplementationType output_type = hfst::UNSPECIFIED_TYPE;
 
-  HfstTransducer* to_transducer = NULL;
   if (to_transducer_filename != NULL)
     {
       try {
diff --git a/tools/src/hfst-proc2.cc b/tools/src/hfst-tokenize.cc
similarity index 59%
rename from tools/src/hfst-proc2.cc
rename to tools/src/hfst-tokenize.cc
index 942ddcc..369b999 100644
--- a/tools/src/hfst-proc2.cc
+++ b/tools/src/hfst-tokenize.cc
@@ -1,4 +1,4 @@
-//! @file hfst-proc2.cc
+//! @file hfst-tokenize.cc
 //!
 //! @brief A demo of a replacement for hfst-proc using pmatch
 //!
@@ -44,16 +44,24 @@ using std::pair;
 #include "hfst-program-options.h"
 #include "hfst-tool-metadata.h"
 #include "implementations/optimized-lookup/pmatch.h"
+#include "parsers/pmatch_utils.h"
 #include "HfstExceptionDefs.h"
+#include "HfstDataTypes.h"
+#include "HfstInputStream.h"
+#include "implementations/ConvertTransducerFormat.h"
+
+using hfst::HfstTransducer;
 
 #include "inc/globals-common.h"
 #include "inc/globals-unary.h"
 
-bool blankline_separated = true;
-bool print_all = false;
-bool print_weights = false;
-bool tokenize_multichar = false;
+static bool blankline_separated = true;
+static bool print_all = false;
+static bool print_weights = false;
+static bool tokenize_multichar = false;
+static double time_cutoff = 0.0;
 std::string tokenizer_filename;
+static hfst::ImplementationType default_format = hfst::TROPICAL_OPENFST_TYPE;
 enum OutputFormat {
     tokenize,
     xerox,
@@ -75,16 +83,17 @@ print_usage()
             "\n", program_name);
     print_common_program_options(message_out);
     fprintf(message_out,
-            "  -n  --newline          Newline as input separator (default is blank line)\n"
-            "  -a  --print-all        Print nonmatching text\n"
-            "  -w  --print-weight     Print weights\n"
-            "  --tokenize-multichar   Tokenize multicharacter symbols\n"
-            "                         (by default only one utf-8 character is tokenized at a time"
-            "                         regardless of what is present in the alphabet)"
-            "  --segment              Segmenting / tokenization mode (default)\n"
-            "  --xerox                Xerox output\n"
-            "  --cg                   cg output\n"
-            "  --finnpos              FinnPos output\n");
+            "  -n, --newline            Newline as input separator (default is blank line)\n"
+            "  -a, --print-all          Print nonmatching text\n"
+            "  -w, --print-weight       Print weights\n"
+            "  -m, --tokenize-multichar Tokenize multicharacter symbols\n"
+            "                           (by default only one utf-8 character is tokenized at a time\n"
+            "                           regardless of what is present in the alphabet)\n"
+            "  -t, --time-cutoff=S      Limit search after having used S seconds per input\n"
+            "  -z, --segment            Segmenting / tokenization mode (default)\n"
+            "  -x, --xerox              Xerox output\n"
+            "  -c, --cg                 cg output\n"
+            "  -f, --finnpos            FinnPos output\n");
     fprintf(message_out, 
             "Use standard streams for input and output (for now).\n"
             "\n"
@@ -103,7 +112,7 @@ void print_no_output(std::string const & input, std::ostream & outstream)
     } else if (output_format == xerox) {
         outstream << input << "\t" << input << "+?";
     } else if (output_format == cg) {
-        outstream << "\"<>\"" << std::endl << input << "\t\"" << input << "\" ?";
+	    outstream << "\"<" << input << ">\"" << std::endl << "\t\"" << input << "\" ?";
     }
 //    std::cerr << "from print_no_output\n";
     outstream << "\n\n";
@@ -116,7 +125,7 @@ void print_nonmatching_sequence(std::string const & str, std::ostream & outstrea
     } else if (output_format == xerox) {
         outstream << str << "\t" << str << "+?";
     } else if (output_format == cg) {
-        outstream << "\"<>\"" << std::endl << str << "\t\"" << str << "\" ?";
+        outstream << "\"<" << str << ">\"" << std::endl << "\t\"" << str << "\" ?";
     } else if (output_format == finnpos) {
         outstream << str << "\t_\t_\t_\t_";
     }
@@ -124,6 +133,83 @@ void print_nonmatching_sequence(std::string const & str, std::ostream & outstrea
     outstream << "\n";
 }
 
+hfst_ol::PmatchContainer make_naive_tokenizer(HfstTransducer & dictionary)
+{
+    HfstTransducer * word_boundary = hfst::pmatch::PmatchUtilityTransducers::
+        make_latin1_whitespace_acceptor(default_format);
+    HfstTransducer * punctuation = hfst::pmatch::PmatchUtilityTransducers::
+        make_latin1_punct_acceptor(default_format);
+    word_boundary->disjunct(*punctuation);
+    HfstTransducer * others = hfst::pmatch::make_exc_list(word_boundary,
+                                                          default_format);
+    others->repeat_plus();
+    // make the default token less likely than any dictionary token
+    others->set_final_weights(std::numeric_limits<float>::max());
+    HfstTransducer * word_boundary_list = hfst::pmatch::make_list(
+        word_boundary, default_format);
+    // @BOUNDARY@ is pmatch's special input boundary marker
+    word_boundary_list->disjunct(HfstTransducer("@BOUNDARY@", default_format));
+    delete word_boundary; delete punctuation;
+    HfstTransducer * left_context = new HfstTransducer(
+        hfst::internal_epsilon, hfst::pmatch::LC_ENTRY_SYMBOL, default_format);
+    HfstTransducer * right_context = new HfstTransducer(
+        hfst::internal_epsilon, hfst::pmatch::RC_ENTRY_SYMBOL, default_format);
+    left_context->concatenate(*word_boundary_list);
+    right_context->concatenate(*word_boundary_list);
+    delete word_boundary_list;
+    HfstTransducer * left_context_exit = new HfstTransducer(
+        hfst::internal_epsilon, hfst::pmatch::LC_EXIT_SYMBOL, default_format);
+    HfstTransducer * right_context_exit = new HfstTransducer(
+        hfst::internal_epsilon, hfst::pmatch::RC_EXIT_SYMBOL, default_format);
+    left_context->concatenate(*left_context_exit);
+    right_context->concatenate(*right_context_exit);
+    delete left_context_exit; delete right_context_exit;
+    std::string dict_name = dictionary.get_name();
+    if (dict_name == "") {
+        dict_name = "unknown_pmatch_tokenized_dict";
+        dictionary.set_name(dict_name);
+    }
+    HfstTransducer dict_ins_arc(hfst::pmatch::get_Ins_transition(dict_name.c_str()), default_format);
+    // We now make the center of the tokenizer
+    others->disjunct(dict_ins_arc);
+    // And combine it with the context conditions
+    left_context->concatenate(*others);
+    left_context->concatenate(*right_context);
+    delete others; delete right_context;
+    // Because there are context conditions we need delimiter markers
+    HfstTransducer * tokenizer = hfst::pmatch::add_pmatch_delimiters(left_context);
+    tokenizer->set_name("TOP");
+    tokenizer->minimize();
+    // Convert the dictionary to olw if it wasn't already
+    dictionary.convert(hfst::HFST_OLW_TYPE);
+    // Get the alphabets
+    std::set<std::string> dict_syms = dictionary.get_alphabet();
+    std::set<std::string> tokenizer_syms = tokenizer->get_alphabet();
+    std::vector<std::string> tokenizer_minus_dict;
+    // What to add to the dictionary
+    std::set_difference(tokenizer_syms.begin(), tokenizer_syms.end(),
+                        dict_syms.begin(), dict_syms.end(),
+                        std::inserter(tokenizer_minus_dict, tokenizer_minus_dict.begin()));
+    for (std::vector<std::string>::const_iterator it = tokenizer_minus_dict.begin();
+         it != tokenizer_minus_dict.end(); ++it) {
+        dictionary.insert_to_alphabet(*it);
+    }
+    hfst::HfstBasicTransducer * tokenizer_basic = hfst::implementations::ConversionFunctions::
+        hfst_transducer_to_hfst_basic_transducer(*tokenizer);
+    hfst_ol::Transducer * tokenizer_ol = hfst::implementations::ConversionFunctions::
+        hfst_basic_transducer_to_hfst_ol(tokenizer_basic,
+                                         true, // weighted
+                                         "", // no special options
+                                         &dictionary); // harmonize with the dictionary
+    delete tokenizer_basic;
+    hfst_ol::PmatchContainer retval(tokenizer_ol);
+    hfst_ol::Transducer * dict_backend = hfst::implementations::ConversionFunctions::
+        hfst_transducer_to_hfst_ol(&dictionary);
+    retval.add_rtn(dict_backend, dict_name);
+    delete tokenizer_ol;
+    return retval;
+}
+
 void print_location_vector(LocationVector const & locations, std::ostream & outstream)
 {
     if (output_format == tokenize && locations.size() != 0) {
@@ -220,7 +306,7 @@ void match_and_print(hfst_ol::PmatchContainer & container,
         // Remove final newline
         input_text.erase(input_text.size() -1, 1);
     }
-    LocationVectorVector locations = container.locate(input_text);
+    LocationVectorVector locations = container.locate(input_text, time_cutoff);
     if (locations.size() == 0 && print_all) {
         print_no_output(input_text, outstream);
     }
@@ -282,14 +368,15 @@ int parse_options(int argc, char** argv)
                 {"print-all", no_argument, 0, 'a'},
                 {"print-weights", no_argument, 0, 'w'},
                 {"tokenize-multichar", no_argument, 0, 'm'},
-                {"segment", no_argument, 0, 't'},
+                {"time-cutoff", required_argument, 0, 't'},
+                {"segment", no_argument, 0, 'z'},
                 {"xerox", no_argument, 0, 'x'},
                 {"cg", no_argument, 0, 'c'},
                 {"finnpos", no_argument, 0, 'f'},
                 {0,0,0,0}
             };
         int option_index = 0;
-        char c = getopt_long(argc, argv, HFST_GETOPT_COMMON_SHORT "nawtxcf",
+        char c = getopt_long(argc, argv, HFST_GETOPT_COMMON_SHORT "nawmt:zxcf",
                              long_options, &option_index);
         if (-1 == c)
         {
@@ -313,6 +400,14 @@ int parse_options(int argc, char** argv)
             tokenize_multichar = true;
             break;
         case 't':
+            time_cutoff = atof(optarg);
+            if (time_cutoff < 0.0)
+            {
+                std::cerr << "Invalid argument for --time-cutoff\n";
+                return EXIT_FAILURE;
+            }
+            break;
+        case 'z':
             output_format = tokenize;
             break;
         case 'x':
@@ -362,9 +457,50 @@ int parse_options(int argc, char** argv)
     return EXIT_FAILURE;
 }
 
+bool first_transducer_is_called_TOP(std::istream & f)
+{
+    const char* header1 = "HFST";
+    unsigned int header_loc = 0;
+    int c;
+    while(header_loc < strlen(header1) + 1) {
+        c = f.get();
+        ++header_loc;
+        if(c != header1[header_loc]) {
+            return false;
+        }
+    }
+    if(header_loc == strlen(header1) + 1) {
+        unsigned short remaining_header_len;
+        f.read((char*) &remaining_header_len, sizeof(remaining_header_len));
+        if (f.get() != '\0') {
+            return false;
+        }
+        char * headervalue = new char[remaining_header_len];
+        f.read(headervalue, remaining_header_len);
+        if (headervalue[remaining_header_len - 1] != '\0') {
+            delete[] headervalue;
+            return false;
+        }
+        int i = 0;
+        while (i < remaining_header_len) {
+            if (strcmp(headervalue + i, "name") == 0) {
+                bool retval = strcmp(headervalue + i + strlen("name") + 1, "TOP") == 0;
+                delete[] headervalue;
+                return retval;
+            }
+            while (headervalue[i] != '\0') {
+                ++i;
+            }
+            ++i;
+        }
+        delete[] headervalue;
+    }
+    return false;
+}
+
 int main(int argc, char ** argv)
 {
-    hfst_set_program_name(argv[0], "0.1", "HfstProc2");
+    hfst_set_program_name(argv[0], "0.1", "HfstTokenize");
     hfst_setlocale();
     int retval = parse_options(argc, argv);
     if (retval != EXIT_CONTINUE) {
@@ -377,15 +513,28 @@ int main(int argc, char ** argv)
         return EXIT_FAILURE;
     }
     try {
-        hfst_ol::PmatchContainer container(instream);
-        container.set_verbose(verbose);
-        container.set_single_codepoint_tokenization(!tokenize_multichar);
-        return process_input(container, std::cout);
+        if (first_transducer_is_called_TOP(instream)) {
+            instream.seekg(0);
+            instream.clear();
+            hfst_ol::PmatchContainer container(instream);
+            container.set_verbose(verbose);
+            container.set_single_codepoint_tokenization(!tokenize_multichar);
+            return process_input(container, std::cout);
+        } else {
+            instream.close();
+            hfst::HfstInputStream is(tokenizer_filename);
+            HfstTransducer dictionary(is);
+            hfst_ol::PmatchContainer container = make_naive_tokenizer(dictionary);
+            container.set_verbose(verbose);
+            container.set_single_codepoint_tokenization(!tokenize_multichar);
+            return process_input(container, std::cout);
+        }
     } catch(HfstException & e) {
         std::cerr << "The archive in " << tokenizer_filename << " doesn't look right."
             "\nDid you make it with hfst-pmatch2fst or make sure it's in weighted optimized-lookup format?\n";
         return 1;
     }
+        
 //     if (outfile != stdout) {
 //         std::filebuf fb;
 // fb.open(outfilename, std::ios::out);
diff --git a/tools/src/hfst-twolc/src/Makefile.am b/tools/src/hfst-twolc/src/Makefile.am
index be8c73d..8ba7698 100644
--- a/tools/src/hfst-twolc/src/Makefile.am
+++ b/tools/src/hfst-twolc/src/Makefile.am
@@ -91,7 +91,13 @@ hfst_twolc_system_SOURCES=hfst-twolc-system.cc
 # some systems might require all these
 BUILT_SOURCES=htwolcpre1.cc htwolcpre2.cc htwolcpre3.cc
 
-CLEANFILES=htwolcpre1.hh htwolcpre2.hh htwolcpre3.hh \
+if YACC_USE_PARSER_H_EXTENSION
+  HEADER=h
+else
+  HEADER=hh
+endif
+
+CLEANFILES=htwolcpre1.$(HEADER) htwolcpre2.$(HEADER) htwolcpre3.$(HEADER) \
 	   htwolcpre1.cc htwolcpre2.cc htwolcpre3.cc
 
 hfst-twolc$(EXEEXT): hfst-twolc.sh
@@ -105,11 +111,11 @@ hfst-twolc-loc$(EXEEXT): hfst-twolc.sh
 clean-local:
 	-rm -f hfst-twolc$(EXEEXT) hfst-twolc-loc$(EXEEXT) hfst-twolc-system$(EXEEXT)
 
-CLEANFILES+=htwolcpre1.hh htwolcpre2.hh htwolcpre3.hh
+CLEANFILES+=htwolcpre1.$(HEADER) htwolcpre2.$(HEADER) htwolcpre3.$(HEADER)
 
-scanner1.ll: htwolcpre1.hh
-scanner2.ll: htwolcpre2.hh
-scanner3.ll: htwolcpre3.hh
+scanner1.ll: htwolcpre1.$(HEADER)
+scanner2.ll: htwolcpre2.$(HEADER)
+scanner3.ll: htwolcpre3.$(HEADER)
 
 HFST_TWOLC_TESTS=string_manipulation InputReader Alphabet \
                  OtherSymbolTransducer Rule LeftArrowRule RightArrowRule \
@@ -211,6 +217,6 @@ TwolCGrammar_CXXFLAGS=-DTEST_TWOL_C_GRAMMAR
 
 TESTS=$(HFST_TWOLC_TESTS)
 
-EXTRA_DIST += htwolcpre1.hh htwolcpre2.hh htwolcpre3.hh \
+EXTRA_DIST += htwolcpre1.$(HEADER) htwolcpre2.$(HEADER) htwolcpre3.$(HEADER) \
 	   htwolcpre1.cc htwolcpre2.cc htwolcpre3.cc \
 	   scanner1.cc scanner2.cc scanner3.cc
diff --git a/tools/src/hfst-twolc/src/scanner1.ll b/tools/src/hfst-twolc/src/scanner1.ll
index 674c9c2..9e58bce 100644
--- a/tools/src/hfst-twolc/src/scanner1.ll
+++ b/tools/src/hfst-twolc/src/scanner1.ll
@@ -19,7 +19,11 @@
 #endif
 
   // The parser. Supplies flex with its symbol tables.
+#ifdef YACC_USE_PARSER_H_EXTENSION
+  #include "htwolcpre1.h" 
+#else
   #include "htwolcpre1.hh" 
+#endif
 
   // Functions for manipulating strings.
   #include "string_src/string_manipulation.h"
diff --git a/tools/src/hfst-twolc/src/scanner2.ll b/tools/src/hfst-twolc/src/scanner2.ll
index bfc41b9..254f055 100644
--- a/tools/src/hfst-twolc/src/scanner2.ll
+++ b/tools/src/hfst-twolc/src/scanner2.ll
@@ -20,7 +20,11 @@
 
 
   // The parser. Supplies flex with its symbol tables.
-  #include "htwolcpre2.hh" 
+#ifdef YACC_USE_PARSER_H_EXTENSION
+  #include "htwolcpre2.h"
+#else
+  #include "htwolcpre2.hh"
+#endif
 
   // input_defs.h declares the inputHandler, which is
   // an object that overrides flex' default input reading.
diff --git a/tools/src/hfst-twolc/src/scanner3.ll b/tools/src/hfst-twolc/src/scanner3.ll
index d30ee32..cfeeca9 100644
--- a/tools/src/hfst-twolc/src/scanner3.ll
+++ b/tools/src/hfst-twolc/src/scanner3.ll
@@ -26,7 +26,12 @@
 
 #include "rule_src/TwolCGrammar.h"
 
-#include "htwolcpre3.hh"
+#ifdef YACC_USE_PARSER_H_EXTENSION
+  #include "htwolcpre3.h"
+#else
+  #include "htwolcpre3.hh"
+#endif
+
   /*
 #include "io_src/InputReader.h"
 
diff --git a/tools/src/parsers/hfst-xfst.cc b/tools/src/parsers/hfst-xfst.cc
index e9f3cb3..0ae48bc 100644
--- a/tools/src/parsers/hfst-xfst.cc
+++ b/tools/src/parsers/hfst-xfst.cc
@@ -25,7 +25,7 @@
   #include <windows.h>
 #endif
 
-#include "../hfst-string-conversions.h"
+#include "hfst-string-conversions.h"
 
 #ifdef HAVE_READLINE
   #include <readline/readline.h>
diff --git a/tools/src/parsers/test/apply_down.xfst b/tools/src/parsers/test/apply_down.xfst
index 0a78a39..7090093 100644
--- a/tools/src/parsers/test/apply_down.xfst
+++ b/tools/src/parsers/test/apply_down.xfst
@@ -1,11 +1,11 @@
 regex [ {foo}:{baz} | {bar}:{baz} ];
-apply down
+apply up
 baz
 foo
 bar
 <ctrl-d>
 set print-space ON
-apply down
+apply up
 baz
 foo
 bar
diff --git a/tools/src/parsers/test/apply_up.xfst b/tools/src/parsers/test/apply_up.xfst
index b08f663..9f8a91d 100644
--- a/tools/src/parsers/test/apply_up.xfst
+++ b/tools/src/parsers/test/apply_up.xfst
@@ -1,28 +1,28 @@
 regex [ {foo}:{bar} | {foo}:{baz} ];
-apply up
+apply down
 foo
 bar
 baz
 <ctrl-d>
 set print-space ON
-apply up
+apply down
 foo
 bar
 baz
 <ctrl-d>
 regex "@P.N.N@" foo "@U.N.N@";
-apply up
+apply down
 foo
 bar
 <ctrl-d>
 set show-flags ON
-apply up
+apply down
 foo
 bar
 <ctrl-d>
 ! test longest matching in tokenization
 regex {foo}:{bar} | foo:bar;
-apply up
+apply down
 foo
 <ctrl-d>
 exit
diff --git a/tools/src/parsers/test/compile_replace_1.xfst b/tools/src/parsers/test/compile_replace_1.xfst
index 0d88fbd..2a2dae8 100644
--- a/tools/src/parsers/test/compile_replace_1.xfst
+++ b/tools/src/parsers/test/compile_replace_1.xfst
@@ -1,12 +1,12 @@
 regex "^[":m a "+":t "^]":c 0:h ;
 compile-replace upper
-apply up a
-apply up aa
-apply up aaa
-apply up aaaaaaaaa
-apply up b
-apply up ab
-apply up ba
-apply up abba
+apply down a
+apply down aa
+apply down aaa
+apply down aaaaaaaaa
+apply down b
+apply down ab
+apply down ba
+apply down abba
 
 
diff --git a/tools/src/parsers/test/compile_replace_2.xfst b/tools/src/parsers/test/compile_replace_2.xfst
index ee916d5..94a3dc2 100644
--- a/tools/src/parsers/test/compile_replace_2.xfst
+++ b/tools/src/parsers/test/compile_replace_2.xfst
@@ -1,10 +1,10 @@
 regex m:"^[" a t:"+" c:"^]" h:0 ;
 compile-replace lower
-apply down a
-apply down aa
-apply down aaa
-apply down aaaaaaaaa
-apply down b
-apply down ab
-apply down ba
-apply down abba
+apply up a
+apply up aa
+apply up aaa
+apply up aaaaaaaaa
+apply up b
+apply up ab
+apply up ba
+apply up abba
diff --git a/tools/src/parsers/test/compile_replace_3.xfst b/tools/src/parsers/test/compile_replace_3.xfst
index 0eb6ea5..ad0aa76 100644
--- a/tools/src/parsers/test/compile_replace_3.xfst
+++ b/tools/src/parsers/test/compile_replace_3.xfst
@@ -1,16 +1,5 @@
 regex "^[" a "+" "^]" ;
 compile-replace upper
-apply up a
-apply up aa
-apply up aaa
-apply up aaaaaaaaa
-apply up b
-apply up ab
-apply up ba
-apply up abba
-echo --
-regex "^[" a "+" "^]" ;
-compile-replace lower
 apply down a
 apply down aa
 apply down aaa
@@ -19,3 +8,14 @@ apply down b
 apply down ab
 apply down ba
 apply down abba
+echo --
+regex "^[" a "+" "^]" ;
+compile-replace lower
+apply up a
+apply up aa
+apply up aaa
+apply up aaaaaaaaa
+apply up b
+apply up ab
+apply up ba
+apply up abba
diff --git a/tools/src/parsers/test/contains.xfst b/tools/src/parsers/test/contains.xfst
index 138356b..cb27e49 100644
--- a/tools/src/parsers/test/contains.xfst
+++ b/tools/src/parsers/test/contains.xfst
@@ -4,7 +4,7 @@ set print-weight ON
 # weights are ignored
 define foo [a b::1 c::2] ;
 regex $[foo] ;
-apply up
+apply down
 abd
 bcd
 dabc
@@ -13,7 +13,7 @@ dabcabcd
 echo --
 
 regex $[a|[a a]];
-apply up
+apply down
 b
 ba
 aab
diff --git a/tools/src/parsers/test/contains_once.xfst b/tools/src/parsers/test/contains_once.xfst
index fbd8f55..352254b 100644
--- a/tools/src/parsers/test/contains_once.xfst
+++ b/tools/src/parsers/test/contains_once.xfst
@@ -3,7 +3,7 @@ set print-weight ON
 
 define foo [a b::1 c::2];
 regex $.[foo];
-apply up
+apply down
 ab
 bc
 abc
@@ -15,7 +15,7 @@ echo --
 
 # containment uses shortest matching
 regex $.[a::3|[a a::1]];
-apply up
+apply down
 b
 a
 baa
diff --git a/tools/src/parsers/test/contains_once_optional.xfst b/tools/src/parsers/test/contains_once_optional.xfst
index 6c5efe8..5eee591 100644
--- a/tools/src/parsers/test/contains_once_optional.xfst
+++ b/tools/src/parsers/test/contains_once_optional.xfst
@@ -3,7 +3,7 @@ set print-weight ON
 
 define foo [a b::1 c::2];
 regex $?[foo];
-apply up
+apply down
 foo
 bar
 abc
@@ -15,7 +15,7 @@ echo --
 
 # containment uses shortest matching
 regex $?[a::3|[a a::1]];
-apply up
+apply down
 b
 a
 baa
diff --git a/tools/src/parsers/test/contains_with_weight.xfst b/tools/src/parsers/test/contains_with_weight.xfst
index 7015340..12b1d16 100644
--- a/tools/src/parsers/test/contains_with_weight.xfst
+++ b/tools/src/parsers/test/contains_with_weight.xfst
@@ -3,7 +3,7 @@ set print-weight ON
 
 define foo [a b c];
 regex $::1[foo];
-apply up
+apply down
 bar
 ab
 abc
@@ -14,7 +14,7 @@ echo --
 
 # containment uses shortest matching
 regex $::1[a|[a a]];
-apply up
+apply down
 b
 ba
 aba
@@ -24,7 +24,7 @@ echo --
 
 # negative weight
 regex $::-1[a];
-apply up
+apply down
 foo
 bar
 fooa
diff --git a/tools/src/parsers/test/replace_test_1.xfst b/tools/src/parsers/test/replace_test_1.xfst
index 1b04ea8..6a2b3bf 100644
--- a/tools/src/parsers/test/replace_test_1.xfst
+++ b/tools/src/parsers/test/replace_test_1.xfst
@@ -2,6 +2,6 @@ set precision 1
 set print-weight ON
 
 regex a::1 -> b::2 || ? - a _ ;
-apply up maa
+apply down maa
 # mba
 
diff --git a/tools/src/parsers/test/replace_test_10.xfst b/tools/src/parsers/test/replace_test_10.xfst
index 89b6ace..1453df9 100644
--- a/tools/src/parsers/test/replace_test_10.xfst
+++ b/tools/src/parsers/test/replace_test_10.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex a::1 @-> x::2 ;
-apply up aaana
+apply down aaana
diff --git a/tools/src/parsers/test/replace_test_11.xfst b/tools/src/parsers/test/replace_test_11.xfst
index 4c7495d..8526bcb 100644
--- a/tools/src/parsers/test/replace_test_11.xfst
+++ b/tools/src/parsers/test/replace_test_11.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex a::1 @> x::2 ;
-apply up aaana
+apply down aaana
diff --git a/tools/src/parsers/test/replace_test_12.xfst b/tools/src/parsers/test/replace_test_12.xfst
index 649aab1..595c378 100644
--- a/tools/src/parsers/test/replace_test_12.xfst
+++ b/tools/src/parsers/test/replace_test_12.xfst
@@ -3,4 +3,4 @@ set print-weight ON
 
 # this doesn't work in foma or xfst either
 regex ?::1 -> x ;
-apply up s
+apply down s
diff --git a/tools/src/parsers/test/replace_test_13.xfst b/tools/src/parsers/test/replace_test_13.xfst
index 364d3d7..fd58b40 100644
--- a/tools/src/parsers/test/replace_test_13.xfst
+++ b/tools/src/parsers/test/replace_test_13.xfst
@@ -2,6 +2,6 @@ set precision 1
 set print-weight ON
 
 regex a -> b::1 || .#. _ c ;
-apply up .#.ac
-apply up ac
+apply down .#.ac
+apply down ac
 
diff --git a/tools/src/parsers/test/replace_test_14.xfst b/tools/src/parsers/test/replace_test_14.xfst
index bdcf685..b0b4492 100644
--- a/tools/src/parsers/test/replace_test_14.xfst
+++ b/tools/src/parsers/test/replace_test_14.xfst
@@ -2,5 +2,5 @@ set precision 1
 set print-weight ON
 
 regex [a::1]+ (->) x || a _ a ;
-apply up aaaa
+apply down aaaa
 
diff --git a/tools/src/parsers/test/replace_test_15.xfst b/tools/src/parsers/test/replace_test_15.xfst
index 6f0c792..8908037 100644
--- a/tools/src/parsers/test/replace_test_15.xfst
+++ b/tools/src/parsers/test/replace_test_15.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex [a::1]+ (->) x // a _ a ;
-apply up aaaa
+apply down aaaa
diff --git a/tools/src/parsers/test/replace_test_16.xfst b/tools/src/parsers/test/replace_test_16.xfst
index f6638dc..073777c 100644
--- a/tools/src/parsers/test/replace_test_16.xfst
+++ b/tools/src/parsers/test/replace_test_16.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex [a::1]+ (->) x \\ a _ a ;
-apply up aaaa
+apply down aaaa
diff --git a/tools/src/parsers/test/replace_test_17.xfst b/tools/src/parsers/test/replace_test_17.xfst
index 8561455..017ab72 100644
--- a/tools/src/parsers/test/replace_test_17.xfst
+++ b/tools/src/parsers/test/replace_test_17.xfst
@@ -3,4 +3,4 @@ set print-weight ON
 
 
 regex [a::1]+ (->) x \/ a _ a ;
-apply up aaaa
+apply down aaaa
diff --git a/tools/src/parsers/test/replace_test_18.xfst b/tools/src/parsers/test/replace_test_18.xfst
index b1465f2..2e9a060 100644
--- a/tools/src/parsers/test/replace_test_18.xfst
+++ b/tools/src/parsers/test/replace_test_18.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex [a::1]+ -> x || a _ a ;
-apply up aaaa
+apply down aaaa
diff --git a/tools/src/parsers/test/replace_test_19.xfst b/tools/src/parsers/test/replace_test_19.xfst
index e2ceedb..fee76bc 100644
--- a/tools/src/parsers/test/replace_test_19.xfst
+++ b/tools/src/parsers/test/replace_test_19.xfst
@@ -2,6 +2,6 @@ set precision 1
 set print-weight ON
 
 regex [a::1]+ -> x // a _ a ;
-apply up aaaa
+apply down aaaa
 
 
diff --git a/tools/src/parsers/test/replace_test_20.xfst b/tools/src/parsers/test/replace_test_20.xfst
index d7a6233..3591c97 100644
--- a/tools/src/parsers/test/replace_test_20.xfst
+++ b/tools/src/parsers/test/replace_test_20.xfst
@@ -2,5 +2,5 @@ set precision 1
 set print-weight ON
 
 regex [a::1]+ -> x \\ a _ a ;
-apply up aaaa
+apply down aaaa
 
diff --git a/tools/src/parsers/test/replace_test_21.xfst b/tools/src/parsers/test/replace_test_21.xfst
index 525aab0..65f274f 100644
--- a/tools/src/parsers/test/replace_test_21.xfst
+++ b/tools/src/parsers/test/replace_test_21.xfst
@@ -2,5 +2,5 @@ set precision 1
 set print-weight ON
 
 regex [a::1]+ -> x \/ a _ a ;
-apply up aaaa
+apply down aaaa
 
diff --git a/tools/src/parsers/test/replace_test_22.xfst b/tools/src/parsers/test/replace_test_22.xfst
index f715054..c573a0b 100644
--- a/tools/src/parsers/test/replace_test_22.xfst
+++ b/tools/src/parsers/test/replace_test_22.xfst
@@ -3,4 +3,4 @@ set print-weight ON
 
 regex [a::1]+ @-> x || a _ a ;
 
-apply up aaaa
+apply down aaaa
diff --git a/tools/src/parsers/test/replace_test_23.xfst b/tools/src/parsers/test/replace_test_23.xfst
index a9a7473..6602e65 100644
--- a/tools/src/parsers/test/replace_test_23.xfst
+++ b/tools/src/parsers/test/replace_test_23.xfst
@@ -3,4 +3,4 @@ set print-weight ON
 
 regex [a::1]+ @> x || a _ a ;
 
-apply up aaaa
+apply down aaaa
diff --git a/tools/src/parsers/test/replace_test_24.xfst b/tools/src/parsers/test/replace_test_24.xfst
index a139bfe..a9e2c32 100644
--- a/tools/src/parsers/test/replace_test_24.xfst
+++ b/tools/src/parsers/test/replace_test_24.xfst
@@ -3,20 +3,20 @@ set print-weight ON
 
 regex [a::1]+ @-> x::1 || a _ a ;
 
-apply up aaaa
+apply down aaaa
 # axa
-apply up aaaaabaaaa
+apply down aaaaabaaaa
 # axabaxa
-apply up aaaaabaaaacaaaa
+apply down aaaaabaaaacaaaa
 # axabaxacaxa
 
 echo --
 
 regex [a::1]+ @> x::1 || a _ a ;
 
-apply up aaaa
+apply down aaaa
 # axabaxa
-apply up aaaaabaaaa
+apply down aaaaabaaaa
 # axxxabaxxa
-apply up aaaaabaaaacaaaa
+apply down aaaaabaaaacaaaa
 # axxxabaxxacaxxa
diff --git a/tools/src/parsers/test/replace_test_25.xfst b/tools/src/parsers/test/replace_test_25.xfst
index f7bd668..270a99a 100644
--- a/tools/src/parsers/test/replace_test_25.xfst
+++ b/tools/src/parsers/test/replace_test_25.xfst
@@ -2,20 +2,20 @@ set precision 1
 set print-weight ON
 
 regex [[a::1]+ [b::2]+] | [[b::2]+ [a::1]+] @-> x ;
-apply up aabbaa
+apply down aabbaa
 # xaa
 echo --
 
 regex [[a::1]+ [b::2]+] | [[b::2]+ [a::1]+] @> x ;
-apply up aabbaa
+apply down aabbaa
 # xxa
 echo --
 
 regex [[a::1]+ [b::2]+] | [[b::2]+ [a::1]+] ->@ x ;
-apply up aabbaa
+apply down aabbaa
 # aax
 echo --
 
 regex [[a::1]+ [b::2]+] | [[b::2]+ [a::1]+] >@ x ;
-apply up aabbaa
+apply down aabbaa
 # axx
diff --git a/tools/src/parsers/test/replace_test_26.xfst b/tools/src/parsers/test/replace_test_26.xfst
index 3146f5a..0fc4a50 100644
--- a/tools/src/parsers/test/replace_test_26.xfst
+++ b/tools/src/parsers/test/replace_test_26.xfst
@@ -3,5 +3,5 @@ set print-weight ON
 
 regex [ [a::1]+ [b::2]+ | [b::2]+ [a::1]+ ] -> x ;
 
-apply up aabbaa
+apply down aabbaa
 
diff --git a/tools/src/parsers/test/replace_test_27.xfst b/tools/src/parsers/test/replace_test_27.xfst
index 6915248..8213593 100644
--- a/tools/src/parsers/test/replace_test_27.xfst
+++ b/tools/src/parsers/test/replace_test_27.xfst
@@ -2,16 +2,16 @@ set precision 1
 set print-weight ON
 
 regex [[[a::1]+ [b::2]+]|[[b::2]+ [a::1]+]] @-> x ;
-apply up aabbaa
+apply down aabbaa
 echo --
 
 regex [[[a::1]+ [b::2]+]|[[b::2]+ [a::1]+]] ->@ x ;
-apply up aabbaa
+apply down aabbaa
 echo --
 
 regex [[[a::1]+ [b::2]+]|[[b::2]+ [a::1]+]] @> x ;
-apply up aabbaa
+apply down aabbaa
 echo --
 
 regex [[[a::1]+ [b::2]+]|[[b::2]+ [a::1]+]] >@ x ;
-apply up aabbaa
+apply down aabbaa
diff --git a/tools/src/parsers/test/replace_test_28.xfst b/tools/src/parsers/test/replace_test_28.xfst
index f2668e4..91752c8 100644
--- a/tools/src/parsers/test/replace_test_28.xfst
+++ b/tools/src/parsers/test/replace_test_28.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex [ [a::1]+ [b::2]+ | [b::2]+ [a::1]+ ] @-> x \/ _ x ;
-apply up aabbaax
+apply down aabbaax
diff --git a/tools/src/parsers/test/replace_test_29.xfst b/tools/src/parsers/test/replace_test_29.xfst
index 3735ffd..5f167e7 100644
--- a/tools/src/parsers/test/replace_test_29.xfst
+++ b/tools/src/parsers/test/replace_test_29.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex [a::1]+ @-> x::1 || c _ ;
-apply up caav
+apply down caav
diff --git a/tools/src/parsers/test/replace_test_30.xfst b/tools/src/parsers/test/replace_test_30.xfst
index 4590dad..8f9d1f0 100644
--- a/tools/src/parsers/test/replace_test_30.xfst
+++ b/tools/src/parsers/test/replace_test_30.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex ? @-> a::1 ... b::2 ;
-apply up bb
+apply down bb
diff --git a/tools/src/parsers/test/replace_test_31.xfst b/tools/src/parsers/test/replace_test_31.xfst
index 4420a77..e4b83d5 100644
--- a/tools/src/parsers/test/replace_test_31.xfst
+++ b/tools/src/parsers/test/replace_test_31.xfst
@@ -2,5 +2,5 @@ set precision 1
 set print-weight ON
 
 regex a::1 (->) b::1 ||  x _ x ;
-apply up xaxax
+apply down xaxax
 
diff --git a/tools/src/parsers/test/replace_test_32.xfst b/tools/src/parsers/test/replace_test_32.xfst
index af9b857..1809116 100644
--- a/tools/src/parsers/test/replace_test_32.xfst
+++ b/tools/src/parsers/test/replace_test_32.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex a b (->) b::1 || x _ y , y _ z ;
-apply up axabyabz
+apply down axabyabz
diff --git a/tools/src/parsers/test/replace_test_33.xfst b/tools/src/parsers/test/replace_test_33.xfst
index 04f0531..6ca1d09 100644
--- a/tools/src/parsers/test/replace_test_33.xfst
+++ b/tools/src/parsers/test/replace_test_33.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex a+ (->) x::1  || x x _ y y , y _ x ;
-apply up axxayyaax
+apply down axxayyaax
diff --git a/tools/src/parsers/test/replace_test_34.xfst b/tools/src/parsers/test/replace_test_34.xfst
index ca6f65b..f553bb4 100644
--- a/tools/src/parsers/test/replace_test_34.xfst
+++ b/tools/src/parsers/test/replace_test_34.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex a (->) b::1 ;
-apply up xaxax
+apply down xaxax
diff --git a/tools/src/parsers/test/replace_test_35.xfst b/tools/src/parsers/test/replace_test_35.xfst
index ab1a2af..f459fb6 100644
--- a/tools/src/parsers/test/replace_test_35.xfst
+++ b/tools/src/parsers/test/replace_test_35.xfst
@@ -2,17 +2,17 @@ set precision 1
 set print-weight ON
 
 regex b -> a::1  || _a ;
-apply up bbba
+apply down bbba
 echo --
 
 regex b -> a::1  \\ _a ;
-apply up bbba
+apply down bbba
 echo --
 
 regex b -> a::1  // _a ;
-apply up bbba
+apply down bbba
 echo --
 
 regex b -> a::1  \/ _a ;
-apply up bbba
+apply down bbba
 
diff --git a/tools/src/parsers/test/replace_test_36.xfst b/tools/src/parsers/test/replace_test_36.xfst
index 2c8c628..84d0ef2 100644
--- a/tools/src/parsers/test/replace_test_36.xfst
+++ b/tools/src/parsers/test/replace_test_36.xfst
@@ -2,17 +2,17 @@ set precision 1
 set print-weight ON
 
 regex b -> a::1  || a _ ;
-apply up abbb
+apply down abbb
 echo --
 
 regex b -> a::1  \\ a _ ;
-apply up abbb
+apply down abbb
 echo --
 
 regex b -> a::1  // a _ ;
-apply up abbb
+apply down abbb
 echo --
 
 regex b -> a::1  \/ a _ ;
-apply up abbb
+apply down abbb
 
diff --git a/tools/src/parsers/test/replace_test_37.xfst b/tools/src/parsers/test/replace_test_37.xfst
index 2d59727..2511840 100644
--- a/tools/src/parsers/test/replace_test_37.xfst
+++ b/tools/src/parsers/test/replace_test_37.xfst
@@ -2,32 +2,32 @@ set precision 1
 set print-weight ON
 
 regex a b -> x::1 || a b _ a ;
-apply up abababa
+apply down abababa
 echo --
 
 regex a b -> x::1 \\ a b _ a ;
-apply up abababa
+apply down abababa
 echo --
 
 regex a b -> x::1 // a b _ a ;
-apply up abababa
+apply down abababa
 echo --
 
 regex a b -> x::1 \/ a b _ a ;
-apply up abababa
+apply down abababa
 echo --
 
 regex a b (->) x::1 || a b _ a ;
-apply up abababa
+apply down abababa
 echo --
 
 regex a b (->) x::1 \\ a b _ a ;
-apply up abababa
+apply down abababa
 echo --
 
 regex a b (->) x::1 // a b _ a ;
-apply up abababa
+apply down abababa
 echo --
 
 regex a b (->) x::1 \/ a b _ a ;
-apply up abababa
+apply down abababa
diff --git a/tools/src/parsers/test/replace_test_38.xfst b/tools/src/parsers/test/replace_test_38.xfst
index be1a7a5..1c17229 100644
--- a/tools/src/parsers/test/replace_test_38.xfst
+++ b/tools/src/parsers/test/replace_test_38.xfst
@@ -2,5 +2,5 @@ set precision 1
 set print-weight ON
 
 regex [a|b] -> "["::1 ... "]"::1 ;
-apply up mba
+apply down mba
 
diff --git a/tools/src/parsers/test/replace_test_39.xfst b/tools/src/parsers/test/replace_test_39.xfst
index 0f2911e..c6e8bd6 100644
--- a/tools/src/parsers/test/replace_test_39.xfst
+++ b/tools/src/parsers/test/replace_test_39.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex 0 -> m::1 ;
-apply up foobar
+apply down foobar
diff --git a/tools/src/parsers/test/replace_test_4.xfst b/tools/src/parsers/test/replace_test_4.xfst
index 0201cc9..07175e8 100644
--- a/tools/src/parsers/test/replace_test_4.xfst
+++ b/tools/src/parsers/test/replace_test_4.xfst
@@ -2,5 +2,5 @@ set precision 1
 set print-weight ON
 
 regex [ c a -> d::2 || c a _ c ] ;
-apply up cacacac
+apply down cacacac
 
diff --git a/tools/src/parsers/test/replace_test_40.xfst b/tools/src/parsers/test/replace_test_40.xfst
index 5c42213..e99f9a6 100644
--- a/tools/src/parsers/test/replace_test_40.xfst
+++ b/tools/src/parsers/test/replace_test_40.xfst
@@ -2,7 +2,7 @@ set precision 1
 set print-weight ON
 
 regex a* -> p::1 ;
-apply up alava
+apply down alava
 echo ---
 regex [. a* .] -> p::1 ;
-apply up alava
\ No newline at end of file
+apply down alava
\ No newline at end of file
diff --git a/tools/src/parsers/test/replace_test_41.xfst b/tools/src/parsers/test/replace_test_41.xfst
index b3e51e0..6df9b85 100644
--- a/tools/src/parsers/test/replace_test_41.xfst
+++ b/tools/src/parsers/test/replace_test_41.xfst
@@ -2,7 +2,7 @@ set precision 1
 set print-weight ON
 
 regex 0::1 -> b::2 || _ a a ;
-apply up
+apply down
 aa
 aaa
 aaaa
diff --git a/tools/src/parsers/test/replace_test_42.xfst b/tools/src/parsers/test/replace_test_42.xfst
index 94f55ec..4543c09 100644
--- a/tools/src/parsers/test/replace_test_42.xfst
+++ b/tools/src/parsers/test/replace_test_42.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex a::1 -> b::1 , b::2 -> c::2 ;
-apply up abcabc
+apply down abcabc
diff --git a/tools/src/parsers/test/replace_test_43.xfst b/tools/src/parsers/test/replace_test_43.xfst
index 6c49c88..d635ede 100644
--- a/tools/src/parsers/test/replace_test_43.xfst
+++ b/tools/src/parsers/test/replace_test_43.xfst
@@ -2,5 +2,5 @@ set precision 1
 set print-weight ON
 
 regex [. .] -> b::1 , a -> c ;
-apply up abba
+apply down abba
 
diff --git a/tools/src/parsers/test/replace_test_44.xfst b/tools/src/parsers/test/replace_test_44.xfst
index e513a67..4703a69 100644
--- a/tools/src/parsers/test/replace_test_44.xfst
+++ b/tools/src/parsers/test/replace_test_44.xfst
@@ -2,5 +2,5 @@ set precision 1
 set print-weight ON
 
 regex a+ @-> x::1 , b+ @-> y::2 ;
-apply up abba
+apply down abba
 
diff --git a/tools/src/parsers/test/replace_test_45.xfst b/tools/src/parsers/test/replace_test_45.xfst
index d9dfe35..838511d 100644
--- a/tools/src/parsers/test/replace_test_45.xfst
+++ b/tools/src/parsers/test/replace_test_45.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex a+ @> x::1 , b+ @> y::2 ;
-apply up abba
+apply down abba
diff --git a/tools/src/parsers/test/replace_test_46.xfst b/tools/src/parsers/test/replace_test_46.xfst
index fd24fa8..4781c42 100644
--- a/tools/src/parsers/test/replace_test_46.xfst
+++ b/tools/src/parsers/test/replace_test_46.xfst
@@ -3,4 +3,4 @@ set print-weight ON
 
 set encode-weights ON
 regex [a::1]+ -> x \/ m _ ,, b+ -> y::1 || x _ ;
-apply up maab
+apply down maab
diff --git a/tools/src/parsers/test/replace_test_47.xfst b/tools/src/parsers/test/replace_test_47.xfst
index a83a25e..4db5687 100644
--- a/tools/src/parsers/test/replace_test_47.xfst
+++ b/tools/src/parsers/test/replace_test_47.xfst
@@ -3,4 +3,4 @@ set print-weight ON
 
 set encode-weights ON
 regex a::1 -> x \/ m _ ,, b::1 -> y || x _ ;
-apply up maab
+apply down maab
diff --git a/tools/src/parsers/test/replace_test_48.xfst b/tools/src/parsers/test/replace_test_48.xfst
index 662812f..ddc7f3d 100644
--- a/tools/src/parsers/test/replace_test_48.xfst
+++ b/tools/src/parsers/test/replace_test_48.xfst
@@ -3,4 +3,4 @@ set print-weight ON
 
 set encode-weights ON
 regex [ [. 0 .] -> a::1 \/ _ b a , a b _ ,, [. 0 .] -> b::2 \/ a _ a ];
-apply up abba
+apply down abba
diff --git a/tools/src/parsers/test/replace_test_49.xfst b/tools/src/parsers/test/replace_test_49.xfst
index 2f64b79..5182065 100644
--- a/tools/src/parsers/test/replace_test_49.xfst
+++ b/tools/src/parsers/test/replace_test_49.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex ?::1 -> x , a::2 -> b ;
-apply up abba
+apply down abba
diff --git a/tools/src/parsers/test/replace_test_5.xfst b/tools/src/parsers/test/replace_test_5.xfst
index edad3ac..71204e9 100644
--- a/tools/src/parsers/test/replace_test_5.xfst
+++ b/tools/src/parsers/test/replace_test_5.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex [ b::1 -> a ,, a::2 -> b ] ;
-apply up abba
+apply down abba
diff --git a/tools/src/parsers/test/replace_test_50.xfst b/tools/src/parsers/test/replace_test_50.xfst
index 758bcf4..73df6f9 100644
--- a/tools/src/parsers/test/replace_test_50.xfst
+++ b/tools/src/parsers/test/replace_test_50.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex a::1 -> "[" ... "]", [a::2 a::1] -> "|" ... "|" ;
-apply up aaa
+apply down aaa
diff --git a/tools/src/parsers/test/replace_test_51.xfst b/tools/src/parsers/test/replace_test_51.xfst
index 2c6593c..6d1d438 100644
--- a/tools/src/parsers/test/replace_test_51.xfst
+++ b/tools/src/parsers/test/replace_test_51.xfst
@@ -2,5 +2,5 @@ set precision 1
 set print-weight ON
 
 regex a::1 -> b , b::2 -> a ;
-apply up abba
+apply down abba
 
diff --git a/tools/src/parsers/test/replace_test_52.xfst b/tools/src/parsers/test/replace_test_52.xfst
index 8d821fb..16ad8c1 100644
--- a/tools/src/parsers/test/replace_test_52.xfst
+++ b/tools/src/parsers/test/replace_test_52.xfst
@@ -2,5 +2,5 @@ set precision 1
 set print-weight ON
 
 regex a::3 -> b b, a::1 -> b;
-apply up aaa
+apply down aaa
 
diff --git a/tools/src/parsers/test/replace_test_53.xfst b/tools/src/parsers/test/replace_test_53.xfst
index 34a19c0..c8271a5 100644
--- a/tools/src/parsers/test/replace_test_53.xfst
+++ b/tools/src/parsers/test/replace_test_53.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex [..] @-> a::1 ;
-apply up abba
+apply down abba
diff --git a/tools/src/parsers/test/replace_test_6.xfst b/tools/src/parsers/test/replace_test_6.xfst
index 81cd884..04ca4ed 100644
--- a/tools/src/parsers/test/replace_test_6.xfst
+++ b/tools/src/parsers/test/replace_test_6.xfst
@@ -2,6 +2,6 @@ set precision 1
 set print-weight ON
 
 regex a b (->) x::1 || a b _ a ;
-apply up abababa
+apply down abababa
 
 
diff --git a/tools/src/parsers/test/replace_test_7.xfst b/tools/src/parsers/test/replace_test_7.xfst
index fb6e1b2..878dbe1 100644
--- a/tools/src/parsers/test/replace_test_7.xfst
+++ b/tools/src/parsers/test/replace_test_7.xfst
@@ -2,6 +2,6 @@ set precision 1
 set print-weight ON
 
 regex a b -> x::1 || a b _ a ;
-apply up abababa
+apply down abababa
 
 
diff --git a/tools/src/parsers/test/replace_test_8.xfst b/tools/src/parsers/test/replace_test_8.xfst
index 49e1a0e..edb497e 100644
--- a/tools/src/parsers/test/replace_test_8.xfst
+++ b/tools/src/parsers/test/replace_test_8.xfst
@@ -2,4 +2,4 @@ set precision 1
 set print-weight ON
 
 regex a::1 (->) x ;
-apply up aaana
+apply down aaana
diff --git a/tools/src/parsers/test/replace_test_9.xfst b/tools/src/parsers/test/replace_test_9.xfst
index 5b3e1a3..62b7d4a 100644
--- a/tools/src/parsers/test/replace_test_9.xfst
+++ b/tools/src/parsers/test/replace_test_9.xfst
@@ -2,6 +2,6 @@ set precision 1
 set print-weight ON
 
 regex a -> x::2 ;
-apply up aaana
+apply down aaana
 
 
diff --git a/tools/src/parsers/test/weighted_ltr_longest_match_1.xfst b/tools/src/parsers/test/weighted_ltr_longest_match_1.xfst
index dbcb908..d616c6f 100644
--- a/tools/src/parsers/test/weighted_ltr_longest_match_1.xfst
+++ b/tools/src/parsers/test/weighted_ltr_longest_match_1.xfst
@@ -3,8 +3,8 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex [a::1]^{1,3} @-> b::2 || c [a]* __ [a]* c ;
-apply up cac
+apply down cac
 echo --
-apply up caac
+apply down caac
 echo --
-apply up caaac
+apply down caaac
diff --git a/tools/src/parsers/test/weighted_ltr_longest_match_2.xfst b/tools/src/parsers/test/weighted_ltr_longest_match_2.xfst
index c179ab6..8e04521 100644
--- a/tools/src/parsers/test/weighted_ltr_longest_match_2.xfst
+++ b/tools/src/parsers/test/weighted_ltr_longest_match_2.xfst
@@ -3,8 +3,8 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex [a::1]^{1,3} @-> b::2 || c [a]* __ ;
-apply up cac
+apply down cac
 echo --
-apply up caac
+apply down caac
 echo --
-apply up caaac
+apply down caaac
diff --git a/tools/src/parsers/test/weighted_ltr_longest_match_3.xfst b/tools/src/parsers/test/weighted_ltr_longest_match_3.xfst
index b4a6bcf..75817ec 100644
--- a/tools/src/parsers/test/weighted_ltr_longest_match_3.xfst
+++ b/tools/src/parsers/test/weighted_ltr_longest_match_3.xfst
@@ -3,8 +3,8 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex [a::1]^{1,3} @-> b::2 || __ [a]* c ;
-apply up cac
+apply down cac
 echo --
-apply up caac
+apply down caac
 echo --
-apply up caaac
+apply down caaac
diff --git a/tools/src/parsers/test/weighted_ltr_shortest_match_1.xfst b/tools/src/parsers/test/weighted_ltr_shortest_match_1.xfst
index 0b9c10a..07a1b35 100644
--- a/tools/src/parsers/test/weighted_ltr_shortest_match_1.xfst
+++ b/tools/src/parsers/test/weighted_ltr_shortest_match_1.xfst
@@ -3,9 +3,9 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex [a::1]^{1,3} @> b::2 || c [a]* __ [a]* c ;
-apply up cac
+apply down cac
 echo --
-apply up caac
+apply down caac
 echo --
-apply up caaac
+apply down caaac
 
diff --git a/tools/src/parsers/test/weighted_ltr_shortest_match_2.xfst b/tools/src/parsers/test/weighted_ltr_shortest_match_2.xfst
index 4285bde..04b29da 100644
--- a/tools/src/parsers/test/weighted_ltr_shortest_match_2.xfst
+++ b/tools/src/parsers/test/weighted_ltr_shortest_match_2.xfst
@@ -3,9 +3,9 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex [a::1]^{1,3} @> b::2 || c [a]* __ ;
-apply up cac
+apply down cac
 echo --
-apply up caac
+apply down caac
 echo --
-apply up caaac
+apply down caaac
 
diff --git a/tools/src/parsers/test/weighted_ltr_shortest_match_3.xfst b/tools/src/parsers/test/weighted_ltr_shortest_match_3.xfst
index c6ef45e..ef46086 100644
--- a/tools/src/parsers/test/weighted_ltr_shortest_match_3.xfst
+++ b/tools/src/parsers/test/weighted_ltr_shortest_match_3.xfst
@@ -3,9 +3,9 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex [a::1]^{1,3} @> b::2 || __ [a]* c ;
-apply up cac
+apply down cac
 echo --
-apply up caac
+apply down caac
 echo --
-apply up caaac
+apply down caaac
 
diff --git a/tools/src/parsers/test/weighted_optional_replace_right_1.xfst b/tools/src/parsers/test/weighted_optional_replace_right_1.xfst
index 45246f6..a06b363 100644
--- a/tools/src/parsers/test/weighted_optional_replace_right_1.xfst
+++ b/tools/src/parsers/test/weighted_optional_replace_right_1.xfst
@@ -3,4 +3,4 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex a (->) b::0.5 || c __ c ;
-apply up cac
+apply down cac
diff --git a/tools/src/parsers/test/weighted_optional_replace_right_2.xfst b/tools/src/parsers/test/weighted_optional_replace_right_2.xfst
index 603a8aa..117cda3 100644
--- a/tools/src/parsers/test/weighted_optional_replace_right_2.xfst
+++ b/tools/src/parsers/test/weighted_optional_replace_right_2.xfst
@@ -3,5 +3,5 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex a::1.5 (->) b::0.5 || c __ c ;
-apply up cac
+apply down cac
 
diff --git a/tools/src/parsers/test/weighted_optional_replace_right_3.xfst b/tools/src/parsers/test/weighted_optional_replace_right_3.xfst
index 7d1cea7..a3255f0 100644
--- a/tools/src/parsers/test/weighted_optional_replace_right_3.xfst
+++ b/tools/src/parsers/test/weighted_optional_replace_right_3.xfst
@@ -4,4 +4,4 @@ set lookup-cycle-cutoff 5
 set encode-weights OFF
 
 regex a::1 (->) [b::2]+ || c __ c ;
-apply up cac
+apply down cac
diff --git a/tools/src/parsers/test/weighted_optional_replace_right_4.xfst b/tools/src/parsers/test/weighted_optional_replace_right_4.xfst
index a52b1fe..11be096 100644
--- a/tools/src/parsers/test/weighted_optional_replace_right_4.xfst
+++ b/tools/src/parsers/test/weighted_optional_replace_right_4.xfst
@@ -3,6 +3,6 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex [a::3]+ (->) [b::5]+ || c __ c ;
-apply up cac
+apply down cac
 echo --
-apply up caac
+apply down caac
diff --git a/tools/src/parsers/test/weighted_optional_replace_right_5.xfst b/tools/src/parsers/test/weighted_optional_replace_right_5.xfst
index a316c00..53d5725 100644
--- a/tools/src/parsers/test/weighted_optional_replace_right_5.xfst
+++ b/tools/src/parsers/test/weighted_optional_replace_right_5.xfst
@@ -3,4 +3,4 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex [a::3|[a a]::5|[a a a]::7] (->) A || c[a]* __ [a]*c ;
-apply up caaac
+apply down caaac
diff --git a/tools/src/parsers/test/weighted_optional_replace_right_6.xfst b/tools/src/parsers/test/weighted_optional_replace_right_6.xfst
index c16ab6b..b5887de 100644
--- a/tools/src/parsers/test/weighted_optional_replace_right_6.xfst
+++ b/tools/src/parsers/test/weighted_optional_replace_right_6.xfst
@@ -3,8 +3,8 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex [a::3]+ (->) A || c __ c ;
-apply up cac
+apply down cac
 echo --
-apply up caac
+apply down caac
 echo --
-apply up caaac
+apply down caaac
diff --git a/tools/src/parsers/test/weighted_optional_replace_right_7.xfst b/tools/src/parsers/test/weighted_optional_replace_right_7.xfst
index b205a81..ab54799 100644
--- a/tools/src/parsers/test/weighted_optional_replace_right_7.xfst
+++ b/tools/src/parsers/test/weighted_optional_replace_right_7.xfst
@@ -3,15 +3,15 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex [a::1|b::2]+ (->) [C] || c[a|b]* __ [a|b]*c ;
-apply up cac
+apply down cac
 echo --
-apply up cbc
+apply down cbc
 echo --
-apply up caac
+apply down caac
 echo --
-apply up cbbc
+apply down cbbc
 echo --
-apply up cabc
+apply down cabc
 echo --
-apply up cbac
+apply down cbac
 
diff --git a/tools/src/parsers/test/weighted_optional_replace_right_8.xfst b/tools/src/parsers/test/weighted_optional_replace_right_8.xfst
index 5114f01..ccf2bed 100644
--- a/tools/src/parsers/test/weighted_optional_replace_right_8.xfst
+++ b/tools/src/parsers/test/weighted_optional_replace_right_8.xfst
@@ -4,10 +4,10 @@ set lookup-cycle-cutoff 5
 
 regex [a::3] (->) [b::5] || c [a]* __ ;
 
-apply up ca
+apply down ca
 echo --
 
-apply up caa
+apply down caa
 echo --
 
-apply up caaa
+apply down caaa
diff --git a/tools/src/parsers/test/weighted_optional_replace_right_9.xfst b/tools/src/parsers/test/weighted_optional_replace_right_9.xfst
index abb12e4..5391f50 100644
--- a/tools/src/parsers/test/weighted_optional_replace_right_9.xfst
+++ b/tools/src/parsers/test/weighted_optional_replace_right_9.xfst
@@ -4,10 +4,10 @@ set lookup-cycle-cutoff 5
 
 regex [a::3] (->) [b::5] || __ [a]* c ;
 
-apply up ac
+apply down ac
 echo --
 
-apply up aac
+apply down aac
 echo --
 
-apply up aaac
+apply down aaac
diff --git a/tools/src/parsers/test/weighted_parallel_rules_1.xfst b/tools/src/parsers/test/weighted_parallel_rules_1.xfst
index df2bb84..1f99ccf 100644
--- a/tools/src/parsers/test/weighted_parallel_rules_1.xfst
+++ b/tools/src/parsers/test/weighted_parallel_rules_1.xfst
@@ -4,4 +4,4 @@ set lookup-cycle-cutoff 5
 set encode-weights ON
 
 regex C -> d::1 \/ b _ b ,, a::1 -> b || c _ C , C _ c ;
-apply up caCac
+apply down caCac
diff --git a/tools/src/parsers/test/weighted_parallel_rules_10.xfst b/tools/src/parsers/test/weighted_parallel_rules_10.xfst
index 945f40f..4270f01 100644
--- a/tools/src/parsers/test/weighted_parallel_rules_10.xfst
+++ b/tools/src/parsers/test/weighted_parallel_rules_10.xfst
@@ -4,6 +4,6 @@ set lookup-cycle-cutoff 5
 set encode-weights ON
 
 regex ? -> 0 ,, 0 -> ?::1 ;
-apply up 
+apply down 
 abba
 <ctrl-d>
diff --git a/tools/src/parsers/test/weighted_parallel_rules_11.xfst b/tools/src/parsers/test/weighted_parallel_rules_11.xfst
index 57421ae..974a1d0 100644
--- a/tools/src/parsers/test/weighted_parallel_rules_11.xfst
+++ b/tools/src/parsers/test/weighted_parallel_rules_11.xfst
@@ -4,6 +4,6 @@ set lookup-cycle-cutoff 5
 set encode-weights ON
 
 regex a -> b::1 || ? _ ? ,, c -> d::2 || ? _ ;
-apply up 
+apply down 
 cac
 <ctrl-d>
diff --git a/tools/src/parsers/test/weighted_parallel_rules_12.xfst b/tools/src/parsers/test/weighted_parallel_rules_12.xfst
index a8df9f8..c0b0aed 100644
--- a/tools/src/parsers/test/weighted_parallel_rules_12.xfst
+++ b/tools/src/parsers/test/weighted_parallel_rules_12.xfst
@@ -4,4 +4,4 @@ set lookup-cycle-cutoff 5
 set encode-weights ON
 
 regex C -> d::3.0 \/ b _ b ,, a::-1.0 -> b || c _ C , C _ c ;
-apply up caCac
+apply down caCac
diff --git a/tools/src/parsers/test/weighted_parallel_rules_13.xfst b/tools/src/parsers/test/weighted_parallel_rules_13.xfst
index 5bff6b6..886a24f 100644
--- a/tools/src/parsers/test/weighted_parallel_rules_13.xfst
+++ b/tools/src/parsers/test/weighted_parallel_rules_13.xfst
@@ -4,4 +4,4 @@ set lookup-cycle-cutoff 5
 set encode-weights ON
 
 regex C (->) d::3 \/ b _ b ,, a::-1.5 (->) b || c _ C , C _ c ;
-apply up caCac
+apply down caCac
diff --git a/tools/src/parsers/test/weighted_parallel_rules_2.xfst b/tools/src/parsers/test/weighted_parallel_rules_2.xfst
index 6c8311e..bb260c7 100644
--- a/tools/src/parsers/test/weighted_parallel_rules_2.xfst
+++ b/tools/src/parsers/test/weighted_parallel_rules_2.xfst
@@ -4,4 +4,4 @@ set lookup-cycle-cutoff 5
 set encode-weights ON
 
 regex C (->) d::1 \/ b _ b ,, a::1 (->) b || c _ C , C _ c ;
-apply up caCac
+apply down caCac
diff --git a/tools/src/parsers/test/weighted_parallel_rules_3.xfst b/tools/src/parsers/test/weighted_parallel_rules_3.xfst
index 813a015..c0b8afa 100644
--- a/tools/src/parsers/test/weighted_parallel_rules_3.xfst
+++ b/tools/src/parsers/test/weighted_parallel_rules_3.xfst
@@ -4,7 +4,7 @@ set lookup-cycle-cutoff 5
 set encode-weights ON
 
 regex 0 -> e::1 \/ b _ b ,, a::1 -> b ;
-apply up 
+apply down 
 aaa
 abba
 <ctrl-d>
diff --git a/tools/src/parsers/test/weighted_parallel_rules_4.xfst b/tools/src/parsers/test/weighted_parallel_rules_4.xfst
index 00bb22c..acc4f46 100644
--- a/tools/src/parsers/test/weighted_parallel_rules_4.xfst
+++ b/tools/src/parsers/test/weighted_parallel_rules_4.xfst
@@ -4,7 +4,7 @@ set lookup-cycle-cutoff 5
 set encode-weights ON
 
 regex 0 -> e::1 \\ a _ b ,, a::1 -> b ;
-apply up 
+apply down 
 aaa
 abba
 <ctrl-d>
diff --git a/tools/src/parsers/test/weighted_parallel_rules_5.xfst b/tools/src/parsers/test/weighted_parallel_rules_5.xfst
index 00ef541..d93fc61 100644
--- a/tools/src/parsers/test/weighted_parallel_rules_5.xfst
+++ b/tools/src/parsers/test/weighted_parallel_rules_5.xfst
@@ -4,6 +4,6 @@ set lookup-cycle-cutoff 5
 set encode-weights ON
 
 regex 0 (->) A::1 || _ ? ? ? ,, 0 (->) B::2 || ? ? ? _ ;
-apply up 
+apply down 
 foo
 <ctrl-d>
diff --git a/tools/src/parsers/test/weighted_parallel_rules_6.xfst b/tools/src/parsers/test/weighted_parallel_rules_6.xfst
index cca1939..a176617 100644
--- a/tools/src/parsers/test/weighted_parallel_rules_6.xfst
+++ b/tools/src/parsers/test/weighted_parallel_rules_6.xfst
@@ -4,6 +4,6 @@ set lookup-cycle-cutoff 5
 set encode-weights ON
 
 regex ?::1 -> a ,, ? -> b::2 ;
-apply up 
+apply down 
 foo
 <ctrl-d>
diff --git a/tools/src/parsers/test/weighted_parallel_rules_7.xfst b/tools/src/parsers/test/weighted_parallel_rules_7.xfst
index 7bba455..cc6543e 100644
--- a/tools/src/parsers/test/weighted_parallel_rules_7.xfst
+++ b/tools/src/parsers/test/weighted_parallel_rules_7.xfst
@@ -6,6 +6,6 @@ set encode-weights ON
 # note that the first rule includes the second one with lower weight
 # so the second rule doesn't have any effect
 regex a::1 -> ? ,, a::2 -> A ;
-apply up 
+apply down 
 abba
 <ctrl-d>
diff --git a/tools/src/parsers/test/weighted_parallel_rules_8.xfst b/tools/src/parsers/test/weighted_parallel_rules_8.xfst
index aa0652e..625712d 100644
--- a/tools/src/parsers/test/weighted_parallel_rules_8.xfst
+++ b/tools/src/parsers/test/weighted_parallel_rules_8.xfst
@@ -4,6 +4,6 @@ set lookup-cycle-cutoff 5
 set encode-weights ON
 
 regex a::1 -> [\A] ,, a::2 -> A ;
-apply up 
+apply down 
 abba
 <ctrl-d>
diff --git a/tools/src/parsers/test/weighted_parallel_rules_9.xfst b/tools/src/parsers/test/weighted_parallel_rules_9.xfst
index 7cf58c8..d8e5b8e 100644
--- a/tools/src/parsers/test/weighted_parallel_rules_9.xfst
+++ b/tools/src/parsers/test/weighted_parallel_rules_9.xfst
@@ -4,6 +4,6 @@ set lookup-cycle-cutoff 5
 set encode-weights ON
 
 regex ?::1 -> ?::2 ,, a -> a ,, b -> b ;
-apply up 
+apply down 
 ab
 <ctrl-d>
diff --git a/tools/src/parsers/test/weighted_replace_right_1.xfst b/tools/src/parsers/test/weighted_replace_right_1.xfst
index a0a47c8..337f374 100644
--- a/tools/src/parsers/test/weighted_replace_right_1.xfst
+++ b/tools/src/parsers/test/weighted_replace_right_1.xfst
@@ -3,4 +3,4 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex a -> b::0.5 || c __ c ;
-apply up cac
+apply down cac
diff --git a/tools/src/parsers/test/weighted_replace_right_2.xfst b/tools/src/parsers/test/weighted_replace_right_2.xfst
index 0f25d32..f8d2095 100644
--- a/tools/src/parsers/test/weighted_replace_right_2.xfst
+++ b/tools/src/parsers/test/weighted_replace_right_2.xfst
@@ -3,5 +3,5 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex a::1.5 -> b::0.5 || c __ c ;
-apply up cac
+apply down cac
 
diff --git a/tools/src/parsers/test/weighted_replace_right_3.xfst b/tools/src/parsers/test/weighted_replace_right_3.xfst
index 0ac8e91..1fc20a4 100644
--- a/tools/src/parsers/test/weighted_replace_right_3.xfst
+++ b/tools/src/parsers/test/weighted_replace_right_3.xfst
@@ -4,4 +4,4 @@ set lookup-cycle-cutoff 5
 set encode-weights OFF
 
 regex a::1 -> [b::2]+ || c __ c ;
-apply up cac
+apply down cac
diff --git a/tools/src/parsers/test/weighted_replace_right_4.xfst b/tools/src/parsers/test/weighted_replace_right_4.xfst
index fc2e8bb..eb4b22a 100644
--- a/tools/src/parsers/test/weighted_replace_right_4.xfst
+++ b/tools/src/parsers/test/weighted_replace_right_4.xfst
@@ -3,6 +3,6 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex [a::3]+ -> [b::5]+ || c __ c ;
-apply up cac
+apply down cac
 echo --
-apply up caac
+apply down caac
diff --git a/tools/src/parsers/test/weighted_replace_right_5.xfst b/tools/src/parsers/test/weighted_replace_right_5.xfst
index d597cbc..5f32ec4 100644
--- a/tools/src/parsers/test/weighted_replace_right_5.xfst
+++ b/tools/src/parsers/test/weighted_replace_right_5.xfst
@@ -3,4 +3,4 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex [a::3|[a a]::5|[a a a]::7] -> A || c[a]* __ [a]*c ;
-apply up caaac
+apply down caaac
diff --git a/tools/src/parsers/test/weighted_replace_right_6.xfst b/tools/src/parsers/test/weighted_replace_right_6.xfst
index c6c9ba8..48f7652 100644
--- a/tools/src/parsers/test/weighted_replace_right_6.xfst
+++ b/tools/src/parsers/test/weighted_replace_right_6.xfst
@@ -3,8 +3,8 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex [a::3]+ -> A || c __ c ;
-apply up cac
+apply down cac
 echo --
-apply up caac
+apply down caac
 echo --
-apply up caaac
+apply down caaac
diff --git a/tools/src/parsers/test/weighted_replace_right_7.xfst b/tools/src/parsers/test/weighted_replace_right_7.xfst
index cb9aacd..f592160 100644
--- a/tools/src/parsers/test/weighted_replace_right_7.xfst
+++ b/tools/src/parsers/test/weighted_replace_right_7.xfst
@@ -3,15 +3,15 @@ set precision 1
 set lookup-cycle-cutoff 5
 
 regex [a::1|b::2]+ -> [C] || c[a|b]* __ [a|b]*c ;
-apply up cac
+apply down cac
 echo --
-apply up cbc
+apply down cbc
 echo --
-apply up caac
+apply down caac
 echo --
-apply up cbbc
+apply down cbbc
 echo --
-apply up cabc
+apply down cabc
 echo --
-apply up cbac
+apply down cbac
 
diff --git a/tools/src/parsers/test/weighted_replace_right_8.xfst b/tools/src/parsers/test/weighted_replace_right_8.xfst
index 8b69dc7..4563f5e 100644
--- a/tools/src/parsers/test/weighted_replace_right_8.xfst
+++ b/tools/src/parsers/test/weighted_replace_right_8.xfst
@@ -4,10 +4,10 @@ set lookup-cycle-cutoff 5
 
 regex [a::3] -> [b::5] || c [a]* __ ;
 
-apply up ca
+apply down ca
 echo --
 
-apply up caa
+apply down caa
 echo --
 
-apply up caaa
+apply down caaa
diff --git a/tools/src/parsers/test/weighted_replace_right_9.xfst b/tools/src/parsers/test/weighted_replace_right_9.xfst
index 0f83bc7..91b7bfd 100644
--- a/tools/src/parsers/test/weighted_replace_right_9.xfst
+++ b/tools/src/parsers/test/weighted_replace_right_9.xfst
@@ -4,10 +4,10 @@ set lookup-cycle-cutoff 5
 
 regex [a::3] -> [b::5] || __ [a]* c ;
 
-apply up ac
+apply down ac
 echo --
 
-apply up aac
+apply down aac
 echo --
 
-apply up aaac
+apply down aaac

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/hfst.git



More information about the debian-science-commits mailing list