# Specialized parsers

(Difference between revisions)

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.

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 ModifyingParser (Advanced).

### Specialized Parser Macro files

Here is a partial list of the parser modifying files. Check the POD documentation for more examples. Use loadMacros("parserAssignment.pl"); to make the parser modifications available for a WeBWorK question.

• parserAssignment.pl
• checks answers of the form $$y=3x+5$$ 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);