summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2007-09-24 08:56:37 +0000
committerkr.angelov <kr.angelov@gmail.com>2007-09-24 08:56:37 +0000
commitb10916944148f409a68f6eac13d9b4db49d6382f (patch)
tree8adbc8a081dca5c21f68faa17d2a4a75f773d6e8
parent36e091d0a1339ab363be2ad9d27608020636e569 (diff)
move the FCFG lexer to FCFG.Active where it should have been. It was a hack anyway
-rw-r--r--src/GF/Parsing/FCFG/Active.hs10
-rw-r--r--src/GF/Parsing/FCFG/PInfo.hs6
-rw-r--r--src/GF/Parsing/GFC.hs10
3 files changed, 12 insertions, 14 deletions
diff --git a/src/GF/Parsing/FCFG/Active.hs b/src/GF/Parsing/FCFG/Active.hs
index fbbf3736d..a7a2e7263 100644
--- a/src/GF/Parsing/FCFG/Active.hs
+++ b/src/GF/Parsing/FCFG/Active.hs
@@ -148,7 +148,15 @@ xchart2syntaxchart (XChart actives finals) pinfo =
literals :: FCFPInfo -> Input FToken -> [(FCat,Item)]
literals pinfo toks =
- [let (c,node) = grammarLexer pinfo t in (c,Final [makeRange i j] node) | Edge i j t <- inputEdges toks, not (t `elem` grammarToks pinfo)]
+ [let (c,node) = lexer t in (c,Final [makeRange i j] node) | Edge i j t <- inputEdges toks, not (t `elem` grammarToks pinfo)]
+ where
+ lexer t =
+ case reads t of
+ [(n,"")] -> (fcatInt, SInt (n::Integer))
+ _ -> case reads t of
+ [(f,"")] -> (fcatFloat, SFloat (f::Double))
+ _ -> (fcatString,SString t)
+
----------------------------------------------------------------------
-- Earley --
diff --git a/src/GF/Parsing/FCFG/PInfo.hs b/src/GF/Parsing/FCFG/PInfo.hs
index 8a45b651a..9c201c225 100644
--- a/src/GF/Parsing/FCFG/PInfo.hs
+++ b/src/GF/Parsing/FCFG/PInfo.hs
@@ -48,7 +48,6 @@ data FCFPInfo
-- ^ used in 'GF.Parsing.MCFG.Active' (Kilbury):
, grammarCats :: SList FCat
, grammarToks :: SList FToken
- , grammarLexer :: FToken -> (FCat,SyntaxNode RuleId RangeRec)
}
@@ -68,8 +67,8 @@ getLeftCornerCat lins
where
syms = lins ! 0
-buildFCFPInfo :: (FToken -> (FCat,SyntaxNode RuleId RangeRec)) -> FGrammar -> FCFPInfo
-buildFCFPInfo lexer grammar =
+buildFCFPInfo :: FGrammar -> FCFPInfo
+buildFCFPInfo grammar =
FCFPInfo { allRules = allrules
, topdownRules = topdownrules
-- , emptyRules = emptyrules
@@ -78,7 +77,6 @@ buildFCFPInfo lexer grammar =
, leftcornerTokens = leftcorntoks
, grammarCats = grammarcats
, grammarToks = grammartoks
- , grammarLexer = lexer
}
where allrules = listArray (0,length grammar-1) grammar
diff --git a/src/GF/Parsing/GFC.hs b/src/GF/Parsing/GFC.hs
index 90ba718c7..948d3577b 100644
--- a/src/GF/Parsing/GFC.hs
+++ b/src/GF/Parsing/GFC.hs
@@ -55,17 +55,9 @@ type CFPInfo = PC.CFPInfo CCat Name Token
buildPInfo :: MGrammar -> FGrammar -> CGrammar -> PInfo
buildPInfo mcfg fcfg cfg = PInfo { mcfPInfo = PM.buildMCFPInfo mcfg
- , fcfPInfo = PF.buildFCFPInfo grammarLexer fcfg
+ , fcfPInfo = PF.buildFCFPInfo fcfg
, cfPInfo = PC.buildCFPInfo cfg
}
- where
- grammarLexer s =
- case reads s of
- [(n,"")] -> (fcatInt, SInt (n::Integer))
- _ -> case reads s of
- [(f,"")] -> (fcatFloat, SFloat (f::Double))
- _ -> (fcatString,SString s)
-
instance Print PInfo where
prt (PInfo m f c) = prt m ++ "\n" ++ prt c