"Committed_by_peb"

This commit is contained in:
peb
2005-08-08 08:01:10 +00:00
parent ed4cd36b2c
commit 35ed9d459b
13 changed files with 184 additions and 21 deletions

View File

@@ -0,0 +1,22 @@
-- the example 4.1 from Ljunglöf (2004, page 82)
concrete CopyMorphism of CopyMorphismAbs = {
lincat
S = { s : Str };
A = { s1 : Str; s2 : Str };
lin
f x = { s = x.s1 ++ x.s2 };
g x y = { s1 = x.s1 ++ y.s1;
s2 = x.s2 ++ y.s2 };
ac = { s1 = "a"; s2 = "c" };
bd = { s1 = "b"; s2 = "d" };
}

View File

@@ -0,0 +1,15 @@
-- the example 4.1 from Ljunglöf (2004, page 82)
abstract CopyMorphismAbs = {
cat S; A;
fun
f : A -> S;
g : A -> A -> A;
ac : A;
bd : A;
}

View File

@@ -0,0 +1,26 @@
-- the example 4.1 from Ljunglöf (2004, page 82)
concrete Erasing of ErasingAbs = {
lincat
S = { s : Str };
A = { s1 : Str; s2 : Str };
B = { s : Str };
C = { s : Str };
lin
f x = { s = x.s1 };
g x y z = { s1 = x.s2 ++ y.s;
s2 = x.s1 ++ z.s };
a = { s1 = "a1"; s2 = "a2" };
b = { s = "b" };
c = { s = "c" };
}

View File

@@ -0,0 +1,21 @@
-- the example 4.1 from Ljunglöf (2004, page 82)
abstract ErasingAbs = {
cat S; A; B; C;
fun
f : A -> S;
g : A -> B -> C -> A;
a : A;
b : B;
c : C;
}

View File

@@ -5,9 +5,9 @@
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/05/27 11:37:57 $
-- > CVS $Author: aarne $
-- > CVS $Revision: 1.16 $
-- > CVS $Date: 2005/08/08 09:01:25 $
-- > CVS $Author: peb $
-- > CVS $Revision: 1.17 $
--
-- (Description of the module)
-----------------------------------------------------------------------------
@@ -147,7 +147,7 @@ prefixPathName p f = case f of
c:_ | isSep c -> f -- do not prefix [Unix style] absolute paths
_ -> case p of
"" -> f
_ -> p ++ "/" ++ f -- / actually works on windows
_ -> p ++ "/" ++ f -- note: / actually works on windows
justInitPath :: FilePath -> FilePath
justInitPath = reverse . drop 1 . dropWhile (not . isSep) . reverse
@@ -303,7 +303,8 @@ readFileIOE f = ioe $ catch (readFile f >>= return . return)
-- intended semantics: if file is not found, try @\$GF_LIB_PATH\/file@
-- (even if file is an absolute path, but this should always fail)
-- it returns not only contents of the file, but also the path used
-- FIXME: unix-specific, / is \ on Windows
--
-- FIXME: unix-specific, \/ is \\ on Windows
readFileLibraryIOE :: String -> FilePath -> IOE (FilePath, String)
readFileLibraryIOE ini f =
ioe $ catch ((do {s <- readFile initPath; return (return (initPath,s))}))

View File

@@ -1,3 +1,15 @@
----------------------------------------------------------------------
-- |
-- Maintainer : PL
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/08/08 09:01:25 $
-- > CVS $Author: peb $
-- > CVS $Revision: 1.5 $
--
-- MCFG parsing, the active algorithm
-----------------------------------------------------------------------------
module GF.Parsing.MCFG.Active (parse, parseR) where
@@ -20,7 +32,7 @@ import GF.Infra.Print
----------------------------------------------------------------------
-- * parsing
--parse :: (Ord n, Ord c, Ord l, Ord t) => String -> MCFParser c n l t
parse :: (Ord n, Ord c, Ord l, Ord t) => String -> MCFParser c n l t
parse strategy pinfo starts toks =
trace2 "MCFG.Active - strategy" (if isBU strategy then "BU"
else if isTD strategy then "TD" else "None") $
@@ -28,7 +40,7 @@ parse strategy pinfo starts toks =
Final (Abs cat rhs fun) found rrecs <- chartLookup chart Fin ]
where chart = process strategy pinfo starts toks
--parse :: (Ord n, Ord c, Ord l, Ord t) => String -> MCFParser c n l t
-- parseR :: (Ord n, Ord c, Ord l, Ord t) => String -> MCFParser c n l t
parseR strategy pinfo starts =
trace2 "MCFG.Active Range - strategy" (if isBU strategy then "BU"
else if isTD strategy then "TD" else "None") $

View File

@@ -1,3 +1,15 @@
----------------------------------------------------------------------
-- |
-- Maintainer : PL
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/08/08 09:01:25 $
-- > CVS $Author: peb $
-- > CVS $Revision: 1.2 $
--
-- MCFG parsing, the active algorithm (alternative version)
-----------------------------------------------------------------------------
module GF.Parsing.MCFG.Active2 (parse) where

View File

@@ -1,3 +1,15 @@
----------------------------------------------------------------------
-- |
-- Maintainer : PL
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/08/08 09:01:25 $
-- > CVS $Author: peb $
-- > CVS $Revision: 1.4 $
--
-- MCFG parsing, the incremental algorithm
-----------------------------------------------------------------------------
module GF.Parsing.MCFG.Incremental (parse, parseR) where

View File

@@ -1,3 +1,15 @@
----------------------------------------------------------------------
-- |
-- Maintainer : PL
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/08/08 09:01:25 $
-- > CVS $Author: peb $
-- > CVS $Revision: 1.3 $
--
-- MCFG parsing, the incremental algorithm (alternative version)
-----------------------------------------------------------------------------
module GF.Parsing.MCFG.Incremental2 (parse) where

View File

@@ -1,3 +1,15 @@
----------------------------------------------------------------------
-- |
-- Maintainer : PL
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/08/08 09:01:25 $
-- > CVS $Author: peb $
-- > CVS $Revision: 1.5 $
--
-- MCFG parsing, the naive algorithm
-----------------------------------------------------------------------------
module GF.Parsing.MCFG.Naive (parse, parseR) where

View File

@@ -1,3 +1,15 @@
---------------------------------------------------------------------
-- |
-- Maintainer : PL
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/08/08 09:01:25 $
-- > CVS $Author: peb $
-- > CVS $Revision: 1.5 $
--
-- Definitions of ranges, and operations on ranges
-----------------------------------------------------------------------------
module GF.Parsing.MCFG.Range
( Range(..), makeRange, concatRange, rangeEdge, edgeRange, minRange, maxRange,

View File

@@ -1,12 +1,15 @@
{-- Module --------------------------------------------------------------------
Filename: ApproxParse.hs
Author: Håkan Burden
Time-stamp: <2005-04-18, 14:56>
Description: An agenda-driven implementation of the active algorithm 4.3.4,
parsing through context-free approximation as described in
Ljunglöf (2004)
------------------------------------------------------------------------------}
----------------------------------------------------------------------
-- |
-- Maintainer : PL
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/08/08 09:01:25 $
-- > CVS $Author: peb $
-- > CVS $Revision: 1.4 $
--
-- MCFG parsing, through context-free approximation
-----------------------------------------------------------------------------
module GF.Parsing.MCFG.ViaCFG where

View File

@@ -41,10 +41,11 @@ sub check_headerline {
if ($#ARGV >= 0) {
@FILES = @ARGV;
} else {
@dirs = qw{. api canonical cf cfgm compile for-ghc-nofud
grammar infra notrace parsers shell
source speech translate useGrammar util visualization
GF GF/* GF/*/* GF/*/*/*};
# @dirs = qw{. api canonical cf cfgm compile for-ghc-nofud
# grammar infra notrace parsers shell
# source speech translate useGrammar util visualization
# GF GF/* GF/*/* GF/*/*/*};
@dirs = qw{GF GF/* GF/*/* GF/*/*/*};
@FILES = grep(!/\/(Par|Lex)(GF|GFC|CFG)\.hs$/,
glob "{".join(",",@dirs)."}/*.hs");
}
@@ -70,7 +71,9 @@ for $file (@FILES) {
# the module header
$hdr_module = $module = "";
s/^ (--+ \s* \n) +//sx;
s/^ \{-\# \s+ OPTIONS \s+ -cpp \s+ \#-\} //sx; # removing ghc options (cpp)
s/^ \s+ //sx; # removing initial whitespace
s/^ (--+ \s* \n) +//sx; # removing initial comment lines
unless (s/^ -- \s \| \s* \n//sx) {
push @ERR, "Incorrect module header";
} else {