[system] / trunk / pg / macros / Parser.pl Repository:
ViewVC logotype

Log of /trunk/pg/macros/Parser.pl

Parent Directory Parent Directory


Links to HEAD: (view) (download) (as text) (annotate)
Sticky Revision:

Revision 3588 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Aug 30 00:41:34 2005 UTC (14 years, 5 months ago) by dpvc
File length: 5406 byte(s)
Diff to previous 3172
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 3172 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Feb 15 21:58:54 2005 UTC (15 years 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 (15 years, 5 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 2644 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Aug 19 12:01:12 2004 UTC (15 years, 6 months ago) by dpvc
File length: 5307 byte(s)
Diff to previous 2602
Make sure loadMacros() doesn't try to load these files more than once.

Revision 2602 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Aug 13 22:57:27 2004 UTC (15 years, 6 months ago) by dpvc
File length: 5248 byte(s)
Diff to previous 2576
Changed the way the parser checks to see if it is loaded.

Revision 2576 - (view) (download) (as text) (annotate) - [select for diffs]
Added Wed Aug 4 20:52:28 2004 UTC (15 years, 6 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.

  Diffs between and
  Type of Diff should be a

Sort log by:

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9