This is the mail archive of the
xconq7@sources.redhat.com
mailing list for the Xconq project.
Re: Swedis Place Name Generator
- To: Erik Sigra <freeciv at home dot se>, xconq7 at sourceware dot cygnus dot com
- Subject: Re: Swedis Place Name Generator
- From: Stan Shebs <shebs at shebs dot cnchost dot com>
- Date: Sun, 01 Oct 2000 11:03:29 -0700
- References: <39D5E908.EA0EE284@home.se> <39D643DA.1A019551@shebs.cnchost.com>
- Reply-To: shebs at shebs dot cnchost dot com
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
)
)
)
)