Ferramentas de Utilizador

Ferramentas de Site


ocaml

Diferenças

Esta página mostra as diferenças entre as duas revisões da página.

Ligação para esta vista de comparação

Ambos os lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
ocaml [2006/03/24 19:28]
marcus
ocaml [2010/01/18 15:45] (Actual)
Linha 45: Linha 45:
  
 ====== Material ====== ====== Material ======
 +
 ===== Sintaxe abstrata do IMP ===== ===== Sintaxe abstrata do IMP =====
-<​code>​+<​code ​ocaml>
 (* categoria sintatica Num *) (* categoria sintatica Num *)
 type num = int;; type num = int;;
  
-(* categoria sintatica ​Loc *) +(* categoria sintatica ​Ident *) 
-type loc = string;;+type ident = string;;
  
 (* categoria sintatica Bool: usamos bool *) (* categoria sintatica Bool: usamos bool *)
  
 (* categoria sintatica AExpr *) (* categoria sintatica AExpr *)
-type aExpr =   Num of num | Loc of loc+type aExpr =   Num of num | Ident of ident
              | Sum of aExpr * aExpr               | Sum of aExpr * aExpr 
              | Diff of aExpr * aExpr              | Diff of aExpr * aExpr
Linha 70: Linha 71:
 (* categoria sintatica Com *) (* categoria sintatica Com *)
 type com =   Skip type com =   Skip
-             | Assign of loc * aExpr+             | Assign of ident * aExpr
              | Seq of com * com              | Seq of com * com
              | Cond of bExpr * com * com              | Cond of bExpr * com * com
Linha 78: Linha 79:
  
 ===== Estados ===== ===== Estados =====
-<​code>​ +<​code ​ocaml
-(* o estado: uma função das locais ​para números inteiros *) +(* o estado: uma função das identificadores ​para números inteiros *) 
-type sigma = loc -> num;;+type sigma = ident -> num;;
  
 (* o estado inicial *) (* o estado inicial *)
Linha 90: Linha 91:
  
 ===== Avaliação de expressões aritméticas ===== ===== Avaliação de expressões aritméticas =====
-<​code>​+<​code ​ocaml>
 (* avaliação das expressões aritméticas *) (* avaliação das expressões aritméticas *)
 let rec eval_aExpr (a,sigma) = let rec eval_aExpr (a,sigma) =
   match a with    match a with 
     Num n -> n     Num n -> n
-  | Loc l -> sigma l+  | Ident x -> sigma x
   | Sum (a1,a2) -> (eval_aExpr (a1,​sigma))+(eval_aExpr (a2,sigma))   | Sum (a1,a2) -> (eval_aExpr (a1,​sigma))+(eval_aExpr (a2,sigma))
   | Diff (a1,a2) -> (eval_aExpr (a1,​sigma))-(eval_aExpr (a2,sigma))   | Diff (a1,a2) -> (eval_aExpr (a1,​sigma))-(eval_aExpr (a2,sigma))
ocaml.1143239291.txt.gz · Esta página foi modificada pela última vez em: 2010/01/18 15:45 (Edição externa)