• Compiler Design Techniques Book 1 (Pages: 95)

    Introduction, history of compiler construction, Compilers in education, compilation, structure, compiled vs interpreted languages, hardware compilation, one-pass vs multi-pass compilers, front end and back end, Compiler correctness, cross compiler, Canadian cross, decompiler, disassembly, language translator, interactive disassembler, Digress: Ilfak Guilfanov, Lexical analysis, Scanner, tokenizer, lexer generator, off-side rule languages, syntactic sugar, Maximal match, compiling - an introduction, block diagram of different phases, pure machine code, augmented machine code, virtual machine code, Assembly language format, relocatable binary format, memory image (load-and-go) format, interpreter, syntax & semantics of programming languages, compiler design and programming language design, influences on compiler design, A simple compiler, Micro scanner, parser for Micro, Recursive Descent parsing, Translating Micro, semantic information, code, Scanning, Regular expression, NFA and DFA, POSIX Basic Regular expression, POSIX Extended Regular Expression, Patterns for non-regular languages, Implementation and running times, Lex, patterns, character class expressions, how the input is matched, Actions, YYLMAX, ECHO, BEGIN, REJECT, yymore(), yyless(), input(c), input(), YY_FLUSH_BUFFER(), yyterminate(), the generated scanner, end-of-file rules, generating c++ scanners, class FlexLexer, An interesting comment from lex.yy.cc: "/* The C++ scanner is a mess... */", Sample C++ lexer program, changing source and destination streams

  • Compiler Design Techniques Book 2 (Pages: 84)

    Practical considerations for building a scanner, exception table, compiler directives and listing source lines, Inclusion directives, conditional compilation directives, scanner termination, Grammars and Parsing, left-most derivation, right-most derivation in reverse, CFG corresponding to a RE, A CFG for palindromes, a CFG for finite state machine, parse tree, context-sensitive grammar, errors in CFG, dead variable, Unreachable non-terminals/variables, two or more different parse trees, impossibility to decide whether a CFG is ambiguous, ambiguity for CFGs, Parsers and recognizers, top-down and bottom-up, finding nullable variables, follow and first sets, LL(1) grammars and parsers, a concrete example to explain the working of an LL parser, LL(1) predict function, Micro language grammar in extended BNF, first and follow sets for Micro's non-terminals, predict set, generating the parse table for LL(1), LL(1) parser driver, Making grammars LL(1), factoring technique to remove common prefixes, left-recursive production, algorithm to remove left-recursion, the if-then-else problem in LL(1) parsing, Properties of LL(1) parsers, LL(k) parsing, examples - which of the following grammars are LL(1), recursive descent parsing, LR parsing techniques, LR parsing algorithm, example, shift-reduce parsing, 'handle' of a right-sentential form, constructing SLR parsing table, viable prefixes, DFA to recognize viable prefixes, the closure operation, the closure function, How LR parser engine works, LR(0) state machine, algorithm for LR(0) parser construction, LR(0) reduce actions, examples, SLR parser generation, example, Constructing canonical LR parsing table, examples, LR(1) parsing table example, constructing LALR parsing tables, examples, hierarchy of grammar classes, LR parsing of ambiguous grammars, using precedence and associativity rules to resolve parsing action conflicts, examples, the dangling-else ambiguity, Parser generators, yacc, declaration section, rules section and code section, communication between scanner and the parser, reverse polish notation calculator, YYSTYPE, the rpcalc lexical analyzer, yylval, yyparse(), yyerror(), the entire rpcalc program, infix notation calculator, %nonassoc, %prec, Simple error recovery, yyerrok, yerrstatus, YYERROR_VERBOSE, error productions, error handling in LR parsing, show that the given grammar is LR(1) but not LALR(1)

  • Compiler Design Techniques Book 3 (Not Complete) (Pages: 17)

    Syntax Directed Translation, attribute grammars, example, synthesized attributes, Inherited attributes, annotated parse tree, syntax directed definition, L-attributed definitions, S-attributed definitions, annotated parse tree, Inherited attributes, dependency graph, topological sorting, directed acyclic graph, circular dependencies, evaluation order, syntax trees and parse tree, constructing syntax trees for expressions, SDD for constructing syntax trees, bottom-up evaluation for s-attributed definitions

Compiler Design Techniques