diff options
| author | aarne <unknown> | 2003-11-07 14:54:44 +0000 |
|---|---|---|
| committer | aarne <unknown> | 2003-11-07 14:54:44 +0000 |
| commit | 4c99687f217ce258f821d55e68f5403233f6dea7 (patch) | |
| tree | 04e2d94654dd4ceb4c5e988f18f979594876c730 /src/GF/Compile | |
| parent | 6ae3322b373c52e59fb34360345d1c1e35049c5f (diff) | |
Fixed treatment of predefined types (Int, String).
Fixed treatment of predefined types (Int, String).
Added treatment of new reserved words to reading old grammars.
Diffstat (limited to 'src/GF/Compile')
| -rw-r--r-- | src/GF/Compile/GetGrammar.hs | 13 | ||||
| -rw-r--r-- | src/GF/Compile/Rename.hs | 3 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/GF/Compile/GetGrammar.hs b/src/GF/Compile/GetGrammar.hs index fb3fbf5ad..a9a40ee06 100644 --- a/src/GF/Compile/GetGrammar.hs +++ b/src/GF/Compile/GetGrammar.hs @@ -14,6 +14,7 @@ import SourceToGrammar import Option --- import Custom import ParGF +import qualified LexGF as L import ReadFiles ---- @@ -57,7 +58,7 @@ parseOldGrammar :: FilePath -> IOE ([FilePath],[A.TopDef]) parseOldGrammar file = do putStrE $ "reading old file" +++ file s <- ioeIO $ readFileIf file - A.OldGr incl topdefs <- ioeErr $ err2err $ pOldGrammar $ myLexer $ fixNewlines s + A.OldGr incl topdefs <- ioeErr $ err2err $ pOldGrammar $ oldLexer $ fixNewlines s includes <- ioeErr $ transInclude incl return (includes, topdefs) @@ -69,3 +70,13 @@ err2err (E.Bad s) = Bad s ioeEErr = ioeErr . err2err +-- To resolve the new reserved words: change them by turning the final letter to Z. +--- There is a risk of clash. + +oldLexer :: String -> [L.Token] +oldLexer = map change . L.tokens where + change t = case t of + (L.PT p (L.TS s)) | elem s new -> (L.PT p (L.TV (init s ++ "Z"))) + _ -> t + new = words $ "abstract concrete interface incomplete " ++ + "instance out open resource reuse transfer with" diff --git a/src/GF/Compile/Rename.hs b/src/GF/Compile/Rename.hs index 120286d4d..49e08ab6e 100644 --- a/src/GF/Compile/Rename.hs +++ b/src/GF/Compile/Rename.hs @@ -1,6 +1,7 @@ module Rename where import Grammar +import Values import Modules import Ident import Macros @@ -78,6 +79,8 @@ renameIdentTerm env@(act,imps) t = Vr c -> do f <- lookupTreeMany prt opens c return $ f c + Vr (IC "Int") -> return $ Q cPredefAbs cInt -- Int and String are predefined cats + Vr (IC "String") -> return $ Q cPredefAbs cString Cn c -> do f <- lookupTreeMany prt opens c return $ f c |
