From 0ac49ec12ffdc8f02e1071eb333f5d2c659ca5b1 Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 6 Oct 2003 08:16:05 +0000 Subject: [PATCH] Experimenting with the new parser: Experimenting with the new parser: p -cat=S -new -parser=CF-BU "John walks" --- grammars/basic/Basic.gf | 15 +++++++++++++++ grammars/basic/English.gf | 27 +++++++++++++++++++++++++++ src/GF/UseGrammar/Parsing.hs | 14 +++++++++++++- src/Today.hs | 2 +- 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 grammars/basic/Basic.gf create mode 100644 grammars/basic/English.gf diff --git a/grammars/basic/Basic.gf b/grammars/basic/Basic.gf new file mode 100644 index 000000000..034d9ba29 --- /dev/null +++ b/grammars/basic/Basic.gf @@ -0,0 +1,15 @@ +abstract Basic = { + +cat +S ; NP ; A1 ; CN ; + +fun +PredA1 : NP -> A1 -> S ; +CondS : S -> S -> S ; +DisjA1 : A1 -> A1 -> A1 ; +Every : CN -> NP ; +ModA1 : CN -> A1 -> CN ; +Number : CN ; +Even : A1 ; Odd : A1 ; Prime : A1 ; +Zero : NP ; +} diff --git a/grammars/basic/English.gf b/grammars/basic/English.gf new file mode 100644 index 000000000..7747d1abd --- /dev/null +++ b/grammars/basic/English.gf @@ -0,0 +1,27 @@ +concrete English of Basic = { + +lincat +S = {s : Str} ; NP = {s : Str} ; A1 = {s : Str} ; CN = {s : Str} ; + +lin PredA1 Q F = + {s = Q.s ++ "is" ++ F.s} ; +lin CondS A B = + {s = "if" ++ A.s ++ "then" ++ B.s} ; +lin DisjA1 F G = + {s = F.s ++ "or" ++ G.s} ; +lin Every A = + {s = "every" ++ A.s} ; +lin ModA1 A F = + {s = F.s ++ A.s} ; +lin Number = + {s = "number"} ; +lin Even = + {s = "even"} ; +lin Odd = + {s = "odd"} ; +lin Prime = + {s = "prime"} ; +lin Zero = + {s = "zero"} ; + +} diff --git a/src/GF/UseGrammar/Parsing.hs b/src/GF/UseGrammar/Parsing.hs index 4cd4f4bc8..6cafb8c69 100644 --- a/src/GF/UseGrammar/Parsing.hs +++ b/src/GF/UseGrammar/Parsing.hs @@ -19,6 +19,8 @@ import Option import Custom import ShellState +import qualified ExportParser as N + import Operations import List (nub) @@ -35,7 +37,17 @@ parseStringMsg os sg cat s = do return (ts,unlines ss) parseStringC :: Options -> StateGrammar -> CFCat -> String -> Check [Tree] -parseStringC opts0 sg cat s = do +parseStringC opts0 sg cat s + +---- to test peb's new parser 6/10/2003 + | oElem newParser opts0 = do + let pm = maybe "" id $ getOptVal opts0 useParser -- -parser=pm + gr = grammar sg + ps <- checkErr $ N.newParser pm gr (cfCat2Cat cat) s + checkWarn $ unlines ps + return [] + + | otherwise = do let opts = unionOptions opts0 $ stateOptions sg cf = stateCF sg gr = stateGrammarST sg diff --git a/src/Today.hs b/src/Today.hs index 3e8e4ecae..208b000f9 100644 --- a/src/Today.hs +++ b/src/Today.hs @@ -1 +1 @@ -module Today where today = "Fri Oct 3 14:06:22 CEST 2003" +module Today where today = "Mon Oct 6 10:50:56 CEST 2003"