Difference between revisions of "Specialized parsers"

From WeBWorK_wiki
Jump to navigation Jump to search
m (Fixed some broken links.)
Line 14: Line 14:
 
Check the [http://webwork.maa.org/pod/pg_TRUNK/ POD documentation for more examples.]
 
Check the [http://webwork.maa.org/pod/pg_TRUNK/ POD documentation for more examples.]
   
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserAssignment.pl parserAssignment.pl]
+
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserAssignment.pl.html parserAssignment.pl]
 
** checks answers of the form <math>y=3x+5</math> with the LHS of the equation required.
 
** 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.
 
** follow the link above to see the additional statements that must be inserted in the question to use this file.
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserAutoStrings.pl parserAutoStrings.pl]
+
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserAutoStrings.pl.html parserAutoStrings.pl]
 
** <code>parserAutoStrings.pl</code> - Force String() to accept any string as a potential answer.
 
** <code>parserAutoStrings.pl</code> - Force String() to accept any string as a potential answer.
 
AutoStrings()
 
AutoStrings()
Line 24: Line 24:
 
DefineStrings(qw(string1 string2))
 
DefineStrings(qw(string1 string2))
 
-- is a quick way to define "legitimate" strings.
 
-- is a quick way to define "legitimate" strings.
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserCustomization.pl parserCustomization.pl]
+
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserCustomization.pl.html parserCustomization.pl]
 
** Placeholder for site/course-local customization file.
 
** Placeholder for site/course-local customization file.
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserDifferenceQuotient.pl parserDifferenceQuotient.pl]
+
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserDifferenceQuotient.pl.html parserDifferenceQuotient.pl]
 
** An answer checker for difference quotients.
 
** An answer checker for difference quotients.
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserFormulaUpToConstant.pl parserFormulaUpToConstant.pl]
+
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserFormulaUpToConstant.pl.html parserFormulaUpToConstant.pl]
 
** implements formulas ``plus a constant''.
 
** implements formulas ``plus a constant''.
 
** Students must include the ``+C'' as part of their answers
 
** Students must include the ``+C'' as part of their answers
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserFormulaWithUnits.pl parserFormulaWithUnits.pl]
+
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserFormulaWithUnits.pl.html parserFormulaWithUnits.pl]
 
** Implements a formula with units.
 
** Implements a formula with units.
 
** For example:
 
** For example:
 
FormulaWithUnits("3x+1 ft")->cmp
 
FormulaWithUnits("3x+1 ft")->cmp
 
FormulaWithUnits($a*$x+1,"ft")->cmp
 
FormulaWithUnits($a*$x+1,"ft")->cmp
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserFunction.pl parserFunction.pl]
+
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserFunction.pl.html parserFunction.pl]
 
** An easy way of adding new functions to the current context.
 
** An easy way of adding new functions to the current context.
 
** <code>parserFunction("f(x)" => "sqrt(x+1)-2");</code>
 
** <code>parserFunction("f(x)" => "sqrt(x+1)-2");</code>
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserImplicitEquation.pl parserImplicitEquation.pl]
+
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserImplicitEquation.pl.html parserImplicitEquation.pl]
 
** An answer checker for implicit equations.
 
** An answer checker for implicit equations.
 
Context("ImplicitEquation");
 
Context("ImplicitEquation");
Line 45: Line 45:
 
$f = ImplicitEquation("x^2 - 2y^2 = 5",limits=>[[-3,3],[-2,2]]);
 
$f = ImplicitEquation("x^2 - 2y^2 = 5",limits=>[[-3,3],[-2,2]]);
 
$f = ImplicitEquation("x=1/y",tolerance=>.0001);
 
$f = ImplicitEquation("x=1/y",tolerance=>.0001);
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserImplicitPlane.pl parserImplicitPlane.pl]
+
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserImplicitPlane.pl.html parserImplicitPlane.pl]
 
** Implement implicit planes.
 
** Implement implicit planes.
 
$P = ImplicitPlane(Point(1,0,2),Vector(-1,1,3)); # -x+y+3z = 5
 
$P = ImplicitPlane(Point(1,0,2),Vector(-1,1,3)); # -x+y+3z = 5
Line 51: Line 51:
 
$P = ImplicitPlane([1,0,2],4); # x+2z = 4
 
$P = ImplicitPlane([1,0,2],4); # x+2z = 4
 
$P = ImplicitPlane("x+2y-z=5");
 
$P = ImplicitPlane("x+2y-z=5");
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserMultiAnswer.pl parserMultiAnswer.pl]
+
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserMultiAnswer.pl.html parserMultiAnswer.pl]
 
** Tie several blanks to a single answer checker.
 
** Tie several blanks to a single answer checker.
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserNumberWithUnits.pl parserNumberWithUnits.pl]
+
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserNumberWithUnits.pl.html parserNumberWithUnits.pl]
 
** Implements a number with units.
 
** Implements a number with units.
 
ANS(NumberWithUnits("3 ft")->cmp);
 
ANS(NumberWithUnits("3 ft")->cmp);
 
ANS(NumberWithUnits("$a*$b ft")->cmp);
 
ANS(NumberWithUnits("$a*$b ft")->cmp);
 
ANS(NumberWithUnits($a*$b,"ft")->cmp);
 
ANS(NumberWithUnits($a*$b,"ft")->cmp);
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserParametricLine.pl parserParametricLine.pl]
+
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserParametricLine.pl.html parserParametricLine.pl]
 
** Implements Formulas that represent parametric lines.
 
** Implements Formulas that represent parametric lines.
 
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserPopUp.pl.html parserPopUp.pl]
 
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserPopUp.pl.html parserPopUp.pl]
Line 67: Line 67:
 
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserRadioButtons.pl.html parserRadioButtons.pl]
 
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserRadioButtons.pl.html parserRadioButtons.pl]
 
** Radio buttons compatible with Value objects, specifically MultiAnswer objects.
 
** Radio buttons compatible with Value objects, specifically MultiAnswer objects.
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserSolutionFor.pl parserSolutionFor.pl]
+
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserSolutionFor.pl.html parserSolutionFor.pl]
 
** An answer checker that checks if a student's answer satisifies a (possibly non-linear) implicit equation.
 
** An answer checker that checks if a student's answer satisifies a (possibly non-linear) implicit equation.
 
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserVectorUtils.pl.html parserVectorUtils.pl]
 
* [http://webwork.maa.org/pod/pg_TRUNK/macros/parserVectorUtils.pl.html parserVectorUtils.pl]

Revision as of 14:03, 2 February 2012

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 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.