distinct form for opers that have no value

This commit is contained in:
aarne
2007-03-27 16:40:54 +00:00
parent b4798143bf
commit e9cf5cb2ba
3 changed files with 9 additions and 10 deletions

View File

@@ -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

View File

@@ -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 ;

View File

@@ -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@)}
} ;
-}