From dc74665dbf3cca4a837ad277eaf890891d78fab7 Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 1 Sep 2006 15:11:22 +0000 Subject: [PATCH] the Error type; better lexer error reporting --- prelude/Predef.gf | 6 ++++-- resource-1.0/english/ParadigmsEng.gf | 9 +++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/prelude/Predef.gf b/prelude/Predef.gf index a52f954d0..d8141ea8c 100644 --- a/prelude/Predef.gf +++ b/prelude/Predef.gf @@ -11,9 +11,11 @@ resource Predef = { param PBool = PTrue | PFalse ; - oper Int : Type = variants {} ; -- the type of integers - oper Ints : Int -> Type = variants {} ; -- the type of integers from 0 to n + oper Error : Type = variants {} ; -- the empty type + oper Int : Type = variants {} ; -- the type of integers + oper Ints : Int -> Type = variants {} ; -- the type of integers from 0 to n + oper error : Str -> Error = variants {} ; -- forms error message oper length : Tok -> Int = variants {} ; -- length of string oper drop : Int -> Tok -> Tok = variants {} ; -- drop prefix of length oper take : Int -> Tok -> Tok = variants {} ; -- take prefix of length diff --git a/resource-1.0/english/ParadigmsEng.gf b/resource-1.0/english/ParadigmsEng.gf index d03c3e2b9..c4b647c95 100644 --- a/resource-1.0/english/ParadigmsEng.gf +++ b/resource-1.0/english/ParadigmsEng.gf @@ -418,8 +418,13 @@ oper in mkV cry cries cried cried crying ; regDuplV fit = - let fitt = fit + last fit in - mkV fit (fit + "s") (fitt + "ed") (fitt + "ed") (fitt + "ing") ; + case last fit of { + ("a" | "e" | "i" | "o" | "u" | "y") => + Predef.error (["final duplication makes no sense for"] ++ fit) ; + t => + let fitt = fit + t in + mkV fit (fit + "s") (fitt + "ed") (fitt + "ed") (fitt + "ing") + } ; irregV x y z = let reg = (regV x).s in mkV x (reg ! VPres) y z (reg ! VPresPart) ** {s1 = [] ; lock_V = <>} ;