From 26b1efe8b7f470e3a99767f7b698be81c8fc405c Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Mon, 24 Sep 2007 08:56:37 +0000 Subject: [PATCH] move the FCFG lexer to FCFG.Active where it should have been. It was a hack anyway --- src/GF/Parsing/FCFG/Active.hs | 10 +++++++++- src/GF/Parsing/FCFG/PInfo.hs | 6 ++---- src/GF/Parsing/GFC.hs | 10 +--------- 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