1. A computing system comprising: a processor; and a memory communicatively coupled to said processor; in which said processor is configured to: receive from a user, a number of annotations for at least one statement of a set of statements within a problem domain, said annotations identifying at least one element within said at least one statement using identifiers describing a value associated with the at least one element, wherein the problem domain is defined using domain specific language; form a set of grammar rules for said problem domain based on said annotations; parse said set of statements using said set of grammar rules; present said user with an error message notifying said user of an error in response to detecting said error when parsing said set of statements; receive at least one additional annotation from said user in response to said error message; update said set of grammar rules according to said at least one additional annotation received from the user; and use said updated set of grammar rules to re-parse said set of statements; in which said annotations comprise an optional block annotation to indicate that a particular portion of a statement to be used to form a specific grammar rule indicates that the particular portion of the statement will not be included in at least one statement within the problem domain and will be included in at least one statement within the problem domain; and in which at least a sub-portion of the optional block annotation comprises a value annotation that denote a specific type of element is variable, that the specific type of variable element occurs a plurality of times within the set of statements, and that the value annotation includes the variable element selected from a discrete pre-defined list of related elements.