interpreter for cr me caramel
play

Interpreter for crme CAraMeL Lecture 5 Formal Languages and - PowerPoint PPT Presentation

1 Interpreter for crme CAraMeL Lecture 5 Formal Languages and Compilers 2011 Nataliia Bielova 2 Definition Intepreter for a language L: Program in L Interpreter (Virtual Machine) Physical machine ( hosting ) 3 crme


  1. 1 Interpreter for “ crème CAraMeL ” Lecture 5 Formal Languages and Compilers 2011 Nataliia Bielova

  2. 2 Definition  Intepreter for a language L: Program in L Interpreter (Virtual Machine) Physical machine ( “ hosting ” )

  3. 3 crème CAraMeL  Basic types: int and float  Flow control: if then else, while do, for  Arithmetic operators: +, -, *, /  Assignment: : :=  Relational operators: =, <, <=  Boolean operators: &, |, !  Utility: write(val) Formal languages and compilers 2011

  4. 4 Objective  Construct an interpreter for the language crème CAraMeL program var x : int; var y : int 1 0 begin Interpreter x := 0; y := 3; ⇒ if (x < y) then begin x := 1; y := 0 end else begin x := 0; y := 1 end ; write (x); write (y) end

  5. 5 Interpreter or compiler? program var x : int; var y : int begin x := 0; y := 3; if (x < y) then begin x := 1; y := 0 end else begin x := 0; y := 1 1 end ; 0 write (x); write (y) end Input syntax tree tokens Lexer Parser Interpreter Output Compiler Executable Formal languages and compilers 2011

  6. 6 Elements of interpreter  Lexer: in : input, out : token Parser: in : token, out : abstract syntax tree (a.s.t.) Interpreter itself (??): in : a.s.t, out : output Formal languages and compilers 2011

  7. 7 Elements of interpreter  Lexer: in : input, out : token  Parser: in : token, out : abstract syntax tree (a.s.t.) Interpreter itself (??): in : a.s.t, out : output Formal languages and compilers 2011

  8. 8 Elements of interpreter  Lexer: in : input, out : token  Parser: in : token, out : abstract syntax tree (a.s.t.)  Interpreter itself: in : a.s.t, out : output Formal languages and compilers 2011

  9. 9 Base of the interpreter http://disi.unitn.it/~bielova/flc/exercises/05-Interpreter_base.zip  Definition of the lexer: lexer.mll  Definition of the parser: parser.mly  Definition for a.s.t: syntaxtree.ml  Definition of the interpreter: interpreter_base.ml  Main program: main.ml Compilation: make eval # compiles everything (win: make.bat) make clean # “ cleans ” from the compiled files (win: clean.bat) ./interpreter_base # starts the interpreter (input from console) ./interpreter_base < input/test_1.cre # interprets the input from test 1 Formal languages and compilers 2011

  10. 10 Base of the interpreter http://disi.unitn.it/~bielova/flc/exercises/05-Interpreter_base.zip  Definition of the lexer: lexer.mll  Definition of the parser: parser.mly  Definition for a.s.t: syntaxtree.ml  Definition of the interpreter: interpreter_base.ml  Main program: main.ml Compilation: ./make.bat # compiles everything ./clean.bat # “ cleans ” from the compiled files ./interpreter_base # starts the interpreter (input from console) ./interpreter_base < input/test_1.cre # interprets the input from test 1 Formal languages and compilers 2011

  11. 11 How interpreter is made  parser.mly: definition of tokens Formal languages and compilers 2011

  12. 12 How interpreter is made  parser.mly: definition of tokens  lexer.mll: regular expressions and creation of tokens Formal languages and compilers 2011

  13. 13 How interpreter is made  parser.mly: definition of tokens  lexer.mll: regular expressions and creation of tokens  syntaxtree.ml: declarations of types for the syntax tree Formal languages and compilers 2011

  14. 14 How interpreter is made  parser.mly: definition of tokens  lexer.mll: regular expressions and creation of tokens  syntaxtree.ml: declarations of types for the syntax tree  parser.mly: language grammar and creation of the syntax tree Formal languages and compilers 2011

  15. 15 How interpreter is made  parser.mly: definition of tokens  lexer.mll: regular expressions and creation of tokens  syntaxtree.ml: declarations of types for the syntax tree  parser.mly: language grammar and creation of the syntax tree  mail.ml: starts lexer, parser, executes syntax tree Formal languages and compilers 2011

  16. 16 How interpreter is made  parser.mly: definition of tokens  lexer.mll: regular expressions and creation of tokens  syntaxtree.ml: declarations of types for the syntax tree  parser.mly: language grammar and creation of the syntax tree  mail.ml: starts lexer, parser, executes syntax tree  interpreter_base.ml: functions for the execution of the syntax tree Formal languages and compilers 2011

  17. Semantic analysis evaluation of expressions and declarations, execution of commands 17

  18. Definition of the memory 18 and environment  Formal definition: type store = loc -> value Store : Loc " Val type env = ide -> env_entry Env : Id # > ( Loc $ Val )  Updating the memory: let updatemem((s:store), addr, (v:value)): store = function x -> if (x = addr) then v else s(x) Formal languages and compilers 2011

  19. Arithmetic and boolean 19 expressions: evaluation Formal languages and compilers 2011

  20. 20 Declaration: evaluation Formal languages and compilers 2011

  21. 21 Commands: execution ⎧ C while b do c rs = s if B b rs = false ⎨ C while b do c rs'' otherwise ⎩ where s'' = C c rs Formal languages and compilers 2011

  22. 22 Example: repeat - until C repeat cmd until bexp rs = s' where : ⎧ s' = s'' if E bexp rs'' = true ⎨ C repeat cmd until bexp rs'' otherwise ⎩ s'' = C cmd rs Formal languages and compilers 2011

  23. 23 Example: repeat - until  parser.mly: token REPEAT and UNTIL  lexer.mll: strings ” repeat ” and ” until ”  syntaxtree.ml: contructor Repeat of cmd * bexp for type cmd  parser.mly: production REPEAT cmd UNTIL bexp { ... } for non-terminal symbol cmd  main.ml: nothing :)  interpreter_base.ml: execution of the command repeat - until Formal languages and compilers 2011

  24. 24 Programming in crème CAraMeL!  Function for the Fibonacci number: ⎧ fib ( n ) = n if n < 2 ⎨ fib(n- 1 ) + fib(n- 2 ) otherwise ⎩  Factorial of the number: Formal languages and compilers 2011

Recommend


More recommend