Writing a really general parser is a major but different undertaking, by far the hardest points being sensitivity to context and resolution of ambiguity.