Introduction to translators, compilers, interpreters, compilation process. Programming
language grammars, derivations, reductions, regular expression, context free language and
grammar.
Lexical analyzer, input buffering, specification and recognition of tokens, introduction to finite
automata, regular expressions to NFA, minimization of DFA, keywords and reserve word
policies, LEX – the lexical analyzer generator.
Syntax analyzer, context free grammars, top down parsing, brute force parser, recursive descent
parser, LL(1) parser, Bottom up parsing, operator precedence parsing, simple precedence
parsing, LR parser, LALR parser, YACC – the parser generator.
Syntax directed translation schemes, implementation of syntax directed translators, synthesized
attributes, inherited attributes, dependency graph, evaluation order, construction of syntax
trees, directed acyclic graph of expression, bottom up evaluation of S- attributed definitions, Lattributed
definitions, top down translation of L - attributed definitions.
Errors, lexical phase errors, syntactic phase errors.
Intermediate languages, postfix notation, syntax trees, parse trees, three address code, triples
and indirect triples.
Translation of assignment statements, Boolean expressions, statements that alter flow of
control array references, procedure calls, declarations, case statement, record structures.
Symbol tables, operation on symbol tables, symbol table organization for non-block structured
languages, symbol table organization for block – structured languages.
Run time storage management, storage allocation and referencing data in block structured
language, storage allocation.
Code optimization, sources of optimization, loop optimization, DAG and optimization of basic
blocks. Code generation, a machine model, next use information register allocation and
assignment, a simple code generator, code generation from DAG’s, Peephole optimization.