Difference between revisions of "Specialized parsers"

From WeBWorK_wiki
Jump to navigation Jump to search
Line 8: Line 8:
   
 
=== Specialized Parser Macro files ===
 
=== Specialized Parser Macro files ===
Here is a partial list of the parser modifying files.
+
Here is a partial list of the parser modifying files.
Check the [http://webwork.maa.org/pod/pg_TRUNK/ POD documentation for more examples.]
+
 
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/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 parserAssignment.pl]

Revision as of 09:45, 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);