- Trending Categories
- Data Structure
- Operating System
- C Programming
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
What is Implementation of Block Structured Language in compiler design?
A block is a statement containing its own local data declaration. The concept of a block is originated with ALGOL. The block-structured language permits an array with adjustable length. The main feature of blocks is their bracketing structure (begin and end used in ALGOL) in which they can define their data.
Activation Record for Block Structured Languages
Block structured language like ALGOL, and PL/I permit adjustable arrays, i.e., of varying length. Therefore, we cannot store irregular size arrays in between activation records. It can allocate the flexible or variable arrays at one corner of the activation record or above the fixed-size data. A pointer to these adjustable arrays will be stored in a fixed position of the activation record.
The following figure shows an activation record of a procedure having two Adjustable length arrays.
Consider a block-structured program
real A ;
real Array X  ;
In this procedure, we have taken 3 Blocks. Execution of these blocks will lead to storage of their local data items A, B, C, D, and adjustable array X, Y, Z into the stack. Activation Record for a particular block will be generated when that Block is currently being executed.
If Block 2 is active or undercurrent execution, then Activation Record of Procedure P will save Local data and pointer to adjustable arrays of Block 2 at the top.
Display & Static Links
There are two methods to access Non-Local data for a procedure are as follows −
Static Link− In this method, a pointer called static link is attached with each procedure which points to the topmost activation record of that procedure that physically surrounds it in the program. So, Non-local data references for any procedure can be found out by descending chain of pointers to find all statically enclosing procedures.
Display− The display is an array of pointer which are maintained to speed up the access to non-local data.
After the procedure is called, the parameters are passed to the procedure. There are two parameters
- Actual Parameter
- Formal Parameter
Depending on these parameters, there are various parameter passing methods −
- Call by Value− It is the simplest method for parameter passing. The actual parameters are computed, and their r-values are passed to the called procedure.
- Call by Reference− When the parameter is passed by reference also known as call by address or call by location, the caller passes to the caller procedure, a pointer to the storage address of each actual parameter.
- Call by Name− It is a less popular method of parameter passing. The procedure is treated like macro. The procedure body is substituted for the call-in caller with actual parameters substituted for formals.
When procedure P1calls procedure P2, procedure P2 will return some value to P1.
Following changes will be made.
- The value returned by P2 will be stored in space kept free for it in the activation record.
- The top pointer will be restored, i.e., again point to the location on which it was earlier before P1 called P2.
- Restore SP, i.e., set SP pointer to old SP in an activation record of P1.
- Get return address from P1 activation record to complete return done by P2.
- What is Stack Implementation of Shift Reduce Parsing in compiler design?
- What is Language Processing Systems in Compiler Design?
- What is Compiler Design?
- What is Design of Lexical Analysis in Compiler Design?
- What is minimizing of DFA in compiler design?
- What is Chomsky Hierarchy in compiler design?
- What is error handling in compiler design?
- What is Input Buffering in Compiler Design?
- What is Finite Automata in Compiler Design?
- What is the Representation of DFA in compiler design?
- What is Components of LR Parsers in compiler design?
- What is types of LR Parser in compiler design?
- What is translation of control statements in compiler design?
- What is techniques of storage allocation in compiler design?
- What is operating system design and implementation?