From 624c3db6f493edfb458ee262c4dd691915c46567 Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Thu, 25 May 2017 17:38:35 +0200 Subject: Add string mode --- README.md | 1 + rip.hs | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/README.md b/README.md index bb466e0..6d95c58 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ All stack items are signed bigints. - `$`: outputs a stackdump - whitespace: nop - `'c`: pushes the ascii value of c +- `"abcde"`: `'a'b'c'd'e` - `#`: literally includes contents of 'file.rip' in-place diff --git a/rip.hs b/rip.hs index 0ad0ed0..34d6647 100644 --- a/rip.hs +++ b/rip.hs @@ -331,6 +331,13 @@ rip' code@(x:xs) fns conns st = do '\'' -> rip' (tail xs) fns conns $ ordI (head xs) : st + '"' -> + let str = takeWhile (/='"') xs + rest = drop (length str + 1) xs + in if length str == length xs + then riperror "No closing quote in \"string\"" + else rip' rest fns conns $ reverse (map (fromIntegral . fromEnum) str) ++ st + '$' -> do putStrLn $ '[' : ((intercalate " " . map show . reverse) st) ++ "]" rip' xs fns conns st -- cgit v1.2.3