Links to HEAD: | (view) (download) (as text) (annotate) |

Sticky Revision: |

Revision

Modified

File length: 6763 byte(s)

Diff to previous 5368 , to selected 2644

Normalized comments and headers to that they will format their POD documentation properly. (I know that the POD processing was supposed to strip off the initial #, but that doesn't seem to happen, so I've added a space throughout.)

Revision

Modified

File length: 6730 byte(s)

Diff to previous 5071 , to selected 2644

Make Compute() retain the original Formula as well as the correct answer string (for reference if you need it). Also provide a hook for subclasses of Parser::Item to force a Formula to be computed as a Formula-based Value object (e.g., this is needed for PiecewiseFunctions, which don't compute to constants, but don't want to be Formula's either).

Revision

Modified

File length: 6404 byte(s)

Diff to previous 4997 , to selected 2644

Correct and expand some documentation.

Revision

Modified

File length: 5611 byte(s)

Diff to previous 4990 , to selected 2644

Fixing docementation so that it can be read from the web.

Revision

Modified

File length: 5480 byte(s)

Diff to previous 4983 , to selected 2644

More updates to use the new Value->Package() call. This will make the standard object-creation functions like Real() and Complex() use the new lookup method.

Revision

Modified

File length: 5469 byte(s)

Diff to previous 3588 , to selected 2644

Allow Compute() to create formulas as well as Value objects (with the correct answer set to the original formula). Also update some comments and formatting.

Revision

Modified

File length: 5406 byte(s)

Diff to previous 3172 , to selected 2644

Added a parserCustomization.pl file that is loaded whenever the Parser.pl file is. This can be used on a course-by-course basis to customize features of the Parser. Some examples are listed in the file. You need to be VERY careful when doing this, as this will affect ALL problems that use the Parser. Your changes may cause some .pg files to fail if they rely on the default behavior that you are changing. If you wish to override settings in one of the predefined contexts (like "Vector"), then define $context{Vector} as a copy of $Parser::Context::Default::context{Vector}, as in the commented out examples. Then Context("Vector") will use your copy rather than the original. If you were to change the version in Parser::Context::Default, that would change the parser for ALL courses, not just yours.

Revision

Modified

File length: 5367 byte(s)

Diff to previous 2666 , to selected 2644

Updated the answer checkers so that you can more easily specify how the correct answer shoudl be displayed. In the past, you could use something like Real(sqrt(2))->cmp(correct_ans=>"sqrt(2)") to do this, but that is awkward. Now the Compute() function (which parses and then evaluates a string) sets things up so that the original string will be what is used as the correct answer. That means Compute("sqrt(2)")->cmp will have the same result as the example above. You can also set the {correct_ans} properly of any Parser object to have that value used as the correct answer. For example $x = Real(sqrt(2)); $x->{correct_ans} = "sqrt(2)"; ANS($x->cmp) would also produce the same answer checker as the two previous examples. All three methods should work. Use the one that is most convenient for you.

Revision

Modified

File length: 5306 byte(s)

Diff to previous 2644

Formulas can now be compared even if their variables are complex numbers, or even points or vectors! This makes it possible to ask students for complex functions like z^2+i and so on. You can specify limits for variables either via Context()->variables->set(x=>{limits=>[0,1]}) (for reals) or Context()->variables->set(z=>{limits=>[[-2,2],[0,1]]}) (for complexes). Similarly for points and vectors (where the number of sub arrays depends on the dimension). You can also give the limits for a specific formula by assigning to its ->{limits} field: $f = Formula("sqrt(x-10)"); $f->{limits} = [10,12]; There are now named variable types for 'Point2D', 'Point3D', 'Vector2D' and 'Vector3D', in addition to 'Real' and 'Complex'. You can also specify a variable type by giving an explicit instance of a value of the given type. E.g. Context()->variables->add(x=>'Real',y=>0); # two real variables Context()->variables->add(z=>'Complex',w=>i); # two complexes Context()->variables->add(r=>Vector(0,0,0)); # a vector in R^3 Context()->variables->add(X=>'Vector3D'); # a vector in R^3 There still needs to be more error checking in processing user-supplied limits, but I'm not sure how much overhead is worth it.

Revision

Modified

File length: 5307 byte(s)

Diff to previous 2602

Make sure loadMacros() doesn't try to load these files more than once.

Revision

Modified

File length: 5248 byte(s)

Diff to previous 2576 , to selected 2644

Changed the way the parser checks to see if it is loaded.

Revision

Added

File length: 4715 byte(s)

Diff to selected 2644

Make Parser work with PGauxiliaryFunctions.pl, and add the macro files needed to initialize the parser.

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.

aubreyja at gmail dot com | ViewVC Help |

Powered by ViewVC 1.0.9 |