Specialized parsers

From WeBWorK_wiki
Jump to navigation Jump to search

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.

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);