Difference between revisions of "Specialized parsers"

From WeBWorK_wiki
Jump to navigation Jump to search
Line 72: Line 72:
 
** Utility macros that are useful in vector problems.
 
** Utility macros that are useful in vector problems.
 
[[Category:MathObjects]]
 
[[Category:MathObjects]]
  +
[[Category:Contexts]]

Revision as of 08:55, 21 November 2010

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);
  • 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.
  • parserRadioButtons.pl
    • Radio buttons compatible with Value objects, specifically MultiAnswer objects.
  • parserSolutionFor.pl
    • An answer checker that checks if a student's answer satisifies a (possibly non-linear) implicit equation.
  • parserVectorUtils.pl
    • Utility macros that are useful in vector problems.