Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions samples/「」示例.入
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
引「./libru/列.入」

以串为“你好,入语言!”
则串之「串印」
7 changes: 5 additions & 2 deletions src/Interp.hs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ data InterpError
deriving (Show)

removeHeadTail :: String -> String
removeHeadTail str = Prelude.filter (/='】') (Prelude.filter (/='【') str)
removeHeadTail = Prelude.filter (/='】') .
Prelude.filter (/='」') .
Prelude.filter (/='【') .
Prelude.filter (/='「')

interp :: InterpEnv -> Expr -> ExceptT InterpError IO Atom
interp env (ExprValue val) =
Expand Down Expand Up @@ -71,4 +74,4 @@ interp env (ExprInclude var expr) = do
Right exp -> interp env $ injectHostFunctions hostFuncs exp

runInterp :: Expr -> IO (Either InterpError Atom)
runInterp expr = runExceptT $ interp M.empty expr
runInterp expr = runExceptT $ interp M.empty expr
6 changes: 4 additions & 2 deletions src/MonadicParse.hs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import Text.Parsec.Language (haskellDef)
import Text.Parsec.String (parseFromFile)

ruChar :: Parsec String st Char
ruChar = noneOf "令时入之取者也以为并否则即元引【】"
ruChar = noneOf "令时入之取者也以为并否则即元引【】「」"

ruWhiteSpace :: Parsec String st Char
ruWhiteSpace = oneOf " \t\n、,:!?得。"
Expand All @@ -23,7 +23,9 @@ concatParser [s] = s
concatParser (s:xs) = fmap (++) s <*> concatParser xs

variable :: Parsec String st AST.Variable
variable = try ( concatParser [ruString "【", many (noneOf "】"), ruString "】"] )
variable = try ( concatParser [(try (ruString "「") >> pure "【") <|> try (ruString "【"),
many (noneOf "】」"),
(try (ruString "」") >> pure "】") <|> try (ruString "】")] )
<|> count 1 (ruChar)

lexer = P.makeTokenParser haskellDef
Expand Down