Stack Allocation of Space

1 Activation Trees 2 Activation Records 3 Calling Sequences 4 Variable-Length Data on the Stack  Almost all compilers for languages that use procedures, functions, or methods as units of user-defined…

Boomi Nathan

Storage Organization

From the perspective of the compiler writer, the executing target program runs in its own logical address space in which each program value has a location. The management and organization…

Boomi Nathan

Translation of Expressions

 1 Operations Within Expressions  2 Incremental Translation  3 Addressing Array Elements  4 Translation of Array References  The rest of this chapter explores issues that arise during the translation of ex-pressions…

Boomi Nathan

Declarations

When we encounter declarations, we need to lay out storage for the declared variables. For every local name in a procedure, we create a ST(Symbol Table) entry containing: The type…

Boomi Nathan

YACC

YACC stands for Yet Another Compiler Compiler. YACC provides a tool to produce a parser for a given grammar. YACC is a program designed to compile a LALR (1) grammar. It…

Boomi Nathan

LALR (1) Parsing

LALR refers to the lookahead LR. To construct the LALR (1) parsing table, we use the canonical collection of LR (1) items. In the LALR (1) parsing, the LR (1)…

Boomi Nathan

Parse tree and Syntax tree

When you create a parse tree then it contains more details than actually needed. So, it is very difficult to compiler to parse the parse tree. Take the following parse…

Boomi Nathan

Three-address code

Three-address code is a sequence of statements of the general form x : = y op z where x, y and z are names, constants, or compiler-generated temporaries; op stands…

Boomi Nathan

Intermediate Code Generation

A source code can directly be translated into its target machine code, then why at all we need to translate the source code into an intermediate code which is then…

Boomi Nathan

CONSTRUCTING SLR(1) PARSING TABLE

To perform SLR parsing, take grammar as input and do the following: 1.   Find LR(0) items. 2.  Completing the closure. 3.  Compute goto(I,X), where, I is set of items and X is grammar…

Boomi Nathan