From 03b90cb7f9d4f1f96f6ea34928eb3a68e478938b Mon Sep 17 00:00:00 2001 From: Ulya Trofimovich Date: Wed, 2 Dec 2015 12:20:18 +0000 Subject: [PATCH] Release 0.15.3. --- Makefile | 7 +- src/about/about.rst | 2 +- src/feed/atom.xml | 18 +- src/install/install.rst | 4 +- src/manual/features/skeleton/collapsed.png | Bin 36932 -> 0 bytes .../features/skeleton/collapsed_next.png | Bin 24163 -> 0 bytes src/manual/features/skeleton/example.c | 2 +- src/manual/features/skeleton/example.rst | 102 +- src/manual/features/skeleton/example_next.png | Bin 0 -> 28603 bytes src/manual/features/skeleton/failures.rst | 17 +- src/manual/features/skeleton/gen.sh | 2 +- .../features/skeleton/generating_data.rst | 157 ++- src/manual/features/skeleton/montage.sh | 6 +- src/manual/features/skeleton/plot.gnuplot | 34 +- src/manual/features/skeleton/plot.png | Bin 0 -> 10913 bytes src/manual/features/skeleton/plot_input.png | Bin 12619 -> 0 bytes src/manual/features/skeleton/plot_keys.png | Bin 11611 -> 0 bytes src/manual/features/skeleton/points_1_1024 | 1026 +++++++++++++++++ src/manual/features/skeleton/points_1_7 | 9 - src/manual/features/skeleton/points_8_1024 | 1019 ---------------- src/manual/features/skeleton/skeleton.rst | 7 +- src/manual/options/options_list.rst | 6 +- src/news/changelog/0_15.rst | 13 + src/news/news.rst | 1 + src/news/release_notes/0_15_3.rst | 17 + 25 files changed, 1265 insertions(+), 1184 deletions(-) delete mode 100644 src/manual/features/skeleton/collapsed.png delete mode 100644 src/manual/features/skeleton/collapsed_next.png create mode 100644 src/manual/features/skeleton/example_next.png create mode 100644 src/manual/features/skeleton/plot.png delete mode 100644 src/manual/features/skeleton/plot_input.png delete mode 100644 src/manual/features/skeleton/plot_keys.png create mode 100644 src/manual/features/skeleton/points_1_1024 delete mode 100644 src/manual/features/skeleton/points_1_7 delete mode 100644 src/manual/features/skeleton/points_8_1024 create mode 100644 src/news/release_notes/0_15_3.rst diff --git a/Makefile b/Makefile index 05c17905..eef9f9ec 100644 --- a/Makefile +++ b/Makefile @@ -70,6 +70,7 @@ SRC_RST = \ src/news/release_notes/0_15.rst \ src/news/release_notes/0_15_1.rst \ src/news/release_notes/0_15_2.rst \ + src/news/release_notes/0_15_3.rst \ src/news/home.rst \ src/about/about.rst \ src/install/install.rst \ @@ -102,16 +103,14 @@ SRC_OTH = \ src/manual/features/dot/php_json_neato.png \ src/manual/features/dot/utf8_any.re \ src/manual/features/dot/php_json.re \ - src/manual/features/skeleton/collapsed.png \ - src/manual/features/skeleton/collapsed_next.png \ src/manual/features/skeleton/example.c \ src/manual/features/skeleton/example.c.line4.input \ src/manual/features/skeleton/example.c.line4.keys \ src/manual/features/skeleton/example.png \ + src/manual/features/skeleton/example_next.png \ src/manual/features/skeleton/gen.sh \ src/manual/features/skeleton/hex2.re \ - src/manual/features/skeleton/plot_input.png \ - src/manual/features/skeleton/plot_keys.png \ + src/manual/features/skeleton/plot.png \ src/about/1994_bumbulis_cowan_re2c_a_more_versatile_scanner_generator.pdf OBJ_RST = $(SRC_RST:%.rst=%.html) diff --git a/src/about/about.rst b/src/about/about.rst index b5d97945..edc8ff9f 100644 --- a/src/about/about.rst +++ b/src/about/about.rst @@ -43,5 +43,5 @@ be appreciated. Version ------- -This page describes ``re2c`` version 0.15.2 packaged on 23 Nov 2015. +This page describes ``re2c`` version 0.15.3 packaged on 02 Dec 2015. diff --git a/src/feed/atom.xml b/src/feed/atom.xml index 1d704f15..bb152c55 100644 --- a/src/feed/atom.xml +++ b/src/feed/atom.xml @@ -4,7 +4,7 @@ re2c http://re2c.org/ - 2015-11-23T22:00:00Z + 2015-12-02T00:00:00Z Release 0.15 @@ -54,4 +54,20 @@ + + Release 0.15.3 + + http://re2c.org/news/release_notes/0_15_3.html + 2015-12-02T00:00:00Z + +
+ Minor release re2c-0.15.3 (release notes). +
+
+ + Ulya Trofimovich + skvadrik@gmail.com + +
+ diff --git a/src/install/install.rst b/src/install/install.rst index 1d77ca2c..95b366f5 100644 --- a/src/install/install.rst +++ b/src/install/install.rst @@ -11,7 +11,7 @@ Download Tarballs -------- -* `re2c-0.15.2.tar.gz `_ +* `re2c-0.15.3.tar.gz `_ * `re2c-0.14.3.tar.gz `_ * `re2c-0.13.7.5.tar.gz `_ * `re2c-0.13.6.tar.gz `_ @@ -68,7 +68,7 @@ Build You only need C++98 compier to build re2c from tarball. If you have bison, re2c will use it (otherwise it will use precompiled files). -If you are building re2c from source, you will also need autotools: +If you are building re2c from source (not from tarball), you will also need autotools: .. code-block:: bash diff --git a/src/manual/features/skeleton/collapsed.png b/src/manual/features/skeleton/collapsed.png deleted file mode 100644 index d6d77a04652cb246a2a1ad93e810cc7a1646a5eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36932 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

B3C&KBG;A$*a0Msni3e-eq{kMe3I8 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 y;P_;@q^q3*Su`|%7XAg}3^t7-)Z=&n0000 #include /* malloc, free */ diff --git a/src/manual/features/skeleton/example.rst b/src/manual/features/skeleton/example.rst index 29571e56..781d7bcc 100644 --- a/src/manual/features/skeleton/example.rst +++ b/src/manual/features/skeleton/example.rst @@ -21,19 +21,39 @@ First, let's look at the generated strings: .. code-block:: bash - $ hexdump -C example.c.line4.input - 00000000 00 2f 3a 40 47 60 67 ff 30 30 30 39 30 41 30 46 |./:@G`g.00090A0F| - 00000010 30 61 30 66 39 30 39 39 39 41 39 46 39 61 39 66 |0a0f90999A9F9a9f| - 00000020 41 30 41 39 41 41 41 46 41 61 41 66 46 30 46 39 |A0A9AAAFAaAfF0F9| - 00000030 46 41 46 46 46 61 46 66 61 30 61 39 61 41 61 46 |FAFFFaFfa0a9aAaF| - 00000040 61 61 61 66 66 30 66 39 66 41 66 46 66 61 66 66 |aaaff0f9fAfFfaff| - 00000050 30 00 30 2f 30 3a 30 40 30 47 30 60 30 67 30 ff |0.0/0:0@0G0`0g0.| - 00000060 39 00 39 2f 39 3a 39 40 39 47 39 60 39 67 39 ff |9.9/9:9@9G9`9g9.| - 00000070 41 00 41 2f 41 3a 41 40 41 47 41 60 41 67 41 ff |A.A/A:A@AGA`AgA.| - 00000080 46 00 46 2f 46 3a 46 40 46 47 46 60 46 67 46 ff |F.F/F:F@FGF`FgF.| - 00000090 61 00 61 2f 61 3a 61 40 61 47 61 60 61 67 61 ff |a.a/a:a@aGa`aga.| - 000000a0 66 00 66 2f 66 3a 66 40 66 47 66 60 66 67 66 ff |f.f/f:f@fGf`fgf.| - 000000b0 + $ hexdump -v -e '"%08_ax " 24/1 "%02x "' -e '" |" 24/1 "%_p" "|\n"' example.c.line4.input + 00000000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 |........................| + 00000018 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f |........ !"#$%&'()*+,-./| + 00000030 3a 3b 3c 3d 3e 3f 40 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 |:;<=>?@GHIJKLMNOPQRSTUVW| + 00000048 58 59 5a 5b 5c 5d 5e 5f 60 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 |XYZ[\]^_`ghijklmnopqrstu| + 00000060 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d |vwxyz{|}~...............| + 00000078 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 |........................| + 00000090 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd |........................| + 000000a8 be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 |........................| + 000000c0 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed |........................| + 000000d8 ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff 30 30 31 31 32 32 |..................001122| + 000000f0 33 33 34 34 35 35 36 36 37 37 38 38 39 39 41 41 42 42 43 43 44 44 45 45 |33445566778899AABBCCDDEE| + 00000108 46 46 61 61 62 62 63 63 64 64 65 65 66 66 30 00 31 01 32 02 33 03 34 04 |FFaabbccddeeff0.1.2.3.4.| + 00000120 35 05 36 06 37 07 38 08 39 09 41 0a 42 0b 43 0c 44 0d 45 0e 46 0f 61 10 |5.6.7.8.9.A.B.C.D.E.F.a.| + 00000138 62 11 63 12 64 13 65 14 66 15 30 16 31 17 32 18 33 19 34 1a 35 1b 36 1c |b.c.d.e.f.0.1.2.3.4.5.6.| + 00000150 37 1d 38 1e 39 1f 41 20 42 21 43 22 44 23 45 24 46 25 61 26 62 27 63 28 |7.8.9.A B!C"D#E$F%a&b'c(| + 00000168 64 29 65 2a 66 2b 30 2c 31 2d 32 2e 33 2f 34 3a 35 3b 36 3c 37 3d 38 3e |d)e*f+0,1-2.3/4:5;6<7=8>| + 00000180 39 3f 41 40 42 47 43 48 44 49 45 4a 46 4b 61 4c 62 4d 63 4e 64 4f 65 50 |9?A@BGCHDIEJFKaLbMcNdOeP| + 00000198 66 51 30 52 31 53 32 54 33 55 34 56 35 57 36 58 37 59 38 5a 39 5b 41 5c |fQ0R1S2T3U4V5W6X7Y8Z9[A\| + 000001b0 42 5d 43 5e 44 5f 45 60 46 67 61 68 62 69 63 6a 64 6b 65 6c 66 6d 30 6e |B]C^D_E`Fgahbicjdkelfm0n| + 000001c8 31 6f 32 70 33 71 34 72 35 73 36 74 37 75 38 76 39 77 41 78 42 79 43 7a |1o2p3q4r5s6t7u8v9wAxByCz| + 000001e0 44 7b 45 7c 46 7d 61 7e 62 7f 63 80 64 81 65 82 66 83 30 84 31 85 32 86 |D{E|F}a~b.c.d.e.f.0.1.2.| + 000001f8 33 87 34 88 35 89 36 8a 37 8b 38 8c 39 8d 41 8e 42 8f 43 90 44 91 45 92 |3.4.5.6.7.8.9.A.B.C.D.E.| + 00000210 46 93 61 94 62 95 63 96 64 97 65 98 66 99 30 9a 31 9b 32 9c 33 9d 34 9e |F.a.b.c.d.e.f.0.1.2.3.4.| + 00000228 35 9f 36 a0 37 a1 38 a2 39 a3 41 a4 42 a5 43 a6 44 a7 45 a8 46 a9 61 aa |5.6.7.8.9.A.B.C.D.E.F.a.| + 00000240 62 ab 63 ac 64 ad 65 ae 66 af 30 b0 31 b1 32 b2 33 b3 34 b4 35 b5 36 b6 |b.c.d.e.f.0.1.2.3.4.5.6.| + 00000258 37 b7 38 b8 39 b9 41 ba 42 bb 43 bc 44 bd 45 be 46 bf 61 c0 62 c1 63 c2 |7.8.9.A.B.C.D.E.F.a.b.c.| + 00000270 64 c3 65 c4 66 c5 30 c6 31 c7 32 c8 33 c9 34 ca 35 cb 36 cc 37 cd 38 ce |d.e.f.0.1.2.3.4.5.6.7.8.| + 00000288 39 cf 41 d0 42 d1 43 d2 44 d3 45 d4 46 d5 61 d6 62 d7 63 d8 64 d9 65 da |9.A.B.C.D.E.F.a.b.c.d.e.| + 000002a0 66 db 30 dc 31 dd 32 de 33 df 34 e0 35 e1 36 e2 37 e3 38 e4 39 e5 41 e6 |f.0.1.2.3.4.5.6.7.8.9.A.| + 000002b8 42 e7 43 e8 44 e9 45 ea 46 eb 61 ec 62 ed 63 ee 64 ef 65 f0 66 f1 30 f2 |B.C.D.E.F.a.b.c.d.e.f.0.| + 000002d0 31 f3 32 f4 33 f5 34 f6 35 f7 36 f8 37 f9 38 fa 39 fb 41 fc 42 fd 43 fe |1.2.3.4.5.6.7.8.9.A.B.C.| + 000002e8 44 ff |D.| Byte sequences correspond to the paths in DFA. All strings are glued together, so it's hard to tell where is the end of one string and the beginning of another. @@ -43,19 +63,49 @@ For that re2c generates keys: .. code-block:: bash - $ hexdump -v -e '"%04_ax| " 24/1 "%02x " "\n"' example.c.line4.keys - 0000| 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe - 0018| 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 - 0030| 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 - 0048| 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 - 0060| 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 - 0078| 02 02 00 02 02 00 02 02 00 02 02 00 02 01 fe 02 01 fe 02 01 fe 02 01 fe - 0090| 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe - 00a8| 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe - 00c0| 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe - 00d8| 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe - 00f0| 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe - 0108| 02 01 fe 02 01 fe 02 01 fe 02 01 fe + $hexdump -v -e '"%08_ax " 36/1 "%02x " "\n"' example.c.line4.keys + 00000000 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 00000024 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 00000048 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 0000006c 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 00000090 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 000000b4 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 000000d8 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 000000fc 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 00000120 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 00000144 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 00000168 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 0000018c 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 000001b0 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 000001d4 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 000001f8 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 0000021c 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 00000240 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 00000264 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 00000288 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe + 000002ac 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 01 01 fe 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 + 000002d0 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 02 02 00 + 000002f4 02 02 00 02 02 00 02 02 00 02 02 00 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 00000318 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 0000033c 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 00000360 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 00000384 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 000003a8 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 000003cc 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 000003f0 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 00000414 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 00000438 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 0000045c 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 00000480 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 000004a4 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 000004c8 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 000004ec 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 00000510 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 00000534 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 00000558 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 0000057c 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + 000005a0 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe 02 01 fe + A key is a triplet: string length, the length of matching prefix and the number of matching rule. All three components occupy equal amount of memory (re2c uses unsigned integer type of minimal sufficient width). diff --git a/src/manual/features/skeleton/example_next.png b/src/manual/features/skeleton/example_next.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f1aedeadd21ffc700b43c2c3d03d99a80bb585 GIT binary patch literal 28603 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

~w)!Wbf_KG5>Aq^><7j$!{wk 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 literal 0 HcmV?d00001 diff --git a/src/manual/features/skeleton/failures.rst b/src/manual/features/skeleton/failures.rst index 50ba6ede..cb450afc 100644 --- a/src/manual/features/skeleton/failures.rst +++ b/src/manual/features/skeleton/failures.rst @@ -55,12 +55,19 @@ Now let's change the input string: expected: match length 1, rule 254 actual: match length 2, rule 0 +Finally, let's break the generated code: + +.. code-block:: bash + + $ re2c -S -o example.c hex2.re + $ sed -i -e "s/case '7'://" example.c + $ gcc -o example example.c + $ ./example + error: lex_line4: at position 248 (iteration 241): + expected: match length 2, rule 0 + actual: match length 1, rule 254 + And so on. -Of course, some errors won't be captured by skeleton program: it's not feasible to cover all possible inputs. -For example, of all the hex digits ``[0-9a-fA-F]`` re2c uses only ``[09afAF]``: -we can mangle the lexer to not to recognize ``[1-8b-eB-E]`` as hex digits and the program won't notice. -However, the chosen values are the boundaries of disjoint character ranges and they are tested extensively -(see the section about data generation for details). Undefined control flow diff --git a/src/manual/features/skeleton/gen.sh b/src/manual/features/skeleton/gen.sh index 97a313a0..aeab3119 100755 --- a/src/manual/features/skeleton/gen.sh +++ b/src/manual/features/skeleton/gen.sh @@ -4,5 +4,5 @@ do echo '/*!re2c * {} [0-9a-fA-F]{'$i'} {} */' | re2c -S -o example.c - input=`stat -c '%s' example.c.line1.input` keys=`stat -c '%s' example.c.line1.keys` - printf "%10d%10d%10d%10d\n" $i $((14 * i)) $input $keys + printf "%10d%10d%10d%10d\n" $i $((256 * i)) $input $keys done diff --git a/src/manual/features/skeleton/generating_data.rst b/src/manual/features/skeleton/generating_data.rst index 1006f39a..3ecf0554 100644 --- a/src/manual/features/skeleton/generating_data.rst +++ b/src/manual/features/skeleton/generating_data.rst @@ -4,48 +4,27 @@ Generating data One cannot just run lexer on all possible inputs: for an alphabet of ``n`` characters and input length ``m``, the number of input strings is ``n`` to the power of ``m``. - - -The problem can be mitigated by tailoring the set of input strings to a particular lexer. -For most lexers only a small subset of all input strings makes sense: the majority of them are ill-formed. -Ill-formed inputs are rejected after the first few characters, so that remaining characters are insignificant: -lexer will never reach them and they can be as well discarded. -Input strings that differ only in discarded suffixes are collapsed into one. -This reduces the overall number of strings greatly. - - -Still the number of inputs is too large. -We can further reduce it by collapsing disjoint character sets: -for each each character range we only take its boundaries. -This cuts off many interesting well-formed inputs, but we have to give up some of them this way or another. -The graph from the example above results into the following residual DFA: - -.. image:: collapsed.png - :width: 90% - -All further algorithms work with the residual graph. -re2c has two algorithms: - -* First algorithm generates all possible paths from start node to end nodes - by performing deep-first search on graph (loops are iterated once). - The number of input strings grows exponentially with the number of edges, - thus the algorithm is only suitable for small graphs and graphs with loosely connected nodes. - -* Second algoritm constructs path cover: a set of paths from start node to end nodes - such that each edge in graph is covered by at least one path. - The number of generated strings is bounded by the number of edges in graph. - However, the total length of the generated strings depends quadratically on the number of edges. - (An example of quadratic dependency is shown below. - Upper bound follows from the fact that total length cannot exceed the number of strings - times maximal string length, both values obviously bounded by the number of edges.) - -re2c proceeds as follows: first, it estimates the amount of data needed to generate all paths -(estimation can be done in linear time). -If it exceeds certain limit (~32Mb edges), re2c fallbacks to path cover (which is limited by ~1Gb of edges). -Both algorithms are implemented so that they consume constant amount of RAM -(they dump data to file as soon as it is generated). - -We can look at both algorithms in action on the same example, simply alternating repetition counter: +The problem can be mitigated by tailoring the input for a particular lexer. + +First, re2c constructs skeleton of the given DFA. +For encodings with 1-byte code units skeleton is an exact copy of the original DFA. +For encodings with multibyte code units skeleton is a copy of DFA with certain edges omitted: +for each continuous range of code units (that corresponds to a set of edges between two DFA states) +re2c takes at most 256 code units. +The chosen values are evenly distributed and include range bounds. +(In case of 1-byte code units 256 values are enough to cover the whole range.) + +Second, instead of trying to cover all possible inputs, re2c generates skeleton path cover: +a set of paths from start node to end node such that each skeleton edge is covered by at least one path. +The number of paths in path cover is bounded by the number of edges in skeleton. +However, the total size of path cover depends quadratically on the number of edges: +an example is shown below and +upper bound follows from the fact that total size is bounded by the number of paths +times maximal path length, both values obviously bounded by the number of edges. + +The algorithm's implementation is limited by ~1Gb of edges and consumes constant amount of RAM +(re2c dumps data to file as soon as it is generated). +We can study the algorithm simply alternating repetition counter in the example above: .. code-block:: cpp :number-lines: @@ -55,14 +34,14 @@ We can look at both algorithms in action on the same example, simply alternating [0-9a-fA-F]{1} {} // [0-9a-fA-F]{2}, [0-9a-fA-F]{3}, [0-9a-fA-F]{4}, ... */ -Each increment of the repetition counter adds 14 new edges to the residual DFA. -For example, here is a picture of DFA with three repetitions -(compare it with the above picture of two repetitions — edges in bold have been added): +Each increment of the repetition counter adds 256 new edges the DFA. +Compare the following pictures of DFA with one, two and three repetitions: -.. image:: collapsed_next.png - :width: 60% +.. image:: example_next.png + :width: 70% -The following script shows how ``.input`` and ``.keys`` file size depends on the number of edges in graph: +We will use a simple script that dumps re2c source file, +generates skeleton program and measures the size of ``.input`` and ``.keys`` files: `[gen.sh] `_ @@ -70,46 +49,60 @@ The following script shows how ``.input`` and ``.keys`` file size depends on the :code: bash :number-lines: -It expects two arguments: lower and upped bounds of the iteration counter. -From the example output we can see that for counter values 1 through 7 re2c generated all paths, -then it switched to path cover: +Script runs in a loop and expects two arguments: +lower and upped bounds of the iteration counter. .. code-block:: $ ./gen.sh 1 16 iters edges input keys - 1 14 14 42 - 2 28 176 276 - 3 42 1616 1680 - 4 56 13064 10104 - 5 70 98600 60648 - 6 84 712904 363912 - 7 98 5005256 2183496 - 8 112 336 210 - 9 126 414 234 - 10 140 500 258 - 11 154 594 282 - 12 168 696 306 - 13 182 806 330 - 14 196 924 354 - 15 210 1050 378 - 16 224 1184 402 - -The following pictures show how ``.keys`` file size depends on the number of edges. -Total size of keys equals size of a single key times the number of generated strings. -On the 1st plot (repetitions 1 through 7) it grows exponentially. -On the 2nd plot (repetitions 8 through 1024) it grows linearly (the change of angle -is due to the change of key size: starting from repetition count 256 path length gets out of 1-byte range). -The 3rd plot shows the relation between 1st and 2nd plots. - -.. image:: plot_keys.png + 1 256 256 768 + 2 512 746 1470 + 3 768 1470 2172 + 4 1024 2428 2874 + 5 1280 3620 3576 + 6 1536 5046 4278 + 7 1792 6706 4980 + 8 2048 8600 5682 + 9 2304 10728 6384 + 10 2560 13090 7086 + 11 2816 15686 7788 + 12 3072 18516 8490 + 13 3328 21580 9192 + 14 3584 24878 9894 + 15 3840 28410 10596 + 16 4096 32176 11298 + +The following pictures show how ``.keys`` and ``.input`` file size depends on the number of edges +(repetition counters 1 through 1024): + +.. image:: plot.png :width: 100% -Size of ``.input`` grows exponentially (repetitions 1 through 7) and quadratically (repetitions 8 through 1024). -The exact quadratic function is ``f(x) = 4x^2+ 10x``, where ``x`` is the repetition counter. -However, graphs like this rarely occur in practice: maximal path length is usually less than a hundred. - -.. image:: plot_input.png - :width: 100% +Keys grow linearly with the number of edges in skeleton (a key corresponds to a single path in path cover). +The change of angle is due to the change of key size: +starting from repetition count 256 path length gets out of 1-byte range. + +Size of input grows quadratically with the number of edges in skeleton. +We can calculate the exact analythic function as follows. +Each repetition increment adds 256 new edges: 22 edges corresponding to ``[0-9a-fA-F]`` that +go to accepting state and 234 remaining edges that go to default state. +With a bit of common sense (or knowledge of re2c algorithm) +one can see that path cover must include 22 paths of length ``n`` (that go to accepting state) +plus all the default paths (234 paths of lenght 1, plus 234 paths of length 2 +and so on up to 234 paths of length ``n``): + +:: + + 22*1 + 234*1 + 22*2 + (234*1 + 234*2) + 22*3 + (234*1 + 234*2 + 234*3) + ... + f(n) = 22*n + (234*1 + 234*2 + ... + 234*n) + = 22*n + 234*n*(n - 1)/2 + = 117*n^2 + 139*n + +However, in practice maximal path length is usually less than a hundred +and the size of ``.input`` files is quite acceptable even for large graphs. diff --git a/src/manual/features/skeleton/montage.sh b/src/manual/features/skeleton/montage.sh index b809d8b0..bb7ce6b0 100755 --- a/src/manual/features/skeleton/montage.sh +++ b/src/manual/features/skeleton/montage.sh @@ -1,5 +1,3 @@ gnuplot plot.gnuplot \ - && montage input_1_7.png input_8_1024.png input_1_1024.png -tile 3x1 -geometry +0+0 plot_input.png \ - && rm input_1_7.png input_8_1024.png input_1_1024.png \ - && montage keys_1_7.png keys_8_1024.png keys_1_1024.png -tile 3x1 -geometry +0+0 plot_keys.png \ - && rm keys_1_7.png keys_8_1024.png keys_1_1024.png + && montage keys.png input.png input_keys.png -tile 3x1 -geometry +0+0 plot.png \ + && rm keys.png input.png input_keys.png diff --git a/src/manual/features/skeleton/plot.gnuplot b/src/manual/features/skeleton/plot.gnuplot index aa29109f..2898b4be 100644 --- a/src/manual/features/skeleton/plot.gnuplot +++ b/src/manual/features/skeleton/plot.gnuplot @@ -1,34 +1,16 @@ set terminal png font "Courier,mono" - -set output 'input_1_7.png' -set title "Size of .input: [0-9a-fA-F]{1..7}" -plot "points_1_7" using 2:3 lc rgb '#ff6600' lw 2 with lines title ".input" - -set output 'input_8_1024.png' -set title "Size of .input: [0-9a-fA-F]{8..1024}" -plot "points_8_1024" using 2:3 lc rgb '#ff6600' lw 2 with lines title ".input" - -set output 'input_1_1024.png' +set output 'input.png' set title "Size of .input" -plot "points_1_7" using 2:3 lc rgb '#ff6600' lw 2 with lines title ".input", \ - "points_8_1024" using 2:3 lc rgb '#ff6600' lw 2 with lines notitle - +plot "points_1_1024" using 2:3 lc rgb '#ff6600' lw 2 with lines title ".input" - -set output 'keys_1_7.png' -set title "Size of .keys: [0-9a-fA-F]{1..7}" -plot "points_1_7" using 2:4 lc rgb '#003399' lw 2 with lines title ".keys" - -set output 'keys_8_1024.png' -set title "Size of .keys: [0-9a-fA-F]{8..1024}" -plot "points_8_1024" using 2:4 lc rgb '#003399' lw 2 with lines title ".keys" - -set output 'keys_1_1024.png' +set output 'keys.png' set title "Size of .keys" -plot "points_1_7" using 2:4 lc rgb '#003399' lw 2 with lines title ".keys", \ - "points_8_1024" using 2:4 lc rgb '#003399' lw 2 with lines notitle - +plot "points_1_1024" using 2:4 lc rgb '#003399' lw 2 with lines title ".keys" +set output 'input_keys.png' +set title "Size of .keys and .input" +plot "points_1_1024" using 2:4 lc rgb '#003399' lw 2 with lines title ".keys", \ + "points_1_1024" using 2:3 lc rgb '#ff6600' lw 2 with lines title ".input" diff --git a/src/manual/features/skeleton/plot.png b/src/manual/features/skeleton/plot.png new file mode 100644 index 0000000000000000000000000000000000000000..d02bd9fe9b3d89c118b94df0b0221c606ab4f808 GIT binary patch literal 10913 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�sl8#qcd7s2^PbZIzePVnyaw7B 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 diff --git a/src/manual/features/skeleton/plot_keys.png b/src/manual/features/skeleton/plot_keys.png deleted file mode 100644 index e46e3f787c3e2f37ac9e6d85945a393c62494e7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11611 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 E2hG4sPXGV_ diff --git a/src/manual/features/skeleton/points_1_1024 b/src/manual/features/skeleton/points_1_1024 new file mode 100644 index 00000000..0832969e --- /dev/null +++ b/src/manual/features/skeleton/points_1_1024 @@ -0,0 +1,1026 @@ + iters edges input keys + + 1 256 256 768 + 2 512 746 1470 + 3 768 1470 2172 + 4 1024 2428 2874 + 5 1280 3620 3576 + 6 1536 5046 4278 + 7 1792 6706 4980 + 8 2048 8600 5682 + 9 2304 10728 6384 + 10 2560 13090 7086 + 11 2816 15686 7788 + 12 3072 18516 8490 + 13 3328 21580 9192 + 14 3584 24878 9894 + 15 3840 28410 10596 + 16 4096 32176 11298 + 17 4352 36176 12000 + 18 4608 40410 12702 + 19 4864 44878 13404 + 20 5120 49580 14106 + 21 5376 54516 14808 + 22 5632 59686 15510 + 23 5888 65090 16212 + 24 6144 70728 16914 + 25 6400 76600 17616 + 26 6656 82706 18318 + 27 6912 89046 19020 + 28 7168 95620 19722 + 29 7424 102428 20424 + 30 7680 109470 21126 + 31 7936 116746 21828 + 32 8192 124256 22530 + 33 8448 132000 23232 + 34 8704 139978 23934 + 35 8960 148190 24636 + 36 9216 156636 25338 + 37 9472 165316 26040 + 38 9728 174230 26742 + 39 9984 183378 27444 + 40 10240 192760 28146 + 41 10496 202376 28848 + 42 10752 212226 29550 + 43 11008 222310 30252 + 44 11264 232628 30954 + 45 11520 243180 31656 + 46 11776 253966 32358 + 47 12032 264986 33060 + 48 12288 276240 33762 + 49 12544 287728 34464 + 50 12800 299450 35166 + 51 13056 311406 35868 + 52 13312 323596 36570 + 53 13568 336020 37272 + 54 13824 348678 37974 + 55 14080 361570 38676 + 56 14336 374696 39378 + 57 14592 388056 40080 + 58 14848 401650 40782 + 59 15104 415478 41484 + 60 15360 429540 42186 + 61 15616 443836 42888 + 62 15872 458366 43590 + 63 16128 473130 44292 + 64 16384 488128 44994 + 65 16640 503360 45696 + 66 16896 518826 46398 + 67 17152 534526 47100 + 68 17408 550460 47802 + 69 17664 566628 48504 + 70 17920 583030 49206 + 71 18176 599666 49908 + 72 18432 616536 50610 + 73 18688 633640 51312 + 74 18944 650978 52014 + 75 19200 668550 52716 + 76 19456 686356 53418 + 77 19712 704396 54120 + 78 19968 722670 54822 + 79 20224 741178 55524 + 80 20480 759920 56226 + 81 20736 778896 56928 + 82 20992 798106 57630 + 83 21248 817550 58332 + 84 21504 837228 59034 + 85 21760 857140 59736 + 86 22016 877286 60438 + 87 22272 897666 61140 + 88 22528 918280 61842 + 89 22784 939128 62544 + 90 23040 960210 63246 + 91 23296 981526 63948 + 92 23552 1003076 64650 + 93 23808 1024860 65352 + 94 24064 1046878 66054 + 95 24320 1069130 66756 + 96 24576 1091616 67458 + 97 24832 1114336 68160 + 98 25088 1137290 68862 + 99 25344 1160478 69564 + 100 25600 1183900 70266 + 101 25856 1207556 70968 + 102 26112 1231446 71670 + 103 26368 1255570 72372 + 104 26624 1279928 73074 + 105 26880 1304520 73776 + 106 27136 1329346 74478 + 107 27392 1354406 75180 + 108 27648 1379700 75882 + 109 27904 1405228 76584 + 110 28160 1430990 77286 + 111 28416 1456986 77988 + 112 28672 1483216 78690 + 113 28928 1509680 79392 + 114 29184 1536378 80094 + 115 29440 1563310 80796 + 116 29696 1590476 81498 + 117 29952 1617876 82200 + 118 30208 1645510 82902 + 119 30464 1673378 83604 + 120 30720 1701480 84306 + 121 30976 1729816 85008 + 122 31232 1758386 85710 + 123 31488 1787190 86412 + 124 31744 1816228 87114 + 125 32000 1845500 87816 + 126 32256 1875006 88518 + 127 32512 1904746 89220 + 128 32768 1934720 89922 + 129 33024 1964928 90624 + 130 33280 1995370 91326 + 131 33536 2026046 92028 + 132 33792 2056956 92730 + 133 34048 2088100 93432 + 134 34304 2119478 94134 + 135 34560 2151090 94836 + 136 34816 2182936 95538 + 137 35072 2215016 96240 + 138 35328 2247330 96942 + 139 35584 2279878 97644 + 140 35840 2312660 98346 + 141 36096 2345676 99048 + 142 36352 2378926 99750 + 143 36608 2412410 100452 + 144 36864 2446128 101154 + 145 37120 2480080 101856 + 146 37376 2514266 102558 + 147 37632 2548686 103260 + 148 37888 2583340 103962 + 149 38144 2618228 104664 + 150 38400 2653350 105366 + 151 38656 2688706 106068 + 152 38912 2724296 106770 + 153 39168 2760120 107472 + 154 39424 2796178 108174 + 155 39680 2832470 108876 + 156 39936 2868996 109578 + 157 40192 2905756 110280 + 158 40448 2942750 110982 + 159 40704 2979978 111684 + 160 40960 3017440 112386 + 161 41216 3055136 113088 + 162 41472 3093066 113790 + 163 41728 3131230 114492 + 164 41984 3169628 115194 + 165 42240 3208260 115896 + 166 42496 3247126 116598 + 167 42752 3286226 117300 + 168 43008 3325560 118002 + 169 43264 3365128 118704 + 170 43520 3404930 119406 + 171 43776 3444966 120108 + 172 44032 3485236 120810 + 173 44288 3525740 121512 + 174 44544 3566478 122214 + 175 44800 3607450 122916 + 176 45056 3648656 123618 + 177 45312 3690096 124320 + 178 45568 3731770 125022 + 179 45824 3773678 125724 + 180 46080 3815820 126426 + 181 46336 3858196 127128 + 182 46592 3900806 127830 + 183 46848 3943650 128532 + 184 47104 3986728 129234 + 185 47360 4030040 129936 + 186 47616 4073586 130638 + 187 47872 4117366 131340 + 188 48128 4161380 132042 + 189 48384 4205628 132744 + 190 48640 4250110 133446 + 191 48896 4294826 134148 + 192 49152 4339776 134850 + 193 49408 4384960 135552 + 194 49664 4430378 136254 + 195 49920 4476030 136956 + 196 50176 4521916 137658 + 197 50432 4568036 138360 + 198 50688 4614390 139062 + 199 50944 4660978 139764 + 200 51200 4707800 140466 + 201 51456 4754856 141168 + 202 51712 4802146 141870 + 203 51968 4849670 142572 + 204 52224 4897428 143274 + 205 52480 4945420 143976 + 206 52736 4993646 144678 + 207 52992 5042106 145380 + 208 53248 5090800 146082 + 209 53504 5139728 146784 + 210 53760 5188890 147486 + 211 54016 5238286 148188 + 212 54272 5287916 148890 + 213 54528 5337780 149592 + 214 54784 5387878 150294 + 215 55040 5438210 150996 + 216 55296 5488776 151698 + 217 55552 5539576 152400 + 218 55808 5590610 153102 + 219 56064 5641878 153804 + 220 56320 5693380 154506 + 221 56576 5745116 155208 + 222 56832 5797086 155910 + 223 57088 5849290 156612 + 224 57344 5901728 157314 + 225 57600 5954400 158016 + 226 57856 6007306 158718 + 227 58112 6060446 159420 + 228 58368 6113820 160122 + 229 58624 6167428 160824 + 230 58880 6221270 161526 + 231 59136 6275346 162228 + 232 59392 6329656 162930 + 233 59648 6384200 163632 + 234 59904 6438978 164334 + 235 60160 6493990 165036 + 236 60416 6549236 165738 + 237 60672 6604716 166440 + 238 60928 6660430 167142 + 239 61184 6716378 167844 + 240 61440 6772560 168546 + 241 61696 6828976 169248 + 242 61952 6885626 169950 + 243 62208 6942510 170652 + 244 62464 6999628 171354 + 245 62720 7056980 172056 + 246 62976 7114566 172758 + 247 63232 7172386 173460 + 248 63488 7230440 174162 + 249 63744 7288728 174864 + 250 64000 7347250 175566 + 251 64256 7406006 176268 + 252 64512 7464996 176970 + 253 64768 7524220 177672 + 254 65024 7583678 178374 + 255 65280 7643370 179076 + 256 65536 7703296 359556 + 257 65792 7763456 360960 + 258 66048 7823850 362364 + 259 66304 7884478 363768 + 260 66560 7945340 365172 + 261 66816 8006436 366576 + 262 67072 8067766 367980 + 263 67328 8129330 369384 + 264 67584 8191128 370788 + 265 67840 8253160 372192 + 266 68096 8315426 373596 + 267 68352 8377926 375000 + 268 68608 8440660 376404 + 269 68864 8503628 377808 + 270 69120 8566830 379212 + 271 69376 8630266 380616 + 272 69632 8693936 382020 + 273 69888 8757840 383424 + 274 70144 8821978 384828 + 275 70400 8886350 386232 + 276 70656 8950956 387636 + 277 70912 9015796 389040 + 278 71168 9080870 390444 + 279 71424 9146178 391848 + 280 71680 9211720 393252 + 281 71936 9277496 394656 + 282 72192 9343506 396060 + 283 72448 9409750 397464 + 284 72704 9476228 398868 + 285 72960 9542940 400272 + 286 73216 9609886 401676 + 287 73472 9677066 403080 + 288 73728 9744480 404484 + 289 73984 9812128 405888 + 290 74240 9880010 407292 + 291 74496 9948126 408696 + 292 74752 10016476 410100 + 293 75008 10085060 411504 + 294 75264 10153878 412908 + 295 75520 10222930 414312 + 296 75776 10292216 415716 + 297 76032 10361736 417120 + 298 76288 10431490 418524 + 299 76544 10501478 419928 + 300 76800 10571700 421332 + 301 77056 10642156 422736 + 302 77312 10712846 424140 + 303 77568 10783770 425544 + 304 77824 10854928 426948 + 305 78080 10926320 428352 + 306 78336 10997946 429756 + 307 78592 11069806 431160 + 308 78848 11141900 432564 + 309 79104 11214228 433968 + 310 79360 11286790 435372 + 311 79616 11359586 436776 + 312 79872 11432616 438180 + 313 80128 11505880 439584 + 314 80384 11579378 440988 + 315 80640 11653110 442392 + 316 80896 11727076 443796 + 317 81152 11801276 445200 + 318 81408 11875710 446604 + 319 81664 11950378 448008 + 320 81920 12025280 449412 + 321 82176 12100416 450816 + 322 82432 12175786 452220 + 323 82688 12251390 453624 + 324 82944 12327228 455028 + 325 83200 12403300 456432 + 326 83456 12479606 457836 + 327 83712 12556146 459240 + 328 83968 12632920 460644 + 329 84224 12709928 462048 + 330 84480 12787170 463452 + 331 84736 12864646 464856 + 332 84992 12942356 466260 + 333 85248 13020300 467664 + 334 85504 13098478 469068 + 335 85760 13176890 470472 + 336 86016 13255536 471876 + 337 86272 13334416 473280 + 338 86528 13413530 474684 + 339 86784 13492878 476088 + 340 87040 13572460 477492 + 341 87296 13652276 478896 + 342 87552 13732326 480300 + 343 87808 13812610 481704 + 344 88064 13893128 483108 + 345 88320 13973880 484512 + 346 88576 14054866 485916 + 347 88832 14136086 487320 + 348 89088 14217540 488724 + 349 89344 14299228 490128 + 350 89600 14381150 491532 + 351 89856 14463306 492936 + 352 90112 14545696 494340 + 353 90368 14628320 495744 + 354 90624 14711178 497148 + 355 90880 14794270 498552 + 356 91136 14877596 499956 + 357 91392 14961156 501360 + 358 91648 15044950 502764 + 359 91904 15128978 504168 + 360 92160 15213240 505572 + 361 92416 15297736 506976 + 362 92672 15382466 508380 + 363 92928 15467430 509784 + 364 93184 15552628 511188 + 365 93440 15638060 512592 + 366 93696 15723726 513996 + 367 93952 15809626 515400 + 368 94208 15895760 516804 + 369 94464 15982128 518208 + 370 94720 16068730 519612 + 371 94976 16155566 521016 + 372 95232 16242636 522420 + 373 95488 16329940 523824 + 374 95744 16417478 525228 + 375 96000 16505250 526632 + 376 96256 16593256 528036 + 377 96512 16681496 529440 + 378 96768 16769970 530844 + 379 97024 16858678 532248 + 380 97280 16947620 533652 + 381 97536 17036796 535056 + 382 97792 17126206 536460 + 383 98048 17215850 537864 + 384 98304 17305728 539268 + 385 98560 17395840 540672 + 386 98816 17486186 542076 + 387 99072 17576766 543480 + 388 99328 17667580 544884 + 389 99584 17758628 546288 + 390 99840 17849910 547692 + 391 100096 17941426 549096 + 392 100352 18033176 550500 + 393 100608 18125160 551904 + 394 100864 18217378 553308 + 395 101120 18309830 554712 + 396 101376 18402516 556116 + 397 101632 18495436 557520 + 398 101888 18588590 558924 + 399 102144 18681978 560328 + 400 102400 18775600 561732 + 401 102656 18869456 563136 + 402 102912 18963546 564540 + 403 103168 19057870 565944 + 404 103424 19152428 567348 + 405 103680 19247220 568752 + 406 103936 19342246 570156 + 407 104192 19437506 571560 + 408 104448 19533000 572964 + 409 104704 19628728 574368 + 410 104960 19724690 575772 + 411 105216 19820886 577176 + 412 105472 19917316 578580 + 413 105728 20013980 579984 + 414 105984 20110878 581388 + 415 106240 20208010 582792 + 416 106496 20305376 584196 + 417 106752 20402976 585600 + 418 107008 20500810 587004 + 419 107264 20598878 588408 + 420 107520 20697180 589812 + 421 107776 20795716 591216 + 422 108032 20894486 592620 + 423 108288 20993490 594024 + 424 108544 21092728 595428 + 425 108800 21192200 596832 + 426 109056 21291906 598236 + 427 109312 21391846 599640 + 428 109568 21492020 601044 + 429 109824 21592428 602448 + 430 110080 21693070 603852 + 431 110336 21793946 605256 + 432 110592 21895056 606660 + 433 110848 21996400 608064 + 434 111104 22097978 609468 + 435 111360 22199790 610872 + 436 111616 22301836 612276 + 437 111872 22404116 613680 + 438 112128 22506630 615084 + 439 112384 22609378 616488 + 440 112640 22712360 617892 + 441 112896 22815576 619296 + 442 113152 22919026 620700 + 443 113408 23022710 622104 + 444 113664 23126628 623508 + 445 113920 23230780 624912 + 446 114176 23335166 626316 + 447 114432 23439786 627720 + 448 114688 23544640 629124 + 449 114944 23649728 630528 + 450 115200 23755050 631932 + 451 115456 23860606 633336 + 452 115712 23966396 634740 + 453 115968 24072420 636144 + 454 116224 24178678 637548 + 455 116480 24285170 638952 + 456 116736 24391896 640356 + 457 116992 24498856 641760 + 458 117248 24606050 643164 + 459 117504 24713478 644568 + 460 117760 24821140 645972 + 461 118016 24929036 647376 + 462 118272 25037166 648780 + 463 118528 25145530 650184 + 464 118784 25254128 651588 + 465 119040 25362960 652992 + 466 119296 25472026 654396 + 467 119552 25581326 655800 + 468 119808 25690860 657204 + 469 120064 25800628 658608 + 470 120320 25910630 660012 + 471 120576 26020866 661416 + 472 120832 26131336 662820 + 473 121088 26242040 664224 + 474 121344 26352978 665628 + 475 121600 26464150 667032 + 476 121856 26575556 668436 + 477 122112 26687196 669840 + 478 122368 26799070 671244 + 479 122624 26911178 672648 + 480 122880 27023520 674052 + 481 123136 27136096 675456 + 482 123392 27248906 676860 + 483 123648 27361950 678264 + 484 123904 27475228 679668 + 485 124160 27588740 681072 + 486 124416 27702486 682476 + 487 124672 27816466 683880 + 488 124928 27930680 685284 + 489 125184 28045128 686688 + 490 125440 28159810 688092 + 491 125696 28274726 689496 + 492 125952 28389876 690900 + 493 126208 28505260 692304 + 494 126464 28620878 693708 + 495 126720 28736730 695112 + 496 126976 28852816 696516 + 497 127232 28969136 697920 + 498 127488 29085690 699324 + 499 127744 29202478 700728 + 500 128000 29319500 702132 + 501 128256 29436756 703536 + 502 128512 29554246 704940 + 503 128768 29671970 706344 + 504 129024 29789928 707748 + 505 129280 29908120 709152 + 506 129536 30026546 710556 + 507 129792 30145206 711960 + 508 130048 30264100 713364 + 509 130304 30383228 714768 + 510 130560 30502590 716172 + 511 130816 30622186 717576 + 512 131072 30742016 718980 + 513 131328 30862080 720384 + 514 131584 30982378 721788 + 515 131840 31102910 723192 + 516 132096 31223676 724596 + 517 132352 31344676 726000 + 518 132608 31465910 727404 + 519 132864 31587378 728808 + 520 133120 31709080 730212 + 521 133376 31831016 731616 + 522 133632 31953186 733020 + 523 133888 32075590 734424 + 524 134144 32198228 735828 + 525 134400 32321100 737232 + 526 134656 32444206 738636 + 527 134912 32567546 740040 + 528 135168 32691120 741444 + 529 135424 32814928 742848 + 530 135680 32938970 744252 + 531 135936 33063246 745656 + 532 136192 33187756 747060 + 533 136448 33312500 748464 + 534 136704 33437478 749868 + 535 136960 33562690 751272 + 536 137216 33688136 752676 + 537 137472 33813816 754080 + 538 137728 33939730 755484 + 539 137984 34065878 756888 + 540 138240 34192260 758292 + 541 138496 34318876 759696 + 542 138752 34445726 761100 + 543 139008 34572810 762504 + 544 139264 34700128 763908 + 545 139520 34827680 765312 + 546 139776 34955466 766716 + 547 140032 35083486 768120 + 548 140288 35211740 769524 + 549 140544 35340228 770928 + 550 140800 35468950 772332 + 551 141056 35597906 773736 + 552 141312 35727096 775140 + 553 141568 35856520 776544 + 554 141824 35986178 777948 + 555 142080 36116070 779352 + 556 142336 36246196 780756 + 557 142592 36376556 782160 + 558 142848 36507150 783564 + 559 143104 36637978 784968 + 560 143360 36769040 786372 + 561 143616 36900336 787776 + 562 143872 37031866 789180 + 563 144128 37163630 790584 + 564 144384 37295628 791988 + 565 144640 37427860 793392 + 566 144896 37560326 794796 + 567 145152 37693026 796200 + 568 145408 37825960 797604 + 569 145664 37959128 799008 + 570 145920 38092530 800412 + 571 146176 38226166 801816 + 572 146432 38360036 803220 + 573 146688 38494140 804624 + 574 146944 38628478 806028 + 575 147200 38763050 807432 + 576 147456 38897856 808836 + 577 147712 39032896 810240 + 578 147968 39168170 811644 + 579 148224 39303678 813048 + 580 148480 39439420 814452 + 581 148736 39575396 815856 + 582 148992 39711606 817260 + 583 149248 39848050 818664 + 584 149504 39984728 820068 + 585 149760 40121640 821472 + 586 150016 40258786 822876 + 587 150272 40396166 824280 + 588 150528 40533780 825684 + 589 150784 40671628 827088 + 590 151040 40809710 828492 + 591 151296 40948026 829896 + 592 151552 41086576 831300 + 593 151808 41225360 832704 + 594 152064 41364378 834108 + 595 152320 41503630 835512 + 596 152576 41643116 836916 + 597 152832 41782836 838320 + 598 153088 41922790 839724 + 599 153344 42062978 841128 + 600 153600 42203400 842532 + 601 153856 42344056 843936 + 602 154112 42484946 845340 + 603 154368 42626070 846744 + 604 154624 42767428 848148 + 605 154880 42909020 849552 + 606 155136 43050846 850956 + 607 155392 43192906 852360 + 608 155648 43335200 853764 + 609 155904 43477728 855168 + 610 156160 43620490 856572 + 611 156416 43763486 857976 + 612 156672 43906716 859380 + 613 156928 44050180 860784 + 614 157184 44193878 862188 + 615 157440 44337810 863592 + 616 157696 44481976 864996 + 617 157952 44626376 866400 + 618 158208 44771010 867804 + 619 158464 44915878 869208 + 620 158720 45060980 870612 + 621 158976 45206316 872016 + 622 159232 45351886 873420 + 623 159488 45497690 874824 + 624 159744 45643728 876228 + 625 160000 45790000 877632 + 626 160256 45936506 879036 + 627 160512 46083246 880440 + 628 160768 46230220 881844 + 629 161024 46377428 883248 + 630 161280 46524870 884652 + 631 161536 46672546 886056 + 632 161792 46820456 887460 + 633 162048 46968600 888864 + 634 162304 47116978 890268 + 635 162560 47265590 891672 + 636 162816 47414436 893076 + 637 163072 47563516 894480 + 638 163328 47712830 895884 + 639 163584 47862378 897288 + 640 163840 48012160 898692 + 641 164096 48162176 900096 + 642 164352 48312426 901500 + 643 164608 48462910 902904 + 644 164864 48613628 904308 + 645 165120 48764580 905712 + 646 165376 48915766 907116 + 647 165632 49067186 908520 + 648 165888 49218840 909924 + 649 166144 49370728 911328 + 650 166400 49522850 912732 + 651 166656 49675206 914136 + 652 166912 49827796 915540 + 653 167168 49980620 916944 + 654 167424 50133678 918348 + 655 167680 50286970 919752 + 656 167936 50440496 921156 + 657 168192 50594256 922560 + 658 168448 50748250 923964 + 659 168704 50902478 925368 + 660 168960 51056940 926772 + 661 169216 51211636 928176 + 662 169472 51366566 929580 + 663 169728 51521730 930984 + 664 169984 51677128 932388 + 665 170240 51832760 933792 + 666 170496 51988626 935196 + 667 170752 52144726 936600 + 668 171008 52301060 938004 + 669 171264 52457628 939408 + 670 171520 52614430 940812 + 671 171776 52771466 942216 + 672 172032 52928736 943620 + 673 172288 53086240 945024 + 674 172544 53243978 946428 + 675 172800 53401950 947832 + 676 173056 53560156 949236 + 677 173312 53718596 950640 + 678 173568 53877270 952044 + 679 173824 54036178 953448 + 680 174080 54195320 954852 + 681 174336 54354696 956256 + 682 174592 54514306 957660 + 683 174848 54674150 959064 + 684 175104 54834228 960468 + 685 175360 54994540 961872 + 686 175616 55155086 963276 + 687 175872 55315866 964680 + 688 176128 55476880 966084 + 689 176384 55638128 967488 + 690 176640 55799610 968892 + 691 176896 55961326 970296 + 692 177152 56123276 971700 + 693 177408 56285460 973104 + 694 177664 56447878 974508 + 695 177920 56610530 975912 + 696 178176 56773416 977316 + 697 178432 56936536 978720 + 698 178688 57099890 980124 + 699 178944 57263478 981528 + 700 179200 57427300 982932 + 701 179456 57591356 984336 + 702 179712 57755646 985740 + 703 179968 57920170 987144 + 704 180224 58084928 988548 + 705 180480 58249920 989952 + 706 180736 58415146 991356 + 707 180992 58580606 992760 + 708 181248 58746300 994164 + 709 181504 58912228 995568 + 710 181760 59078390 996972 + 711 182016 59244786 998376 + 712 182272 59411416 999780 + 713 182528 59578280 1001184 + 714 182784 59745378 1002588 + 715 183040 59912710 1003992 + 716 183296 60080276 1005396 + 717 183552 60248076 1006800 + 718 183808 60416110 1008204 + 719 184064 60584378 1009608 + 720 184320 60752880 1011012 + 721 184576 60921616 1012416 + 722 184832 61090586 1013820 + 723 185088 61259790 1015224 + 724 185344 61429228 1016628 + 725 185600 61598900 1018032 + 726 185856 61768806 1019436 + 727 186112 61938946 1020840 + 728 186368 62109320 1022244 + 729 186624 62279928 1023648 + 730 186880 62450770 1025052 + 731 187136 62621846 1026456 + 732 187392 62793156 1027860 + 733 187648 62964700 1029264 + 734 187904 63136478 1030668 + 735 188160 63308490 1032072 + 736 188416 63480736 1033476 + 737 188672 63653216 1034880 + 738 188928 63825930 1036284 + 739 189184 63998878 1037688 + 740 189440 64172060 1039092 + 741 189696 64345476 1040496 + 742 189952 64519126 1041900 + 743 190208 64693010 1043304 + 744 190464 64867128 1044708 + 745 190720 65041480 1046112 + 746 190976 65216066 1047516 + 747 191232 65390886 1048920 + 748 191488 65565940 1050324 + 749 191744 65741228 1051728 + 750 192000 65916750 1053132 + 751 192256 66092506 1054536 + 752 192512 66268496 1055940 + 753 192768 66444720 1057344 + 754 193024 66621178 1058748 + 755 193280 66797870 1060152 + 756 193536 66974796 1061556 + 757 193792 67151956 1062960 + 758 194048 67329350 1064364 + 759 194304 67506978 1065768 + 760 194560 67684840 1067172 + 761 194816 67862936 1068576 + 762 195072 68041266 1069980 + 763 195328 68219830 1071384 + 764 195584 68398628 1072788 + 765 195840 68577660 1074192 + 766 196096 68756926 1075596 + 767 196352 68936426 1077000 + 768 196608 69116160 1078404 + 769 196864 69296128 1079808 + 770 197120 69476330 1081212 + 771 197376 69656766 1082616 + 772 197632 69837436 1084020 + 773 197888 70018340 1085424 + 774 198144 70199478 1086828 + 775 198400 70380850 1088232 + 776 198656 70562456 1089636 + 777 198912 70744296 1091040 + 778 199168 70926370 1092444 + 779 199424 71108678 1093848 + 780 199680 71291220 1095252 + 781 199936 71473996 1096656 + 782 200192 71657006 1098060 + 783 200448 71840250 1099464 + 784 200704 72023728 1100868 + 785 200960 72207440 1102272 + 786 201216 72391386 1103676 + 787 201472 72575566 1105080 + 788 201728 72759980 1106484 + 789 201984 72944628 1107888 + 790 202240 73129510 1109292 + 791 202496 73314626 1110696 + 792 202752 73499976 1112100 + 793 203008 73685560 1113504 + 794 203264 73871378 1114908 + 795 203520 74057430 1116312 + 796 203776 74243716 1117716 + 797 204032 74430236 1119120 + 798 204288 74616990 1120524 + 799 204544 74803978 1121928 + 800 204800 74991200 1123332 + 801 205056 75178656 1124736 + 802 205312 75366346 1126140 + 803 205568 75554270 1127544 + 804 205824 75742428 1128948 + 805 206080 75930820 1130352 + 806 206336 76119446 1131756 + 807 206592 76308306 1133160 + 808 206848 76497400 1134564 + 809 207104 76686728 1135968 + 810 207360 76876290 1137372 + 811 207616 77066086 1138776 + 812 207872 77256116 1140180 + 813 208128 77446380 1141584 + 814 208384 77636878 1142988 + 815 208640 77827610 1144392 + 816 208896 78018576 1145796 + 817 209152 78209776 1147200 + 818 209408 78401210 1148604 + 819 209664 78592878 1150008 + 820 209920 78784780 1151412 + 821 210176 78976916 1152816 + 822 210432 79169286 1154220 + 823 210688 79361890 1155624 + 824 210944 79554728 1157028 + 825 211200 79747800 1158432 + 826 211456 79941106 1159836 + 827 211712 80134646 1161240 + 828 211968 80328420 1162644 + 829 212224 80522428 1164048 + 830 212480 80716670 1165452 + 831 212736 80911146 1166856 + 832 212992 81105856 1168260 + 833 213248 81300800 1169664 + 834 213504 81495978 1171068 + 835 213760 81691390 1172472 + 836 214016 81887036 1173876 + 837 214272 82082916 1175280 + 838 214528 82279030 1176684 + 839 214784 82475378 1178088 + 840 215040 82671960 1179492 + 841 215296 82868776 1180896 + 842 215552 83065826 1182300 + 843 215808 83263110 1183704 + 844 216064 83460628 1185108 + 845 216320 83658380 1186512 + 846 216576 83856366 1187916 + 847 216832 84054586 1189320 + 848 217088 84253040 1190724 + 849 217344 84451728 1192128 + 850 217600 84650650 1193532 + 851 217856 84849806 1194936 + 852 218112 85049196 1196340 + 853 218368 85248820 1197744 + 854 218624 85448678 1199148 + 855 218880 85648770 1200552 + 856 219136 85849096 1201956 + 857 219392 86049656 1203360 + 858 219648 86250450 1204764 + 859 219904 86451478 1206168 + 860 220160 86652740 1207572 + 861 220416 86854236 1208976 + 862 220672 87055966 1210380 + 863 220928 87257930 1211784 + 864 221184 87460128 1213188 + 865 221440 87662560 1214592 + 866 221696 87865226 1215996 + 867 221952 88068126 1217400 + 868 222208 88271260 1218804 + 869 222464 88474628 1220208 + 870 222720 88678230 1221612 + 871 222976 88882066 1223016 + 872 223232 89086136 1224420 + 873 223488 89290440 1225824 + 874 223744 89494978 1227228 + 875 224000 89699750 1228632 + 876 224256 89904756 1230036 + 877 224512 90109996 1231440 + 878 224768 90315470 1232844 + 879 225024 90521178 1234248 + 880 225280 90727120 1235652 + 881 225536 90933296 1237056 + 882 225792 91139706 1238460 + 883 226048 91346350 1239864 + 884 226304 91553228 1241268 + 885 226560 91760340 1242672 + 886 226816 91967686 1244076 + 887 227072 92175266 1245480 + 888 227328 92383080 1246884 + 889 227584 92591128 1248288 + 890 227840 92799410 1249692 + 891 228096 93007926 1251096 + 892 228352 93216676 1252500 + 893 228608 93425660 1253904 + 894 228864 93634878 1255308 + 895 229120 93844330 1256712 + 896 229376 94054016 1258116 + 897 229632 94263936 1259520 + 898 229888 94474090 1260924 + 899 230144 94684478 1262328 + 900 230400 94895100 1263732 + 901 230656 95105956 1265136 + 902 230912 95317046 1266540 + 903 231168 95528370 1267944 + 904 231424 95739928 1269348 + 905 231680 95951720 1270752 + 906 231936 96163746 1272156 + 907 232192 96376006 1273560 + 908 232448 96588500 1274964 + 909 232704 96801228 1276368 + 910 232960 97014190 1277772 + 911 233216 97227386 1279176 + 912 233472 97440816 1280580 + 913 233728 97654480 1281984 + 914 233984 97868378 1283388 + 915 234240 98082510 1284792 + 916 234496 98296876 1286196 + 917 234752 98511476 1287600 + 918 235008 98726310 1289004 + 919 235264 98941378 1290408 + 920 235520 99156680 1291812 + 921 235776 99372216 1293216 + 922 236032 99587986 1294620 + 923 236288 99803990 1296024 + 924 236544 100020228 1297428 + 925 236800 100236700 1298832 + 926 237056 100453406 1300236 + 927 237312 100670346 1301640 + 928 237568 100887520 1303044 + 929 237824 101104928 1304448 + 930 238080 101322570 1305852 + 931 238336 101540446 1307256 + 932 238592 101758556 1308660 + 933 238848 101976900 1310064 + 934 239104 102195478 1311468 + 935 239360 102414290 1312872 + 936 239616 102633336 1314276 + 937 239872 102852616 1315680 + 938 240128 103072130 1317084 + 939 240384 103291878 1318488 + 940 240640 103511860 1319892 + 941 240896 103732076 1321296 + 942 241152 103952526 1322700 + 943 241408 104173210 1324104 + 944 241664 104394128 1325508 + 945 241920 104615280 1326912 + 946 242176 104836666 1328316 + 947 242432 105058286 1329720 + 948 242688 105280140 1331124 + 949 242944 105502228 1332528 + 950 243200 105724550 1333932 + 951 243456 105947106 1335336 + 952 243712 106169896 1336740 + 953 243968 106392920 1338144 + 954 244224 106616178 1339548 + 955 244480 106839670 1340952 + 956 244736 107063396 1342356 + 957 244992 107287356 1343760 + 958 245248 107511550 1345164 + 959 245504 107735978 1346568 + 960 245760 107960640 1347972 + 961 246016 108185536 1349376 + 962 246272 108410666 1350780 + 963 246528 108636030 1352184 + 964 246784 108861628 1353588 + 965 247040 109087460 1354992 + 966 247296 109313526 1356396 + 967 247552 109539826 1357800 + 968 247808 109766360 1359204 + 969 248064 109993128 1360608 + 970 248320 110220130 1362012 + 971 248576 110447366 1363416 + 972 248832 110674836 1364820 + 973 249088 110902540 1366224 + 974 249344 111130478 1367628 + 975 249600 111358650 1369032 + 976 249856 111587056 1370436 + 977 250112 111815696 1371840 + 978 250368 112044570 1373244 + 979 250624 112273678 1374648 + 980 250880 112503020 1376052 + 981 251136 112732596 1377456 + 982 251392 112962406 1378860 + 983 251648 113192450 1380264 + 984 251904 113422728 1381668 + 985 252160 113653240 1383072 + 986 252416 113883986 1384476 + 987 252672 114114966 1385880 + 988 252928 114346180 1387284 + 989 253184 114577628 1388688 + 990 253440 114809310 1390092 + 991 253696 115041226 1391496 + 992 253952 115273376 1392900 + 993 254208 115505760 1394304 + 994 254464 115738378 1395708 + 995 254720 115971230 1397112 + 996 254976 116204316 1398516 + 997 255232 116437636 1399920 + 998 255488 116671190 1401324 + 999 255744 116904978 1402728 + 1000 256000 117139000 1404132 + 1001 256256 117373256 1405536 + 1002 256512 117607746 1406940 + 1003 256768 117842470 1408344 + 1004 257024 118077428 1409748 + 1005 257280 118312620 1411152 + 1006 257536 118548046 1412556 + 1007 257792 118783706 1413960 + 1008 258048 119019600 1415364 + 1009 258304 119255728 1416768 + 1010 258560 119492090 1418172 + 1011 258816 119728686 1419576 + 1012 259072 119965516 1420980 + 1013 259328 120202580 1422384 + 1014 259584 120439878 1423788 + 1015 259840 120677410 1425192 + 1016 260096 120915176 1426596 + 1017 260352 121153176 1428000 + 1018 260608 121391410 1429404 + 1019 260864 121629878 1430808 + 1020 261120 121868580 1432212 + 1021 261376 122107516 1433616 + 1022 261632 122346686 1435020 + 1023 261888 122586090 1436424 + 1024 262144 122825728 1437828 diff --git a/src/manual/features/skeleton/points_1_7 b/src/manual/features/skeleton/points_1_7 deleted file mode 100644 index e46952b5..00000000 --- a/src/manual/features/skeleton/points_1_7 +++ /dev/null @@ -1,9 +0,0 @@ - iters edges input keys - - 1 14 14 42 - 2 28 176 276 - 3 42 1616 1680 - 4 56 13064 10104 - 5 70 98600 60648 - 6 84 712904 363912 - 7 98 5005256 2183496 diff --git a/src/manual/features/skeleton/points_8_1024 b/src/manual/features/skeleton/points_8_1024 deleted file mode 100644 index 5ed1cb6a..00000000 --- a/src/manual/features/skeleton/points_8_1024 +++ /dev/null @@ -1,1019 +0,0 @@ - iters edges input keys - - 8 112 336 210 - 9 126 414 234 - 10 140 500 258 - 11 154 594 282 - 12 168 696 306 - 13 182 806 330 - 14 196 924 354 - 15 210 1050 378 - 16 224 1184 402 - 17 238 1326 426 - 18 252 1476 450 - 19 266 1634 474 - 20 280 1800 498 - 21 294 1974 522 - 22 308 2156 546 - 23 322 2346 570 - 24 336 2544 594 - 25 350 2750 618 - 26 364 2964 642 - 27 378 3186 666 - 28 392 3416 690 - 29 406 3654 714 - 30 420 3900 738 - 31 434 4154 762 - 32 448 4416 786 - 33 462 4686 810 - 34 476 4964 834 - 35 490 5250 858 - 36 504 5544 882 - 37 518 5846 906 - 38 532 6156 930 - 39 546 6474 954 - 40 560 6800 978 - 41 574 7134 1002 - 42 588 7476 1026 - 43 602 7826 1050 - 44 616 8184 1074 - 45 630 8550 1098 - 46 644 8924 1122 - 47 658 9306 1146 - 48 672 9696 1170 - 49 686 10094 1194 - 50 700 10500 1218 - 51 714 10914 1242 - 52 728 11336 1266 - 53 742 11766 1290 - 54 756 12204 1314 - 55 770 12650 1338 - 56 784 13104 1362 - 57 798 13566 1386 - 58 812 14036 1410 - 59 826 14514 1434 - 60 840 15000 1458 - 61 854 15494 1482 - 62 868 15996 1506 - 63 882 16506 1530 - 64 896 17024 1554 - 65 910 17550 1578 - 66 924 18084 1602 - 67 938 18626 1626 - 68 952 19176 1650 - 69 966 19734 1674 - 70 980 20300 1698 - 71 994 20874 1722 - 72 1008 21456 1746 - 73 1022 22046 1770 - 74 1036 22644 1794 - 75 1050 23250 1818 - 76 1064 23864 1842 - 77 1078 24486 1866 - 78 1092 25116 1890 - 79 1106 25754 1914 - 80 1120 26400 1938 - 81 1134 27054 1962 - 82 1148 27716 1986 - 83 1162 28386 2010 - 84 1176 29064 2034 - 85 1190 29750 2058 - 86 1204 30444 2082 - 87 1218 31146 2106 - 88 1232 31856 2130 - 89 1246 32574 2154 - 90 1260 33300 2178 - 91 1274 34034 2202 - 92 1288 34776 2226 - 93 1302 35526 2250 - 94 1316 36284 2274 - 95 1330 37050 2298 - 96 1344 37824 2322 - 97 1358 38606 2346 - 98 1372 39396 2370 - 99 1386 40194 2394 - 100 1400 41000 2418 - 101 1414 41814 2442 - 102 1428 42636 2466 - 103 1442 43466 2490 - 104 1456 44304 2514 - 105 1470 45150 2538 - 106 1484 46004 2562 - 107 1498 46866 2586 - 108 1512 47736 2610 - 109 1526 48614 2634 - 110 1540 49500 2658 - 111 1554 50394 2682 - 112 1568 51296 2706 - 113 1582 52206 2730 - 114 1596 53124 2754 - 115 1610 54050 2778 - 116 1624 54984 2802 - 117 1638 55926 2826 - 118 1652 56876 2850 - 119 1666 57834 2874 - 120 1680 58800 2898 - 121 1694 59774 2922 - 122 1708 60756 2946 - 123 1722 61746 2970 - 124 1736 62744 2994 - 125 1750 63750 3018 - 126 1764 64764 3042 - 127 1778 65786 3066 - 128 1792 66816 3090 - 129 1806 67854 3114 - 130 1820 68900 3138 - 131 1834 69954 3162 - 132 1848 71016 3186 - 133 1862 72086 3210 - 134 1876 73164 3234 - 135 1890 74250 3258 - 136 1904 75344 3282 - 137 1918 76446 3306 - 138 1932 77556 3330 - 139 1946 78674 3354 - 140 1960 79800 3378 - 141 1974 80934 3402 - 142 1988 82076 3426 - 143 2002 83226 3450 - 144 2016 84384 3474 - 145 2030 85550 3498 - 146 2044 86724 3522 - 147 2058 87906 3546 - 148 2072 89096 3570 - 149 2086 90294 3594 - 150 2100 91500 3618 - 151 2114 92714 3642 - 152 2128 93936 3666 - 153 2142 95166 3690 - 154 2156 96404 3714 - 155 2170 97650 3738 - 156 2184 98904 3762 - 157 2198 100166 3786 - 158 2212 101436 3810 - 159 2226 102714 3834 - 160 2240 104000 3858 - 161 2254 105294 3882 - 162 2268 106596 3906 - 163 2282 107906 3930 - 164 2296 109224 3954 - 165 2310 110550 3978 - 166 2324 111884 4002 - 167 2338 113226 4026 - 168 2352 114576 4050 - 169 2366 115934 4074 - 170 2380 117300 4098 - 171 2394 118674 4122 - 172 2408 120056 4146 - 173 2422 121446 4170 - 174 2436 122844 4194 - 175 2450 124250 4218 - 176 2464 125664 4242 - 177 2478 127086 4266 - 178 2492 128516 4290 - 179 2506 129954 4314 - 180 2520 131400 4338 - 181 2534 132854 4362 - 182 2548 134316 4386 - 183 2562 135786 4410 - 184 2576 137264 4434 - 185 2590 138750 4458 - 186 2604 140244 4482 - 187 2618 141746 4506 - 188 2632 143256 4530 - 189 2646 144774 4554 - 190 2660 146300 4578 - 191 2674 147834 4602 - 192 2688 149376 4626 - 193 2702 150926 4650 - 194 2716 152484 4674 - 195 2730 154050 4698 - 196 2744 155624 4722 - 197 2758 157206 4746 - 198 2772 158796 4770 - 199 2786 160394 4794 - 200 2800 162000 4818 - 201 2814 163614 4842 - 202 2828 165236 4866 - 203 2842 166866 4890 - 204 2856 168504 4914 - 205 2870 170150 4938 - 206 2884 171804 4962 - 207 2898 173466 4986 - 208 2912 175136 5010 - 209 2926 176814 5034 - 210 2940 178500 5058 - 211 2954 180194 5082 - 212 2968 181896 5106 - 213 2982 183606 5130 - 214 2996 185324 5154 - 215 3010 187050 5178 - 216 3024 188784 5202 - 217 3038 190526 5226 - 218 3052 192276 5250 - 219 3066 194034 5274 - 220 3080 195800 5298 - 221 3094 197574 5322 - 222 3108 199356 5346 - 223 3122 201146 5370 - 224 3136 202944 5394 - 225 3150 204750 5418 - 226 3164 206564 5442 - 227 3178 208386 5466 - 228 3192 210216 5490 - 229 3206 212054 5514 - 230 3220 213900 5538 - 231 3234 215754 5562 - 232 3248 217616 5586 - 233 3262 219486 5610 - 234 3276 221364 5634 - 235 3290 223250 5658 - 236 3304 225144 5682 - 237 3318 227046 5706 - 238 3332 228956 5730 - 239 3346 230874 5754 - 240 3360 232800 5778 - 241 3374 234734 5802 - 242 3388 236676 5826 - 243 3402 238626 5850 - 244 3416 240584 5874 - 245 3430 242550 5898 - 246 3444 244524 5922 - 247 3458 246506 5946 - 248 3472 248496 5970 - 249 3486 250494 5994 - 250 3500 252500 6018 - 251 3514 254514 6042 - 252 3528 256536 6066 - 253 3542 258566 6090 - 254 3556 260604 6114 - 255 3570 262650 6138 - 256 3584 264704 12324 - 257 3598 266766 12372 - 258 3612 268836 12420 - 259 3626 270914 12468 - 260 3640 273000 12516 - 261 3654 275094 12564 - 262 3668 277196 12612 - 263 3682 279306 12660 - 264 3696 281424 12708 - 265 3710 283550 12756 - 266 3724 285684 12804 - 267 3738 287826 12852 - 268 3752 289976 12900 - 269 3766 292134 12948 - 270 3780 294300 12996 - 271 3794 296474 13044 - 272 3808 298656 13092 - 273 3822 300846 13140 - 274 3836 303044 13188 - 275 3850 305250 13236 - 276 3864 307464 13284 - 277 3878 309686 13332 - 278 3892 311916 13380 - 279 3906 314154 13428 - 280 3920 316400 13476 - 281 3934 318654 13524 - 282 3948 320916 13572 - 283 3962 323186 13620 - 284 3976 325464 13668 - 285 3990 327750 13716 - 286 4004 330044 13764 - 287 4018 332346 13812 - 288 4032 334656 13860 - 289 4046 336974 13908 - 290 4060 339300 13956 - 291 4074 341634 14004 - 292 4088 343976 14052 - 293 4102 346326 14100 - 294 4116 348684 14148 - 295 4130 351050 14196 - 296 4144 353424 14244 - 297 4158 355806 14292 - 298 4172 358196 14340 - 299 4186 360594 14388 - 300 4200 363000 14436 - 301 4214 365414 14484 - 302 4228 367836 14532 - 303 4242 370266 14580 - 304 4256 372704 14628 - 305 4270 375150 14676 - 306 4284 377604 14724 - 307 4298 380066 14772 - 308 4312 382536 14820 - 309 4326 385014 14868 - 310 4340 387500 14916 - 311 4354 389994 14964 - 312 4368 392496 15012 - 313 4382 395006 15060 - 314 4396 397524 15108 - 315 4410 400050 15156 - 316 4424 402584 15204 - 317 4438 405126 15252 - 318 4452 407676 15300 - 319 4466 410234 15348 - 320 4480 412800 15396 - 321 4494 415374 15444 - 322 4508 417956 15492 - 323 4522 420546 15540 - 324 4536 423144 15588 - 325 4550 425750 15636 - 326 4564 428364 15684 - 327 4578 430986 15732 - 328 4592 433616 15780 - 329 4606 436254 15828 - 330 4620 438900 15876 - 331 4634 441554 15924 - 332 4648 444216 15972 - 333 4662 446886 16020 - 334 4676 449564 16068 - 335 4690 452250 16116 - 336 4704 454944 16164 - 337 4718 457646 16212 - 338 4732 460356 16260 - 339 4746 463074 16308 - 340 4760 465800 16356 - 341 4774 468534 16404 - 342 4788 471276 16452 - 343 4802 474026 16500 - 344 4816 476784 16548 - 345 4830 479550 16596 - 346 4844 482324 16644 - 347 4858 485106 16692 - 348 4872 487896 16740 - 349 4886 490694 16788 - 350 4900 493500 16836 - 351 4914 496314 16884 - 352 4928 499136 16932 - 353 4942 501966 16980 - 354 4956 504804 17028 - 355 4970 507650 17076 - 356 4984 510504 17124 - 357 4998 513366 17172 - 358 5012 516236 17220 - 359 5026 519114 17268 - 360 5040 522000 17316 - 361 5054 524894 17364 - 362 5068 527796 17412 - 363 5082 530706 17460 - 364 5096 533624 17508 - 365 5110 536550 17556 - 366 5124 539484 17604 - 367 5138 542426 17652 - 368 5152 545376 17700 - 369 5166 548334 17748 - 370 5180 551300 17796 - 371 5194 554274 17844 - 372 5208 557256 17892 - 373 5222 560246 17940 - 374 5236 563244 17988 - 375 5250 566250 18036 - 376 5264 569264 18084 - 377 5278 572286 18132 - 378 5292 575316 18180 - 379 5306 578354 18228 - 380 5320 581400 18276 - 381 5334 584454 18324 - 382 5348 587516 18372 - 383 5362 590586 18420 - 384 5376 593664 18468 - 385 5390 596750 18516 - 386 5404 599844 18564 - 387 5418 602946 18612 - 388 5432 606056 18660 - 389 5446 609174 18708 - 390 5460 612300 18756 - 391 5474 615434 18804 - 392 5488 618576 18852 - 393 5502 621726 18900 - 394 5516 624884 18948 - 395 5530 628050 18996 - 396 5544 631224 19044 - 397 5558 634406 19092 - 398 5572 637596 19140 - 399 5586 640794 19188 - 400 5600 644000 19236 - 401 5614 647214 19284 - 402 5628 650436 19332 - 403 5642 653666 19380 - 404 5656 656904 19428 - 405 5670 660150 19476 - 406 5684 663404 19524 - 407 5698 666666 19572 - 408 5712 669936 19620 - 409 5726 673214 19668 - 410 5740 676500 19716 - 411 5754 679794 19764 - 412 5768 683096 19812 - 413 5782 686406 19860 - 414 5796 689724 19908 - 415 5810 693050 19956 - 416 5824 696384 20004 - 417 5838 699726 20052 - 418 5852 703076 20100 - 419 5866 706434 20148 - 420 5880 709800 20196 - 421 5894 713174 20244 - 422 5908 716556 20292 - 423 5922 719946 20340 - 424 5936 723344 20388 - 425 5950 726750 20436 - 426 5964 730164 20484 - 427 5978 733586 20532 - 428 5992 737016 20580 - 429 6006 740454 20628 - 430 6020 743900 20676 - 431 6034 747354 20724 - 432 6048 750816 20772 - 433 6062 754286 20820 - 434 6076 757764 20868 - 435 6090 761250 20916 - 436 6104 764744 20964 - 437 6118 768246 21012 - 438 6132 771756 21060 - 439 6146 775274 21108 - 440 6160 778800 21156 - 441 6174 782334 21204 - 442 6188 785876 21252 - 443 6202 789426 21300 - 444 6216 792984 21348 - 445 6230 796550 21396 - 446 6244 800124 21444 - 447 6258 803706 21492 - 448 6272 807296 21540 - 449 6286 810894 21588 - 450 6300 814500 21636 - 451 6314 818114 21684 - 452 6328 821736 21732 - 453 6342 825366 21780 - 454 6356 829004 21828 - 455 6370 832650 21876 - 456 6384 836304 21924 - 457 6398 839966 21972 - 458 6412 843636 22020 - 459 6426 847314 22068 - 460 6440 851000 22116 - 461 6454 854694 22164 - 462 6468 858396 22212 - 463 6482 862106 22260 - 464 6496 865824 22308 - 465 6510 869550 22356 - 466 6524 873284 22404 - 467 6538 877026 22452 - 468 6552 880776 22500 - 469 6566 884534 22548 - 470 6580 888300 22596 - 471 6594 892074 22644 - 472 6608 895856 22692 - 473 6622 899646 22740 - 474 6636 903444 22788 - 475 6650 907250 22836 - 476 6664 911064 22884 - 477 6678 914886 22932 - 478 6692 918716 22980 - 479 6706 922554 23028 - 480 6720 926400 23076 - 481 6734 930254 23124 - 482 6748 934116 23172 - 483 6762 937986 23220 - 484 6776 941864 23268 - 485 6790 945750 23316 - 486 6804 949644 23364 - 487 6818 953546 23412 - 488 6832 957456 23460 - 489 6846 961374 23508 - 490 6860 965300 23556 - 491 6874 969234 23604 - 492 6888 973176 23652 - 493 6902 977126 23700 - 494 6916 981084 23748 - 495 6930 985050 23796 - 496 6944 989024 23844 - 497 6958 993006 23892 - 498 6972 996996 23940 - 499 6986 1000994 23988 - 500 7000 1005000 24036 - 501 7014 1009014 24084 - 502 7028 1013036 24132 - 503 7042 1017066 24180 - 504 7056 1021104 24228 - 505 7070 1025150 24276 - 506 7084 1029204 24324 - 507 7098 1033266 24372 - 508 7112 1037336 24420 - 509 7126 1041414 24468 - 510 7140 1045500 24516 - 511 7154 1049594 24564 - 512 7168 1053696 24612 - 513 7182 1057806 24660 - 514 7196 1061924 24708 - 515 7210 1066050 24756 - 516 7224 1070184 24804 - 517 7238 1074326 24852 - 518 7252 1078476 24900 - 519 7266 1082634 24948 - 520 7280 1086800 24996 - 521 7294 1090974 25044 - 522 7308 1095156 25092 - 523 7322 1099346 25140 - 524 7336 1103544 25188 - 525 7350 1107750 25236 - 526 7364 1111964 25284 - 527 7378 1116186 25332 - 528 7392 1120416 25380 - 529 7406 1124654 25428 - 530 7420 1128900 25476 - 531 7434 1133154 25524 - 532 7448 1137416 25572 - 533 7462 1141686 25620 - 534 7476 1145964 25668 - 535 7490 1150250 25716 - 536 7504 1154544 25764 - 537 7518 1158846 25812 - 538 7532 1163156 25860 - 539 7546 1167474 25908 - 540 7560 1171800 25956 - 541 7574 1176134 26004 - 542 7588 1180476 26052 - 543 7602 1184826 26100 - 544 7616 1189184 26148 - 545 7630 1193550 26196 - 546 7644 1197924 26244 - 547 7658 1202306 26292 - 548 7672 1206696 26340 - 549 7686 1211094 26388 - 550 7700 1215500 26436 - 551 7714 1219914 26484 - 552 7728 1224336 26532 - 553 7742 1228766 26580 - 554 7756 1233204 26628 - 555 7770 1237650 26676 - 556 7784 1242104 26724 - 557 7798 1246566 26772 - 558 7812 1251036 26820 - 559 7826 1255514 26868 - 560 7840 1260000 26916 - 561 7854 1264494 26964 - 562 7868 1268996 27012 - 563 7882 1273506 27060 - 564 7896 1278024 27108 - 565 7910 1282550 27156 - 566 7924 1287084 27204 - 567 7938 1291626 27252 - 568 7952 1296176 27300 - 569 7966 1300734 27348 - 570 7980 1305300 27396 - 571 7994 1309874 27444 - 572 8008 1314456 27492 - 573 8022 1319046 27540 - 574 8036 1323644 27588 - 575 8050 1328250 27636 - 576 8064 1332864 27684 - 577 8078 1337486 27732 - 578 8092 1342116 27780 - 579 8106 1346754 27828 - 580 8120 1351400 27876 - 581 8134 1356054 27924 - 582 8148 1360716 27972 - 583 8162 1365386 28020 - 584 8176 1370064 28068 - 585 8190 1374750 28116 - 586 8204 1379444 28164 - 587 8218 1384146 28212 - 588 8232 1388856 28260 - 589 8246 1393574 28308 - 590 8260 1398300 28356 - 591 8274 1403034 28404 - 592 8288 1407776 28452 - 593 8302 1412526 28500 - 594 8316 1417284 28548 - 595 8330 1422050 28596 - 596 8344 1426824 28644 - 597 8358 1431606 28692 - 598 8372 1436396 28740 - 599 8386 1441194 28788 - 600 8400 1446000 28836 - 601 8414 1450814 28884 - 602 8428 1455636 28932 - 603 8442 1460466 28980 - 604 8456 1465304 29028 - 605 8470 1470150 29076 - 606 8484 1475004 29124 - 607 8498 1479866 29172 - 608 8512 1484736 29220 - 609 8526 1489614 29268 - 610 8540 1494500 29316 - 611 8554 1499394 29364 - 612 8568 1504296 29412 - 613 8582 1509206 29460 - 614 8596 1514124 29508 - 615 8610 1519050 29556 - 616 8624 1523984 29604 - 617 8638 1528926 29652 - 618 8652 1533876 29700 - 619 8666 1538834 29748 - 620 8680 1543800 29796 - 621 8694 1548774 29844 - 622 8708 1553756 29892 - 623 8722 1558746 29940 - 624 8736 1563744 29988 - 625 8750 1568750 30036 - 626 8764 1573764 30084 - 627 8778 1578786 30132 - 628 8792 1583816 30180 - 629 8806 1588854 30228 - 630 8820 1593900 30276 - 631 8834 1598954 30324 - 632 8848 1604016 30372 - 633 8862 1609086 30420 - 634 8876 1614164 30468 - 635 8890 1619250 30516 - 636 8904 1624344 30564 - 637 8918 1629446 30612 - 638 8932 1634556 30660 - 639 8946 1639674 30708 - 640 8960 1644800 30756 - 641 8974 1649934 30804 - 642 8988 1655076 30852 - 643 9002 1660226 30900 - 644 9016 1665384 30948 - 645 9030 1670550 30996 - 646 9044 1675724 31044 - 647 9058 1680906 31092 - 648 9072 1686096 31140 - 649 9086 1691294 31188 - 650 9100 1696500 31236 - 651 9114 1701714 31284 - 652 9128 1706936 31332 - 653 9142 1712166 31380 - 654 9156 1717404 31428 - 655 9170 1722650 31476 - 656 9184 1727904 31524 - 657 9198 1733166 31572 - 658 9212 1738436 31620 - 659 9226 1743714 31668 - 660 9240 1749000 31716 - 661 9254 1754294 31764 - 662 9268 1759596 31812 - 663 9282 1764906 31860 - 664 9296 1770224 31908 - 665 9310 1775550 31956 - 666 9324 1780884 32004 - 667 9338 1786226 32052 - 668 9352 1791576 32100 - 669 9366 1796934 32148 - 670 9380 1802300 32196 - 671 9394 1807674 32244 - 672 9408 1813056 32292 - 673 9422 1818446 32340 - 674 9436 1823844 32388 - 675 9450 1829250 32436 - 676 9464 1834664 32484 - 677 9478 1840086 32532 - 678 9492 1845516 32580 - 679 9506 1850954 32628 - 680 9520 1856400 32676 - 681 9534 1861854 32724 - 682 9548 1867316 32772 - 683 9562 1872786 32820 - 684 9576 1878264 32868 - 685 9590 1883750 32916 - 686 9604 1889244 32964 - 687 9618 1894746 33012 - 688 9632 1900256 33060 - 689 9646 1905774 33108 - 690 9660 1911300 33156 - 691 9674 1916834 33204 - 692 9688 1922376 33252 - 693 9702 1927926 33300 - 694 9716 1933484 33348 - 695 9730 1939050 33396 - 696 9744 1944624 33444 - 697 9758 1950206 33492 - 698 9772 1955796 33540 - 699 9786 1961394 33588 - 700 9800 1967000 33636 - 701 9814 1972614 33684 - 702 9828 1978236 33732 - 703 9842 1983866 33780 - 704 9856 1989504 33828 - 705 9870 1995150 33876 - 706 9884 2000804 33924 - 707 9898 2006466 33972 - 708 9912 2012136 34020 - 709 9926 2017814 34068 - 710 9940 2023500 34116 - 711 9954 2029194 34164 - 712 9968 2034896 34212 - 713 9982 2040606 34260 - 714 9996 2046324 34308 - 715 10010 2052050 34356 - 716 10024 2057784 34404 - 717 10038 2063526 34452 - 718 10052 2069276 34500 - 719 10066 2075034 34548 - 720 10080 2080800 34596 - 721 10094 2086574 34644 - 722 10108 2092356 34692 - 723 10122 2098146 34740 - 724 10136 2103944 34788 - 725 10150 2109750 34836 - 726 10164 2115564 34884 - 727 10178 2121386 34932 - 728 10192 2127216 34980 - 729 10206 2133054 35028 - 730 10220 2138900 35076 - 731 10234 2144754 35124 - 732 10248 2150616 35172 - 733 10262 2156486 35220 - 734 10276 2162364 35268 - 735 10290 2168250 35316 - 736 10304 2174144 35364 - 737 10318 2180046 35412 - 738 10332 2185956 35460 - 739 10346 2191874 35508 - 740 10360 2197800 35556 - 741 10374 2203734 35604 - 742 10388 2209676 35652 - 743 10402 2215626 35700 - 744 10416 2221584 35748 - 745 10430 2227550 35796 - 746 10444 2233524 35844 - 747 10458 2239506 35892 - 748 10472 2245496 35940 - 749 10486 2251494 35988 - 750 10500 2257500 36036 - 751 10514 2263514 36084 - 752 10528 2269536 36132 - 753 10542 2275566 36180 - 754 10556 2281604 36228 - 755 10570 2287650 36276 - 756 10584 2293704 36324 - 757 10598 2299766 36372 - 758 10612 2305836 36420 - 759 10626 2311914 36468 - 760 10640 2318000 36516 - 761 10654 2324094 36564 - 762 10668 2330196 36612 - 763 10682 2336306 36660 - 764 10696 2342424 36708 - 765 10710 2348550 36756 - 766 10724 2354684 36804 - 767 10738 2360826 36852 - 768 10752 2366976 36900 - 769 10766 2373134 36948 - 770 10780 2379300 36996 - 771 10794 2385474 37044 - 772 10808 2391656 37092 - 773 10822 2397846 37140 - 774 10836 2404044 37188 - 775 10850 2410250 37236 - 776 10864 2416464 37284 - 777 10878 2422686 37332 - 778 10892 2428916 37380 - 779 10906 2435154 37428 - 780 10920 2441400 37476 - 781 10934 2447654 37524 - 782 10948 2453916 37572 - 783 10962 2460186 37620 - 784 10976 2466464 37668 - 785 10990 2472750 37716 - 786 11004 2479044 37764 - 787 11018 2485346 37812 - 788 11032 2491656 37860 - 789 11046 2497974 37908 - 790 11060 2504300 37956 - 791 11074 2510634 38004 - 792 11088 2516976 38052 - 793 11102 2523326 38100 - 794 11116 2529684 38148 - 795 11130 2536050 38196 - 796 11144 2542424 38244 - 797 11158 2548806 38292 - 798 11172 2555196 38340 - 799 11186 2561594 38388 - 800 11200 2568000 38436 - 801 11214 2574414 38484 - 802 11228 2580836 38532 - 803 11242 2587266 38580 - 804 11256 2593704 38628 - 805 11270 2600150 38676 - 806 11284 2606604 38724 - 807 11298 2613066 38772 - 808 11312 2619536 38820 - 809 11326 2626014 38868 - 810 11340 2632500 38916 - 811 11354 2638994 38964 - 812 11368 2645496 39012 - 813 11382 2652006 39060 - 814 11396 2658524 39108 - 815 11410 2665050 39156 - 816 11424 2671584 39204 - 817 11438 2678126 39252 - 818 11452 2684676 39300 - 819 11466 2691234 39348 - 820 11480 2697800 39396 - 821 11494 2704374 39444 - 822 11508 2710956 39492 - 823 11522 2717546 39540 - 824 11536 2724144 39588 - 825 11550 2730750 39636 - 826 11564 2737364 39684 - 827 11578 2743986 39732 - 828 11592 2750616 39780 - 829 11606 2757254 39828 - 830 11620 2763900 39876 - 831 11634 2770554 39924 - 832 11648 2777216 39972 - 833 11662 2783886 40020 - 834 11676 2790564 40068 - 835 11690 2797250 40116 - 836 11704 2803944 40164 - 837 11718 2810646 40212 - 838 11732 2817356 40260 - 839 11746 2824074 40308 - 840 11760 2830800 40356 - 841 11774 2837534 40404 - 842 11788 2844276 40452 - 843 11802 2851026 40500 - 844 11816 2857784 40548 - 845 11830 2864550 40596 - 846 11844 2871324 40644 - 847 11858 2878106 40692 - 848 11872 2884896 40740 - 849 11886 2891694 40788 - 850 11900 2898500 40836 - 851 11914 2905314 40884 - 852 11928 2912136 40932 - 853 11942 2918966 40980 - 854 11956 2925804 41028 - 855 11970 2932650 41076 - 856 11984 2939504 41124 - 857 11998 2946366 41172 - 858 12012 2953236 41220 - 859 12026 2960114 41268 - 860 12040 2967000 41316 - 861 12054 2973894 41364 - 862 12068 2980796 41412 - 863 12082 2987706 41460 - 864 12096 2994624 41508 - 865 12110 3001550 41556 - 866 12124 3008484 41604 - 867 12138 3015426 41652 - 868 12152 3022376 41700 - 869 12166 3029334 41748 - 870 12180 3036300 41796 - 871 12194 3043274 41844 - 872 12208 3050256 41892 - 873 12222 3057246 41940 - 874 12236 3064244 41988 - 875 12250 3071250 42036 - 876 12264 3078264 42084 - 877 12278 3085286 42132 - 878 12292 3092316 42180 - 879 12306 3099354 42228 - 880 12320 3106400 42276 - 881 12334 3113454 42324 - 882 12348 3120516 42372 - 883 12362 3127586 42420 - 884 12376 3134664 42468 - 885 12390 3141750 42516 - 886 12404 3148844 42564 - 887 12418 3155946 42612 - 888 12432 3163056 42660 - 889 12446 3170174 42708 - 890 12460 3177300 42756 - 891 12474 3184434 42804 - 892 12488 3191576 42852 - 893 12502 3198726 42900 - 894 12516 3205884 42948 - 895 12530 3213050 42996 - 896 12544 3220224 43044 - 897 12558 3227406 43092 - 898 12572 3234596 43140 - 899 12586 3241794 43188 - 900 12600 3249000 43236 - 901 12614 3256214 43284 - 902 12628 3263436 43332 - 903 12642 3270666 43380 - 904 12656 3277904 43428 - 905 12670 3285150 43476 - 906 12684 3292404 43524 - 907 12698 3299666 43572 - 908 12712 3306936 43620 - 909 12726 3314214 43668 - 910 12740 3321500 43716 - 911 12754 3328794 43764 - 912 12768 3336096 43812 - 913 12782 3343406 43860 - 914 12796 3350724 43908 - 915 12810 3358050 43956 - 916 12824 3365384 44004 - 917 12838 3372726 44052 - 918 12852 3380076 44100 - 919 12866 3387434 44148 - 920 12880 3394800 44196 - 921 12894 3402174 44244 - 922 12908 3409556 44292 - 923 12922 3416946 44340 - 924 12936 3424344 44388 - 925 12950 3431750 44436 - 926 12964 3439164 44484 - 927 12978 3446586 44532 - 928 12992 3454016 44580 - 929 13006 3461454 44628 - 930 13020 3468900 44676 - 931 13034 3476354 44724 - 932 13048 3483816 44772 - 933 13062 3491286 44820 - 934 13076 3498764 44868 - 935 13090 3506250 44916 - 936 13104 3513744 44964 - 937 13118 3521246 45012 - 938 13132 3528756 45060 - 939 13146 3536274 45108 - 940 13160 3543800 45156 - 941 13174 3551334 45204 - 942 13188 3558876 45252 - 943 13202 3566426 45300 - 944 13216 3573984 45348 - 945 13230 3581550 45396 - 946 13244 3589124 45444 - 947 13258 3596706 45492 - 948 13272 3604296 45540 - 949 13286 3611894 45588 - 950 13300 3619500 45636 - 951 13314 3627114 45684 - 952 13328 3634736 45732 - 953 13342 3642366 45780 - 954 13356 3650004 45828 - 955 13370 3657650 45876 - 956 13384 3665304 45924 - 957 13398 3672966 45972 - 958 13412 3680636 46020 - 959 13426 3688314 46068 - 960 13440 3696000 46116 - 961 13454 3703694 46164 - 962 13468 3711396 46212 - 963 13482 3719106 46260 - 964 13496 3726824 46308 - 965 13510 3734550 46356 - 966 13524 3742284 46404 - 967 13538 3750026 46452 - 968 13552 3757776 46500 - 969 13566 3765534 46548 - 970 13580 3773300 46596 - 971 13594 3781074 46644 - 972 13608 3788856 46692 - 973 13622 3796646 46740 - 974 13636 3804444 46788 - 975 13650 3812250 46836 - 976 13664 3820064 46884 - 977 13678 3827886 46932 - 978 13692 3835716 46980 - 979 13706 3843554 47028 - 980 13720 3851400 47076 - 981 13734 3859254 47124 - 982 13748 3867116 47172 - 983 13762 3874986 47220 - 984 13776 3882864 47268 - 985 13790 3890750 47316 - 986 13804 3898644 47364 - 987 13818 3906546 47412 - 988 13832 3914456 47460 - 989 13846 3922374 47508 - 990 13860 3930300 47556 - 991 13874 3938234 47604 - 992 13888 3946176 47652 - 993 13902 3954126 47700 - 994 13916 3962084 47748 - 995 13930 3970050 47796 - 996 13944 3978024 47844 - 997 13958 3986006 47892 - 998 13972 3993996 47940 - 999 13986 4001994 47988 - 1000 14000 4010000 48036 - 1001 14014 4018014 48084 - 1002 14028 4026036 48132 - 1003 14042 4034066 48180 - 1004 14056 4042104 48228 - 1005 14070 4050150 48276 - 1006 14084 4058204 48324 - 1007 14098 4066266 48372 - 1008 14112 4074336 48420 - 1009 14126 4082414 48468 - 1010 14140 4090500 48516 - 1011 14154 4098594 48564 - 1012 14168 4106696 48612 - 1013 14182 4114806 48660 - 1014 14196 4122924 48708 - 1015 14210 4131050 48756 - 1016 14224 4139184 48804 - 1017 14238 4147326 48852 - 1018 14252 4155476 48900 - 1019 14266 4163634 48948 - 1020 14280 4171800 48996 - 1021 14294 4179974 49044 - 1022 14308 4188156 49092 - 1023 14322 4196346 49140 - 1024 14336 4204544 49188 diff --git a/src/manual/features/skeleton/skeleton.rst b/src/manual/features/skeleton/skeleton.rst index 25844d33..8ef14ab3 100644 --- a/src/manual/features/skeleton/skeleton.rst +++ b/src/manual/features/skeleton/skeleton.rst @@ -5,7 +5,7 @@ Skeleton .. include:: ../../../contents.rst -With ``-S, --skeleton`` option re2c ignores all non-re2c code and generates a self-contained C-90 program +With ``-S, --skeleton`` option re2c ignores all non-re2c code and generates a self-contained C program that can be further compiled and executed. The program consists of lexer code and input data. For each constructed DFA (block or condition) re2c generates a standalone lexer and two files: @@ -13,6 +13,11 @@ For each constructed DFA (block or condition) re2c generates a standalone lexer The program runs each lexer on the corresponding ``.input`` file and compares results with the expectations. +For encodings with 1-byte code units (such as ASCII, UTF-8 and EBCDIC) the generated data +covers all DFA transitions (in other words, skeleton program triggers each conditional jump in lexer). +For encodings with multibyte code units the generated data covers up to 256 transitions +of each disjoint character range in DFA (see `Generating data`_ section for details). + .. include:: example.rst .. include:: failures.rst diff --git a/src/manual/options/options_list.rst b/src/manual/options/options_list.rst index 42a2909a..c835e2e9 100644 --- a/src/manual/options/options_list.rst +++ b/src/manual/options/options_list.rst @@ -118,8 +118,10 @@ quotes are case insensitive. ``--no-generation-date`` - Suppress date output in the generated output so - that it only shows the ``re2c`` version. + Suppress date output in the generated file. + +``--no-version`` + Suppress version output in the generated file. ``--encoding-policy POLICY`` Specify how ``re2c`` must treat Unicode diff --git a/src/news/changelog/0_15.rst b/src/news/changelog/0_15.rst index db0d7422..991aefa0 100644 --- a/src/news/changelog/0_15.rst +++ b/src/news/changelog/0_15.rst @@ -2,6 +2,19 @@ 0.15x ----- + +0.15.3 (2015-12-02) +~~~~~~~~~~~~~~~~~~~ + +- Fixed bugs and applied patches: + + #122 "clang does not compile re2c 0.15.x" (reported and fixed by Oleksii Taran). + + #124 "Get rid of UINT32_MAX and friends" (patch by Sergei Trofimovich, fixes FreeBSD builds). + + #125 "[OS X] git reports changes not staged for commit in newly cloned repository" (by Oleksii Taran, this fix also applies to Windows). +- Added option ``--no-version`` that allows to omit version information. +- Reduced memory and time consumed with ``-Wundefined-control-flow``. +- Improved coverage of input data generated with ``-S --skeleton``. + + 0.15.2 (2015-11-23) ~~~~~~~~~~~~~~~~~~~ diff --git a/src/news/news.rst b/src/news/news.rst index 34cb0da0..b5e06b87 100644 --- a/src/news/news.rst +++ b/src/news/news.rst @@ -6,6 +6,7 @@ News ★ +* `Release 0.15.3 `_ * `Release 0.15.2 `_ * `Release 0.15.1 `_ * `Release 0.15 `_ diff --git a/src/news/release_notes/0_15_3.rst b/src/news/release_notes/0_15_3.rst new file mode 100644 index 00000000..fcc56be5 --- /dev/null +++ b/src/news/release_notes/0_15_3.rst @@ -0,0 +1,17 @@ +============== +Release 0.15.3 +============== + +.. include:: ../home.rst + + +This release fixes multiple build-time and run-time failures on OS X, FreeBSD and Windows. +Most of the problems were reported and fixed by Oleksii Taran (on OS X) +and Sergei Trofimovich (on FreeBSD and Windows). +Thank you for your help! + +`Skeleton <../../manual/features/skeleton/skeleton.html>`_ coverage has been improved. +See section `Generating data <../../manual/features/skeleton/skeleton.html#generating-data>`_ for details. + +See `changelog <../changelog/changelog.html>`_ for the list of all changes. + -- 2.40.0