# Specialized parsers

`parserYourModsHere.pl` Modifications to the Parser change the way that student responses are interpreted. By convention files that modify the parser are named starting with "parser" -- e.g. `parserYourModsHere.pl`. test SpecializedContexts Describes another advanced method for customizing MathObjects by modifying the context.

Examples of modifications are give below.

A description of advanced techniques for customizing the parser are at Modifying Contexts (advanced).

### Specialized Parser Macro files

Here is a partial list of the parser modifying files.

Use `loadMacros("parserAssignment.pl");` to make the parser modifications available for a WeBWorK question.

Check the POD documentation for more examples.

• parserAssignment.pl
• checks answers of the form [math]y=3x+5[/math] with the LHS of the equation required.
• follow the link above to see the additional statements that must be inserted in the question to use this file.
• parserAutoStrings.pl
• `parserAutoStrings.pl` - Force String() to accept any string as a potential answer.
```  AutoStrings()
-- all strings are accepted
DefineStrings("string1", "string2")
DefineStrings(qw(string1 string2))
-- is a quick way to define "legitimate" strings.
```
```     FormulaWithUnits("3x+1 ft")->cmp
FormulaWithUnits(\$a*\$x+1,"ft")->cmp
```
```   Context("ImplicitEquation");
\$f = ImplicitEquation("x^2 = cos(y)");
\$f = ImplicitEquation("x^2 - 2y^2 = 5",limits=>[[-3,3],[-2,2]]);
\$f = ImplicitEquation("x=1/y",tolerance=>.0001);
```
```   \$P = ImplicitPlane(Point(1,0,2),Vector(-1,1,3)); #  -x+y+3z = 5
\$P = ImplicitPlane([1,0,2],[-1,1,3]);            #  -x+y+3z = 5
\$P = ImplicitPlane([1,0,2],4);                   #  x+2z = 4
\$P = ImplicitPlane("x+2y-z=5");
```
```   ANS(NumberWithUnits("3 ft")->cmp);
ANS(NumberWithUnits("\$a*\$b ft")->cmp);
ANS(NumberWithUnits(\$a*\$b,"ft")->cmp);
```
• parserParametricLine.pl
• Implements Formulas that represent parametric lines.
• parserPopUp.pl
• Pop-up menus compatible with Value objects.
• parserPrime.pl
• Defines ` f'(x)` so that students and authors can use the prime notation in defining equations.
• After loading file use perl command `parser::Prime->Enable;` to enable the feature.