summaryrefslogtreecommitdiff
path: root/src/GF/Canon/GetGFC.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/GF/Canon/GetGFC.hs')
-rw-r--r--src/GF/Canon/GetGFC.hs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/GF/Canon/GetGFC.hs b/src/GF/Canon/GetGFC.hs
new file mode 100644
index 000000000..225b0712a
--- /dev/null
+++ b/src/GF/Canon/GetGFC.hs
@@ -0,0 +1,22 @@
+module GetGFC where
+
+import Operations
+import ParGFC
+import GFC
+import MkGFC
+import Modules
+import GetGrammar (err2err) ---
+import UseIO
+
+getCanonModule :: FilePath -> IOE CanonModule
+getCanonModule file = do
+ gr <- getCanonGrammar file
+ case modules gr of
+ [m] -> return m
+ _ -> ioeErr $ Bad "expected exactly one module in a file"
+
+getCanonGrammar :: FilePath -> IOE CanonGrammar
+getCanonGrammar file = do
+ s <- ioeIO $ readFileIf file
+ c <- ioeErr $ err2err $ pCanon $ myLexer s
+ return $ canon2grammar c