mittens 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile +2 -1
- data/README.md +2 -2
- data/Rakefile +12 -5
- data/ext/mittens/extconf.rb +3 -1
- data/lib/mittens/version.rb +1 -1
- data/vendor/snowball/.github/workflows/ci.yml +144 -17
- data/vendor/snowball/.github/workflows/coverage.yml +117 -0
- data/vendor/snowball/.github/workflows/runtime-tests.yml +26 -0
- data/vendor/snowball/.gitignore +33 -7
- data/vendor/snowball/CONTRIBUTING.rst +7 -0
- data/vendor/snowball/COPYING +1 -1
- data/vendor/snowball/GNUmakefile +736 -298
- data/vendor/snowball/NEWS +1394 -7
- data/vendor/snowball/README.rst +8 -8
- data/vendor/snowball/ada/generate/generate.adb +5 -5
- data/vendor/snowball/ada/src/stemmer.adb +177 -188
- data/vendor/snowball/ada/src/stemmer.ads +86 -89
- data/vendor/snowball/ada/src/stemwords.adb +21 -5
- data/vendor/snowball/algorithms/czech.sbl +255 -0
- data/vendor/snowball/algorithms/danish.sbl +22 -10
- data/vendor/snowball/algorithms/english.sbl +7 -4
- data/vendor/snowball/algorithms/esperanto.sbl +6 -7
- data/vendor/snowball/algorithms/estonian.sbl +9 -4
- data/vendor/snowball/algorithms/finnish.sbl +33 -21
- data/vendor/snowball/algorithms/german.sbl +5 -0
- data/vendor/snowball/algorithms/indonesian.sbl +115 -96
- data/vendor/snowball/algorithms/italian.sbl +26 -1
- data/vendor/snowball/algorithms/lithuanian.sbl +13 -13
- data/vendor/snowball/algorithms/norwegian.sbl +17 -6
- data/vendor/snowball/algorithms/persian.sbl +387 -0
- data/vendor/snowball/algorithms/polish.sbl +177 -0
- data/vendor/snowball/algorithms/sesotho.sbl +115 -0
- data/vendor/snowball/algorithms/turkish.sbl +4 -4
- data/vendor/snowball/compiler/analyser.c +2002 -711
- data/vendor/snowball/compiler/driver.c +460 -298
- data/vendor/snowball/compiler/generator.c +439 -1965
- data/vendor/snowball/compiler/generator_ada.c +605 -430
- data/vendor/snowball/compiler/generator_c.c +2227 -0
- data/vendor/snowball/compiler/generator_csharp.c +365 -274
- data/vendor/snowball/compiler/generator_dart.c +1476 -0
- data/vendor/snowball/compiler/generator_go.c +348 -270
- data/vendor/snowball/compiler/generator_java.c +330 -233
- data/vendor/snowball/compiler/generator_js.c +534 -385
- data/vendor/snowball/compiler/generator_pascal.c +361 -320
- data/vendor/snowball/compiler/generator_php.c +1445 -0
- data/vendor/snowball/compiler/generator_python.c +399 -299
- data/vendor/snowball/compiler/generator_rust.c +370 -261
- data/vendor/snowball/compiler/generator_zig.c +1474 -0
- data/vendor/snowball/compiler/header.h +153 -86
- data/vendor/snowball/compiler/space.c +121 -63
- data/vendor/snowball/compiler/tokeniser.c +286 -182
- data/vendor/snowball/compiler/tokens.h +71 -0
- data/vendor/snowball/csharp/Snowball/Among.cs +14 -26
- data/vendor/snowball/csharp/Snowball/AssemblyInfo.cs +3 -3
- data/vendor/snowball/csharp/Snowball/Stemmer.cs +41 -45
- data/vendor/snowball/csharp/Stemwords/Program.cs +20 -14
- data/vendor/snowball/cxx/.gitignore +4 -0
- data/vendor/snowball/cxx/generate_algorithms.pl +87 -0
- data/vendor/snowball/cxx/stemmer.h +12 -0
- data/vendor/snowball/cxx/stemwords.cxx +176 -0
- data/vendor/snowball/cxx/utilities.cxx +2 -0
- data/vendor/snowball/dart/.gitignore +4 -0
- data/vendor/snowball/dart/analysis_options.yaml +1 -0
- data/vendor/snowball/dart/example/test_app.dart +65 -0
- data/vendor/snowball/dart/generate_algorithms.pl +21 -0
- data/vendor/snowball/dart/lib/snowball.dart +18 -0
- data/vendor/snowball/dart/lib/src/snowball.dart +339 -0
- data/vendor/snowball/dart/pubspec.yaml +17 -0
- data/vendor/snowball/doc/libstemmer_dart_README +37 -0
- data/vendor/snowball/doc/libstemmer_js_README +2 -2
- data/vendor/snowball/doc/libstemmer_php_README +38 -0
- data/vendor/snowball/doc/libstemmer_python_README +3 -3
- data/vendor/snowball/examples/stemwords.c +18 -3
- data/vendor/snowball/go/README.md +12 -4
- data/vendor/snowball/go/env.go +12 -14
- data/vendor/snowball/go/stemwords/main.go +2 -1
- data/vendor/snowball/java/org/tartarus/snowball/CharArraySequence.java +36 -0
- data/vendor/snowball/java/org/tartarus/snowball/SnowballProgram.java +17 -34
- data/vendor/snowball/java/org/tartarus/snowball/SnowballStemmer.java +0 -2
- data/vendor/snowball/javascript/base-stemmer.js +219 -252
- data/vendor/snowball/javascript/stemwords.js +86 -58
- data/vendor/snowball/libstemmer/mkmodules.pl +1 -1
- data/vendor/snowball/libstemmer/modules.txt +4 -0
- data/vendor/snowball/pascal/SnowballProgram.pas +18 -31
- data/vendor/snowball/php/base-stemmer.php +453 -0
- data/vendor/snowball/php/stemwords.php +25 -0
- data/vendor/snowball/python/create_init.py +16 -21
- data/vendor/snowball/python/pyproject.toml +3 -0
- data/vendor/snowball/python/setup.py +5 -7
- data/vendor/snowball/python/snowballstemmer/among.py +1 -2
- data/vendor/snowball/python/snowballstemmer/basestemmer.py +24 -33
- data/vendor/snowball/python/stemwords.py +72 -63
- data/vendor/snowball/runtime/api.c +11 -42
- data/vendor/snowball/runtime/api.h +11 -9
- data/vendor/snowball/runtime/snowball_runtime.h +110 -0
- data/vendor/snowball/runtime/utilities.c +282 -106
- data/vendor/snowball/rust/src/main.rs +2 -2
- data/vendor/snowball/rust/src/snowball/snowball_env.rs +7 -9
- data/vendor/snowball/tests/compilertest +62 -0
- data/vendor/snowball/tests/errors/ae-errors.sbl +53 -0
- data/vendor/snowball/tests/errors/ae-errors.stderr +8 -0
- data/vendor/snowball/tests/errors/bad-dollar.sbl +14 -0
- data/vendor/snowball/tests/errors/bad-dollar.stderr +4 -0
- data/vendor/snowball/tests/errors/bad-grouping-definition.sbl +9 -0
- data/vendor/snowball/tests/errors/bad-grouping-definition.stderr +6 -0
- data/vendor/snowball/tests/errors/missing-bra.sbl +6 -0
- data/vendor/snowball/tests/errors/missing-bra.stderr +3 -0
- data/vendor/snowball/tests/errors/missing-command.sbl +9 -0
- data/vendor/snowball/tests/errors/missing-command.stderr +1 -0
- data/vendor/snowball/tests/errors/missing-ket-backwardmode.sbl +3 -0
- data/vendor/snowball/tests/errors/missing-ket-backwardmode.stderr +1 -0
- data/vendor/snowball/tests/errors/missing-ket.sbl +7 -0
- data/vendor/snowball/tests/errors/missing-ket.stderr +6 -0
- data/vendor/snowball/tests/errors/notdefined.sbl +4 -0
- data/vendor/snowball/tests/errors/notdefined.stderr +2 -0
- data/vendor/snowball/tests/errors/string-omitted.sbl +5 -0
- data/vendor/snowball/tests/errors/string-omitted.stderr +1 -0
- data/vendor/snowball/tests/errors/undeclared.sbl +20 -0
- data/vendor/snowball/tests/errors/undeclared.stderr +9 -0
- data/vendor/snowball/tests/errors/unexpected-token.sbl +24 -0
- data/vendor/snowball/tests/errors/unexpected-token.stderr +17 -0
- data/vendor/snowball/tests/errors/wrongdirection.sbl +14 -0
- data/vendor/snowball/tests/errors/wrongdirection.stderr +1 -0
- data/vendor/snowball/tests/runtime/among.sbl +19 -0
- data/vendor/snowball/tests/runtime/arithmeticexpr.sbl +86 -0
- data/vendor/snowball/tests/runtime/attachinsert.sbl +47 -0
- data/vendor/snowball/tests/runtime/booleans.sbl +19 -0
- data/vendor/snowball/tests/runtime/externals.sbl +22 -0
- data/vendor/snowball/tests/runtime/hop.sbl +12 -0
- data/vendor/snowball/tests/runtime/integertests.sbl +60 -0
- data/vendor/snowball/tests/runtime/intlimits.sbl +25 -0
- data/vendor/snowball/tests/runtime/naming.sbl +20 -0
- data/vendor/snowball/tests/runtime/not.sbl +30 -0
- data/vendor/snowball/tests/runtime/or.sbl +17 -0
- data/vendor/snowball/tests/runtime/repeat.sbl +16 -0
- data/vendor/snowball/tests/runtime/setlimit.sbl +24 -0
- data/vendor/snowball/tests/runtime/sizelen.sbl +56 -0
- data/vendor/snowball/tests/runtime/slice.sbl +27 -0
- data/vendor/snowball/tests/runtime/stringdollar.sbl +39 -0
- data/vendor/snowball/tests/runtime/strings.sbl +66 -0
- data/vendor/snowball/tests/runtime/test.sbl +19 -0
- data/vendor/snowball/tests/stemtest.c +41 -1
- data/vendor/snowball/tests/syntax/canon.sbl +32 -0
- data/vendor/snowball/tests/syntax/canon.stderr +0 -0
- data/vendor/snowball/tests/syntax/canon.syntax +57 -0
- data/vendor/snowball/tests/syntax/emptyprogram.sbl +2 -0
- data/vendor/snowball/tests/syntax/emptyprogram.syntax +0 -0
- data/vendor/snowball/tests/syntax/groupings.sbl +11 -0
- data/vendor/snowball/tests/syntax/inline.sbl +144 -0
- data/vendor/snowball/tests/syntax/inline.stderr +0 -0
- data/vendor/snowball/tests/syntax/inline.syntax +121 -0
- data/vendor/snowball/tests/syntax/legacy.sbl +17 -0
- data/vendor/snowball/tests/syntax/legacy.stderr +5 -0
- data/vendor/snowball/tests/syntax/legacy.syntax +19 -0
- data/vendor/snowball/tests/syntax/loops.sbl +14 -0
- data/vendor/snowball/tests/syntax/loops.stderr +9 -0
- data/vendor/snowball/tests/syntax/loops.syntax +29 -0
- data/vendor/snowball/tests/syntax/noops.sbl +76 -0
- data/vendor/snowball/tests/syntax/noops.stderr +27 -0
- data/vendor/snowball/tests/syntax/noops.syntax +135 -0
- data/vendor/snowball/tests/syntax/simplifyae.sbl +21 -0
- data/vendor/snowball/tests/syntax/simplifyae.stderr +0 -0
- data/vendor/snowball/tests/syntax/simplifyae.syntax +39 -0
- data/vendor/snowball/tests/syntax/unused.sbl +18 -0
- data/vendor/snowball/tests/syntax/unused.stderr +7 -0
- data/vendor/snowball/tests/syntax/unused.syntax +3 -0
- data/vendor/snowball/zig/env.zig +599 -0
- data/vendor/snowball/zig/generate_algorithms.pl +19 -0
- data/vendor/snowball/zig/stemwords.zig +123 -0
- metadata +102 -4
- data/vendor/snowball/compiler/syswords.h +0 -86
- data/vendor/snowball/runtime/header.h +0 -62
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
externals (stem)
|
|
2
|
+
integers (x)
|
|
3
|
+
define stem as (
|
|
4
|
+
// One token per line to check which token the line number is taken from.
|
|
5
|
+
|
|
6
|
+
$x
|
|
7
|
+
=
|
|
8
|
+
1
|
|
9
|
+
/ // Error here
|
|
10
|
+
0
|
|
11
|
+
|
|
12
|
+
$x
|
|
13
|
+
/= // Error here
|
|
14
|
+
0
|
|
15
|
+
|
|
16
|
+
$
|
|
17
|
+
(
|
|
18
|
+
x
|
|
19
|
+
= // Error here
|
|
20
|
+
0
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
$
|
|
24
|
+
stem // Error here
|
|
25
|
+
=
|
|
26
|
+
0
|
|
27
|
+
|
|
28
|
+
$
|
|
29
|
+
unknown // Error here
|
|
30
|
+
=
|
|
31
|
+
0
|
|
32
|
+
|
|
33
|
+
$
|
|
34
|
+
(
|
|
35
|
+
x
|
|
36
|
+
=> // Error here
|
|
37
|
+
0
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
$
|
|
41
|
+
(
|
|
42
|
+
x
|
|
43
|
+
/= // Error here
|
|
44
|
+
0
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
$
|
|
48
|
+
(
|
|
49
|
+
x
|
|
50
|
+
+= // Error here
|
|
51
|
+
0
|
|
52
|
+
)
|
|
53
|
+
)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
errors/ae-errors.sbl:9: Division by zero
|
|
2
|
+
errors/ae-errors.sbl:13: Division by zero
|
|
3
|
+
errors/ae-errors.sbl:19: Expected relational operator, got '=' (did you mean '=='?)
|
|
4
|
+
errors/ae-errors.sbl:24: 'stem' not of type integer or string
|
|
5
|
+
errors/ae-errors.sbl:29: 'unknown' undeclared
|
|
6
|
+
errors/ae-errors.sbl:36: Expected relational operator, got '=>' (did you mean '>='?)
|
|
7
|
+
errors/ae-errors.sbl:43: Expected relational operator, got '/=' (did you mean '!='?)
|
|
8
|
+
errors/ae-errors.sbl:50: Expected relational operator, got '+='
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
errors/bad-grouping-definition.sbl:3: unexpected define in grouping definition after name
|
|
2
|
+
errors/bad-grouping-definition.sbl:4: unexpected define in grouping definition after -
|
|
3
|
+
errors/bad-grouping-definition.sbl:5: unexpected externals in grouping definition after name
|
|
4
|
+
errors/bad-grouping-definition.sbl:7: empty grouping
|
|
5
|
+
errors/bad-grouping-definition.sbl:8: gself defined in terms of itself
|
|
6
|
+
errors/bad-grouping-definition.sbl:9: 'stem' not of type grouping
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Regression test for segfault introduced and fixed in git before 3.1.0.
|
|
2
|
+
|
|
3
|
+
externals (stem)
|
|
4
|
+
define stem as ( 'q' or )
|
|
5
|
+
|
|
6
|
+
// Also, we swallowed the token for the `)` and emitted an bogus extra error
|
|
7
|
+
// here (this bug was present in releases):
|
|
8
|
+
//
|
|
9
|
+
// ) omitted after )
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
errors/missing-command.sbl:4: unexpected ) after or
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
errors/missing-ket-backwardmode.sbl:4: ) omitted after true
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
errors/missing-ket.sbl:2: ) omitted after name
|
|
2
|
+
errors/missing-ket.sbl:3: ) omitted after name
|
|
3
|
+
errors/missing-ket.sbl:4: name omitted after -
|
|
4
|
+
errors/missing-ket.sbl:6: ) omitted after number
|
|
5
|
+
errors/missing-ket.sbl:7: ) omitted after number
|
|
6
|
+
errors/missing-ket.sbl:8: ) omitted after delete
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
errors/string-omitted.sbl:4: string omitted after <-
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Regression test for bug reporting names.
|
|
2
|
+
externals (stem)
|
|
3
|
+
booleans (rb longbool rb)
|
|
4
|
+
groupings (rg longgroup rg)
|
|
5
|
+
integers (ri longint ri)
|
|
6
|
+
strings (rs longstring rs)
|
|
7
|
+
|
|
8
|
+
define rg 'rg'
|
|
9
|
+
define longgroup 'aeiou'
|
|
10
|
+
define rg 'xy'
|
|
11
|
+
|
|
12
|
+
define stem as (
|
|
13
|
+
set longbool
|
|
14
|
+
set xb
|
|
15
|
+
$longint = 1
|
|
16
|
+
$xi = 1
|
|
17
|
+
ri
|
|
18
|
+
$longstring = ''
|
|
19
|
+
$(sizeof xs > 0)
|
|
20
|
+
)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
errors/undeclared.sbl:3: 'rb' re-declared
|
|
2
|
+
errors/undeclared.sbl:4: 'rg' re-declared
|
|
3
|
+
errors/undeclared.sbl:5: 'ri' re-declared
|
|
4
|
+
errors/undeclared.sbl:6: 'rs' re-declared
|
|
5
|
+
errors/undeclared.sbl:10: 'rg' redefined
|
|
6
|
+
errors/undeclared.sbl:14: 'xb' undeclared
|
|
7
|
+
errors/undeclared.sbl:16: 'xi' undeclared
|
|
8
|
+
errors/undeclared.sbl:17: integer name 'ri' misplaced
|
|
9
|
+
errors/undeclared.sbl:19: 'xs' undeclared
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
externals (stem)
|
|
2
|
+
integers (i)
|
|
3
|
+
groupings (g)
|
|
4
|
+
define g +
|
|
5
|
+
define stem as (
|
|
6
|
+
$
|
|
7
|
+
next
|
|
8
|
+
$(i 0)
|
|
9
|
+
$i = hop 2
|
|
10
|
+
$(i = )
|
|
11
|
+
backwardmode (next)
|
|
12
|
+
$(i = 1)
|
|
13
|
+
$(i /= 1)
|
|
14
|
+
$(i => 1)
|
|
15
|
+
$(i += 1)
|
|
16
|
+
$(i -= 1)
|
|
17
|
+
$(i *= 1)
|
|
18
|
+
)
|
|
19
|
+
next
|
|
20
|
+
|
|
21
|
+
strings (s1 s2)
|
|
22
|
+
define s1 'string'
|
|
23
|
+
define s2 as 'string'
|
|
24
|
+
define
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
errors/unexpected-token.sbl:4: unexpected + in grouping definition after name
|
|
2
|
+
errors/unexpected-token.sbl:7: unexpected next in integer test expression after $
|
|
3
|
+
errors/unexpected-token.sbl:8: unexpected number 0 in integer test expression after name
|
|
4
|
+
errors/unexpected-token.sbl:9: unexpected hop in integer expression after =
|
|
5
|
+
errors/unexpected-token.sbl:10: Expected relational operator, got '=' (did you mean '=='?)
|
|
6
|
+
errors/unexpected-token.sbl:10: unexpected ) in integer expression after =
|
|
7
|
+
errors/unexpected-token.sbl:11: unexpected backwardmode after )
|
|
8
|
+
errors/unexpected-token.sbl:12: Expected relational operator, got '=' (did you mean '=='?)
|
|
9
|
+
errors/unexpected-token.sbl:13: Expected relational operator, got '/=' (did you mean '!='?)
|
|
10
|
+
errors/unexpected-token.sbl:14: Expected relational operator, got '=>' (did you mean '>='?)
|
|
11
|
+
errors/unexpected-token.sbl:15: Expected relational operator, got '+='
|
|
12
|
+
errors/unexpected-token.sbl:16: Expected relational operator, got '-='
|
|
13
|
+
errors/unexpected-token.sbl:17: Expected relational operator, got '*='
|
|
14
|
+
errors/unexpected-token.sbl:19: unexpected next after )
|
|
15
|
+
errors/unexpected-token.sbl:22: 's1' not of type grouping
|
|
16
|
+
errors/unexpected-token.sbl:23: 's2' not of type routine or external
|
|
17
|
+
errors/unexpected-token.sbl:25: name omitted after define
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
errors/wrongdirection.sbl:13: routine 'remove_suffix' mis-used in string forward mode
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Test arithmetic expressions (AEs).
|
|
2
|
+
externals (stem)
|
|
3
|
+
routines (operators pseudovars)
|
|
4
|
+
integers (x y)
|
|
5
|
+
|
|
6
|
+
define stem as (
|
|
7
|
+
operators
|
|
8
|
+
pseudovars
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
define operators as (
|
|
12
|
+
$x = 3 * 2
|
|
13
|
+
$x *= 5
|
|
14
|
+
$(x * 7 == 210) or fail='multiplication gave wrong answer'
|
|
15
|
+
|
|
16
|
+
$x = 1 + 2
|
|
17
|
+
$x += 4
|
|
18
|
+
$(x + 8 == 15) or fail='addition gave wrong answer'
|
|
19
|
+
|
|
20
|
+
$x = 1 - 2
|
|
21
|
+
$x -= 4
|
|
22
|
+
$(8 - x == 13) or fail='subtraction gave wrong answer'
|
|
23
|
+
|
|
24
|
+
$(-x == 5) or fail='negation gave wrong answer'
|
|
25
|
+
|
|
26
|
+
// Test division truncates towards zero.
|
|
27
|
+
|
|
28
|
+
$x = 7
|
|
29
|
+
$x /= 4
|
|
30
|
+
$(x == 1) or fail='/= should truncate towards zero (+/+)'
|
|
31
|
+
|
|
32
|
+
$y = 7
|
|
33
|
+
$x = y / 4
|
|
34
|
+
$(x == 1) or fail='/ should truncate towards zero (+/+)'
|
|
35
|
+
|
|
36
|
+
$(7 / 4 * 4 == 4) or fail='should use integer / (+/+)'
|
|
37
|
+
|
|
38
|
+
$x = -7
|
|
39
|
+
$x /= -4
|
|
40
|
+
$(x == 1) or fail='/= should truncate towards zero (-/-)'
|
|
41
|
+
|
|
42
|
+
$y = -7
|
|
43
|
+
$x = y / -4
|
|
44
|
+
$(x == 1) or fail='/ should truncate towards zero (-/-)'
|
|
45
|
+
|
|
46
|
+
$(-7 / -4 * 4 == 4) or fail='should use integer / (-/-)'
|
|
47
|
+
|
|
48
|
+
$x = -7
|
|
49
|
+
$x /= 4
|
|
50
|
+
$(x == -1) or fail='/= should truncate towards zero (-/+)'
|
|
51
|
+
|
|
52
|
+
$y = -7
|
|
53
|
+
$x = y / 4
|
|
54
|
+
$(x == -1) or fail='/ should truncate towards zero (-/+)'
|
|
55
|
+
|
|
56
|
+
$(-7 / 4 * 4 == -4) or fail='should use integer / (-/+)'
|
|
57
|
+
|
|
58
|
+
$x = 7
|
|
59
|
+
$x /= -4
|
|
60
|
+
$(x == -1) or fail='/= should truncate towards zero (+/-)'
|
|
61
|
+
|
|
62
|
+
$y = 7
|
|
63
|
+
$x = y / -4
|
|
64
|
+
$(x == -1) or fail='/ should truncate towards zero (+/-)'
|
|
65
|
+
|
|
66
|
+
$(7 / -4 * 4 == -4) or fail='should use integer / (+/-)'
|
|
67
|
+
|
|
68
|
+
// Some target languages warn or even error for self-assignment.
|
|
69
|
+
$x = x $(x == -1) or fail='self assignment changed value'
|
|
70
|
+
$x = cursor tomark cursor $(x == cursor) or fail='tomark cursor moved cursor'
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
define pseudovars as (
|
|
74
|
+
$(cursor == 0) or fail='cursor should be 0'
|
|
75
|
+
$(limit == 2) or fail='limit should be 2'
|
|
76
|
+
test (next $(cursor == 1)) or fail='cursor should be 1'
|
|
77
|
+
test (hop 2 $(cursor == 2)) or fail='cursor should be 2'
|
|
78
|
+
setlimit next for $(limit == 1) or fail='limit should be 1'
|
|
79
|
+
test (reverse $(cursor == 0)) or fail='cursor should be 0 (reverse)'
|
|
80
|
+
test (reverse $(limit == 0)) or fail='limit should be 0 (reverse)'
|
|
81
|
+
test (next reverse $(limit == 0)) or fail='limit should be 0 (reverse)'
|
|
82
|
+
test (next reverse $(cursor == 1)) or fail='cursor should be 1 (reverse)'
|
|
83
|
+
test (backwards $(cursor == 2)) or fail='cursor should be 2 (backwards)'
|
|
84
|
+
test (backwards $(limit == 0)) or fail='limit should be 0 (backwards)'
|
|
85
|
+
test (next backwards $(limit == 1)) or fail='limit should be 1 (backwards)'
|
|
86
|
+
)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Test `attach` and `insert`.
|
|
2
|
+
|
|
3
|
+
externals (stem)
|
|
4
|
+
|
|
5
|
+
define stem as (
|
|
6
|
+
='abcd'
|
|
7
|
+
do (
|
|
8
|
+
hop 2
|
|
9
|
+
attach '-'
|
|
10
|
+
$(cursor == 2) or fail='forwards attach changed cursor'
|
|
11
|
+
next
|
|
12
|
+
)
|
|
13
|
+
$(cursor == 0) or fail='do failed to restore cursor after forwards attach'
|
|
14
|
+
|
|
15
|
+
='abcd'
|
|
16
|
+
do (
|
|
17
|
+
hop 2
|
|
18
|
+
insert '-'
|
|
19
|
+
$(cursor == 3) or fail='forwards insert failed to move cursor'
|
|
20
|
+
next
|
|
21
|
+
)
|
|
22
|
+
$(cursor == 0) or fail='do failed to restore cursor after forwards insert'
|
|
23
|
+
|
|
24
|
+
='abcd'
|
|
25
|
+
backwards (
|
|
26
|
+
do (
|
|
27
|
+
hop 2
|
|
28
|
+
attach '-'
|
|
29
|
+
$(cursor == 3) or fail='backwards attach failed to move cursor'
|
|
30
|
+
next
|
|
31
|
+
)
|
|
32
|
+
$(cursor == size) or fail='do failed to restore cursor after backwards attach'
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
='abcd'
|
|
36
|
+
backwards (
|
|
37
|
+
do (
|
|
38
|
+
hop 2
|
|
39
|
+
insert '-'
|
|
40
|
+
$(cursor == 2) or fail='backwards insert moved cursor'
|
|
41
|
+
next
|
|
42
|
+
)
|
|
43
|
+
$(cursor == size) or fail='do failed to restore cursor after backwards insert'
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
='ok'
|
|
47
|
+
)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Test strings
|
|
2
|
+
|
|
3
|
+
externals (stem)
|
|
4
|
+
|
|
5
|
+
booleans (b)
|
|
6
|
+
|
|
7
|
+
stringescapes {}
|
|
8
|
+
|
|
9
|
+
define stem as (
|
|
10
|
+
true or fail='true failed'
|
|
11
|
+
not false or fail='false did not fail'
|
|
12
|
+
|
|
13
|
+
set b
|
|
14
|
+
b or fail='set b did not set b'
|
|
15
|
+
unset b
|
|
16
|
+
not b or fail='unset b did not unset b'
|
|
17
|
+
set b
|
|
18
|
+
b or fail='set b did not set b (2)'
|
|
19
|
+
)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Test calling externals within the program.
|
|
2
|
+
|
|
3
|
+
externals (stem e1 e2)
|
|
4
|
+
|
|
5
|
+
define stem as (
|
|
6
|
+
not e2 or fail='failed to call external e2'
|
|
7
|
+
|
|
8
|
+
test e1 or fail='external as among function failed'
|
|
9
|
+
$(len == 4) or fail='external as among function result wrong'
|
|
10
|
+
not e1 or fail='external as among function did not fail'
|
|
11
|
+
|
|
12
|
+
='ok'
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
define e1 as (
|
|
16
|
+
[substring] among (
|
|
17
|
+
'ok' e2 ( <-'oops' )
|
|
18
|
+
'no' ( <-'nope' )
|
|
19
|
+
)
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
define e2 as atlimit
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Test `hop` and `next`.
|
|
2
|
+
|
|
3
|
+
externals (stem)
|
|
4
|
+
|
|
5
|
+
strings (s)
|
|
6
|
+
|
|
7
|
+
define stem as (
|
|
8
|
+
next or fail='next failed'
|
|
9
|
+
not (hop len-3) or fail='hop by calculated negative signalled t'
|
|
10
|
+
test (tolimit not next or fail='next at end of string signalled t')
|
|
11
|
+
not (hop len-cursor+1) or fail='hop past end of string signalled t'
|
|
12
|
+
)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Test integer tests.
|
|
2
|
+
externals (stem)
|
|
3
|
+
routines (var_local_bug var_local_bug_)
|
|
4
|
+
integers (x y var_local_bug_a var_local_bug_b)
|
|
5
|
+
define stem as (
|
|
6
|
+
var_local_bug
|
|
7
|
+
|
|
8
|
+
$x = len
|
|
9
|
+
|
|
10
|
+
$x == 2 or fail='== failed (old style)'
|
|
11
|
+
$(x == 2) or fail='== failed'
|
|
12
|
+
$(2 == x) or fail='== failed (reversed)'
|
|
13
|
+
|
|
14
|
+
$x != 3 or fail='!= failed (old style)'
|
|
15
|
+
$(x != 3) or fail='!= failed'
|
|
16
|
+
$(3 != x) or fail='!= failed (reversed)'
|
|
17
|
+
|
|
18
|
+
$x >= 2 or fail='>= failed (old style)'
|
|
19
|
+
$(x >= 2) or fail='>= failed'
|
|
20
|
+
$(x >= 1) or fail='>= failed (nonequal)'
|
|
21
|
+
$(2 >= x) or fail='>= failed (reversed)'
|
|
22
|
+
$(3 >= x) or fail='>= failed (nonequal, reversed)'
|
|
23
|
+
|
|
24
|
+
$x <= 2 or fail='<= failed (old style)'
|
|
25
|
+
$(x <= 2) or fail='<= failed'
|
|
26
|
+
$(x <= 3) or fail='<= failed (nonequal)'
|
|
27
|
+
$(2 <= x) or fail='<= failed (reversed)'
|
|
28
|
+
$(1 <= x) or fail='<= failed (nonequal, reversed)'
|
|
29
|
+
|
|
30
|
+
$x > 1 or fail='> failed (old style)'
|
|
31
|
+
$(x > 1) or fail='> failed'
|
|
32
|
+
$(3 > x) or fail='> failed (nonequal, reversed)'
|
|
33
|
+
|
|
34
|
+
$x < 3 or fail='< failed (old style)'
|
|
35
|
+
$(x < 3) or fail='< failed'
|
|
36
|
+
$(1 < x) or fail='< failed (reversed)'
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
// Regression test for bug in fixed in 3.1.1 - the variable localisation
|
|
40
|
+
// machinery failed to look at the rhs of integer tests.
|
|
41
|
+
define var_local_bug as (
|
|
42
|
+
$var_local_bug_a = 0
|
|
43
|
+
var_local_bug_
|
|
44
|
+
$var_local_bug_a = 1
|
|
45
|
+
var_local_bug_
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
define var_local_bug_ as (
|
|
49
|
+
do (
|
|
50
|
+
$(var_local_bug_a == 1)
|
|
51
|
+
// The bug was that this use before set was not spotted.
|
|
52
|
+
$(7 != var_local_bug_b)
|
|
53
|
+
['a'] delete
|
|
54
|
+
)
|
|
55
|
+
do (
|
|
56
|
+
$(var_local_bug_a == 0)
|
|
57
|
+
$var_local_bug_b = 7
|
|
58
|
+
)
|
|
59
|
+
$(7 == var_local_bug_b) or fail='var_local_bug_b was incorrectly localised'
|
|
60
|
+
)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Test minint and maxint work as expected.
|
|
2
|
+
|
|
3
|
+
externals (stem)
|
|
4
|
+
|
|
5
|
+
integers (x y)
|
|
6
|
+
|
|
7
|
+
define stem as (
|
|
8
|
+
$(minint < 0) or fail='minint should be negative'
|
|
9
|
+
$(maxint > 0) or fail='maxint should be positive'
|
|
10
|
+
|
|
11
|
+
$(minint <= -32767) or fail='minint should be <= -32767'
|
|
12
|
+
$(maxint >= 32767) or fail='maxint should be >= 32767'
|
|
13
|
+
|
|
14
|
+
$(minint + maxint == 0) or $(minint + maxint == -1) or fail='minint+maxint should be 0 or -1'
|
|
15
|
+
|
|
16
|
+
$x = minint
|
|
17
|
+
$(x == minint) or fail='minint cannot be stored in a variable'
|
|
18
|
+
$y = x + 1
|
|
19
|
+
$(y - x == 1) or fail='Adding one to minint does not work'
|
|
20
|
+
|
|
21
|
+
$x = maxint
|
|
22
|
+
$(x == maxint) or fail='maxint cannot be stored in a variable'
|
|
23
|
+
$y = x - 1
|
|
24
|
+
$(x - y == 1) or fail='Subtracting one from maxint does not work'
|
|
25
|
+
)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Test target language naming problem cases.
|
|
2
|
+
// Test handling of names which only differ by case (for e.g. Pascal).
|
|
3
|
+
strings (notable NoTable NOTABLE)
|
|
4
|
+
// Test handling of name ending `_`.
|
|
5
|
+
// (Regression test for bug in Ada generator fixed in 3.1.0.)
|
|
6
|
+
integers (x_ x_e x_ee)
|
|
7
|
+
externals (stem)
|
|
8
|
+
define stem as (
|
|
9
|
+
try (
|
|
10
|
+
[next] -> notable
|
|
11
|
+
next] -> NoTable
|
|
12
|
+
next] -> NOTABLE
|
|
13
|
+
$x_ = lenof notable + lenof NoTable + lenof NOTABLE
|
|
14
|
+
$x_ee = 2
|
|
15
|
+
$x_e = len
|
|
16
|
+
$(x_ + x_ee < x_e)
|
|
17
|
+
delete
|
|
18
|
+
)
|
|
19
|
+
[tolimit] <- 'ok'
|
|
20
|
+
)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Test `not`.
|
|
2
|
+
|
|
3
|
+
externals (stem)
|
|
4
|
+
|
|
5
|
+
define stem as (
|
|
6
|
+
='stopknot'
|
|
7
|
+
|
|
8
|
+
test (
|
|
9
|
+
$(cursor == 0) or fail='cursor not 0 before test'
|
|
10
|
+
next or fail='next failed'
|
|
11
|
+
do (
|
|
12
|
+
not ([next] delete 'o')
|
|
13
|
+
)
|
|
14
|
+
$(cursor == 1) or fail='do failed to restore cursor'
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
backwards (
|
|
18
|
+
$(cursor == 7) or fail='cursor not 7 before test'
|
|
19
|
+
next or fail='next failed'
|
|
20
|
+
do (
|
|
21
|
+
not ([next] delete 'n')
|
|
22
|
+
)
|
|
23
|
+
$(cursor == 5) or fail='backwards do failed to restore cursor'
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
not (next fail='this should never be seen')
|
|
27
|
+
$(cursor == 0) or fail='`not` failed to restore cursor'
|
|
28
|
+
='ok'
|
|
29
|
+
not true and fail='`not true` raised signal t'
|
|
30
|
+
)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Test `repeat`.
|
|
2
|
+
|
|
3
|
+
stringescapes { }
|
|
4
|
+
|
|
5
|
+
externals ( stem )
|
|
6
|
+
|
|
7
|
+
define stem as (
|
|
8
|
+
='ok'
|
|
9
|
+
|
|
10
|
+
$(limit==size) or fail='limit not size by default'
|
|
11
|
+
|
|
12
|
+
// Regression tests for Ada `repeat` codegen bug.
|
|
13
|
+
// https://github.com/snowballstem/snowball/issues/275
|
|
14
|
+
setlimit tomark cursor+1 for repeat 'Q' $(limit==size) or fail='limit not restored after repeat'
|
|
15
|
+
setlimit next for repeat 'Q' $(limit==size) or fail='limit not restored after repeat (2)'
|
|
16
|
+
)
|