diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2006-06-06 21:30:14 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2006-06-06 21:30:14 +0000 |
| commit | f09e929dd1e46c066a566a5e0c6437ecaf3002a1 (patch) | |
| tree | e703f7835de306a59ca495526bfc78edc7372026 /src/GF/Parsing/FCFG/PInfo.hs | |
| parent | 283379b57fc650719f519368cb75cfdc3829598e (diff) | |
initial support for literal categories e.g. String,Int and Float
Diffstat (limited to 'src/GF/Parsing/FCFG/PInfo.hs')
| -rw-r--r-- | src/GF/Parsing/FCFG/PInfo.hs | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/GF/Parsing/FCFG/PInfo.hs b/src/GF/Parsing/FCFG/PInfo.hs index e1126301a..43e729e31 100644 --- a/src/GF/Parsing/FCFG/PInfo.hs +++ b/src/GF/Parsing/FCFG/PInfo.hs @@ -29,14 +29,7 @@ import Data.Maybe type FCFParser c n t = FCFPInfo c n t -> [c] -> Input t - -> FCFChart c n - -type FCFChart c n = [Abstract (c, RangeRec) n] - -makeFinalEdge :: c -> Int -> Int -> (c, RangeRec) -makeFinalEdge cat 0 0 = (cat, [EmptyRange]) -makeFinalEdge cat i j = (cat, [makeRange i j]) - + -> [SyntaxForest n] ------------------------------------------------------------ -- parser information @@ -54,6 +47,8 @@ data FCFPInfo c n t , leftcornerTokens :: Assoc t (SList RuleId) -- ^ used in 'GF.Parsing.MCFG.Active' (Kilbury): , grammarCats :: SList c + , grammarToks :: SList t + , grammarLexer :: t -> (c,SyntaxTree RuleId) } @@ -73,8 +68,8 @@ getLeftCornerCat lins where syms = lins ! 0 -buildFCFPInfo :: (Ord c, Ord n, Ord t) => FCFGrammar c n t -> FCFPInfo c n t -buildFCFPInfo grammar = +buildFCFPInfo :: (Ord c, Ord n, Ord t) => (t -> (c,SyntaxTree RuleId)) -> FCFGrammar c n t -> FCFPInfo c n t +buildFCFPInfo lexer grammar = traceCalcFirst grammar $ tracePrt "MCFG.PInfo - parser info" (prt) $ FCFPInfo { allRules = allrules @@ -84,6 +79,8 @@ buildFCFPInfo grammar = , leftcornerCats = leftcorncats , leftcornerTokens = leftcorntoks , grammarCats = grammarcats + , grammarToks = grammartoks + , grammarLexer = lexer } where allrules = listArray (0,length grammar-1) grammar @@ -98,6 +95,7 @@ buildFCFPInfo grammar = [ (fromJust (getLeftCornerTok lins), ruleid) | (ruleid, FRule _ lins) <- assocs allrules, isJust (getLeftCornerTok lins) ] grammarcats = aElems topdownrules + grammartoks = nubsort [t | (FRule _ lins) <- grammar, lin <- elems lins, FSymTok t <- elems lin] ---------------------------------------------------------------------- -- pretty-printing of statistics |
