Difference between revisions of "Specialized parsers"
Jump to navigation
Jump to search
(3 intermediate revisions by 2 users not shown) | |||
Line 5: | Line 5: | ||
Examples of modifications are give below. |
Examples of modifications are give below. |
||
− | A description of advanced techniques for customizing the parser are at [[ |
+ | A description of advanced techniques for customizing the parser are at [[Modifying Contexts (advanced)]]. |
=== Specialized Parser Macro files === |
=== Specialized Parser Macro files === |
||
Line 12: | Line 12: | ||
Use <code>loadMacros("parserAssignment.pl");</code> to make the parser modifications available for a WeBWorK question. |
Use <code>loadMacros("parserAssignment.pl");</code> to make the parser modifications available for a WeBWorK question. |
||
− | Check the [http://webwork.maa.org/pod/ |
+ | Check the [http://webwork.maa.org/pod/pg POD documentation for more examples.] |
− | * [http://webwork.maa.org/pod/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserAssignment.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/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserAutoStrings.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/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserCustomization.html parserCustomization.pl] |
** Placeholder for site/course-local customization file. |
** Placeholder for site/course-local customization file. |
||
− | * [http://webwork.maa.org/pod/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserDifferenceQuotient.html parserDifferenceQuotient.pl] |
** An answer checker for difference quotients. |
** An answer checker for difference quotients. |
||
− | * [http://webwork.maa.org/pod/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserFormulaUpToConstant.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/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserFormulaWithUnits.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/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserFunction.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/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserImplicitEquation.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/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserImplicitPlane.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/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserMultiAnswer.html parserMultiAnswer.pl] |
** Tie several blanks to a single answer checker. |
** Tie several blanks to a single answer checker. |
||
− | * [http://webwork.maa.org/pod/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserNumberWithUnits.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/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserParametricLine.html parserParametricLine.pl] |
** Implements Formulas that represent parametric lines. |
** Implements Formulas that represent parametric lines. |
||
− | * [http://webwork.maa.org/pod/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserPopUp.html parserPopUp.pl] |
** Pop-up menus compatible with Value objects. |
** Pop-up menus compatible with Value objects. |
||
− | * [http://webwork.maa.org/pod/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserPrime.html parserPrime.pl] |
** Defines <code> f'(x)</code> so that students and authors can use the prime notation in defining equations. |
** Defines <code> f'(x)</code> so that students and authors can use the prime notation in defining equations. |
||
** After loading file use perl command <code>parser::Prime->Enable;</code> to enable the feature. |
** After loading file use perl command <code>parser::Prime->Enable;</code> to enable the feature. |
||
− | * [http://webwork.maa.org/pod/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserRadioButtons.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/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserSolutionFor.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/ |
+ | * [http://webwork.maa.org/pod/pg/macros/parserVectorUtils.html parserVectorUtils.pl] |
** Utility macros that are useful in vector problems. |
** Utility macros that are useful in vector problems. |
||
− | [[Category:MathObjects]] |
||
+ | |||
[[Category:Contexts]] |
[[Category:Contexts]] |
||
+ | [[Category:MathObjects]] |
||
+ | [[Category:Reference Tables]] |
Latest revision as of 16:24, 7 April 2021
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.
- parserCustomization.pl
- Placeholder for site/course-local customization file.
- parserDifferenceQuotient.pl
- An answer checker for difference quotients.
- parserFormulaUpToConstant.pl
- implements formulas ``plus a constant.
- Students must include the ``+C as part of their answers
- parserFormulaWithUnits.pl
- Implements a formula with units.
- For example:
FormulaWithUnits("3x+1 ft")->cmp FormulaWithUnits($a*$x+1,"ft")->cmp
- parserFunction.pl
- An easy way of adding new functions to the current context.
parserFunction("f(x)" => "sqrt(x+1)-2");
- parserImplicitEquation.pl
- An answer checker for implicit equations.
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);
- parserImplicitPlane.pl
- Implement implicit planes.
$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");
- parserMultiAnswer.pl
- Tie several blanks to a single answer checker.
- parserNumberWithUnits.pl
- Implements a number with units.
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.
- Defines
- 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.