• generate strings by repeated replacement of non-terminals with string of terminals and non-terminals
    • write start symbol (non-terminal)
    • replace non-terminal with terminal