Log of /trunk/pg/macros/Parser.pl
Parent Directory
Revision
3172 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Feb 15 21:58:54 2005 UTC (8 years, 3 months ago) by
dpvc
File length: 5367 byte(s)
Diff to
previous 2666
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
2666 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sun Aug 22 00:56:32 2004 UTC (8 years, 9 months ago) by
dpvc
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
2576 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Added
Wed Aug 4 20:52:28 2004 UTC (8 years, 9 months ago) by
dpvc
File length: 4715 byte(s)
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.