zasni-gerna 0.0.1 → 0.0.2
raw patch · 2 files changed
+67/−64 lines, 2 files
Files
src/Language/Lojban/Parser/ZasniGerna/Parser.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies, QuasiQuotes #-}+{-# LANGUAGE TypeFamilies, QuasiQuotes, PatternGuards #-} module Language.Lojban.Parser.ZasniGerna.Parser where @@ -172,6 +172,7 @@ | NASECon Tag Prefix Connective | TAGGI Tag Connective | NC+ | GIJA Connective Connective deriving Show data Initiator@@ -362,20 +363,20 @@ = _:words_SU* _:SI_tail* ps:post p:paragraphs f:FAhO_? { (fromMaybe NF ps, p, fromMaybe NT f) } -paragraphs :: Text = p:paragraph ps:(n:NIhO_ p:paragraph { (n, p) })*+paragraphs :: Text = p:paragraph ps:(n:NIhO_ p':paragraph { (n, p') })* { if null ps then p else NIhO p ps } -paragraph :: Text = s:statement is:(i:I_ s:statement { (i, s) })*+paragraph :: Text = s:statement is:(i:I_ s':statement { (i, s') })* { if null is then s else I s is } statement :: Text = s:statement_1 is:- ( i:I_ j:joik s:statement_1 { (i, j, s) }+ ( i:I_ j:joik s':statement_1 { (i, j, s') } )* { if null is then s else ICon s is } statement_1 :: Text = s:sentence is:- ( i:I_ j:joik? t:tag? b:BO_ s:sentence- { (i, fromMaybe NC j, maybe b (flip TagBO b) t, s) }+ ( i:I_ j:joik? t:tag? b:BO_ s':sentence+ { (i, fromMaybe NC j, maybe b (flip TagBO b) t, s') } )* { if null is then s else IBO s is } -- 2. Sentence Bridi@@ -389,8 +390,8 @@ / t:term* v:VAU_? { Terms t $ fromMaybe NT v } bridi_tail :: Text = b:bridi_tail_1 gb:- ( g:gihek b:bridi_tail_1 t:term* v:VAU_?- { (g, b, Terms t $ fromMaybe NT v) }+ ( g:gihek b':bridi_tail_1 t:term* v:VAU_?+ { (g, b', Terms t $ fromMaybe NT v) } )* { if null gb then b else Gihek b gb } bridi_tail_1 :: Text = b:bridi_tail_2 gb:@@ -403,8 +404,8 @@ { if null t && isNothing v then s else BridiTail s $ Terms t $ fromMaybe NT v } / tn:(t:tag { t } / n:NA_ { n })* ge:gek b1:bridi_tail gi:GI_- b2:bridi_tail t:term* v:VAU_?- { mkBridiTail tn ge b1 gi b2 t v }+ b2:bridi_tail t':term* v:VAU_?+ { mkBridiTail tn ge b1 gi b2 t' v } -- 3. Term Sumti @@ -414,9 +415,9 @@ / f:FA_ k:KU_? { TagKU f $ fromMaybe NT k } / t:tag k:KU_? { TagKU t $ fromMaybe NT k } / n:NA_ k:KU_? { TagKU n $ fromMaybe NT k }- / ge:gek t1:term+ v:VAU_? gi:GI_ t2:term+ v:VAU_?- { Gek ge (Terms t1 $ fromMaybe NT v)- gi (Terms t2 $ fromMaybe NT v) }+ / ge:gek t1:term+ v1:VAU_? gi:GI_ t2:term+ v2:VAU_?+ { Gek ge (Terms t1 $ fromMaybe NT v1)+ gi (Terms t2 $ fromMaybe NT v2) } sumti :: Text = s1:sumti_1 js:(j:joik s2:sumti_1 { (j, s2) })* vr:(v:VUhO_ r:rels { VR v r })?@@ -425,7 +426,7 @@ sumti_1 :: Text = s1:sumti_2 jss: ( j:joik t:tag? bw:BO_ s2:sumti_2- { (j, maybe bw (\t -> TagBO t bw) t, s2) }+ { (j, maybe bw (\t' -> TagBO t' bw) t, s2) } )* { if null jss then s1 else ConBO s1 jss } sumti_2 :: Text@@ -446,20 +447,20 @@ { Lergum ls $ fromMaybe NT b } / !_:tag !_:selbri ln:(l:LAhE_ { Left l } / n:NAhE_ b:BO_ { Right (n, b) })- r:rels? s:sumti lu:LUhU_? { either+ r:rels? s':sumti lu:LUhU_? { either (\l -> LAhE l (fromMaybe NR r)- s+ s' (fromMaybe NT lu)) (\(n, b) -> NAhEBO n b (fromMaybe NR r)- s+ s' (fromMaybe NT lu)) ln }- ) r:rels? { maybe s (Rel s) r }+ ) r':rels? { maybe s (Rel s) r' } -description :: Text = l:LE_ rs:(r:rels { r } / s:bare_sumti { RelSumti s })?- q:quantifier? ss:(s:selbri { s } / s:bare_sumti { s }) k:KU_?+description :: Text = l:LE_ rs:(r:rels { r } / s':bare_sumti { RelSumti s' })?+ q:quantifier? ss:(s:selbri { s } / s':bare_sumti { s' }) k:KU_? { LE l (fromMaybe NR rs) (fromMaybe NQ q) ss (fromMaybe NT k) } -- 4. Mex@@ -488,7 +489,7 @@ -- 5. Relative -rels :: Relative = r:rel rs:(z:ZIhE_ r:rel { (z, r) })*+rels :: Relative = r:rel rs:(z:ZIhE_ r':rel { (z, r') })* { if null rs then r else ZIhE r rs } rel :: Relative@@ -499,7 +500,7 @@ selbri :: Text = sl:selbri_1+ cs:(c:CO_ s:selbri_1 { (c, s) })* r:rels?- cei:(c:CEI_ s:selbri { (c, s) })? { mkSelbri sl cs r cei }+ cei:(c:CEI_ s':selbri { (c, s') })? { mkSelbri sl cs r cei } / t:tag s:selbri { Tag t s } / n:NA_ s:selbri { Tag n s } @@ -507,11 +508,11 @@ { if null js then s else Con s js } selbri_2 :: Text = s:selbri_3 jbs:- ( j:joik t:tag? b:BO_ s:selbri_3- { (j, maybe b (\t -> TagBO t b) t, s) }+ ( j:joik t:tag? b:BO_ s':selbri_3+ { (j, maybe b (\t' -> TagBO t' b) t, s') } )* { if null jbs then s else ConBO s jbs } -selbri_3 :: Text = t:tanru_unit bts:(b:BO_ t:tanru_unit { (b, t) })*+selbri_3 :: Text = t:tanru_unit bts:(b:BO_ t':tanru_unit { (b, t') })* { if null bts then t else TanruBO t bts } tanru_unit :: Text@@ -536,7 +537,7 @@ ( s:SE_ { s } / j:JAI_ t:tag? { maybe j (JAITag j) t } / n:NAhE_ { n }- ) t:tanru_unit_1 { Prefix p t }+ ) t':tanru_unit_1 { Prefix p t' } -- 7. Link args @@ -552,6 +553,8 @@ gihek :: Connective = n:NA_? s:SE_? g:GIhA_ { mkConnective n s g }+ / n:NA_? s:SE_? gi:GI_ j:JOI_+ { mkConnective n s (GIJA gi j) } gek :: Connective = s:SE_? g:GA_ { maybe g (flip SECon g) s }@@ -982,21 +985,21 @@ CMAVO :: String = _:Y* c:cmavo { c } BAI :: String = _:Y* &_:cmavo r:- ( c:c a:a h:h a:a { [c, a, h, a] }+ ( c:c a:a h:h a':a { [c, a, h, a'] } / p:p u:u h:h i:i { [p, u, h, i] } / n:n u:u h:h o:o { [n, u, h, o] } / k:k a:a h:h e:e { [k, a, h, e] } / c:c u:u h:h e:e { [c, u, h, e] } / n:n a:a u:u { [n, a, u] }- / r:r u:u h:h i:i { [r, u, h, i] }+ / r':r u:u h:h i:i { [r', u, h, i] } / t:t a:a h:h e:e { [t, a, h, e] } / d:d i:i h:h i':i { [d, i, h, i'] } / n:n a:a h:h o:o { [n, a, h, o] } / v:v e:e h:h u:u { [v, e, h, u] } / v:v e:e h:h a:a { [v, e, h, a] } / v:v e:e h:h i:i { [v, e, h, i] }- / v:v e:e h:h e:e { [v, e, h, e] }- / v:v i:i h:h i:i { [v, i, h, i] }+ / v:v e:e h:h e':e { [v, e, h, e'] }+ / v:v i:i h:h i':i { [v, i, h, i'] } / v:v i:i h:h a:a { [v, i, h, a] } / v:v i:i h:h u:u { [v, i, h, u] } / v:v i:i h:h e:e { [v, i, h, e] }@@ -1013,7 +1016,7 @@ / c:c a:a h:h u:u { [c, a, h, u] } / z:z u:u h:h a:a { [z, u, h, a] } / r:r i:i h:h u:u { [r, i, h, u] }- / r:r u:u h:h u:u { [r, u, h, u] }+ / r:r u:u h:h u':u { [r, u, h, u'] } / r:r e:e h:h o:o { [r, e, h, o] } / t:t e:e h:h e':e { [t, e, h, e'] } / b:b u:u h:h u':u { [b, u, h, u'] }@@ -1028,7 +1031,7 @@ / z:z e:e h:h u:u { [z, e, h, u] } / z:z e:e h:h a:a { [z, e, h, a] } / z:z e:e h:h i:i { [z, e, h, i] }- / z:z e:e h:h e:e { [z, e, h, e] }+ / z:z e:e h:h e':e { [z, e, h, e'] } / c:c o:o h:h i:i { [c, o, h, i] } / p:p u:u h:h o:o { [p, u, h, o] } / c:c o:o h:h u:u { [c, o, h, u] }@@ -1075,11 +1078,11 @@ / m:m u:u h:h u':u { [m, u, h, u'] } / r:r i:i h:h i':i { [r, i, h, i'] } / r:r a:a h:h i:i { [r, a, h, i] }- / k:k a:a h:h a:a { [k, a, h, a] }+ / k:k a:a h:h a':a { [k, a, h, a'] } / p:p a:a h:h u:u { [p, a, h, u] }- / p:p a:a h:h a:a { [p, a, h, a] }+ / p:p a:a h:h a':a { [p, a, h, a'] } / l:l e:e h:h a:a { [l, e, h, a] }- / k:k u:u h:h u:u { [k, u, h, u] }+ / k:k u:u h:h u':u { [k, u, h, u'] } / t:t a:a i:i { [t, a, i] } / b:b a:a u:u { [b, a, u] } / m:m a:a h:h i:i { [m, a, h, i] }@@ -1144,16 +1147,16 @@ / l:l a:a u:u { [l, a, u] } / z:z a:a i:i { [z, a, i] } / t:t a:a u:u { [t, a, u] }- / j:j o:o h:h o:o { [j, o, h, o] }+ / j:j o:o h:h o':o { [j, o, h, o'] } / r:r u:u h:h o:o { [r, u, h, o] } / g:g e:e h:h o:o { [g, e, h, o] } / j:j e:e h:h o:o { [j, e, h, o] } / l:l o:o h:h a:a { [l, o, h, a] }- / n:n a:a h:h a:a { [n, a, h, a] }- / s:s e:e h:h e:e { [s, e, h, e] }+ / n:n a:a h:h a':a { [n, a, h, a'] }+ / s:s e:e h:h e':e { [s, e, h, e'] } / t:t o:o h:h a:a { [t, o, h, a] } / g:g a:a h:h e:e { [g, a, h, e] }- / y:y h:h y:y { [y, h, y] }+ / y:y h:h y':y { [y, h, y'] } / b:b y:y { [b, y] } / c:c y:y { [c, y] } / d:d y:y { [d, y] }@@ -1242,7 +1245,7 @@ GIhA :: String = _:Y* &_:cmavo r: ( g:g i:i h:h e:e { [g, i, h, e] }- / g:g i:i h:h i:i { [g, i, h, i] }+ / g:g i:i h:h i':i { [g, i, h, i'] } / g:g i:i h:h o:o { [g, i, h, o] } / g:g i:i h:h a:a { [g, i, h, a] } / g:g i:i h:h u:u { [g, i, h, u] }@@ -1308,7 +1311,7 @@ / f:f e:e h:h i:i { [f, e, h, i] } / v:v u:u h:h u':u { [v, u, h, u'] } / s:s u:u h:h i:i { [s, u, h, i] }- / j:j u:u h:h u:u { [j, u, h, u] }+ / j:j u:u h:h u':u { [j, u, h, u'] } / g:g e:e i:i { [g, e, i] } / p:p a:a h:h i:i { [p, a, h, i] } / f:f a:a h:h i:i { [f, a, h, i] }@@ -1323,7 +1326,7 @@ / r:r i:i h:h o:o { [r, i, h, o] } / s:s a:a h:h i:i { [s, a, h, i] } / p:p i:i h:h a:a { [p, i, h, a] }- / s:s i:i h:h i:i { [s, i, h, i] }+ / s:s i:i h:h i':i { [s, i, h, i'] } ) &_:post_cmavo { r } KE :: String = _:Y* &_:cmavo r:(k:k e:e { [k, e] }) &_:post_cmavo@@ -1341,11 +1344,11 @@ / d:d i:i h:h u:u { [d, i, h, u] } / d:d i:i h:h e:e { [d, i, h, e] } / d:d e:e h:h u:u { [d, e, h, u] }- / d:d e:e h:h e:e { [d, e, h, e] }+ / d:d e:e h:h e':e { [d, e, h, e'] } / d:d e:e i:i { [d, e, i] } / d:d o:o h:h i:i { [d, o, h, i] } / m:m i:i h:h o:o { [m, i, h, o] }- / m:m a:a h:h a:a { [m, a, h, a] }+ / m:m a:a h:h a':a { [m, a, h, a'] } / m:m i:i h:h a:a { [m, i, h, a] } / d:d o:o h:h o':o { [d, o, h, o'] } / k:k o:o h:h a:a { [k, o, h, a] }@@ -1361,7 +1364,7 @@ / v:v o:o h:h a:a { [v, o, h, a] } / v:v o:o h:h e:e { [v, o, h, e] } / v:v o:o h:h i:i { [v, o, h, i] }- / v:v o:o h:h o:o { [v, o, h, o] }+ / v:v o:o h:h o':o { [v, o, h, o'] } / v:v o:o h:h u:u { [v, o, h, u] } / r:r u:u { [r, u] } / r:r i:i { [r, i] }@@ -1420,7 +1423,7 @@ LIhU :: String = _:Y* &_:cmavo r:(l:l i:i h:h u:u { [l, i, h, u] }) &_:post_cmavo { r } -LOhO :: String = _:Y* &_:cmavo r:(l:l o:o h:h o:o { [l, o, h, o] }) &_:post_cmavo+LOhO :: String = _:Y* &_:cmavo r:(l:l o:o h:h o':o { [l, o, h, o'] }) &_:post_cmavo { r } LOhU :: String = _:Y* &_:cmavo r:(l:l o:o h:h u:u { [l, o, h, u] }) &_:post_cmavo@@ -1429,11 +1432,11 @@ LU :: String = _:Y* &_:cmavo r:(l:l u:u { [l, u] }) &_:post_cmavo { r } -LUhU :: String = _:Y* &_:cmavo r:(l:l u:u h:h u:u { [l, u, h, u] }) &_:post_cmavo+LUhU :: String = _:Y* &_:cmavo r:(l:l u:u h:h u':u { [l, u, h, u'] }) &_:post_cmavo { r } MAI :: String = _:Y* &_:cmavo r:- ( m:m o:o h:h o:o { [m, o, h, o] }+ ( m:m o:o h:h o':o { [m, o, h, o'] } / m:m a:a i:i { [m, a, i] } ) &_:post_cmavo { r } @@ -1455,12 +1458,12 @@ ) &_:post_cmavo { r } NA :: String = _:Y* &_:cmavo r:- ( j:j a:a h:h a:a { [j, a, h, a] }+ ( j:j a:a h:h a':a { [j, a, h, a'] } / n:n a:a { [n, a] } ) &_:post_cmavo { r } NAhE :: String = _:Y* &_:cmavo r:- ( f:f e:e h:h e:e { [f, e, h, e] }+ ( f:f e:e h:h e':e { [f, e, h, e'] } / m:m o:o h:h i:i { [m, o, h, i] } / t:t o:o h:h e:e { [t, o, h, e] } / j:j e:e h:h a:a { [j, e, h, a] }@@ -1484,16 +1487,16 @@ NU :: String = _:Y* &_:cmavo r: ( n:n i:i { [n, i] }- / d:d u:u h:h u:u { [d, u, h, u] }+ / d:d u:u h:h u':u { [d, u, h, u'] } / s:s i:i h:h o:o { [s, i, h, o] } / n:n u:u { [n, u] }- / l:l i:i h:h i:i { [l, i, h, i] }+ / l:l i:i h:h i':i { [l, i, h, i'] } / k:k a:a { [k, a] } / j:j e:e i:i { [j, e, i] }- / s:s u:u h:h u:u { [s, u, h, u] }+ / s:s u:u h:h u':u { [s, u, h, u'] } / z:z u:u h:h o:o { [z, u, h, o] } / m:m u:u h:h e:e { [m, u, h, e] }- / p:p u:u h:h u:u { [p, u, h, u] }+ / p:p u:u h:h u':u { [p, u, h, u'] } / z:z a:a h:h i:i { [z, a, h, i] } ) &_:post_cmavo { r } @@ -1514,7 +1517,7 @@ / c:c e:e h:h i:i { [c, e, h, i] } / m:m a:a h:h u:u { [m, a, h, u] } / r:r a:a h:h e:e { [r, a, h, e] }- / d:d a:a h:h a:a { [d, a, h, a] }+ / d:d a:a h:h a':a { [d, a, h, a'] } / s:s o:o h:h a:a { [s, o, h, a] } / j:j i:i h:h i':i { [j, i, h, i'] } / s:s u:u h:h o:o { [s, u, h, o] }@@ -1530,7 +1533,7 @@ / t:t e:e h:h o:o { [t, e, h, o] } / x:x o:o { [x, o] } / p:p a:a i:i { [p, a, i] }- / n:n o:o h:h o:o { [n, o, h, o] }+ / n:n o:o h:h o':o { [n, o, h, o'] } / n:n o:o { [n, o] } / p:p a:a { [p, a] } / r:r e:e { [r, e] }@@ -1634,14 +1637,14 @@ / u:u e:e { [u, e] } / i:i h:h i':i { [i, h, i'] } / u:u h:h e:e { [u, h, e] }- / b:b a:a h:h a:a { [b, a, h, a] }+ / b:b a:a h:h a':a { [b, a, h, a'] } / j:j a:a h:h o:o { [j, a, h, o] } / c:c a:a h:h e:e { [c, a, h, e] } / s:s u:u h:h a:a { [s, u, h, a] } / t:t i:i h:h e:e { [t, i, h, e] } / k:k a:a h:h u:u { [k, a, h, u] } / s:s e:e h:h o:o { [s, e, h, o] }- / z:z a:a h:h a:a { [z, a, h, a] }+ / z:z a:a h:h a':a { [z, a, h, a'] } / p:p e:e h:h i:i { [p, e, h, i] } / r:r u:u h:h a:a { [r, u, h, a] } / j:j u:u h:h a:a { [j, u, h, a] }@@ -1654,7 +1657,7 @@ / t:t o:o h:h u:u { [t, o, h, u] } / v:v a:a h:h i:i { [v, a, h, i] } / p:p a:a h:h e:e { [p, a, h, e] }- / z:z u:u h:h u:u { [z, u, h, u] }+ / z:z u:u h:h u':u { [z, u, h, u'] } / s:s a:a h:h e:e { [s, a, h, e] } / l:l a:a h:h a':a { [l, a, h, a'] } / k:k e:e h:h u:u { [k, e, h, u] }@@ -1680,13 +1683,13 @@ / r:r o:o h:h o':o { [r, o, h, o'] } / r:r o:o h:h u:u { [r, o, h, u] } / r:r o:o h:h a:a { [r, o, h, a] }- / r:r e:e h:h e:e { [r, e, h, e] }+ / r:r e:e h:h e':e { [r, e, h, e'] } / l:l e:e h:h o:o { [l, e, h, o] } / j:j u:u h:h o:o { [j, u, h, o] } / f:f u:u h:h i:i { [f, u, h, i] } / d:d a:a i:i { [d, a, i] } / g:g a:a h:h i:i { [g, a, h, i] }- / z:z o:o h:h o:o { [z, o, h, o] }+ / z:z o:o h:h o':o { [z, o, h, o'] } / b:b e:e h:h u:u { [b, e, h, u] } / r:r i:i h:h e:e { [r, i, h, e] } / s:s e:e h:h i:i { [s, e, h, i] }@@ -1751,7 +1754,7 @@ cmavo :: String = !_:cmevla !_:CVCy_lujvo c:C? i:I? n:nucleus- hns:(h:h n:nucleus { h : n })* &_:post_cmavo+ hns:(h:h n':nucleus { h : n' })* &_:post_cmavo { catMaybes [c, i] ++ n ++ concat hns }
zasni-gerna.cabal view
@@ -2,7 +2,7 @@ cabal-version: >= 1.8 name: zasni-gerna-version: 0.0.1+version: 0.0.2 stability: Experimental author: Yoshikuni Jujo <PAF01143@nifty.ne.jp> maintainer: Yoshikuni Jujo <PAF01143@nifty.ne.jp>@@ -23,7 +23,7 @@ source-repository this type: git location: git://github.com/YoshikuniJujo/zasni-gerna.git- tag: 0.0.1+ tag: 0.0.2 library hs-source-dirs: src