Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

stem_MS_DOS_Latin_I.sbl 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. routines (
  2. mark_regions
  3. main_suffix
  4. consonant_pair
  5. other_suffix
  6. )
  7. externals ( stem )
  8. integers ( p1 x )
  9. groupings ( v s_ending )
  10. stringescapes {}
  11. /* special characters (in MS-DOS Latin I) */
  12. stringdef a" hex '84'
  13. stringdef ao hex '86'
  14. stringdef o" hex '94'
  15. define v 'aeiouy{a"}{ao}{o"}'
  16. define s_ending 'bcdfghjklmnoprtvy'
  17. define mark_regions as (
  18. $p1 = limit
  19. test ( hop 3 setmark x )
  20. goto v gopast non-v setmark p1
  21. try ( $p1 < x $p1 = x )
  22. )
  23. backwardmode (
  24. define main_suffix as (
  25. setlimit tomark p1 for ([substring])
  26. among(
  27. 'a' 'arna' 'erna' 'heterna' 'orna' 'ad' 'e' 'ade' 'ande' 'arne'
  28. 'are' 'aste' 'en' 'anden' 'aren' 'heten' 'ern' 'ar' 'er' 'heter'
  29. 'or' 'as' 'arnas' 'ernas' 'ornas' 'es' 'ades' 'andes' 'ens' 'arens'
  30. 'hetens' 'erns' 'at' 'andet' 'het' 'ast'
  31. (delete)
  32. 's'
  33. (s_ending delete)
  34. )
  35. )
  36. define consonant_pair as setlimit tomark p1 for (
  37. among('dd' 'gd' 'nn' 'dt' 'gt' 'kt' 'tt')
  38. and ([next] delete)
  39. )
  40. define other_suffix as setlimit tomark p1 for (
  41. [substring] among(
  42. 'lig' 'ig' 'els' (delete)
  43. 'l{o"}st' (<-'l{o"}s')
  44. 'fullt' (<-'full')
  45. )
  46. )
  47. )
  48. define stem as (
  49. do mark_regions
  50. backwards (
  51. do main_suffix
  52. do consonant_pair
  53. do other_suffix
  54. )
  55. )