mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
new pre syntax (as alternative): pre {"o" | "i" => "an" ; _ => "a"}
This commit is contained in:
@@ -178,6 +178,10 @@ resource ResEng = ParamX ** open Prelude in {
|
||||
"a" ;
|
||||
"an" / strs {"a" ; "e" ; "i" ; "o" ; "A" ; "E" ; "I" ; "O" }
|
||||
} ;
|
||||
--- artIndef = pre {
|
||||
--- "a" | "e" | "i" | "o" | "A" | "E" | "I" | "O" => "an" ;
|
||||
--- _ => "a"
|
||||
--- } ;
|
||||
|
||||
artDef = "the" ;
|
||||
|
||||
|
||||
@@ -16,5 +16,6 @@ oper
|
||||
|
||||
elision : (_,_,_ : Str) -> Str = \il, l', lo ->
|
||||
pre {il ; l' / vocale ; lo / sImpuro} ;
|
||||
--- pre {vocale => l' ; sImpuro => lo ; _ => il} ;
|
||||
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -419,7 +419,9 @@ Exp4
|
||||
_ -> TRaw
|
||||
in S (T annot $5) $2 }
|
||||
| 'variants' '{' ListExp '}' { FV $3 }
|
||||
| 'pre' '{' Exp ';' ListAltern '}' { Alts ($3, $5) }
|
||||
| 'pre' '{' ListCase '}' {% mkAlts $3 }
|
||||
| 'pre' '{' String ';' ListAltern '}' { Alts (K $3, $5) }
|
||||
| 'pre' '{' Ident ';' ListAltern '}' { Alts (Vr $3, $5) }
|
||||
| 'strs' '{' ListExp '}' { Strs $3 }
|
||||
| '#' Patt2 { EPatt $2 }
|
||||
| 'pattern' Exp5 { EPattType $2 }
|
||||
@@ -715,5 +717,26 @@ checkInfoType (MTTransfer _ _) (id,pos,info) =
|
||||
AbsFun _ _ -> return ()
|
||||
_ -> failLoc (fst pos) "illegal definition in transfer module"
|
||||
|
||||
|
||||
mkAlts cs = case cs of
|
||||
_:_ -> do
|
||||
def <- mkDef (last cs)
|
||||
alts <- mapM mkAlt (init cs)
|
||||
return (Alts (def,alts))
|
||||
_ -> fail "empty alts"
|
||||
where
|
||||
mkDef (_,t) = return t
|
||||
mkAlt (p,t) = do
|
||||
ss <- mkStrs p
|
||||
return (t,ss)
|
||||
mkStrs p = case p of
|
||||
PAlt a b -> do
|
||||
Strs as <- mkStrs a
|
||||
Strs bs <- mkStrs b
|
||||
return $ Strs $ as ++ bs
|
||||
PString s -> return $ Strs [K s]
|
||||
PV x -> return (Vr x) --- for macros; not yet complete
|
||||
_ -> fail "no strs from pattern"
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user