| CSC448: Parsing Revisited: Derivations III [104/133] | ![]() ![]() ![]()  | 
A derivation is leftmost if the chosen non-terminal symbol is always the leftmost non-terminal.
Leftmost derivations are interesting, because they correspond to the parsing strategy used by a JavaCC parser.
          As a JavaCC parser sees the terminals symbols
          "(" digit "+" digit ")" "*" digit, 
          it makes "local" decisions about which production to use.
          The decisions must be based upon the next terminal symbol.
        
exp 
=> exp "*" exp
=> "(" exp ")" "*" exp
=> "(" exp "+" exp ")" "*" exp
=> "(" num "+" exp ")" "*" exp
=> "(" digit "+" exp ")" "*" exp
=> "(" digit "+" num ")" "*" exp
=> "(" digit "+" digit ")" "*" exp
=> "(" digit "+" digit ")" "*" num
=> "(" digit "+" digit ")" "*" digit
        See page 169 and section 4.4 of the Dragon book.