forked from GitHub/gf-core
move the FCFG lexer to FCFG.Active where it should have been. It was a hack anyway
This commit is contained in:
@@ -148,7 +148,15 @@ xchart2syntaxchart (XChart actives finals) pinfo =
|
|||||||
|
|
||||||
literals :: FCFPInfo -> Input FToken -> [(FCat,Item)]
|
literals :: FCFPInfo -> Input FToken -> [(FCat,Item)]
|
||||||
literals pinfo toks =
|
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 --
|
-- Earley --
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ data FCFPInfo
|
|||||||
-- ^ used in 'GF.Parsing.MCFG.Active' (Kilbury):
|
-- ^ used in 'GF.Parsing.MCFG.Active' (Kilbury):
|
||||||
, grammarCats :: SList FCat
|
, grammarCats :: SList FCat
|
||||||
, grammarToks :: SList FToken
|
, grammarToks :: SList FToken
|
||||||
, grammarLexer :: FToken -> (FCat,SyntaxNode RuleId RangeRec)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -68,8 +67,8 @@ getLeftCornerCat lins
|
|||||||
where
|
where
|
||||||
syms = lins ! 0
|
syms = lins ! 0
|
||||||
|
|
||||||
buildFCFPInfo :: (FToken -> (FCat,SyntaxNode RuleId RangeRec)) -> FGrammar -> FCFPInfo
|
buildFCFPInfo :: FGrammar -> FCFPInfo
|
||||||
buildFCFPInfo lexer grammar =
|
buildFCFPInfo grammar =
|
||||||
FCFPInfo { allRules = allrules
|
FCFPInfo { allRules = allrules
|
||||||
, topdownRules = topdownrules
|
, topdownRules = topdownrules
|
||||||
-- , emptyRules = emptyrules
|
-- , emptyRules = emptyrules
|
||||||
@@ -78,7 +77,6 @@ buildFCFPInfo lexer grammar =
|
|||||||
, leftcornerTokens = leftcorntoks
|
, leftcornerTokens = leftcorntoks
|
||||||
, grammarCats = grammarcats
|
, grammarCats = grammarcats
|
||||||
, grammarToks = grammartoks
|
, grammarToks = grammartoks
|
||||||
, grammarLexer = lexer
|
|
||||||
}
|
}
|
||||||
|
|
||||||
where allrules = listArray (0,length grammar-1) grammar
|
where allrules = listArray (0,length grammar-1) grammar
|
||||||
|
|||||||
@@ -55,17 +55,9 @@ type CFPInfo = PC.CFPInfo CCat Name Token
|
|||||||
|
|
||||||
buildPInfo :: MGrammar -> FGrammar -> CGrammar -> PInfo
|
buildPInfo :: MGrammar -> FGrammar -> CGrammar -> PInfo
|
||||||
buildPInfo mcfg fcfg cfg = PInfo { mcfPInfo = PM.buildMCFPInfo mcfg
|
buildPInfo mcfg fcfg cfg = PInfo { mcfPInfo = PM.buildMCFPInfo mcfg
|
||||||
, fcfPInfo = PF.buildFCFPInfo grammarLexer fcfg
|
, fcfPInfo = PF.buildFCFPInfo fcfg
|
||||||
, cfPInfo = PC.buildCFPInfo cfg
|
, 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
|
instance Print PInfo where
|
||||||
prt (PInfo m f c) = prt m ++ "\n" ++ prt c
|
prt (PInfo m f c) = prt m ++ "\n" ++ prt c
|
||||||
|
|||||||
Reference in New Issue
Block a user