Compare commits

...

8 Commits

11 changed files with 1223 additions and 54 deletions

2
.gitignore vendored
View File

@ -2,3 +2,5 @@ _build
_tmp
dist-newstyle
style/fonts/pragmatapro/*.woff2
tags
TAGS

View File

@ -37,8 +37,10 @@ build: $(OUTPUT)
$(BUILDDIR)/%.html: $(PAGESDIR)/%.md $(TEMPLATE) $(LANGFILTER) $(LAANTAS_SCRIPT)
@echo "[pandoc] $<"
mkdir -p $(dir $@)
mkdir -p $(basename $@)
LAANTAS_SCRIPT="$(LAANTAS_SCRIPT)" \
DIRNAME="$(subst $(PAGESDIR),$(BUILDDIR),$(dir $<))" \
DIRNAME="$(basename $@)" \
FILENAME="$@" \
pandoc -s --toc --template $(TEMPLATE) -o $@ $< \
--filter $(LANGFILTER)

View File

@ -1,12 +1,15 @@
module Ebnf (makeEbnf, Rule (..), Def (..), render, parse) where
import Prelude hiding (span)
import Data.Maybe (fromMaybe)
import Data.List (intercalate)
import Data.Char (isAlphaNum)
import Text.ParserCombinators.ReadP
import Text.Megaparsec hiding (parse)
import Text.Megaparsec.Char hiding (char')
import qualified Text.Megaparsec as MP
import Text.Pandoc.Definition
import Data.Text (Text, pack, unpack)
import Data.Text (Text)
import qualified Data.Text as Text
import Data.Void
data Rule =
Rule Text Def
@ -28,7 +31,7 @@ data Def =
makeEbnf :: Block -> Block
makeEbnf (CodeBlock (_, cs, _) txt)
| "ebnf" `elem` cs
= render $ fromMaybe (error "invalid ebnf") $ parse $ unpack txt
= render $ either (error . errorBundlePretty) id $ parse txt
makeEbnf b = b
render :: [Rule] -> Block
@ -85,64 +88,85 @@ renderDefAt p = \case
Com txt -> [span "ebnf-com" txt]
type P = Parsec Void Text
parse :: String -> Maybe [Rule]
parse str =
case readP_to_S (parse' <* eof) str of
[(res, _)] -> Just res
_ -> Nothing
parse :: Text -> Either (ParseErrorBundle Text Void) [Rule]
parse str = MP.parse (parse' <* eof) "<ebnf>" str
parse' :: ReadP [Rule]
parse' :: Parsec Void Text [Rule]
parse' = many rule
rule :: P Rule
rule = choice
[Rule <$> nt <* sym "=" <*> def <* sym ";",
RCom <$> comment]
nt = pack . unwords <$> many1 word
where word = munch1 isWordChar <* skipSpaces
isWordChar c = c == '_' || c == '-' || isAlphaNum c
nt :: P Text
nt = Text.unwords <$> some (word <* space) where
word = Text.cons <$> first <*> takeWhileP Nothing isWordChar
first = letterChar
isWordChar c = c == '_' || c == '-' || isAlphaNum c
def :: P Def
def = ors
ors :: P Def
ors = list Or <$> seqs `sepBy1` (sym "|")
seqs :: P Def
seqs = list Seq <$> sub `sepBy1` (sym ",")
sub :: P Def
sub = do
lhs <- adef
rhs <- optMaybe $ sym "-" *> adef
pure $ maybe lhs (Sub lhs) rhs
adef :: P Def
adef = choice $
[N <$> nt, T <$> term, S <$> special,
Com <$> comment,
bracketed id '(' ')',
bracketed Opt '[' ']',
bracketed Many '{' '}',
Com <$> comment]
bracketed Many '{' '}']
term = pack <$> choice [str '\'', str '"']
term :: P Text
term = choice [str '\'', str '"']
special = pack <$> str '?'
special :: P Text
special = str '?'
str c = lexeme $ between (char c) (char c) (munch1 (/= c))
str :: Char -> P Text
str c = lexeme $ between (char c) (char c) (takeWhileP Nothing (/= c))
comment = pack <$> lexeme go where
go = concat <$> sequence
[string "(*",
concat <$> many (choice [go, munch1 \c -> c /= '(' && c /= '*']),
string "*)"]
comment :: P Text
comment = do try (string_ "(*"); go ["(*"] 1 where
go :: [Text] -> Int -> P Text
go acc 0 = pure $ mconcat $ reverse acc
go acc i = choice
[fragment (string "(*") (+ 1) acc i,
fragment (string "*)") (subtract 1) acc i,
fragment (takeWhileP Nothing notComChar) id acc i]
fragment p f acc i = do str <- p; go (str : acc) (f i)
notComChar c = c /= '(' && c /= '*'
string_ str = () <$ string str
bracketed :: (Def -> a) -> Char -> Char -> P a
bracketed f o c = f <$> between (char' o) (char' c) def
list :: ([a] -> a) -> [a] -> a
list _ [x] = x
list f xs = f xs
sym :: Text -> P Text
sym str = lexeme $ string str
char' :: Char -> P Char
char' c = lexeme $ char c
lexeme p = p <* skipSpaces
lexeme :: P a -> P a
lexeme p = p <* space
optMaybe :: P a -> P (Maybe a)
optMaybe = option Nothing . fmap Just

View File

@ -29,35 +29,39 @@ glosses = \case
pattern Gloss l g w t = BulletList [[Plain l], [Plain g], [Plain w], [Plain t]]
pattern PGloss l p g w t =
BulletList [[Plain l], [Plain p], [Plain g], [Plain w], [Plain t]]
pattern PNGloss l b n g w t =
BulletList [[Plain l], [Plain b], [Plain n], [Plain g], [Plain w], [Plain t]]
glossTable :: Vars => Block -> IO (Maybe Block)
glossTable = \case
Gloss l s g t -> Just <$> make l Nothing s g t
PGloss l p s g t -> Just <$> make l (Just p) s g t
HorizontalRule -> pure Nothing
b -> error $ "found " ++ show b ++ " in gloss section"
Gloss l s g t -> Just <$> make l Nothing Nothing s g t
PGloss l p s g t -> Just <$> make l (Just p) Nothing s g t
PNGloss l b n s g t -> Just <$> make l (Just b) (Just n) s g t
HorizontalRule -> pure Nothing
b -> error $ "found " ++ show b ++ " in gloss section"
where
make l p s g t = do
let n = length $ splitInlines s
let colspecs = replicate n (AlignDefault, ColWidthDefault)
let l' = cell1 n $ underlines l; p' = cell1 n <$> p
let ss = cells s; gs = cells g; t' = cell1 n t
make l b n s g t = do
let = length $ splitInlines s
let colspecs = replicate (AlignDefault, ColWidthDefault)
let l' = cell1 $ underlines l; b' = cell1 <$> b; n' = cell1 <$> n
let ss = cells s; gs = cells g; t' = cell1 t
img <- case ?lang of
Just Lántas ->
[Just $ cell1 n [img] | img <- makeImage $ splitImage' $ stripInlines l]
[Just $ cell1 [img] | img <- makeImage $ splitImage' $ stripInlines l]
Nothing -> pure Nothing
pure $ Table ("", ["gloss"], []) (Caption Nothing []) colspecs
(TableHead mempty [])
[TableBody mempty (RowHeadColumns 0) [] $ concat
[[row ["gloss-scr", "scr"] [i] | Just i <- [img]],
[row ["gloss-lang", "lang"] [l']],
[row ["gloss-pron", "ipa"] [p] | Just p <- [p']],
[row ["gloss-pron", "ipa"] [b] | Just b <- [b']],
[row ["gloss-pron", "ipa"] [n] | Just n <- [n']],
[row ["gloss-split", "lang"] ss],
[row ["gloss-gloss"] gs],
[row ["gloss-trans"] [t']]]]
(TableFoot mempty [])
cell is = Cell mempty AlignDefault (RowSpan 1) (ColSpan 1) [Plain is]
cell1 n is = Cell mempty AlignDefault (RowSpan 1) (ColSpan n) [Plain is]
cell1 is = Cell mempty AlignDefault (RowSpan 1) (ColSpan ) [Plain is]
cells = map (cell . concatMap abbrs) . splitInlines
row c = Row ("", c, [])

View File

@ -92,12 +92,15 @@ toTitle = Text.filter \c -> c /= '\\' && c /= '#'
makeImage :: Image -> IO Inline
makeImage (Image {..}) = do
exe <- getEnv "LAANTAS_SCRIPT"
dir <- getEnv "DIRNAME"
exe <- getEnv "LAANTAS_SCRIPT"
parent <- dropFileName <$> getEnv "FILENAME"
dir <- getEnv "DIRNAME"
let fullFile = dir </> file
let relFile = Text.pack $ makeRelative parent fullFile
callProcess exe
["-S", show size, "-K", show stroke, "-W", show width,
"-C", Text.unpack color, "-t", Text.unpack text, "-o", dir </> file]
pure $ Pandoc.Image ("", ["scr","laantas"], []) [] (Text.pack file, title)
"-C", Text.unpack color, "-t", Text.unpack text, "-o", fullFile]
pure $ Pandoc.Image ("", ["scr","laantas"], []) [] (relFile, title)
weirdUrl :: Char -> Bool
weirdUrl c = c `elem` ("#\\?&_/.·,{} " :: String)

View File

@ -14,17 +14,23 @@ spans :: Vars => Inline -> IO Inline
spans = \case
Code attrs txt
| Just ('\\', txt') <- Text.uncons txt -> pure $ Code attrs txt'
| Just _ <- enclosed '/' '/' txt -> pure $ ipaB txt
| Just _ <- enclosed '[' ']' txt -> pure $ ipaN txt
| Just txt' <- enclosed '{' '}' txt -> lang txt'
| Just txt' <- enclosed '!' '!' txt -> pure $ abbr txt'
| Just txt' <- enclosed "" "" txt -> pure $ ipaA txt'
| Just txt' <- enclosed "//" "//" txt -> pure $ ipaA txt'
| Just _ <- enclosed "/" "/" txt -> pure $ ipaB txt
| Just _ <- enclosed "[" "]" txt -> pure $ ipaN txt
| Just txt' <- enclosed "{" "}" txt -> lang txt'
| Just txt' <- enclosed "!" "!" txt -> pure $ abbr txt'
i -> pure i
ipaB, ipaN, abbr :: Text -> Inline
ipaA, ipaB, ipaN, abbr :: Text -> Inline
ipaA = Span (cls ["ipa", "ipa-arch"]) . text' . surround ""
ipaB = Span (cls ["ipa", "ipa-broad"]) . text'
ipaN = Span (cls ["ipa", "ipa-narrow"]) . text'
abbr = Span (cls ["abbr"]) . text' . endash
surround :: Text -> Text -> Text
surround s txt = s <> txt <> s
text' :: Text -> [Inline]
text' = toList . text
@ -58,12 +64,13 @@ cls :: [Text] -> Attr
cls cs = ("", cs, [])
enclosed :: Char -> Char -> Text -> Maybe Text
enclosed :: Text -> Text -> Text -> Maybe Text
enclosed o c txt
| Text.length txt >= 2,
Text.head txt == o,
Text.last txt == c
= Just $ Text.init $ Text.tail txt
| Text.length txt >= o + c,
Text.take o txt == o,
Text.takeEnd c txt == c
= Just $ Text.drop o $ Text.dropEnd c txt
where o = Text.length o; c = Text.length c
enclosed _ _ _ = Nothing

View File

@ -36,6 +36,7 @@ executable langfilter
base ^>= 4.14.0.0,
containers ^>= 0.6.2.1,
filepath ^>= 1.4.2.1,
megaparsec ^>= 9.0.1,
process ^>= 1.6.11.0,
pandoc-types ^>= 1.22,
text,

View File

@ -12,10 +12,15 @@ couple of buzzwords each:
and is written with an abugida.
* **[Tengan]**, or `{tté ŋa}` `/tʼɛ˥ ŋɑ˩/`, with an isolating grammar, click
consonants, evidentiality, and a Hangul-ripoff for the script.
consonants, evidentiality, and a Hangul-ripoff for the script. (I haven't
transferred it from my old site yet, sorry)
* **[Zalajmkwély]** `/zɑlɑɪmkweˈliː/`, which was originally from a "design
a conlang in an hour" challenge thing but then I got kind of attached to it.
* **[Zalajmkwély](zalajmkwely)** `/zɑlɑɪmkweˈliː/`, which was originally from
a "design a conlang in an hour" challenge thing but then I got kind of
attached to it. It's still just a sketch though.
It has nine genders and vowel harmony.
* [an unnamed language with a volapük-ass aesthetic](vol)
Also, [a mirror](syn-test-cases.html) of some syntax test cases, originally
compiled by Gary Shannon, that might be useful to someone.

499
pages/syn-test-cases.md Normal file
View File

@ -0,0 +1,499 @@
---
title: Conlang syntax test cases
toc: false
...
The contents of this page are mirrored from [Gary Shannon's website][gs], as the
domain has changed hands and that page no longer exists. (It can also be found
[on archive.org][a]).
[gs]: http://fiziwig.com/conlang/syntax_tests.html
[a]: https://web.archive.org/web/2010/fiziwig.com/conlang/syntax_tests.html
---
There are several collections of specimen sentences to translate into
a conlang, including 1200 sentences on this web site. As a general rule the
sources for these sentences have been elementary-level educational
publications meant to provide a student with rote practise exercises. This
means that the same sentence structure will appear many times with only
slight variations in the nouns and verbs used. For example, these sentences
from _1200 Graded Sentences for Analysis_:
> * A cheerful fire is blazing on the hearth.
> * Seven little sisters were walking in a row.
> * Some beautiful roses are blooming in our garden.
> * The boys are playing in the lot.
> * The little girl was playing with her kitten.
Granted, these sentences may use different conjugations of a verb, and
different declensions of the various nouns and pronouns, but aside from those
trivial difference, these sentences are essentially identical with respect to
the syntactical features they are meant to test or demonstrate. That kind of
repetition is fine for rote training, but it is not really necessary for
testing a conlang. To serve that purpose there needs to be only one sentence
of the type: "Roses are red."
What is necessary is a variety of unique sentences each of which tests some
different aspect of the conlang. This collection was constructed by putting
together several more repetative lists and culling out that larger
collection, those sentences which duplicate syntactic principles already
present earlier in the list.
Below are 218 sentences selected from a collection of 1200 sentences, with
all those that are essentially duplicates removed.
Some sentences have been slightly modified to remove references to a specific
culture or time, to make the sentence more "universal" for conlangs of any
era or culture. For example "We went to London..." has been changed to "We
went to the village...". In other sentences allowances will have to made for
conlangs from cultures that don't have Mondays, windows, or snow. The
important thing is whether the conlang being tested can handle the meaning of
sentences of that general structure.
---
1. The sun shines.
2. The sun is shining.
3. The sun shone.
4. The sun will shine.
5. The sun has been shining.
6. The sun is shining again.
7. The sun will shine tomorrow.
8. The sun shines brightly.
9. The bright sun shines.
10. The sun is rising now.
11. All the people shouted.
12. Some of the people shouted.
13. Many of the people shouted twice.
14. Happy people often shout.
15. The kitten jumped up.
16. The kitten jumped onto the table.
17. My little kitten walked away.
18. It's raining.
19. The rain came down.
20. The kitten is playing in the rain.
21. The rain has stopped.
22. Soon the rain will stop.
23. I hope the rain stops soon.
24. Once wild animals lived here.
25. Slowly she looked around.
26. Go away!
27. Let's go!
28. You should go.
29. I will be happy to go.
30. He will arrive soon.
31. The baby's ball has rolled away.
32. The two boys are working together.
33. This mist will probably clear away.
34. Lovely flowers are growing everywhere.
35. We should eat more slowly.
36. You have come too soon.
37. You must write more neatly.
38. Directly opposite stands a wonderful palace.
39. Henry's dog is lost.
40. My cat is black.
41. The little girl's doll is broken.
42. I usually sleep soundly.
43. The children ran after Jack.
44. I can play after school.
45. We went to the village for a visit.
46. We arrived at the river.
47. I have been waiting for you.
48. The campers sat around the fire.
49. A little girl with a kitten sat near me.
50. The child waited at the door for her father.
51. Yesterday the oldest girl in the village lost her kitten.
52. Were you born in this village?
53. Can your brother dance well?
54. Did the man leave?
55. Is your sister coming for you?
56. Can you come tomorrow?
57. Have the neighbors gone away for the winter?
58. Does the robin sing in the rain?
59. Are you going with us to the concert?
60. Have you ever travelled in the jungle?
61. We sailed down the river for several miles.
62. Everybody knows about hunting.
63. On a Sunny morning after the solstice we started for the mountains.
64. Tom laughed at the monkey's tricks.
65. An old man with a walking stick stood beside the fence.
66. The squirrel's nest was hidden by drooping boughs.
67. The little seeds waited patiently under the snow for the warm spring sun.
68. Many little girls with wreaths of flowers on their heads danced around the
bonfire.
69. The cover of the basket fell to the floor.
70. The first boy in the line stopped at the entrance.
71. On the top of the hill in a little hut lived a wise old woman.
72. During our residence in the country we often walked in the pastures.
73. When will your guests from the city arrive?
74. Near the mouth of the river, its course turns sharply towards the East.
75. Between the two lofty mountains lay a fertile valley.
76. Among the wheat grew tall red poppies.
77. The strong roots of the oak trees were torn from the ground.
78. The sun looked down through the branches upon the children at play.
79. The west wind blew across my face like a friendly caress.
80. The spool of thread rolled across the floor.
81. A box of growing plants stood in the Window.
82. I am very happy.
83. These oranges are juicy.
84. Sea water is salty.
85. The streets are full of people.
86. Sugar tastes sweet.
87. The fire feels hot.
88. The little girl seemed lonely.
89. The little boy's father had once been a sailor.
90. I have lost my blanket.
91. A robin has built his nest in the apple tree.
92. At noon we ate our lunch by the roadside.
93. Mr. Jones made a knife for his little boy.
94. Their voices sound very happy.
95. Is today Monday?
96. Have all the leaves fallen from the tree?
97. Will you be ready on time?
98. Will you send this message for me?
99. Are you waiting for me?
100. Is this the first kitten of the litter?
101. Are these shoes too big for you?
102. How wide is the River?
103. Listen.
104. Sit here by me.
105. Keep this secret until tomorrow.
106. Come with us.
107. Bring your friends with you.
108. Be careful.
109. Have some tea.
110. Pip and his dog were great friends.
111. John and Elizabeth are brother and sister.
112. You and I will go together.
113. They opened all the doors and windows.
114. He is small, but strong.
115. Is this tree an oak or a maple?
116. Does the sky look blue or gray?
117. Come with your father or mother.
118. I am tired, but very happy.
119. He played a tune on his wonderful flute.
120. Toward the end of August the days grow much shorter.
121. A company of soldiers marched over the hill and across the meadow.
122. The first part of the story is very interesting.
123. The crow dropped some pebbles into the pitcher and raised the water to the
brim.
124. The baby clapped her hands and laughed in glee.
125. Stop your game and be quiet.
126. The sound of the drums grew louder and louder.
127. Do you like summer or winter better?
128. That boy will have a wonderful trip.
129. They popped corn, and then sat around the fire and ate it.
130. They won the first two games, but lost the last one.
131. Take this note, carry it to your mother; and wait for an answer.
132. I awoke early, dressed hastily, and went down to breakfast.
133. Aha! I have caught you!
134. This string is too short!
135. Oh, dear! the wind has blown my hat away!
136. Alas! that news is sad indeed!
137. Whew! that cold wind freezes my nose!
138. Are you warm enough now?
139. They heard the warning too late.
140. We are a brave people, and love our country.
141. All the children came except Mary.
142. Jack seized a handful of pebbles and threw them into the lake.
143. This cottage stood on a low hill, at some distance from the village.
144. On a fine summer evening, the two old people were sitting outside the door
of their cottage.
145. Our bird's name is Jacko.
146. The river knows the way to the sea.
147. The boat sails away, like a bird on the wing.
148. They looked cautiously about, but saw nothing.
149. The little house had three rooms, a sitting room, a bedroom, and a tiny
kitchen.
150. We visited my uncle's village, the largest village in the world.
151. We learn something new each day.
152. The market begins five minutes earlier this week.
153. Did you find the distance too great?
154. Hurry, children.
155. Madam, I will obey your command.
156. Here under this tree they gave their guests a splendid feast.
157. In winter I get up at night, and dress by yellow candlelight.
158. Tell the last part of that story again.
159. Be quick or you will be too late.
160. Will you go with us or wait here?
161. She was always, shabby, often ragged, and on cold days very uncomfortable.
162. Think first and then act.
163. I stood, a little mite of a girl, upon a chair by the window, and watched
the falling snowflakes.
164. Show the guests these shells, my son, and tell them their strange history.
165. Be satisfied with nothing but your best.
166. We consider them our faithful friends.
167. We will make this place our home.
168. The squirrels make their nests warm and snug with soft moss and leaves.
169. The little girl made the doll's dress herself.
170. I hurt myself.
171. She was talking to herself.
172. He proved himself trustworthy.
173. We could see ourselves in the water.
174. Do it yourself.
175. I feel ashamed of myself.
176. Sit here by yourself.
177. The dress of the little princess was embroidered with roses, the national
flower of the Country.
178. They wore red caps, the symbol of liberty.
179. With him as our protector, we fear no danger.
180. All her finery, lace, ribbons, and feathers, was packed away in a trunk.
181. Light he thought her, like a feather.
182. Every spring and fall our cousins pay us a long visit.
183. In our climate the grass remains green all winter.
184. The boy who brought the book has gone.
185. These are the flowers that you ordered.
186. I have lost the book that you gave me.
187. The fisherman who owned the boat now demanded payment.
188. Come when you are called.
189. I shall stay at home if it rains.
190. When he saw me, he stopped.
191. Do not laugh at me because I seem so absent minded.
192. I shall lend you the books that you need.
193. Come early next Monday if you can.
194. If you come early, wait in the hall.
195. I had a younger brother whose name was Antonio.
196. Gnomes are little men who live under the ground.
197. He is loved by everybody, because he has a gentle disposition.
198. Hold the horse while I run and get my cap.
199. I have found the ring I lost.
200. Play and I will sing.
201. That is the funniest story I ever heard.
202. She is taller than her brother.
203. They are no wiser than we.
204. Light travels faster than sound.
205. We have more time than they.
206. She has more friends than enemies.
207. He was very poor, and with his wife and five children lived in a little low
cabin of logs and stones.
208. When the wind blew, the traveler wrapped his mantle more closely around
him.
209. I am sure that we can go.
210. We went back to the place where we saw the roses.
211. "This tree is fifty feet high," said the gardener.
212. I think that this train leaves five minutes earlier today.
213. My opinion is that the governor will grant him a pardon.
214. Why he has left the city is a mystery.
215. The house stands where three roads meet.
216. He has far more money than brains.
217. Evidently that gate is never opened, for the long grass and the great
hemlocks grow close against it.
218. I met a little cottage girl; she was eight years old, she said.

320
pages/zalajmkwely/index.md Normal file
View File

@ -0,0 +1,320 @@
---
title: Zalajmkwély
lang: zalajmkwely
...
# Phonology
## Vowels
  Front Back
--------- --------------------- ---------------------
High `/i ɪ/` `{y i}` `/u ʊ/` `{ů u}`
Mid-high `/e/` `{é}` `/o õ/` `{ó ų}`
Mid-low `/ɛ ɛ̃/` `{e į}` `/ɔ/` `{o}`
Low `/a æ̃/` `{ä ę}` `/ɑ ɒ̃/` `{a ą}`
Words have vowel harmony in non-nasal vowels between "tense" and "lax". If a
root contains only nasal vowels, then the harmony defaults to lax. In affixes,
a vowel that alternates depending on harmony (which is all of them, other than
nasals) is indicated with a capital letter. The realisation of these vowels is
based on the root nearest to the affix.
  `{I}` `{U}` `{E}` `{O}` `{A}`
------ ------- ------- ------- ------- -------
Tense `{y}` `{ů}` `{é}` `{ó}` `{ä}`
Lax `{i}` `{u}` `{e}` `{o}` `{a}`
Before a consonant, nasal vowels can be written as a vowel followed by
`{m}`/`{n}`/`{ŋ}`. In this case, `{on}`, `{ón}`, etc, are pronounced
`/ɒ̃/` like `{ą}`.
### Allophony
- Vowels are slightly longer when stressed.
- `/ɛ e/` are lowered to `/æ/` before a velar (including `[ɫ]`).
- A `[ʔ]` is inserted into word boundaries with a vowel on both sides.
## Consonants
  Labial Dental Dorsal
---------- ----------------- ----------------- -----------------
Plosive `/p b/` `{p b}` `/t d/` `{t d}` `/k/` `{k}`
Fricative `/f/` `{f}` `/s z/` `{s z}` `/x ʁ/` `{h ř}`
Nasal `/m/` `{m}` `/n/` `{n}` `/ŋ/` `{g}`
Other `/w/` `{w}` `/l ɾ/` `{l r}` `/j/` `{j}`
The word "glide" refers to `/w j/`, and "liquid" to `/l ɾ ʁ/`.
The sequence `/ŋŋ/` is written `{ng}` (and pronounced `[ŋɡ]`).
### Allophony
- `/l/` is `[ɫ]` anywhere except before one of `/j i/`.
- `/p t k/` are affricated to `[pf ts kx]` directly before a stressed vowel,
and to `[pf tʃ kx]` at the end of a word.
- `/x/` is pronounced `[χ]` at the end of a word or after a lax vowel.
- `/b d/` become `[v ð]` word finally if immediately preceded by a vowel.
- `/ŋ/` becomes `[ɡ]` after another `/ŋ/`, before `/z/` or `/d/`, or when not next to a
vowel.
- `/s z/` become `[ʃ ʒ]` at the end of a word or before a plosive (including the
`[ɡ]` coming from `/ŋ/`).
- `/d/` becomes `[dʒ]` at the end of a word if _not_ directly preceded by a
vowel.
- `/t d s z/` become `[tʃ dʒ ʃ ʒ]` before one of `/j i e/`. The `/j/` is then
dropped if there was one.
## Syllable structure
In [EBNF]:
[EBNF]: //en.wikipedia.org/wiki/Extended_Backus-Naur_form
```ebnf
word = [init cons], nucleus, {inner cons, nucleus}, [final cons];
nucleus = (?vowel?, ?glide?) - ('ɪj' | 'ij' | 'ɛ̃j' | 'ʊw' | 'uw' | 'õw');
init cons = ?consonant?, [?glide?]
| ('p' | 't' | 'k'), 's', [?glide?]
| ('b' | 'd' | 'ŋ'), 'z', [?glide?]
| (?consonant? - ?liquid?), ?liquid?
| ('mb' | 'nd' | 'ŋŋ'), [?glide?];
inner cons = '·', ?consonant?
| '·', (?consonant? - ?glide?), ?glide?
| (('p' | 'k'), '·', ('t' | 's') | ('b' | 'ŋ'), '·', ('d' | 'z')),
(* the above ŋ is aksdm *)
| ('s', '·', ('p' | 't' | 'k') | 'z', '·', ('b' | 'd' | 'm' | 'n' | 'ŋ'))
| ('f' | 'h'), '·', ?voiceless plosive?
| ?liquid?, '·', ?nasal?
| ('m·m' | 'n·n' | 'ŋ · ŋ');
final cons = ?consonant? - (?glide? | ?nasal?), ['s']
| ?liquid?, (?consonant? - (?glide? | ?liquid? | 'n' | 'ŋ')), ['s'];
```
The `{·}` in [inner cons]{.ebnf-nt} indicates where the syllable boundary is.
## Stress
Stress falls on the last syllable of the stem. (In a compound word, the last
syllable of the last stem.) Inflectional endings do not cause it to move.
- `{kwély}` 'language' `/kweˈliː/`
- `{kwélyjäm}` 'language.`!GEN!`' `/kweˈliː.jam/`
# Verbs
Verbs do not inflect themselves, but the conjugation is reflected on a highly
fused particle following the main verb. This particle inflects for person,
gender (in the third person), number, tense, and a distinction between
perfective/imperfective. The citation form of this particle is `{as}`, the
`!1SG!`;`!PRS!`;`!IMP!` form. The `!3X!` form is used with a group of
people/objects of multiple genders, as well as for unknown or indefinite
referents (whether singular or plural), and impersonal sentences such as
instructions on signs.
## Present
:::twocol
- `{řazgų kéd as}` 'I am eating bread'
- `{plas énlä}` 'He sneezes'
:::
  `!IMPF SG!` `!PL!` `!PF SG!` `!PL!`
------- ------------- ---------- ----------- ----------
`!1!` `{as}` `{az}` `{és}` `{ez}`
`!2!` `{ad}` `{am}` `{ed}` `{ém}`
`!3A!` `{äly}` `{alis}` `{énly}` `{elis}`
`!3B!` `{älä}` `{älůs}` `{énlä}` `{élůs}`
`!3C!` `{äló}` `{alos}` `{énló}` `{elos}`
`!3X!``{älós}``{élós}`
## Past
:::twocol
- `{řazgų kéd als}` 'I was eating bread'
- `{řazgų kéd éls}` 'I ate bread'
:::
  `!IMPF SG!` `!PL!` `!PF SG!` `!PL!`
------- ------------- ----------- ----------- -----------
`!1!` `{als}` `{ajz}` `{éls}` `{eliz}`
`!2!` `{ajd}` `{alm}` `{elid}` `{élym}`
`!3B!` `{äjlä}` `{äjlůs}` `{éllä}` `{élůs}`
`!3A!` `{äjly}` `{ajlis}` `{élly}` `{ellis}`
`!3C!` `{äjló}` `{ajlos}` `{élló}` `{ellos}`
`!3X!``{äjlós}``{éllós}`
## Future
:::twocol
- `{řazgų kéd ojs}` 'I will be eating bread'
- `{řazgų kéd éws}` 'I will eat bread'
:::
  `!IMPF SG!` `!PL!` `!PF SG!` `!PL!`
------- ------------- ----------- ----------- -----------
`!1!` `{ojs}` `{wįz}` `{ews}` `{jųz}`
`!2!` `{wįd}` `{ólm}` `{jųd}` `{ewm}`
`!3B!` `{ójlä}` `{ójlůs}` `{éwlä}` `{éwlůs}`
`!3A!` `{ójly}` `{ojlis}` `{éwly}` `{ewlis}`
`!3C!` `{ójló}` `{ojlos}` `{éwló}` `{ewlos}`
`!3X!``{ójlós}``{éwlós}`
Questions, either of the yes/no or of the content kind, are indicated by a
particle `{ům}` (which is also the verb 'to ask') appearing after the inflection
of `{as}`.
Other aspects and moods are indicated with auxiliary verbs.
:::glosses
- Bolus hawa můtä jas jųz.
- [bɔˈlʊʃ xɑˈwɑ muˈta jɑʃ jõʒ]
- bolus hawa můtä jas jųz
- tomorrow can start go 1PL;FUT;PRF
- We can set off tomorrow.
---
- Pulų jafų ep äly ům?
- [pʊˈlõ jaˈfõ epf alijˈõ]
- pu-lų jaf-ų ep äly ům
- what-ACC name-ACC have 2SG;PRS;IMP QU
- What is your name?
:::
# Nouns & adjectives
## Case
Nouns have five cases: nominative, accusative, genitive, dative, and locative.
The last of these is used only with preposition-type words. As a result of the
inflectional suffixes, nouns almost always end in a consonant. The only
exception is words ending in `/ɪ/` or `/i/`, which gain an extra `/j/` before
the suffixes. The spelling similarly gains a `{j}`.
Nouns are divided into a few classes. Each class requires the use of a specific
inflection class of `{as}`, labelled `!A!`, `!B!`, or `!C!`. The conventional
labels for the classes are:
I. Sapient `!(A)!` sapients
II. Water `!(B)!` bodies of water, and the sky
III. Ground `!(A)!` the ground, rocks, metals, chemical elements
IV. Artifice `!(C)!` handheld tools, small plastic items, electronics
V. Spiritual `!(C)!` gods, the mind & soul, large natural events, language
VI. Containers `!(B)!` boxes, pans, bowls, wardrobes, etc;
beds, chairs, and other furniture for sitting or lying on
VII. Clothing `!(B)!` clothing and carried objects like umbrellas and bags
VIII. Food `!(C)!` food and drink
IX. Animal `!(B)!` animals (including mythical creatures)
(**TODO** zk names for genders)
Not all nouns fall into the class which the labels would suggest, and if none of
the labels fit then the choice is arbitrary. (As is usual with `!NOM!``!ACC!`
languages, `!NOM!`;`!SG!` is the citation form in dictionaries.) People's names
are assigned to whichever class they choose.
`!I!` `!II!` `!III!` `!IV!` `!V!` `!VI!` `!VII!` `!VIII!` `!IX!`
--------- -------- -------------- -------------- ------------- ------------ ------------ ------------- ------------- ------------- -------------
'woman' 'lake' 'iron' 'tool' 'life' 'cup' 'shoe' 'bread' 'dog'
`!NOM!` `!SG!` `{fälés}` `{dusal}` `{klůp}` `{řas}` `{kól}` `{mbuz}` `{gřub}` `{řazg}` `{kląs}`
`!PL!` `{fälésé}` `{dusala}` `{klůpä}` `{řasa}` `{kólä}` `{mbuze}` `{gřube}` `{řazgį}` `{kląse}`
`!ACC!` `!SG!` `{fälésų}` `{dusalų}` `{klůpů}` `{řasol}` `{kólų}` `{mbuzol}` `{gřubę}` `{řazgų}` `{kląsų}`
`!PL!` `{fälésów}` `{dusaloh}` `{klůpůf}` `{řasuf}` `{kólůh}` `{mbuzuf}` `{gřubęw}` `{řazgoh}` `{kląsow}`
`!GEN!` `!SG!` `{fälésäm}` `{dusalam}` `{klůpym}` `{řasim}` `{kóläm}` `{mbuzat}` `{gřubam}` `{řazgim}` `{kląsam}`
`!PL!` `{fälésäz}` `{dusalat}` `{klůpyt}` `{řasit}` `{kóläz}` `{mbuzaz}` `{gřubat}` `{řazgįz}` `{kląsaz}`
`!DAT!` `!SG!` `{fälésój}` `{dusale}` `{klůpój}` `{řasoj}` `{kólé}` `{mbuze}` `{gřuboj}` `{řazgai}` `{kląsi}`
`!PL!` `{fälésůd}` `{dusaloj}` `{klůpůd}` `{řasud}` `{kólój}` `{mbuzoj}` `{gřubud}` `{řazged}` `{kląsid}`
`!LOC!` `!SG!` `{fälésés}` `{dusales}` `{klůpés}` `{řases}` `{kólés}` `{mbuzes}` `{gřubes}` `{řazges}` `{kląses}`
`!PL!` `{fälésęts}` `{dusalęts}` `{klůpęts}` `{řasęts}` `{kólęts}` `{mbuzęts}` `{gřubęts}` `{řazgęts}` `{kląsęts}`
Adjectives, including genitive nouns, agree in case with their head noun, but not number. Adjectives, except for possessive pronouns, attached to a genitive noun agree with that noun's head, but not with the genitive noun itself.
:::twocol
- `!NOM!`: `{bym}` 'good'
- `!ACC!`: `{bymů}`
- `!DAT!`: `{bymó}`
- `!LOC!`: `{bymés}`
:::
# Pronouns
__TODO__
## Case
| | `!NOM!` | `!ACC!` | `!GEN!` | `!DAT!` | `!LOC!` |
|----------:|:-------:|:--------:|:--------:|:--------:|:-------:|
| `!1SG!` | `{yn}` | `{iwn}` | `{ym}` | `{ém}` | `{yné}` |
| `!1PL!` | `{fę}` | `{fęw}` | `{fénó}` | `{fejm}` | `{fęj}` |
| `!2SG!` | `{ol}` | `{ow}` | `{ů}` | `{wą}` | `{wój}` |
| `!2PL!` | `{zůl}` | `{zow}` | `{zów}` | `{zům}` | `{zůj}` |
| `!3SG.A!` | `{sem}` | `{sju}` | `{só}` | `{sem}` | `{sęs}` |
| `!3SG.B!` | `{lem}` | `{lew}` | `{ló}` | `{lem}` | `{lęs}` |
| `!3SG.C!` | `{em}` | `{ä}` | `{aw}` | `{äm}` | `{ęs}` |
| `!3PL.A!` | `{gej}` | `{gęw}` | `{déw}` | `{gim}` | `{gįs}` |
| `!3PL.B!` | `{gaj}` | `{gąw}` | `{djó}` | `{gam}` | `{gąs}` |
| `!3PL.C!` | `{gó}` | `{gů}` | `{gů}` | `{gam}` | `{gąs}` |
| `!3PL.X!` | `{gew}` | `{gejų}` | `{déw}` | `{gam}` | `{gąs}` |
# Syntax
## Questions
To form a yes/no question, the particle `{ům}` is added to the end of the
sentence. When used in this way, `{ům}` is pronounced as an `{ų}` attached to
the final word.
:::glosses
- Bymů bälsůh ep ad ům?
- [biˈmuː baɫˈsuːχ ɛpf ɑˈdõ]
- bym-ů bäls-ůh ep ad ům
- good-ACC mood-ACC;PL have 2SG;PRS;IMPF QU
- Are you feeling good?
:::
To answer a question, conjugate `{as}` appropriately, and follow with `{řab}`
for agreement and `{zol}` for disagreement. In formal circumstances the main
verb stem may be echoed before the `{as}`. Before `{zol}`, a `{s}` or `{z}` at
the end of the form of `{as}` is dropped.
:::glosses
- As řab.
- [ɑʃ ʁɑv]
- as řab
- 1SG;PRS;IMPF CONFIRM
- Yes, I am.
---
- A zol.
- [ɑ zɔɫ]
- a(s) zol
- 1SG;PRS;IMPF DENY
- No, I am not.
:::

View File

@ -0,0 +1,302 @@
# "dem" can be used equally as pronoun or adjective
# 2021 update: i have no idea what this means. thanks past me
zalaj:
t: {n: 5}
d: speakers of Zalajmkwély
kwély:
t: {n: 5}
d: [language, speech]
kéd:
t: vt
d: eat
plas:
t: vi
d: [sneeze, burst]
hawa:
t: v aux
d: be able to
můtä:
t: v aux
d: start to
jas:
t: vi
d:
- go
- come
ům:
- t: vi
d: ask
- t: part
d: (question marker)
pu:
t: prn
i: {acc: pů, dat: puwo, gen: pwe, loc: pwes}
d: [what, which, who]
n: >
appears at beginning of main clause taking the case inflection of a noun
clause
jaf:
t: {n: 5}
d: name
# TODO
bolus:
t: adv
d: tomorrow
ep:
t: vt
d:
- have (abstract or inalienable entities, pets, etc)
- be (state, mood, etc)
- believe
sejm:
t: vt
d:
- have (concrete alienable inanimate objects)
- own
- hold
dusal:
t: {n: 2}
d: lake
klůp:
t: {n: 3}
d: iron
řas:
t: {n: 4}
d: tool
kól:
t: {n: 5}
d: [life, soul]
mbuz:
t: {n: 6}
d: cup
křub:
t: {n: 7}
d: shoe
řazg:
t: {n: 8}
d: bread
kląs:
t: {n: 9}
d: dog
kwint:
t: {n: 3}
d: north
róls:
t: {n: 3}
d: south
néf:
t: {n: 1}
d: east
jųz:
t: {n: 1}
d: west
floks:
t: {n: 1}
d: wind
n: always plural
syg:
t: {n: 1}
d: sun
naza:
t: v aux
d: do repeatedly
ubi:
t: v aux
d: do excessively
twyz:
t: prn
i: {acc: tjů, gen: twym, dat: twijo, loc: twije}
d: [each other, the other(s)]
kwyz:
t: prn
i: {acc: kjů, gen: kwym, dat: kwijo, loc: kwije}
d: [each, themselves]
yn:
t: conj
d: [and, with]
n: pronounced as į
see: log
log:
t: {pp: dat}
d: [using, with]
see: yn
dä:
t: dem
d: [all, every]
éfé:
- t: {pp: loc}
d: beyond
- t: {pp: gen}
d: more than
e:
- o: éfé ym zog
t: taller than me
- o: tobzuf éfé ym sejm älä
t: he has more money than me
zog:
t: adj
d: [tall, long]
tobza:
t: {n: 3}
d: money
n: always in plural
kósét:
t: {n: 9}
d: strength
fi:
t: dem
i: {acc: fju, gen: fį, dat: fo, loc: fes}
d: this
fja:
t: dem
i: {acc: fjů, gen: fit, dat: fot, loc: fęts}
d: this
fą:
t: dem
i: {acc: fąu, gen: fą, dat: fąu, loc: fąs}
d: that
fama:
t: dem
i: {acc: famų, gen: fam, dat: famo, loc: famęts}
d: those
gaząd:
t: {n: 2}
d: point in time
el:
t: {pp: loc}
d: during
sék:
- t: {n: 1}
d: person, human
- t: {suf: [v, n]}
d: -er
nam:
t: {pp: loc}
d: past
nam jas:
t: vt
d: pass by
see: [nam, jas]
swal:
t: adj
d: warm
plejn:
t: {n: 7}
d: cloak
az:
t: part
d: (relativiser)
e:
o: kląsų ep az sék
t: the person with a dog
näzén:
t: adj
d: [united, joined, together]
zaka:
t: vt
d: take
rų:
t: {pp: loc}
d: from
päsů:
t: v aux
d: (causative)
zeze:
t: {pp: loc}
d: [between, among]
bym:
t: adj
d: good
bäls:
t: {n: 5}
d: [mood, mental state]
řab:
t: part
d: used when affirming a yes/no question or when answering a content question
zol:
t: part
d: used when denying a yes/no question
gů:
t: vt
d: make
zřat:
- t: {n: 5}
d:
- thought
- "zřatų gů": to think
- t: {suf: [n GEN, n]}
d: study of
zřatamzřat:
t: {n: 5}
d: logic
see: zřat
mlos:
t: {n: 6}
d:
- number
- "mlosol gů": to count
- mlosatzřat: number theory