[Snowball-discuss] A new release soon

From: Martin Porter (martin_porter@softhome.net)
Date: Sat Dec 29 2001 - 17:23:13 GMT


I am planning a new release of Snowball in a few days time. There has been
a tiny extension to the definition of among(...). Each string in the among
can now optionally be followed by a routine name. The among searches for
the longest string as before, but rejects strings whose routine, when
called, gives signal f. The user should ensure that routines used in this
way do not have embarrassing side-effects.

None of the released Snowball scripts have been altered to take advantage
of this improvement, and run as before with no loss of speed. The
generated code and the linked utilities library are however different.

A number of bugs have been fixed in the Snowball compiler, and various
improvements made. They are invisible, with one exception, explained below:

    Many of the existing Snowball scripts contained a small error. It is
    illustrated by this definition of 'postlude':

        define postlude as repeat (
            [substring] among(
'Y' (<- 'y')
'I' (<- 'i')
            ) or next
        )

   The 'or' connects 'next' with the 'among', but the script was written
   on the assumption that the 'or' connected 'next' with the composite
   expression

            [substring] among(
'Y' (<- 'y')
'I' (<- 'i')
            )

    The reason it worked was that there was a bug in the Snowball compiler
    which cancelled out the bug in the Snowball script. The bug has been
    fixed in the compiler and all the affected scripts updated.

    There are two possible ways to correct the script. One is to add a
    pair of brackets:

        define postlude as repeat (
            (
                [substring] among(
                    'Y' (<- 'y')
                    'I' (<- 'i')
                )
            ) or next
        )

    The other is to pick up 'next' as a the default case by matching
    against the null string:

        define postlude as repeat (
            [substring] among(
'Y' (<- 'y')
'I' (<- 'i')
'' (next)
            )
        )

    I have chosen this latter style. It is shorter and faster.

None of the changes will affect users so long as they pick up new versions
of everything. The API is the same.

 - - -

I am thinking of adding in a Quick Intro page, and perhaps a How You Can
Help page. Any suggestions here would be welcome.

Martin

_______________________________________________
Snowball-discuss mailing list
Snowball-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/snowball-discuss



This archive was generated by hypermail 2.1.3 : Thu Sep 20 2007 - 12:02:40 BST