forked from krbeesley/kleene-lang
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.version
217 lines (169 loc) · 6.67 KB
/
README.version
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
Kleene Version Notes
2015-09-28
v0.9.5.0 built on OS X, Linux 32bit and Linux 64bit
2015-09-17
Revision of makefiles for library dependencies.
First successful compilation of Kleene for 64-bit Linux.
2015-08
Many minor corrections of typos in the User Manual.
2015-08
Many examples now added to regression-test files using 'assert'
commands. Many errors were found and fixed in the process.
2015-08-25
Translated corrected definitions of Lower(),
NotLongestRightArrow() and NotLongestLeftArrow() from Mans Hulden into
Java. This corrected a long-term bug in <-{max} rules.
2015-06-07 Fixed (or confirmed a fix) to transducer-style alternation
rules. Previously simple examples like a:b -> would work but not more
complicated examples like (ab*):c {max} ->.
2015-03-06
Fixed a problem with transducer rules, e.g. a*:b -> / l _ r.
2015-02-12
Made postfixed iteration expressions higher precedence than
crossproduct (i.e., switched the precedence for postfixed iteration
and crossproduct) to allow compilation of a*:b, now equivalent to
(a*):b, and a*:b+, now equivalent to (a*):(b+). Until this change,
a*:b wouldn't compile at all. The old precedence, where a:b* was
equivalent to (a:b)*, was inherited from the Xerox Finite State
Tools, wherein a:b in twolc is a basic alphabetic character (the
alphabet in twolc is a set of character pairs). So in Xerox twolc,
as well as lexc, interpreting a:b* as (a:b)* seemed
natural/preferable. But from the Kleene perspective, twolc is
obsolete, and it seems preferable to give the postfixed iteration
operators *, + and ? higher precedence than :.
2015-01-??
Fixed a small error in alternation rules where . in a context
could match #. E.g. x -> y / . _
intended to require some character before x, e.g. ax mapping to
zy. However, because . could match #, the rule was unexpectedly
mapping x to y. Solution, in the FSTs computed for a context,
if the context contains OTHER, then add # to the alphabet (thus
preventing the dot (OTHER) from matching #.
2014-12-13
Commit of version 0.9.4.2
2014-07-07
Commit of version 0.9.4.1
2014-07-07 Fixed a small bug in the GUI: calls to append
text to the History pane of the PseudoTerminal widget
are now always executed in the Event Dispatch Thread
2014-05-18
Commit of version 0.9.4.0
2014-04-28
Added pr (print, without the weight)
2014-02-25
Transducer-style rules are working.
Added $^equivalent() (used for acceptors)
// the caller must pass at least the first two arguments
#^equivalent($one, $two,
#delta=#kDeltaFromOpenFst) {
return #^__equivalent($one, $two, #delta) ; // built-in
}
and $^randEquivalent() (used for transducers)
// the caller must supply at least the 3 initial args
#^randEquivalent($one, $two, #npath,
#delta = #kDeltaFromOpenFst,
#seed = 60, // 60 seconds (C++ def. value is time(0))
#path_length = 60 ) { // C++ def value is MAX_INT;
// Java Integer.MAX_VALUE
// is 2147483647
return #^__randEquivalent($one, $two, #npath,
#delta, #seed, #path_length) ; // built-in
}
2013-11-22
Added $^flatten($fst) and $^flatten!($fst)
Added $^flatten4rule($fst) and $^flatten4rule!($fst), to be used in
compiling "transducer rules"
2013-11-07
Added #^log(#num) function (natural log)
Added #^prob2c(#num) function (convert probability arg to cost value,
where cost of probability p is -log(p)
Added #^pct2c(#num) function (converts percent 0 to 100 to cost value
Added $^redup($lang, $sep="") function
2013-06-17
Version v0.9.3.5
Beta release candidate to show to a few close friends
2013-04-28
Version v0.9.3.4
Added facilities for generating Java code for an FSM
2012-12-20
Release v0.9.3.3
Fixed bug in compilation of alternation rules
2012-11-05
Release v0.9.3.2 added the splash graphic donostia3.jpg
2012-11-04
Release v0.9.3.1
(just after merging the newrules branch into master)
2012-11-04
Release v0.9.3.0
2012-10
Got more alternation rules working:
$^parallel(rule, rule, rule)
Two-level rule contexts, with the 2_2 operator
{max}->, {min}->
Epenthesis: "" -> x
Rules where the input matches the empty string: a* -> x
Rules with where-clauses
$vcd -> $unvcd / _ # where { $vcd _E_ $@(b, d, g),
$unvcd _E_ $@(p, t, k) }
2012-09-1
Added boolean functions:
#^isWeighted($fst)
#^isIDeterministic($fst)
#^isODeterministic($fst)
#^containsOther($fst)
#^hasClosedAlphabet($fst)
#^isEpsilonFree($fst)
#^isEmptyLanguage($fst)
#^isEmptyStringLanguage($fst)
#^isString($fst) or #^isSingleStringLanguage($fst)
#^containsEmptyString($fst)
#^isUniversalLanguage($fst) [not completely reliable yet]
Release v0.9.2.2
2012-08-12
Added #^isAcceptor($fst)
true iff it's a _semantic_ acceptor, with labels
like x:x, and does not contain OTHER_NONID
Added #^isTransducer($fst)
equivalent to !#^isAcceptor($fst)
2012-07-31
Added assert(numexp(), regexp()) statement.
Throws an AssertException if the numexp() does not interpret as
true. The optional regexp() must denote a language of exactly one
string, used as a message for the Exception. Intended to be used
for testing.
Added require(numexp(), regexp()) statement.
Throws a RequireException if the numexp() does not interpret as
true. The optional regexp() must denote a language of exactly one
string, used as a message for the Exception. Intended to be used
when declaring functions, to check semantic restrictions on the
arguments.
2012-07-25
Release v0.9.2.1
with some fixes to function calls from the GUI
version for Mans Hulden
2012-07-21
On branch 'circumfix' changed function sigil from & to ^.
Old "lambda" functions are now "anon(ymous)" functions.
This breaks backward compatibility from 0.9.1.1.
Changed version numbers in the code preparatory to creating
0.9.2.0
2012-07-20
0.9.1.1 release number, pushed to github
***********************************************************
2012-07-17
0.9.1.0 release number when Kleene was pushed to github
***********************************************************
At SAP Labs, Kleene was declared "1.0" 2011-01-31 and the
project was canceled. I (Ken Beesley) still considered it
a beta project, so when Kleene was released as Open Source
4 May 2012, I moved the release number back to 0.9.1.0
Release 1.0.0.0 2011-01-31
***********************************************************
When preparing the code to 'tag' a commit, which is typically
for a new official release, modify the following files as
appropriate
README.version (this file)
kleene/src/main/java/org/kleene-lang/Makefile
kleene/src/main/java/org/kleene-lang/Makefile_nmake
(see VERSION=X.X.X.X)
kleene/src/main/java/org/kleene-lang/KleeneGuiConstants.java