summaryrefslogtreecommitdiff
path: root/src/GF/Infra/Comments.hs
diff options
context:
space:
mode:
authoraarne <unknown>2004-03-31 12:30:34 +0000
committeraarne <unknown>2004-03-31 12:30:34 +0000
commit3f9b4e7855cf4594708a9fbad194c89540d2cf1e (patch)
tree33dcbbd6d2e6e5f6290a25f65b4b9f90253fd34b /src/GF/Infra/Comments.hs
parent6719aedde34c3a4f0ccb78931968c6fe490b3282 (diff)
Added support for cf and ebnf formats
Diffstat (limited to 'src/GF/Infra/Comments.hs')
-rw-r--r--src/GF/Infra/Comments.hs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/GF/Infra/Comments.hs b/src/GF/Infra/Comments.hs
new file mode 100644
index 000000000..442728b80
--- /dev/null
+++ b/src/GF/Infra/Comments.hs
@@ -0,0 +1,29 @@
+module Comments where
+
+-- comment removal : line tails prefixed by -- as well as chunks in {- ... -}
+
+remComments :: String -> String
+remComments s =
+ case s of
+ '"':s2 -> '"':pass remComments s2 -- comment marks in quotes not removed!
+ '{':'-':cs -> readNested cs
+ '-':'-':cs -> readTail cs
+ c:cs -> c : remComments cs
+ [] -> []
+ where
+ readNested t =
+ case t of
+ '"':s2 -> '"':pass readNested s2
+ '-':'}':cs -> remComments cs
+ _:cs -> readNested cs
+ [] -> []
+ readTail t =
+ case t of
+ '\n':cs -> '\n':remComments cs
+ _:cs -> readTail cs
+ [] -> []
+ pass f t =
+ case t of
+ '"':s2 -> '"': f s2
+ c:s2 -> c:pass f s2
+ _ -> t