packages feed

cakyrespa 0.0.1 → 0.0.3

raw patch · 3 files changed

+52/−27 lines, 3 filesdep ~gluturtledep ~lojbanParser

Dependency ranges changed: gluturtle, lojbanParser

Files

cakyrespa.cabal view
@@ -2,11 +2,14 @@ cabal-version:	>= 1.6  name:		cakyrespa-version:	0.0.1+version:	0.0.3 stability:	Alpha license:	BSD3 license-file:	LICENSE +author:		iocikun juj <PAF01143@nifty.ne.jp>+maintainer:	iocikun juj <PAF01143@nifty.ne.jp>+ category:	Teaching synopsis:	run turtle like LOGO with lojban description:	run turtle like LOGO with lojban@@ -17,6 +20,6 @@     hs-source-dirs:	src     main-is:		cakyrespa.hs     other-modules:	Language.Lojban.Read-    build-depends:	base >3 && <5, lojbanParser >= 0.1.4,-        gluturtle >= 0.0.7, GLUT+    build-depends:	base >3 && <5, lojbanParser >= 0.1.5,+        gluturtle >= 0.0.8, GLUT     ghc-options:	-Wall
src/Language/Lojban/Read.hs view
@@ -13,21 +13,20 @@ 	Time, KU, Linkargs, FIhO) import qualified Language.Lojban.Parser as P import Data.Maybe--main = do-	let	ret = readLojban ".i ko carna fi lo zunle la'u li panono"-	print ret+import Data.Char  data Lojban 	= Bridi Selbri [(Tag, Sumti)] 	| Vocative String 	| Free [Free] 	| ParseError String+	| NotImplemented String 	deriving (Show, Eq)  data Selbri 	= Brivla String 	| Linkargs Selbri Sumti+	| NotImplementedSelbri String 	deriving (Show, Eq)  data Sumti@@ -38,15 +37,18 @@ 	| LI Mex 	| KU 	| SFIhO Selbri Sumti+	| NotImplementedSumti String 	deriving (Show, Eq)  data RelativeClause 	= POI Lojban 	| Debug String+	| NotImplementedRelativeClause String 	deriving (Show, Eq)  data Mex 	= Number Double+	| NotImplementedMex String 	deriving (Show, Eq)  data Tag@@ -54,6 +56,7 @@ 	| FIhO Selbri 	| BAI String 	| Time [String]+	| NotImplementedTag String 	deriving (Show, Eq)  readLojban :: String -> Lojban@@ -70,7 +73,7 @@ process (TermsBridiTail ss _ _ (P.Selbri selbri)) = 	Bridi (readSelbri selbri) $ processTagSumti ss [] process (P.Selbri selbri) = Bridi (readSelbri selbri) []-process t = error $ "process: " ++ show t+process t = NotImplemented $ "process: " ++ show t  processTagSumti :: [P.Sumti] -> [P.Sumti] -> [(Tag, Sumti)] processTagSumti s t = let@@ -92,10 +95,11 @@ readTag (P.FA (_, f, _) _) = let n = fromJust $ lookup f faList in (Just n, FA n) readTag (P.BAI _ _ (_, b, _) _ _) = (Nothing, BAI b) readTag (P.Time _ _ _ ts) = (Nothing, Time $ map readTime ts)-readTag t = error $ "readTag: " ++ show t+readTag t = (Nothing, NotImplementedTag $ "readTag: " ++ show t)  readTime ::  IntervalProperty -> String readTime (ZAhO (_, z, _) _) = z+readTime ip = "readTime: " ++ show ip  faList :: [(String, Int)] faList = [@@ -114,31 +118,48 @@ readSumti (P.KU _ _) = KU readSumti (TagSumti (P.FIhO (_, "fi'o", _) _ selbri _ _) sumti) = 	SFIhO (readSelbri selbri) (readSumti sumti)-readSumti s = error $ "readSumti: " ++ show s+readSumti s = NotImplementedSumti $ "readSumti: " ++ show s  readMex :: Operand -> Mex readMex (P.Number n _ _) = readNumber n+readMex o = NotImplementedMex $ "readMex: " ++ show o --- readNumber :: P.Number -> Mex+readNumber :: [Clause] -> Mex readNumber = Number . paToInt . map (\(_, p, _) -> p) +processKIhO :: [String] -> [String]+processKIhO = reverse . pk 3 . reverse+	where+	pk _ [] = []+	pk n ("ki'o" : rest) = replicate n "no" ++ pk 3 rest+	pk n (pa : rest)+		| n > 0 = pa : pk (n - 1) rest+		| otherwise = pa : pk 2 rest+ paToInt :: [String] -> Double-paToInt = pti . reverse+paToInt = pti . reverse . processKIhO 	where 	pti [] = 0-	pti (p : rest) = fromJust (lookup p paList) + 10 * pti rest+	pti (p : rest) = fromJust (lookup' p paList) + 10 * pti rest +lookup' :: Eq a => a -> [([a], b)] -> Maybe b+lookup' _ [] = Nothing+lookup' x ((xs, y) : ys)+	| x `elem` xs = Just y+	| otherwise = lookup' x ys++paList :: [([String], Double)] paList = [-	("no", 0),-	("pa", 1),-	("re", 2),-	("ci", 3),-	("vo", 4),-	("mu", 5),-	("xa", 6),-	("ze", 7),-	("bi", 8),-	("so", 9)+	(["no", "0"], 0),+	(["pa", "1"], 1),+	(["re", "2"], 2),+	(["ci", "3"], 3),+	(["vo", "4"], 4),+	(["mu", "5"], 5),+	(["xa", "6"], 6),+	(["ze", "7"], 7),+	(["bi", "8"], 8),+	(["so", "9"], 9)  ]  readSumtiTail :: SumtiTail -> (Selbri, Maybe RelativeClause)@@ -146,6 +167,7 @@ 	(readSelbri s, Nothing) readSumtiTail (SelbriRelativeClauses s (Just r)) = 	(readSelbri s, Just $ readRelativeClauses r)+readSumtiTail st = (NotImplementedSelbri $ "readSumtiTail: " ++ show st, Nothing)  readRelativeClauses :: P.RelativeClause -> RelativeClause readRelativeClauses (NOI (_, "poi", _) _ bridi _ _) =@@ -153,10 +175,10 @@ readRelativeClauses r = Debug $  show r  readSelbri :: P.Selbri -> Selbri-readSelbri (P.Brivla (_, b, _) _) = Brivla b+readSelbri (P.Brivla (_, b, _) _) = Brivla $ map toLower b readSelbri (P.Linkargs selbri (BE (_, "be", _) _ sumti _ _ _)) = 	Linkargs (readSelbri selbri) (readSumti sumti)-readSelbri s = error $ "readSelbri: " ++ show s+readSelbri s = NotImplementedSelbri $ "readSelbri: " ++ show s 	 next :: Int -> [Int] -> Int next n e
src/cakyrespa.hs view
@@ -147,11 +147,11 @@ processInput _ _ COhO = return False processInput f _ u@(Unknown _) = do 	outputString f ".i mi na jimpe"-	putStrLn $ show u+	print u 	return True processInput f _ u@(UnknownSelpli _) = do 	outputString f ".i mi na djuno lo bi'unai selpli"-	putStrLn $ show u+	print u 	return True processInput f _ ParseErrorC = do 	outputString f ".i di'u na drani fo lo gerna"