/
transcriptor-numbers-digit2text.lexc
742 lines (678 loc) · 31.9 KB
/
transcriptor-numbers-digit2text.lexc
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
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
!! ## Number transcriptions
!!
!! Transcribing numbers to words in Finnish is not completely trivial, one
!! reason is that numbers in Finnish are written as compounds, regardless of
!! length:
!! 123456 is *satakaksikymmentäkolmetuhattaneljäsataaviisikymmentäkuusi*.
!! Another limitation is that inflections can be unmarked in running text,
!! that is digit expression is assumed to agree the case of the phrase it is in,
!! e.g.
!! 27 is *kaksikymmentäseitsemän*, and
!! 27:lle *kahdellekymmenelleseitsemälle*
!! but in a phrase: "tarjosin 27 osanottajalle" 27 assumes the allative case
!! without marking and it is preferred grammatical form in good writing.
Multichar_Symbols
!! ### Flag diacritics
!! Flag diacritics in number transcribing are used to control case agreement:
!! in Finnish numeral compounds all words agree in case except in nominative
!! singular where 10's exponential multipliers are in singular partitive.
@U.CASE.SGNOM@ !!= * `@CODE@` for singular nominative agreement
@U.CASE.SGALL@ !!= * `@CODE@` for singular allative agreement
LEXICON Root
!! ### Morphotactics of digit strings
!! The morphotactics related to numbers and their transcriptions is that we
!! need to know the whole digit string to know how the length of whole digit
!! string to know what to start reading, and zeroes are not read out but
!! have an effect to readout.
!! The numerals are systematic and perfectly compositional:
!! the implementation of 100 000–999 999 is almost
!! exactly same as 100 000 000–999 000 000 and everything afterwads with the
!! change of word *tuhat*~*tuhatta*, *miljoona*~*miljoonaa*, *miljardia*,
!! *biljoonaa*, *biljardia* and so forth–that is along the long scale British
!! (French) system where American billion = milliard etc.
!! The numbers are built from ~single
!! word length blocks in decreasing order with the exception of zig-zagging
!! over numbers 11–19 where the second digit comes before first.
!! The rest of this documentation describes the morphotactic implementation
!! by the lexicon structure in descending order of magnitude with examples.
!!€gt-norm: Digits of all magnitudes
!!€ 1: yksi
!!€ 21: kaksikymmentäyksi
!!€ 321: kolmesataakaksikymmentäyksi
!!€ 4321: neljätuhattakolmesataakaksikymmentäyksi
!!€ 54321: viisikymmentäneljätuhattakolmesataakaksikymmentäyksi
!!€ 654321: kuusisataaviisikymmentäneljätuhattakolmesataakaksikymmentäyksi
!!€ 7654321: seitsemänmiljoonaakuusisataaviisikymmentäneljätuhattakolmesataakaksikymmentäyksi
HUNDREDSMRD ; ! 200 000 000 000–999 999 999 999
@U.CASE.SGNOM@1:@U.CASE.SGNOM@sata HUNDREDMRD ; ! 100 000 000 000-199 999 999 999
@U.CASE.SGALL@1:@U.CASE.SGALL@sadalle HUNDREDMRD ; ! 100 000 000 000-199 999 999 999
TENSMRD ; ! 20 000 000 000– 29 999 999 999
TEENSMRD ; ! 11 000 000 000- 19 999 999 999
TENMRD ; ! 10 000 000 000– 10 999 999 999
ONESMRD ; ! 1 000 000 000– 9 999 999 999
HUNDREDSM ; ! 200 000 000– 999 999 999
@U.CASE.SGNOM@1:@U.CASE.SGNOM@sata HUNDREDM ; ! 100 000 000– 199 999 999
@U.CASE.SGALL@1:@U.CASE.SGALL@sadalle HUNDREDM ; ! 100 000 000– 199 999 999
TENSM ; ! 20 000 000– 99 999 999
TEENSM ; ! 11 000 000– 19 999 999
TENM ; ! 10 000 000– 10 999 999
ONESM ; ! 1 000 000– 9 999 999
HUNDREDST ; ! 200 000– 999 999
@U.CASE.SGNOM@1:@U.CASE.SGNOM@sata HUNDREDT ; ! 100 000– 199 999
@U.CASE.SGALL@1:@U.CASE.SGALL@sadalle HUNDREDT ; ! 100 000– 199 999
TENST ; ! 20 000– 99 999
TEENST ; ! 11 000– 19 999
TENT ; ! 10 000- 10 999
ONEST ; ! 2 000– 9 999
@U.CASE.SGNOM@1:@U.CASE.SGNOM@tuhat THOUSAND ; ! 1 000– 1 999
@U.CASE.SGALL@1:@U.CASE.SGALL@tuhannelle THOUSAND ; ! 1 000– 1 999
UNDERTHOUSAND ; ! 100– 999
TENS ; ! 20- 99
TEENS ; ! 11- 19
JUSTTEN ; ! 10
ONES ; ! 1- 9
ZERO ; ! 0
LEXICON HUNDREDSMRD
!! Lexicon `@LEXNAME@` contains numbers 2-9 that need to be followed by exactly
!! 11 digits: 200 000 000 000–999 999 999 999
!! this is to implement *N*sataa...miljardia...
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi CUODIMRD ;
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme CUODIMRD ;
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä CUODIMRD ;
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi CUODIMRD ;
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi CUODIMRD ;
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän CUODIMRD ;
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan CUODIMRD ;
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän CUODIMRD ;
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle CUODIMRD ;
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle CUODIMRD ;
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle CUODIMRD ;
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle CUODIMRD ;
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle CUODIMRD ;
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle CUODIMRD ;
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle CUODIMRD ;
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle CUODIMRD ;
LEXICON CUODIMRD
!! Lexicon `@LEXNAME@` contains numbers 2-9 that need to be followed by exactly
!! this is to implement N*sataa*...miljardia...
!!€gt-norm: hundreds of milliards
!!€ 20000000000: kaksisataamiljardia
@U.CASE.SGNOM@:@U.CASE.SGNOM@sataa HUNDREDMRD ;
@U.CASE.SGALL@:@U.CASE.SGALL@sadalle HUNDREDMRD ;
LEXICON HUNDREDMRD
!! Lexicon `@LEXNAME@` is for numbers in range: 100 000 000 000–199 000 000 000
!! this is to implement *sata*...miljardia...
!!€gt-norm: hundred milliards
!!€ 1000000000: satamiljardia
TENMRD ;
TENSMRD ;
TEENSMRD ;
%0: ONESMRD ;
%0%0: MILJONRD ;
!LEXICON JUSTTENM
!kymmenen:1%0 LOHKAIM ;
LEXICON TEENSMRD
!! Lexicon `@LEXNAME@` is for numbers with 11 000 000 000–19 000 000 000
!! this is to implement ...N*toista*...miljardia...
1: TEENMRD ;
LEXICON TEENMRD
!! Lexicon `@LEXNAME@` is for numbers with 11 000 000 000–19 000 000 000
!! this is to implement ...*N*toista...miljardia...
!!€gt-norm: teen milliards
!!€ 1200000000: kaksitoistailjardia
@U.CASE.SGNOM@1:@U.CASE.SGNOM@yksi LOHKAIMRD ;
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi LOHKAIMRD ;
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme LOHKAIMRD ;
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä LOHKAIMRD ;
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi LOHKAIMRD ;
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi LOHKAIMRD ;
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän LOHKAIMRD ;
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan LOHKAIMRD ;
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän LOHKAIMRD ;
@U.CASE.SGALL@1:@U.CASE.SGALL@yhdelle LOHKAIMRD ;
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle LOHKAIMRD ;
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle LOHKAIMRD ;
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle LOHKAIMRD ;
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle LOHKAIMRD ;
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle LOHKAIMRD ;
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle LOHKAIMRD ;
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle LOHKAIMRD ;
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle LOHKAIMRD ;
LEXICON LOHKAIMRD
:toista MILJARD ;
LEXICON TENSMRD
!! Lexicon `@LEXNAME@` is for numbers with 20 000 000 000–90 000 000 000
!! this is to implement ...*N*kymmentä...miljardia...
!1:yksi LÅGEVM ;
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi LÅGEVMRD ;
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme LÅGEVMRD ;
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä LÅGEVMRD ;
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi LÅGEVMRD ;
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi LÅGEVMRD ;
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän LÅGEVMRD ;
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan LÅGEVMRD ;
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän LÅGEVMRD ;
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle LÅGEVMRD ;
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle LÅGEVMRD ;
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle LÅGEVMRD ;
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle LÅGEVMRD ;
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle LÅGEVMRD ;
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle LÅGEVMRD ;
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle LÅGEVMRD ;
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle LÅGEVMRD ;
LEXICON TENMRD
!! Lexicon `@LEXNAME@` is for numbers with 10 000 000 000–10 999 999 999
!! this is to implement ...*kymmenen*miljardia...
!!€gt-norm: ten milliards
!!€ 1000000000: kymmenenmiljardia
@U.CASE.SGNOM@1%0:@U.CASE.SGNOM@kymmenen MILJARD ;
@U.CASE.SGALL@1%0:@U.CASE.SGALL@kymmenelle MILJARD ;
LEXICON LÅGEVMRD
!! Lexicon `@LEXNAME@` is for numbers with 20 000 000 000–90 000 000 000
!! this is to implement ...N*kymmentä*...miljardia...
!!€gt-norm: tens of milliards
!!€ 20000000000: kaksikymmentämiljardia
@U.CASE.SGNOM@%0:@U.CASE.SGNOM@kymmentä MILJARD ;
@U.CASE.SGNOM@:@U.CASE.SGNOM@kymmentä ONESMRD ;
@U.CASE.SGALL@%0:@U.CASE.SGALL@kymmenelle MILJARD ;
@U.CASE.SGALL@:@U.CASE.SGALL@kymmenelle ONESMRD ;
LEXICON ONESMRD
!! Lexicon `@LEXNAME@` is for numbers with 1 000 000 000–9 000 000 000
!! this is to implement ...*N*miljardia...
!1:yksi% miljoona% OVERTHOUSANDS ;
@U.CASE.SGNOM@1:@U.CASE.SGNOM@miljardi OVERMILLIONS ;
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi MILJARD ;
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme MILJARD ;
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä MILJARD ;
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi MILJARD ;
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi MILJARD ;
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän MILJARD ;
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan MILJARD ;
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän MILJARD ;
@U.CASE.SGALL@1:@U.CASE.SGALL@miljardille OVERMILLIONS ;
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle MILJARD ;
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle MILJARD ;
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle MILJARD ;
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle MILJARD ;
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle MILJARD ;
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle MILJARD ;
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle MILJARD ;
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle MILJARD ;
LEXICON MILJARD
!! Lexicon `@LEXNAME@` is for numbers with 1 000 000 000–9 000 000 000
!! this is to implement ...N*miljardia*...
!!€gt-norm: milliards
!!€ 2000000000: kaksimiljardia
@U.CASE.SGNOM@:@U.CASE.SGNOM@miljardia OVERMILLIONS ;
@U.CASE.SGALL@:@U.CASE.SGALL@miljardille OVERMILLIONS ;
! =================
! Under the milliard
! =================
LEXICON OVERMILLIONS
!! Lexicon `@LEXNAME@` is for the millions *part* of numbers greater than 1 milliard
HUNDREDSM ; ! ¤## ### ###
@U.CASE.SGNOM@1:@U.CASE.SGNOM@sata HUNDREDM ; ! 1## ### ###
@U.CASE.SGALL@1:@U.CASE.SGALL@sadalle HUNDREDM ; ! 1## ### ###
%0: TENSM ; ! ¤# ### ###
%0: TEENSM ; ! 1¤ ### ###
%0: TENM ; ! 10 ### ###
%0%0: ONESM ; ! ¤ ### ###
@U.CASE.SGNOM@%0%01:@U.CASE.SGNOM@tuhat MILJON ; ! 1 ### ###
@U.CASE.SGALL@%0%01:@U.CASE.SGALL@tuhannelle MILJON ; ! 1 ### ###
%0%0%0: UNDERMILLION ; !
%0%0%0%0: TENST ; ! ¤# ### ###
%0%0%0%0: TEENST ; ! 1¤ ### ###
%0%0%0%0%0: ONEST ; ! ¤ ### ###
@U.CASE.SGNOM@%0%0%0%0%01:@U.CASE.SGNOM@tuhat THOUSAND ; ! ¤ ### ###
@U.CASE.SGALL@%0%0%0%0%01:@U.CASE.SGALL@tuhannelle THOUSAND ; ! ¤ ### ###
%0%0%0%0%0%0: UNDERTHOUSAND ; !
%0%0%0%0%0%0%0: TENS ; !
%0%0%0%0%0%0%0: TEENS ; !
%0%0%0%0%0%0%0%0: ONES ; !
%0%0%0%0%0%0%0%0%0: LOPPU ; !
LEXICON HUNDREDSM
!! Lexicon `@LEXNAME@` contains numbers 2-9 that need to be followed by exactly
!! 8 digits: 200 000 000–999 999 999
!! this is to implement *N*sataa...miljoonaa...
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi CUODIM ;
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme CUODIM ;
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä CUODIM ;
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi CUODIM ;
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi CUODIM ;
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän CUODIM ;
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan CUODIM ;
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän CUODIM ;
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle CUODIM ;
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle CUODIM ;
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle CUODIM ;
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle CUODIM ;
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle CUODIM ;
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle CUODIM ;
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle CUODIM ;
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle CUODIM ;
LEXICON CUODIM
!! Lexicon `@LEXNAME@` contains numbers 2-9 that need to be followed by exactly
!! this is to implement N*sataa*...miljoonaa...
!!€gt-norm: Hundreds of millions
!!€ 200000000: kaksisataamiljoonaa
@U.CASE.SGNOM@:@U.CASE.SGNOM@sataa HUNDREDM ;
@U.CASE.SGALL@:@U.CASE.SGALL@sadalle HUNDREDM ;
LEXICON HUNDREDM
!! Lexicon `@LEXNAME@` is for numbers in range: 100 000 000–199 000 000
!! this is to implement *sata*...miljoonaa...
TENM ;
TENSM ;
TEENSM ;
%0: ONESM ;
%0%0: MILJON ;
!LEXICON JUSTTENM
!kymmenen:1%0 LOHKAIM ;
LEXICON TEENSM
!! Lexicon `@LEXNAME@` is for numbers with 11 000 000–19 000 000
!! this is to implement ...N*toista*...miljoonaa...
1: TEENM ;
LEXICON TEENM
!! Lexicon `@LEXNAME@` is for numbers with 11 000 000–19 000 000
!! this is to implement ...*N*toista...miljoonaa...
!!€gt-norm: Teen millions
!!€ 1200000: kaksitoistamiljoonaa
@U.CASE.SGNOM@1:@U.CASE.SGNOM@yksi LOHKAIM ;
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi LOHKAIM ;
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme LOHKAIM ;
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä LOHKAIM ;
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi LOHKAIM ;
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi LOHKAIM ;
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän LOHKAIM ;
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan LOHKAIM ;
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän LOHKAIM ;
@U.CASE.SGALL@1:@U.CASE.SGALL@yhdelle LOHKAIM ;
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle LOHKAIM ;
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle LOHKAIM ;
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle LOHKAIM ;
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle LOHKAIM ;
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle LOHKAIM ;
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle LOHKAIM ;
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle LOHKAIM ;
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle LOHKAIM ;
LEXICON LOHKAIM
:toista MILJON ;
LEXICON TENSM
!! Lexicon `@LEXNAME@` is for numbers with 20 000 000–90 000 000
!! this is to implement ...*N*kymmentä...miljoonaa...
!1:yksi LÅGEVM ;
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi LÅGEVM ;
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme LÅGEVM ;
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä LÅGEVM ;
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi LÅGEVM ;
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi LÅGEVM ;
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän LÅGEVM ;
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan LÅGEVM ;
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän LÅGEVM ;
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle LÅGEVM ;
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle LÅGEVM ;
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle LÅGEVM ;
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle LÅGEVM ;
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle LÅGEVM ;
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle LÅGEVM ;
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle LÅGEVM ;
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle LÅGEVM ;
LEXICON TENM
!! Lexicon `@LEXNAME@` is for numbers with 10 000 000–10 999 999
!! this is to implement ...*kymmenen*miljoonaa...
!!€gt-norm: Ten millions
!!€ 2000000: kymmenenmiljoonaa
@U.CASE.SGNOM@1%0:@U.CASE.SGNOM@kymmenen MILJON ;
@U.CASE.SGALL@1%0:@U.CASE.SGALL@kymmenelle MILJON ;
LEXICON LÅGEVM
!! Lexicon `@LEXNAME@` is for numbers with 20 000 000–90 000 000
!! this is to implement ...N*kymmentä*...miljoonaa..
!!€gt-norm: Tens of millions
!!€ 2000000: kaksikymmentämiljoonaa
@U.CASE.SGNOM@%0:@U.CASE.SGNOM@kymmentä MILJON ;
@U.CASE.SGNOM@:@U.CASE.SGNOM@kymmentä ONESM ;
@U.CASE.SGALL@%0:@U.CASE.SGALL@kymmenelle MILJON ;
@U.CASE.SGALL@:@U.CASE.SGALL@kymmenelle ONESM ;
LEXICON ONESM
!! Lexicon `@LEXNAME@` is for numbers with 1 000 000–9 000 000
!! this is to implement ...*N*miljoonaa...
!1:yksi% miljoona% OVERTHOUSANDS ;
@U.CASE.SGNOM@1:@U.CASE.SGNOM@miljoona OVERTHOUSANDS ; ! 1######
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi MILJON ; ! 2######
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme MILJON ; ! 3######
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä MILJON ; ! 4######
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi MILJON ; ! 5######
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi MILJON ; ! 6######
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän MILJON ; ! 7######
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan MILJON ; ! 8######
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän MILJON ; ! 9######
@U.CASE.SGALL@1:@U.CASE.SGALL@miljoonalle OVERTHOUSANDS ; ! 1######
@U.CASE.SGALL@2:@U.CASE.SGALL@kaksille MILJON ; ! 2######
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle MILJON ; ! 3######
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle MILJON ; ! 4######
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle MILJON ; ! 5######
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle MILJON ; ! 6######
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle MILJON ; ! 7######
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle MILJON ; ! 8######
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle MILJON ; ! 9######
LEXICON MILJON
!! Lexicon `@LEXNAME@` is for numbers with 1 000 000–9 000 000
!! this is to implement ...N*miljoonaa*...
!!€gt-norm: Millions
!!€ 200000: kaksisataamiljoonaa
@U.CASE.SGNOM@:miljoonaa OVERTHOUSANDS ; ! ¤######
@U.CASE.SGALL@:miljoonalle OVERTHOUSANDS ; ! ¤######
! =================
! Under the miljon
! =================
LEXICON UNDERMILLION
!! Lexicon `@LEXNAME@` is for numbers with 100 000–900 000 after milliards
HUNDREDST ; ! ¤#####
@U.CASE.SGNOM@1:@U.CASE.SGNOM@sata HUNDREDT ; ! 1#####
@U.CASE.SGALL@1:@U.CASE.SGALL@sadalle HUNDREDT ; ! 1#####
LEXICON OVERTHOUSANDS
!! Lexicon `@LEXNAME@` is for the thousands *part* of numbers greater than 1 million
HUNDREDST ; ! ¤#####
1:sata HUNDREDT ; ! 1#####
%0: TENST ; ! 0¤####
%0: TEENST ; ! 01####
%0: TENT ; ! 010###
%0%0: ONEST ; ! 00¤###
@U.CASE.SGNOM@%0%01:@U.CASE.SGNOM@tuhat THOUSAND ; ! 001###
@U.CASE.SGALL@%0%01:@U.CASE.SGALL@tuhannelle THOUSAND ; ! 001###
%0%0%0: UNDERTHOUSAND ; ! 000###
%0%0%0%0: TENS ; ! 0000¤#
%0%0%0%0: TEENS ; ! 00001#
%0%0%0%0%0: ONES ; ! 00000#
%0%0%0%0%0%0: LOPPU ; ! 000000
LEXICON HUNDREDST
!! Lexicon `@LEXNAME@` contains numbers 2-9 that need to be followed by exactly
!! 5 digits: 200 000–999 999
!! this is to implement *N*sataa...tuhatta...
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi CUODIT ; ! 2#####
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme CUODIT ; ! 3#####
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä CUODIT ; ! 4#####
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi CUODIT ; ! 5#####
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi CUODIT ; ! 6#####
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän CUODIT ; ! 7#####
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan CUODIT ; ! 8#####
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän CUODIT ; ! 9#####
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle CUODIT ; ! 2#####
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle CUODIT ; ! 3#####
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle CUODIT ; ! 4#####
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle CUODIT ; ! 5#####
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle CUODIT ; ! 6#####
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle CUODIT ; ! 7#####
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle CUODIT ; ! 8#####
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle CUODIT ; ! 9#####
LEXICON CUODIT
!! Lexicon `@LEXNAME@` contains numbers 2-9 that need to be followed by exactly
!! this is to implement N*sataa*...tuhatta...
!!€gt-norm: Hundreds of thousands
!!€ 20000: kaksisataatuhatta
@U.CASE.SGNOM@:@U.CASE.SGNOM@sataa HUNDREDT ; ! ¤#####
@U.CASE.SGALL@:@U.CASE.SGALL@sadalle HUNDREDT ; ! ¤#####
LEXICON HUNDREDT ! ¤ = 1-9, # = 0-9
!! Lexicon `@LEXNAME@` is for numbers in range: 100 000–199 000
!! this is to implement *sata*...tuhatta...
TENST ; ! ¤¤####
TENT ; ! ¤10###
TEENST ; ! ¤1¤###
@U.CASE.SGNOM@%01:@U.CASE.SGNOM@yksi THOUSANDS ; ! ¤01###
@U.CASE.SGALL@%01:@U.CASE.SGALL@yhdelle THOUSANDS ; ! ¤01###
%0: ONEST ; ! ¤0¤###
%0%0: THOUSANDS ; ! ¤00###
LEXICON TEENST
!! Lexicon `@LEXNAME@` is for numbers with 11 000–19 000
!! this is to implement ...N*toista*...tuhatta...
1: TEENT ; ! 11###
!LEXICON JUSTTENT
!kymmenen% tuhatta:1%0 THOUSANDS ;
LEXICON TEENT
!! Lexicon `@LEXNAME@` is for numbers with 11 000–19 000
!! this is to implement ...*N*toista...tuhatta...
!!€gt-norm: Teens of thousands
!!€ 12000: kaksitoistatuhatta
@U.CASE.SGNOM@1:@U.CASE.SGNOM@yksi LOHKAIT ; ! 11###
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi LOHKAIT ; ! 12###
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme LOHKAIT ; ! 13###
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä LOHKAIT ; ! 14###
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi LOHKAIT ; ! 15###
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi LOHKAIT ; ! 16###
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän LOHKAIT ; ! 17###
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan LOHKAIT ; ! 18###
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän LOHKAIT ; ! 19###
@U.CASE.SGALL@1:@U.CASE.SGALL@yhdelle LOHKAIT ; ! 11###
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle LOHKAIT ; ! 12###
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle LOHKAIT ; ! 13###
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle LOHKAIT ; ! 14###
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle LOHKAIT ; ! 15###
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle LOHKAIT ; ! 16###
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle LOHKAIT ; ! 17###
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle LOHKAIT ; ! 18###
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle LOHKAIT ; ! 19###
LEXICON LOHKAIT
:toista THOUSANDS ; ! 11###-19###
LEXICON TENST
!! Lexicon `@LEXNAME@` is for numbers with 20 000–90 000
!! this is to implement ...*N*kymmentä...tuhatta...
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi LÅGEVT ; ! 2####
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme LÅGEVT ; ! 3####
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä LÅGEVT ; ! 4####
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi LÅGEVT ; ! 5####
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi LÅGEVT ; ! 6####
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän LÅGEVT ; ! 7####
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan LÅGEVT ; ! 8####
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän LÅGEVT ; ! 9####
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle LÅGEVT ; ! 2####
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle LÅGEVT ; ! 3####
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle LÅGEVT ; ! 4####
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle LÅGEVT ; ! 5####
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle LÅGEVT ; ! 6####
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle LÅGEVT ; ! 7####
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle LÅGEVT ; ! 8####
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle LÅGEVT ; ! 9####
LEXICON TENT
!! Lexicon `@LEXNAME@` is for numbers with 10 000 000–10 999 999
!! this is to implement ...*kymmenen*tuhatta...
!!€gt-norm: Ten thousands
!!€ 10000: kymmenentuhatta
@U.CASE.SGNOM@1%0:@U.CASE.SGNOM@kymmenentuhatta THOUSAND ; ! 10###
@U.CASE.SGALL@1%0:@U.CASE.SGALL@kymmenelletuhannelle THOUSAND ; ! 10###
LEXICON LÅGEVT
!! Lexicon `@LEXNAME@` is for numbers with 20 000–90 000
!! this is to implement ...N*kymmentä*...tuhatta..
!!€gt-norm: Tens of thousands
!!€ 20000: kaksikymmentätuhatta
@U.CASE.SGNOM@%0:@U.CASE.SGNOM@kymmentä THOUSANDS ; ! ¤0###
@U.CASE.SGNOM@1:@U.CASE.SGNOM@kymmentäyksituhatta THOUSAND ; ! ¤1###
@U.CASE.SGNOM@:@U.CASE.SGNOM@kymmentä ONEST ; ! ¤¤###-¤¤###
@U.CASE.SGALL@%0:@U.CASE.SGALL@kymmenelle THOUSANDS ; ! ¤0###
@U.CASE.SGALL@1:@U.CASE.SGALL@kymmenelleyhdelletuhannelle THOUSAND ; ! ¤1###
@U.CASE.SGALL@:@U.CASE.SGALL@kymmenelle ONEST ; ! ¤¤###-¤¤###
LEXICON ONEST
!! Lexicon `@LEXNAME@` is for numbers with 1 000–9 000
!! this is to implement ...*N*tuhatta...
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi THOUSANDS ; ! 2###
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme THOUSANDS ; ! 3###
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä THOUSANDS ; ! 4###
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi THOUSANDS ; ! 5###
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi THOUSANDS ; ! 6###
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän THOUSANDS ; ! 7###
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan THOUSANDS ; ! 8###
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän THOUSANDS ; ! 9###
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle THOUSANDS ; ! 2###
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle THOUSANDS ; ! 3###
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle THOUSANDS ; ! 4###
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle THOUSANDS ; ! 5###
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle THOUSANDS ; ! 6###
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle THOUSANDS ; ! 7###
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle THOUSANDS ; ! 8###
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle THOUSANDS ; ! 9###
LEXICON THOUSANDS ! x > 1
!! Lexicon `@LEXNAME@` is for numbers with 1 000–9 000
!! this is to implement ...N*tuhatta*...
!!€gt-norm: Thousands
!!€ 2000: kaksituhatta
!!€ 3456: kolmetuhattaneljäsataaviisikymmentäkuusi
@U.CASE.SGNOM@:@U.CASE.SGNOM@tuhatta THOUSAND ; ! ¤###
@U.CASE.SGALL@:@U.CASE.SGALL@tuhannelle THOUSAND ; ! ¤###
LEXICON THOUSAND
!! Lexicon `@LEXNAME@` is for the ones-tens-hundreds of numbers greater than thousand
!HUNDREDS ; ! ¤#####
UNDERTHOUSAND ; ! 1¤##
%0: TENS ; ! 10¤#
%0: TEENS ; ! 101¤
%0%0: ONES ; ! 100¤
%0%0%0: # ; ! 1000
!===========================
!Here starts the 999 numbers
!===========================
LEXICON UNDERTHOUSAND
!! Lexicon `@LEXNAME@` is for numbers with 100–900 after thousands
HUNDREDS ; ! 2##-9##
@U.CASE.SGNOM@1:@U.CASE.SGNOM@sata HUNDRED ; ! 1##
@U.CASE.SGALL@1:@U.CASE.SGALL@sadalle HUNDRED ; ! 1##
LEXICON HUNDREDS
!! Lexicon `@LEXNAME@` contains numbers 2-9 that need to be followed by exactly
!! 2 digits: 200–999
!! this is to implement *N*sataa...
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi CUODI ; ! 2##
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme CUODI ; ! 3##
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä CUODI ; ! 4##
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi CUODI ; ! 5##
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi CUODI ; ! 6##
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän CUODI ; ! 7##
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan CUODI ; ! 8##
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän CUODI ; ! 9##
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle CUODI ; ! 2##
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle CUODI ; ! 3##
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle CUODI ; ! 4##
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle CUODI ; ! 5##
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle CUODI ; ! 6##
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle CUODI ; ! 7##
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle CUODI ; ! 8##
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle CUODI ; ! 9##
LEXICON CUODI
!! Lexicon `@LEXNAME@` contains numbers 2-9 that need to be followed by exactly
!! this is to implement N*sataa*...
!!€gt-norm: Hundreds
!!€ 200: kaksisataa
!!€ 345: kolmesataaneljäkymmentäviisi
@U.CASE.SGNOM@:@U.CASE.SGNOM@sataa HUNDRED ; ! ¤##
@U.CASE.SGALL@:@U.CASE.SGALL@sadalle HUNDRED ; ! ¤##
LEXICON HUNDRED
!! Lexicon `@LEXNAME@` is for numbers in range: 100–999
TENS ; ! #¤#
TEENS ; ! #1#
%0: ONES ; ! #0#
%0%0: LOPPU ; ! #00
LEXICON TEENS
!! Lexicon `@LEXNAME@` is for numbers with 11–19
!! this is to implement ...N*toista*
1: TEEN ; ! 1¤
LEXICON TEEN
!! Lexicon `@LEXNAME@` is for numbers with 11–19
!! this is to implement ...*N*toista
!!€gt-norm: Teens
!!€ 11: yksitoista
!!€ 12: kaksitoista
!!€ 13: kolmetoista
@U.CASE.SGNOM@1:@U.CASE.SGNOM@yksi LOHKAI ; ! 11
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi LOHKAI ; ! 12
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme LOHKAI ; ! 13
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä LOHKAI ; ! 14
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi LOHKAI ; ! 15
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi LOHKAI ; ! 16
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän LOHKAI ; ! 17
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan LOHKAI ; ! 18
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän LOHKAI ; ! 19
@U.CASE.SGALL@1:@U.CASE.SGALL@yhdelle LOHKAI ; ! 11
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle LOHKAI ; ! 12
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle LOHKAI ; ! 13
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle LOHKAI ; ! 14
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle LOHKAI ; ! 15
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle LOHKAI ; ! 16
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle LOHKAI ; ! 17
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle LOHKAI ; ! 18
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle LOHKAI ; ! 19
LEXICON LOHKAI
:toista LOPPU ;
!LEXICON
!kymmentä:1%0 # ;
LEXICON TENS
!! Lexicon `@LEXNAME@` is for numbers with 20–90
!! this is to implement ...*N*kymmentä...
JUSTTEN ; ! 10
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi LÅGEV ; ! 2#
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme LÅGEV ; ! 3#
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä LÅGEV ; ! 4#
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi LÅGEV ; ! 5#
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi LÅGEV ; ! 6#
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän LÅGEV ; ! 7#
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan LÅGEV ; ! 8#
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän LÅGEV ; ! 9#
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle LÅGEV ; ! 2#
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle LÅGEV ; ! 3#
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle LÅGEV ; ! 4#
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle LÅGEV ; ! 5#
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle LÅGEV ; ! 6#
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle LÅGEV ; ! 7#
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle LÅGEV ; ! 8#
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle LÅGEV ; ! 9#
LEXICON LÅGEV
!! Lexicon `@LEXNAME@` is for numbers with 20–90
!! this is to implement ...N*kymmentä*...
!!€gt-norm: Tens
!!€ 20: kaksikymmentä
!!€ 34: kolmekymmentäneljä
@U.CASE.SGNOM@%0:@U.CASE.SGNOM@kymmentä LOPPU ; ! ¤0
@U.CASE.SGNOM@:@U.CASE.SGNOM@kymmentä ONES ; ! ¤#
@U.CASE.SGALL@%0:@U.CASE.SGALL@kymmenelle LOPPU ; ! ¤0
@U.CASE.SGALL@:@U.CASE.SGALL@kymmenelle ONES ; ! ¤#
LEXICON JUSTTEN
!! Lexicon `@LEXNAME@` is for number 10
!! this is to implement ...*kymmenen*
!!€gt-norm: Ten
!!€ 10: kymmenen
@U.CASE.SGNOM@1%0:@U.CASE.SGNOM@kymmenen LOPPU ; ! 10
@U.CASE.SGALL@1%0:@U.CASE.SGALL@kymmenelle LOPPU ; ! 10
LEXICON ONES
!! Lexicon `@LEXNAME@` is for numbers with 1–9
!! this is to implement yksi, kaksi, kolme..., yhdeksän
!!€gt-norm: Ones
!!€ 1: yksi
!!€ 2: kaksi
!!€ 3: kolme
@U.CASE.SGNOM@1:@U.CASE.SGNOM@yksi LOPPU ; ! 1
@U.CASE.SGNOM@2:@U.CASE.SGNOM@kaksi LOPPU ; ! 2
@U.CASE.SGNOM@3:@U.CASE.SGNOM@kolme LOPPU ; ! 3
@U.CASE.SGNOM@4:@U.CASE.SGNOM@neljä LOPPU ; ! 4
@U.CASE.SGNOM@5:@U.CASE.SGNOM@viisi LOPPU ; ! 5
@U.CASE.SGNOM@6:@U.CASE.SGNOM@kuusi LOPPU ; ! 6
@U.CASE.SGNOM@7:@U.CASE.SGNOM@seitsemän LOPPU ; ! 7
@U.CASE.SGNOM@8:@U.CASE.SGNOM@kahdeksan LOPPU ; ! 8
@U.CASE.SGNOM@9:@U.CASE.SGNOM@yhdeksän LOPPU ; ! 9
@U.CASE.SGALL@1:@U.CASE.SGALL@yhdelle LOPPU ; ! 1
@U.CASE.SGALL@2:@U.CASE.SGALL@kahdelle LOPPU ; ! 2
@U.CASE.SGALL@3:@U.CASE.SGALL@kolmelle LOPPU ; ! 3
@U.CASE.SGALL@4:@U.CASE.SGALL@neljälle LOPPU ; ! 4
@U.CASE.SGALL@5:@U.CASE.SGALL@viidelle LOPPU ; ! 5
@U.CASE.SGALL@6:@U.CASE.SGALL@kuudelle LOPPU ; ! 6
@U.CASE.SGALL@7:@U.CASE.SGALL@seitsemälle LOPPU ; ! 7
@U.CASE.SGALL@8:@U.CASE.SGALL@kahdeksalle LOPPU ; ! 8
@U.CASE.SGALL@9:@U.CASE.SGALL@yhdeksälle LOPPU ; ! 9
LEXICON ZERO
!! Lexicon `@LEXNAME@` is for number 0
!! nolla
!!€gt-norm: Zero
!!€ 0: nolla
@U.CASE.SGNOM@%0:@U.CASE.SGNOM@nolla LOPPU ; ! 0
@U.CASE.SGALL@%0:@U.CASE.SGALL@nollalle LOPPU ; ! 0
LEXICON LOPPU
!! Lexicon `@LEXNAME@` is to implement potential case inflection with a colon.
!!€gt-norm: Digits with explicit cases
!!€ 1\:lle: yhdelle
!! *Note:* accepting or rejecting case inflected digit strings without explicit
!! suffix can be changed here.
@U.CASE.SGNOM@ # ;
@U.CASE.SGALL@%:lle:@U.CASE.SGALL@ # ;