This is the mail archive of the xconq7@sources.redhat.com mailing list for the Xconq project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Swedis Place Name Generator


Stan Shebs wrote:
> 
> Erik Sigra wrote:
> >
> >           (reject "Åå"
> >                   "åå"
> >                   "älvälv" ;Quotation needed to avoid segfault
> 
> Tsk tsk, another bug... :-)

Easy fix, the hash function for names was returning negative
numbers because of 8-bit chars - the first time they're being
used I guess.

> >           ) ;This doesn't work! (How do I use reject?)

After a little study of the code, I decided to go with the
"reject is a special rule body" approach, since it's more
general and no harder to implement.  So basically you use
it by wrapping around another rule body, as in

  (nonterm (reject (or term (term " " term)) abc "de f" ghi))

where names built from term or a sequence of two terms
cannot have any of "abc", "de f", or "ghi" appearing in them.

All this is tested and checked in.  (I also took the opportunity
to drop "any", since nobody uses it and it's redundant with "or".)

Here's what citynames.g looks like with the appropriate changes;
I'll add the name generator as lib/ng-swedish.g if these changes
are acceptable.  (I upped the number of cities to 100, but that's
just testing code anyway.)

Stan

(game-module "citynames"
  (title "Citynames")
  (blurb "Game to test generation of random city names.")
  (variants
    (world-seen true) ;Desn't come true by default for some reason
    (see-all true) ;Desn't come true by default for some reason
    (world-size)
  )
)

(unit-type city
  (name "city")
  (image-name "city20")
  (help "A city")
  (namer "swedish-place-names")
  (acp-per-turn 1)
  (vision-range 16)
  (start-with 100)
)

(terrain-type default (image-name "black"))

(set sides-min 1)
(set sides-max 1)
(set country-radius-min 20)

(namer swedish-place-names
  (grammar root 100
    (root (or 15 filtered-name
              1 (preword " " (capitalize filtered-name))
          )
    )
    (preword (or svarta blåa gröna gula röda bruna vita
                 10 nya 10 gamla
                 10 norra 10 Östra 10 södra 10 västra
             )
    )
    (filtered-name (reject name
                  Åå
                  åå
                  älvälv
                  bergberg
                  borgborg
                  daldal
                  fältfält
                  forsfors
                  hemhem
                  hemlösa    ;Means "homeless" (plural)
                  hemstad    ;Means "homecity"
                  höghög
                  hultshult
                  hushus
                  kullakulla
                  laxlax
                  markmark
                  markamarka
                  sandsand
                  sjösjö
                  slättslätt
                  stensten
                  strömström
                  sundsund
                  vivi
                  vikvik
                  rrr        ;Norrryd
                  ttt        ;Slätttuna
          )
    )
    (name (or 4 (prefix suffix)
              2 (both suffix)
              2 (prefix both)
              2 (both both)
                (prefix both suffix)
                (complete)
          )
    )
    (prefix (or ;Colors
                svart blå grön gul röd brun vit
                
                ;Time
                ny gammel
                
                ;Prepositions
                "Över" neder
                
                ;Size
                stor lill
                
                ;Directions
                nord norr ost Öst Öster syd söder väst väster
                vest     ;Vestfjärd

                ;Personal firstnames
                bengts everts fredriks oskars
                
                Å Älv
                back björne bjurs bjus brahe brunns
                djurs
                eke em
                fågel fin finn fogd frö furu
                gör göte glimminge gran gränges gryt
                halls han horn hults
                jön
                karl karle karls ki kors krono kvarn kyrk
                lek lin ling lule
                malm marie mjöl mört munk
                näck nåden
                ockel om on
                "Öre"    ;Capitalized because automatic capitalization
                         ;doesn't work for this letter.
                ox oxel på pite
                räfs råg rätt ronne ro run
                såg salt side sig simris skattung solberg sollen ställ
                stock svine 
                täll tammer tand töv tran
                ule ulvs ume unn upp
                våm var vår vikar vin ving vir
                ytter
            )
    )
    (suffix (or ;Quotations needed to avoid segfault
                å åker åkra älv ås
                björka bäck bäcka backe berga böle bro by byn dal dala
                dalen fjärd fred gård gården gärde gärdet gårda haga
                hamn hed heden hult hyttan kalix köping lösa mo myra
                näs näset ö ryd sala sätra slott stad sund tjärn torp
                tuna vattnet
            )
    )
    (both (or berg
              borg  ;Borgholm
              dal
              fält
              fors
              hem
              hög
              hus   ;Huskvarna
              kulla
              lax
              mark
              marka
              sand
              sjö
              slätt
              sten  ;Stenungsund
              ström
              sund  ;Sundsvall
              vi
              vik
          )
    )
    (complete (or Åbo
                  alfta
                  Älvho
                  artsjö bäcka bomarsund borlänge falun floda föglö
                  gagnef glimminge gustavs hamra hede idre jakobstad
                  järna kalix kalmar kökar lappträsk lemland lima los
                  lund malung mora mörkret nora orsa sälen särna solv
                  sveg tuna vasa växjö vendel
              )
    )
  )
)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]