XSaiga-1.1.0.0: An implementation of a polynomial-time top-down parser suitable for NLP

Safe HaskellNone
LanguageHaskell98

AGParser2

Contents

Synopsis

Documentation

data SorI Source

Constructors

S 
I 
NILL 

Instances

type IRec = (SorI, Id) Source

data Useless Source

Constructors

OF 
ISEQUALTO 

Instances

data SRule_ Source

Constructors

NT 

Fields

iden :: Id
 
par :: NTType
 
Rule 

Fields

par' :: SeqType
 
DRule 

Fields

par'' :: SRule_
 

type SeqType = Id -> InsAttVals -> [SemRule] -> Result -> M Foo Source

data Tree a Source

Constructors

Leaf (a, Instance) 
Branch [Tree a] 
SubNode ((NodeName, Instance), (Start1, End)) 

Instances

Eq a => Eq (Tree a) 
Show t => PP' (Tree t) 

type Mtable = [(MemoL, [(Start1, (Context, Result))])] Source

type Result = [((Start1, End), [Tree MemoL])] Source

type Context = ([MemoL], [(Int, [(MemoL, Int)])]) Source

type M a = Start -> Context -> StateM a Source

type Seq a = Id -> InsAttVals -> [SemRule] -> Result -> Start -> Context -> StateM a Source

newtype StateM t Source

Constructors

State 

Fields

unState :: State -> (t, State)
 

pickEnd :: (((t1, t2), (t4, t3)), t) -> (t4, [t5]) Source

addP :: [(((Int, InsAttVals), (Int, InsAttVals)), [Tree NodeName])] -> (((Int, InsAttVals), (Int, InsAttVals)), [Tree NodeName]) -> [(((Int, [t]), (Int, [t1])), [Tree NodeName])] Source

empty_cuts :: ([t], [t1]) Source

memoize :: MemoL -> (Id -> [(Instance, Atts)] -> ((Int, t), [a1]) -> ([t1], [(Int, [(MemoL, Int)])]) -> StateM (([MemoL], b), Result)) -> Id -> [(Instance, Atts)] -> ((Int, t), [a1]) -> (a2, [(Int, [(MemoL, Int)])]) -> StateM (([MemoL], [(Int, [(MemoL, Int)])]), [(((Int, InsAttVals), (Int, [((SorI, Id), [AttValue])])), [Tree a])]) Source

findContext :: Eq t => [(t, t1)] -> t -> [(t, t1)] Source

funccount :: (Num a, Eq a2, Eq a1) => [(a2, [(a1, a)])] -> a2 -> a1 -> a Source

fst1 :: [(t, t1)] -> t Source

snd1 :: [(t, t1)] -> t1 Source

makeContext :: Eq t1 => [t1] -> [(t, [(t1, t2)])] -> ([t1], [(t, [(t1, t2)])]) Source

makeContext_ :: Eq t => [t] -> [(t, t1)] -> [(t, t1)] Source

makeContext__ :: Eq t => t -> [(t, t1)] -> [(t, t1)] Source

incContext :: (Num t1, Eq t2, Eq t) => [(t2, [(t, t1)])] -> t -> t2 -> [(t2, [(t, t1)])] Source

addNT :: (Num t1, Eq a) => [(a, t1)] -> a -> t -> [(a, t1)] Source

addNode :: NodeName -> (SorI, Id) -> (t, [(Instance, Atts)]) -> [(((Int, t1), (Int, [((SorI, t2), [AttValue])])), [a])] -> [(((Int, t1), (Int, [((SorI, Id), [AttValue])])), [Tree a1])] Source

mapName :: t1 -> [(t, t2)] -> [(t1, t2)] Source

packAmb :: (Eq a3, Eq a2) => [(((a2, t1), (a3, [(t, [a])])), [a1])] -> [(((a2, t1), (a3, [(t, [a])])), [a1])] Source

isEq :: (Eq a1, Eq a) => ((a, t), (a1, t1)) -> ((a, t2), (a1, t3)) -> Bool Source

lookupT :: (Ord a2, Eq a3, Eq t2, Eq a1, Eq t1, Eq t, Eq a) => a -> a3 -> [(a3, [(a1, a2)])] -> [(a, [((a3, t2), (([t], [(a3, [(a1, a2)])]), t1))])] -> Maybe [(([t], [(a3, [(a1, a2)])]), t1)] Source

lookupT1 :: (Ord a2, Eq a3, Eq t2, Eq a1, Eq t1, Eq t, Eq a) => a -> a3 -> [(a3, [(a1, a2)])] -> [(a, [((a3, t2), (([t], [(a3, [(a1, a2)])]), t1))])] -> [(([t], [(a3, [(a1, a2)])]), t1)] Source

lookupRes :: Eq a => [((a, t1), t)] -> a -> [t] Source

checkUsability :: (Ord a1, Eq a2, Eq a, Eq t) => a2 -> [(a2, [(a, a1)])] -> [(([t], [(a2, [(a, a1)])]), t1)] -> [(([t], [(a2, [(a, a1)])]), t1)] Source

findInp :: Eq a => a -> [(a, [t])] -> [t] Source

checkUsability_ :: (Ord a1, Eq a) => [(a, a1)] -> [(a, a1)] -> [(t, t1)] -> [(t, t1)] Source

condCheck :: (Ord a1, Eq a) => [(a, a1)] -> [(a, a1)] -> [Bool] Source

condCheck_ :: (Ord a1, Eq a) => [(a, a1)] -> (a, a1) -> Bool Source

update :: (Eq a1, Eq a, Eq t1) => [(a, [((t1, [a1]), t)])] -> a -> (t1, [a1]) -> t -> [(a, [((t1, [a1]), t)])] Source

my_merge :: (Eq a1, Eq a) => (a1, [a]) -> t -> [((a1, [a]), t)] -> [((a1, [a]), t)] Source

pickResult :: ((t1, t2), t) -> t2 Source

terminal :: ((SorI, t5) -> [((SorI, t5), t4)] -> t2 -> ((t7, [t8]), t6) -> t3 -> t) -> t4 -> t5 -> t2 -> ((t7, t1), t6) -> t3 -> t Source

mapSynthesize :: [([(Instance, Atts)], t1) -> [((t7, t5), t6)]] -> [(((t2, t3), (t4, [((t7, t1), t6)])), [Tree t8])] -> t -> t1 -> [(((t2, t3), (t4, [((t7, t1), t6)])), [Tree t8])] Source

mapInherited :: [([(Instance, Atts)], t3) -> [a]] -> [(((t, t1), (t2, [(Instance, Atts)])), [Tree t4])] -> [(Instance, Atts)] -> t3 -> [a] Source

gMax :: [(t, [AttValue])] -> [(t, [AttValue])] Source

groupAtts :: [(t, [a])] -> [(t, [a])] Source

addAtts :: [a] -> [a] -> [a] Source

rule_i :: (t4 -> AttValue) -> t -> t3 -> t1 -> (t2 -> a -> AttValue) -> t2 -> ((SorI, t3), a -> [((SorI, t3), [AttValue])]) Source

rule_s :: (t4 -> AttValue) -> t -> t3 -> t1 -> (t2 -> a -> AttValue) -> t2 -> ((SorI, t3), a -> [((SorI, t3), [AttValue])]) Source

rule :: t3 -> (t5 -> AttValue) -> t -> t4 -> t1 -> (t2 -> a -> AttValue) -> t2 -> ((t3, t4), a -> [((t3, t4), [AttValue])]) Source

synthesized :: (a -> AttValue) -> Useless -> Id -> [(Instance, Atts)] -> Id -> [AttValue] Source

inherited :: (a -> AttValue) -> Useless -> Id -> [(Instance, Atts)] -> Id -> [AttValue] Source

valOf :: SorI -> (a -> AttValue) -> Useless -> Id -> [(Instance, Atts)] -> Id -> [AttValue] Source

apply :: [(Instance, Atts)] -> Id -> ([(Instance, Atts)] -> Id -> AttValue) -> Int Source

apply_ :: t -> t1 -> (t -> t1 -> AttValue) -> Int -> Int -> Int Source

applyMax :: t -> t1 -> (t -> t1 -> [AttValue]) -> Int Source

findMax :: [t -> t1 -> [AttValue]] -> (t, t1) -> AttValue Source

convertRep :: [t -> t1 -> [AttValue]] -> (t, t1) -> AttValue Source

makeTree :: [[(Instance, Atts)] -> Id -> AttValue] -> ([(Instance, Atts)], Id) -> AttValue Source

applyBiOp :: [t -> t1 -> [AttValue]] -> (t, t1) -> AttValue Source

getAtts :: (a -> t) -> (t1, t2) -> (t1 -> t2 -> [a]) -> t Source

copy :: [t -> t1 -> [a]] -> (t, t1) -> a Source

getTypVal :: Eq a => [(t1 -> a, a -> t)] -> a -> t Source

toTree :: [[(Instance, Atts)] -> Id -> AttValue] -> ([(Instance, Atts)], Id) -> AttValue Source

start :: Id -> [(Instance, Atts)] -> ((Int, InsAttVals), [String]) -> (a1, [(Int, [(MemoL, Int)])]) -> StateM (([MemoL], [(Int, [(MemoL, Int)])]), [(((Int, InsAttVals), (Int, [((SorI, Id), [AttValue])])), [Tree a])]) Source

tree :: Id -> [(Instance, Atts)] -> ((Int, InsAttVals), [String]) -> ([MemoL], [(Int, [(MemoL, Int)])]) -> StateM (([MemoL], [(Int, [(MemoL, Int)])]), [(((Int, InsAttVals), (Int, [((SorI, Id), [AttValue])])), [Tree MemoL])]) Source

num :: Id -> [(Instance, Atts)] -> ((Int, InsAttVals), [String]) -> (a1, [(Int, [(MemoL, Int)])]) -> StateM (([MemoL], [(Int, [(MemoL, Int)])]), [(((Int, InsAttVals), (Int, [((SorI, Id), [AttValue])])), [Tree a])]) Source

eT :: Id -> [(Instance, Atts)] -> ((Int, InsAttVals), [String]) -> (a1, [(Int, [(MemoL, Int)])]) -> StateM (([MemoL], [(Int, [(MemoL, Int)])]), [(((Int, InsAttVals), (Int, [((SorI, Id), [AttValue])])), [Tree a])]) Source

expr :: Id -> [(Instance, Atts)] -> ((Int, InsAttVals), [String]) -> ([MemoL], [(Int, [(MemoL, Int)])]) -> StateM (([MemoL], [(Int, [(MemoL, Int)])]), [(((Int, InsAttVals), (Int, [((SorI, Id), [AttValue])])), [Tree MemoL])]) Source

op :: Id -> [(Instance, Atts)] -> ((Int, InsAttVals), [String]) -> (a1, [(Int, [(MemoL, Int)])]) -> StateM (([MemoL], [(Int, [(MemoL, Int)])]), [(((Int, InsAttVals), (Int, [((SorI, Id), [AttValue])])), [Tree a])]) Source

po :: PP' a => (String -> IO ()) -> a -> IO () Source

class PP' a where Source

Methods

pp' :: a -> IO Doc Source

Instances

PP' Char 
PP' Int 
PP' Doc 
PP' Id 
PP' AttValue 
PP' a => PP' [a] 
PP' a => PP' (Maybe a) 
Show t => PP' (Tree t) 
(PP' a, PP' b) => PP' (a, b) 

showID :: Show a => (t, a) -> String Source

for printing the fist element of the return pair ***************

for printing the fist element of the return pair ***************