mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
distinct form for opers that have no value
This commit is contained in:
@@ -18,17 +18,15 @@ eval e = case e of
|
||||
let (f,xs) = apps e
|
||||
xs' <- mapM eval xs
|
||||
case f of
|
||||
ECon c -> checks [
|
||||
do
|
||||
ECon c -> do
|
||||
v <- lookEnv values c
|
||||
return $ appVal v xs'
|
||||
,
|
||||
do
|
||||
EOpr c -> do
|
||||
e <- lookEnv opers c
|
||||
v <- eval e
|
||||
v <- eval e ---- not possible in general
|
||||
return $ appVal v xs'
|
||||
]
|
||||
ECon c -> lookEnv values c
|
||||
EOpr c -> lookEnv opers c >>= eval ---- not possible in general
|
||||
EVar x -> lookEnv vars x
|
||||
ECst _ _ -> lookEnv parvals e
|
||||
EStr s -> return $ VTok s
|
||||
|
||||
@@ -25,9 +25,11 @@ FTyp. Typing ::= Ident ":" Type ;
|
||||
separator Typing ";" ;
|
||||
|
||||
EVar. Exp2 ::= "$" Ident ;
|
||||
EOpr. Exp2 ::= "&" Ident ;
|
||||
ECon. Exp2 ::= Ident ;
|
||||
EVal. Exp2 ::= Integer ;
|
||||
EStr. Exp2 ::= String ;
|
||||
ECst. Exp2 ::= "(" Ident "@" [Exp] ")" ;
|
||||
ERec. Exp2 ::= "{" [Assign] "}" ;
|
||||
EApp. Exp1 ::= Exp1 Exp2 ;
|
||||
ESel. Exp1 ::= Exp1 "!" Exp2 ;
|
||||
@@ -36,7 +38,6 @@ ETab. Exp1 ::= "table" "{" [Case] "}" ;
|
||||
ETbv. Exp1 ::= "table" "(" Type ")" "{" [Exp] "}" ;
|
||||
ECat. Exp ::= Exp "++" Exp1 ;
|
||||
EAbs. Exp ::= "\\" Ident "->" Exp ;
|
||||
ECst. Exp2 ::= "(" Ident "@" [Exp] ")" ;
|
||||
|
||||
coercions Exp 2 ;
|
||||
|
||||
|
||||
@@ -22,15 +22,15 @@ lin Voiture : CN = {
|
||||
g = (Fem@)
|
||||
} ;
|
||||
|
||||
{-
|
||||
|
||||
lin Bus : CN = {
|
||||
s = table {$x => "bus"} ;
|
||||
g = (Masc@)
|
||||
} ;
|
||||
|
||||
|
||||
{-
|
||||
lin Def : CN -> NP = \cn -> {
|
||||
s = artDef $cn.g ++ $cn.s ! (Sg@) ;
|
||||
s = &artDef $cn.g ++ $cn.s ! (Sg@) ;
|
||||
a = {g = $cn.g ; n = (Sg@)}
|
||||
} ;
|
||||
-}
|
||||
Reference in New Issue
Block a user