Parsing and Parser Parsing methods: top-down & bottom-up
Parsing and Parser Parsing -- the process of determining if a string of tokens can be generated by a grammar. Parser -- a software module in a compiler input: tokens, output: parse tree. Parsing methods: top-down root ---> leaves bottom-up leaves ---> root
Lexical and Syntax Analysis Lexical analysis -- linear analysis or scanning in a compiler design. Syntax analysis -- hierarchical analysis and it is represented by a parse tree. Example: position := initial + rate*60 tokens: a meaningful unit -- position, :=, +, 60 parse tree: root -- assignment statement, leaves -- all the tokens, internal nodes -- nonterminals, such as expression, identifier, and number
Parsing Method I Deterministic top-down parser using the information available to make a correct choice (exposed input string, production rules, frontier) a finite practical table, T row: a nonterminal node (i) column: the left-most exposed token (j) T[i, j]: a fixed choice for next production rule
Left / Right most Derivation Left/right most derivation -- a derivation in which only the left /right most nonterminal in any sentential form is replaced at each step. Ambiguous grammar: a grammar that produces more than one left most or right most derivation for the same string.
Parsing Method II Deterministic bottom-up parser rootline -- the left-to-right sequence of roots for the subtrees (see Fig. 2.12) LR(1) parser, a bottom-up parsing machine for G3 -- L to R, right most, observe 1 symbol in input each time. Read, v, and look ahead transition, {v} Apply state #i