mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-18 23:52:51 -06:00
added exprSize and exprFunctions in the Haskell runtime too and use them in TreeOperations
This commit is contained in:
@@ -54,7 +54,7 @@ module PGF(
|
||||
mkFloat, unFloat,
|
||||
mkMeta, unMeta,
|
||||
-- extra
|
||||
pExpr,
|
||||
pExpr, exprSize, exprFunctions,
|
||||
|
||||
-- * Operations
|
||||
-- ** Linearization
|
||||
@@ -314,6 +314,23 @@ functionType pgf fun =
|
||||
compute :: PGF -> Expr -> Expr
|
||||
compute pgf = PGF.Data.normalForm (funs (abstract pgf),const Nothing) 0 []
|
||||
|
||||
exprSize :: Expr -> Int
|
||||
exprSize (EAbs _ _ e) = exprSize e
|
||||
exprSize (EApp e1 e2) = exprSize e1 + exprSize e2
|
||||
exprSize (ETyped e ty)= exprSize e
|
||||
exprSize (EImplArg e) = exprSize e
|
||||
exprSize _ = 1
|
||||
|
||||
exprFunctions :: Expr -> [CId]
|
||||
exprFunctions (EAbs _ _ e) = exprFunctions e
|
||||
exprFunctions (EApp e1 e2) = exprFunctions e1 ++ exprFunctions e2
|
||||
exprFunctions (ETyped e ty)= exprFunctions e
|
||||
exprFunctions (EImplArg e) = exprFunctions e
|
||||
exprFunctions (EFun f) = [f]
|
||||
exprFunctions _ = []
|
||||
|
||||
--exprFunctions :: Expr -> [Fun]
|
||||
|
||||
browse :: PGF -> CId -> Maybe (String,[CId],[CId])
|
||||
browse pgf id = fmap (\def -> (def,producers,consumers)) definition
|
||||
where
|
||||
|
||||
Reference in New Issue
Block a user