Process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar.