cakyrespa 0.0.3 → 0.0.4
raw patch · 3 files changed
+32/−4 lines, 3 files
Files
- cakyrespa.cabal +2/−1
- src/Language/Lojban/Read.hs +13/−1
- src/cakyrespa.hs +17/−2
cakyrespa.cabal view
@@ -2,13 +2,14 @@ cabal-version: >= 1.6 name: cakyrespa-version: 0.0.3+version: 0.0.4 stability: Alpha license: BSD3 license-file: LICENSE author: iocikun juj <PAF01143@nifty.ne.jp> maintainer: iocikun juj <PAF01143@nifty.ne.jp>+homepage: http://homepage3.nifty.com/salamander/myblog/cakyrespa.html category: Teaching synopsis: run turtle like LOGO with lojban
src/Language/Lojban/Read.hs view
@@ -10,13 +10,14 @@ import Language.Lojban.Parser hiding ( Tag, Sumti, Selbri, KOhA, FA, Brivla, BAI, Number, LI, RelativeClause,- Time, KU, Linkargs, FIhO)+ Time, KU, Linkargs, FIhO, NU) import qualified Language.Lojban.Parser as P import Data.Maybe import Data.Char data Lojban = Bridi Selbri [(Tag, Sumti)]+ | TenseGI String Lojban Lojban | Vocative String | Free [Free] | ParseError String@@ -26,6 +27,7 @@ data Selbri = Brivla String | Linkargs Selbri Sumti+ | NU Lojban | NotImplementedSelbri String deriving (Show, Eq) @@ -72,6 +74,15 @@ Bridi (readSelbri selbri) $ processTagSumti ss ts process (TermsBridiTail ss _ _ (P.Selbri selbri)) = Bridi (readSelbri selbri) $ processTagSumti ss []+process (TermsBridiTail ss _ _+ (GekSentence+ (STagGik+ (P.Time _ [((_, tense, _), _, _)] _ _)+ ((_, "gi", _), _, _))+ t ((_, "gi", _), _, _) u _ _ _)) =+ TenseGI tense+ (process $ TermsBridiTail ss undefined undefined t)+ (process $ TermsBridiTail ss undefined undefined u) process (P.Selbri selbri) = Bridi (readSelbri selbri) [] process t = NotImplemented $ "process: " ++ show t @@ -178,6 +189,7 @@ readSelbri (P.Brivla (_, b, _) _) = Brivla $ map toLower b readSelbri (P.Linkargs selbri (BE (_, "be", _) _ sumti _ _ _)) = Linkargs (readSelbri selbri) (readSumti sumti)+readSelbri (P.NU (_, "nu", _) _ _ _ bridi _ _) = NU $ process bridi readSelbri s = NotImplementedSelbri $ "readSelbri: " ++ show s next :: Int -> [Int] -> Int
src/cakyrespa.hs view
@@ -1,6 +1,6 @@ module Main where -import Graphics.UI.GLUT hiding (R)+import Graphics.UI.GLUT hiding (R, Repeat) import Graphics.UI.GLUT.Turtle import Language.Lojban.Read@@ -23,8 +23,12 @@ mainLoop cmd :: String -> Command-cmd str = case readLojban str of+cmd = pcmd . readLojban++pcmd p = case p of (Vocative "co'o") -> COhO+ (TenseGI "ba" b c) -> Commands (pcmd b) (pcmd c)+ b@(Bridi (Brivla "rapli") s) -> fromMaybe (Unknown b) $ readRapli s b@(Bridi (Brivla "carna") s) -> fromMaybe (Unknown b) $ readCarna s b@(Bridi (Brivla "crakla") s) -> fromMaybe (Unknown b) $ readCrakla s b@(Bridi (Brivla "rixykla") s) -> fromMaybe (Unknown b) $ readRixykla s@@ -32,6 +36,12 @@ b@(Bridi (Brivla "clugau") s) -> fromMaybe (Unknown b) $ readClugau s r -> Unknown r +readRapli :: [(Tag, Sumti)] -> Maybe Command+readRapli s = do+ LO (NU p) _ <- lookup (FA 1) s+ LI (Number n) <- lookup (FA 2) s+ return $ Repeat (round n) (pcmd p)+ readClugau :: [(Tag, Sumti)] -> Maybe Command readClugau s = do KOhA "ko" <- lookup (FA 1) s@@ -128,6 +138,8 @@ | BURSKA Int Int Int | COhACLUGAU | COhUCLUGAU+ | Commands Command Command+ | Repeat Int Command | COhO | Unknown Lojban | ParseErrorC | UnknownSelpli Sumti deriving Show@@ -145,6 +157,9 @@ processInput _ t COhACLUGAU = beginfill t >> return True processInput _ t COhUCLUGAU = endfill t >> return True processInput _ _ COhO = return False+processInput f t (Commands c d) = processInput f t c >> processInput f t d+processInput f t (Repeat n c) = sequence_ (replicate n (processInput f t c)) >>+ return True processInput f _ u@(Unknown _) = do outputString f ".i mi na jimpe" print u