subprograms in cr me caramel
play

Subprograms in crme CAraMeL Lecture 9 Formal Languages and - PowerPoint PPT Presentation

1 Subprograms in crme CAraMeL Lecture 9 Formal Languages and Compilers 2011 Nataliia Bielova Assumptions and 2 simplifications Lets add declarations of subprograms (procedure) execution of subprograms (call and


  1. 1 Subprograms in “ crème CAraMeL ” Lecture 9 Formal Languages and Compilers 2011 Nataliia Bielova

  2. Assumptions and 2 simplifications  Let’s add  declarations of subprograms (procedure)  execution of subprograms (call and passing the parameters)  no declarations inside the blocks begin … end  declarations are non-static: dynamic local environment  only one environment, no activation record: dynamic non local environment  passing the parameters only by value Formal languages and compilers 2011

  3. 3 Procedure: example program var x : int procedure proc1(a: int ) begin write (a) 40 end; 5 5 procedure proc() ⇒ 40 var x : int begin x:=5; call proc1(x); write (x) end begin x := 40; write (x); call proc(); call proc1(x) end

  4. 4 Procedure: implementation Syntax:  parser.mly: new token PROCEDURE, CALL, COMMA (“,”)  lexer.mll: strings corresponding to token  syntaxtree.ml: constructors for  declarations  formal parameters  calls  actual parameters  other modifications  parser.mly: productions to construct new nodes Formal languages and compilers 2011

  5. 5 Procedure: implementation Semantics:  new value in the environment: Descr_Procedure of param list * dec list * cmd  declaration  execution (call)  evaluation of actual parameters  type checking for the list of parameters  actual execution of the procedure Formal languages and compilers 2011

  6. 6 Function: example program var x : int function fact(a: int): int var b : int begin 479001600 if (a = 0) then fact := 1 else begin ⇒ b := call fact(a - 1); fact := a * b end end begin x := call fact(12); write (x) end Formal languages and compilers 2011

  7. 7 Function: implementation  Syntax:  keyword: function  new nodes for: declaration, execution (call), evaluation (call!)  adjust the syntax tree  Semantics:  declaration (attention: a location for return value is needed!)  evaluation  execution Formal languages and compilers 2011

  8. 8 Projects for the exam Extension of an interpreter/compiler:  1 person (either one or another item)  pointers and dynamic memory  pointers and record  vectors “by linked list”  2 persons (also here)  multidimensional matrices and horizontal-vertical slices  pointers, passing parameters by value, name, reference, value-result  3 persons (like before)  record, pointers, multidimensional matrices and horizontal-vertical slices  definition of functions and nested procedures (static scoping) and passing parameters by value, name, reference, value-reference Formal languages and compilers 2011

  9. 9 Pointers  Declaration: var p : ^int; var q: ^^float;  Referencing(@) and dereferencing ( ^ ) : x := 1; p := @ x; y := ^p + 4; If x and y are integers, then in the end y = 5. Formal languages and compilers 2011

  10. 10 Dynamic memory Add to the language the possibility to use pointers and allocation/deallocation of dynamic memory (heap), using one of the following approaches of memory release:  reference counter  garbage collection A correct implementation will allow to create and use the dynamic data structures using pointers in crème CAraMeL. Formal languages and compilers 2011

  11. 11 Vectors “by linked list” Change the implementation of vectors in crème CAraMeL in a way that the following operations are possible: inserting an element (growing the length of the v(i) := 5 vector) substitution of an element (the length remains the v[i] := 5 same) deleting an element (the vector becomes shorter) v#i returns an integer i if vector contains value 5 at v?5 position i and an integer -1 if there is no value 5 in the vector Formal languages and compilers 2011

  12. 12 Record  Definition: type name_record = record { name_field 1 : type; ... name_field n : type; }  Declaration: var v : name_record ;  Access: v. name_field i := expression ; a := v. name_field i ; Formal languages and compilers 2011

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend