Math/BooleanEval version 1.00
========================

NAME
    Math::BooleanEval - Boolean expression parser

SYNOPSIS
     use Math::BooleanEval;
     my $bool = Math::BooleanEval->new('yes|no');

     # evaluate each defined item in the expression to 1 or 0
     foreach my $item (@{$bool->{'arr'}}){
        next unless defined $item;
        $item = ($item =~ m/^no|off|false|null$/i) ? 0 : 1;
     }

     # evaluate the expression
     print $bool->eval();

DESCRIPTION
    BooleanEval parses a boolean expression and creates an array of elements
    in the expression. By setting each element to 1 or 0 you can evaluate
    the expression. The expression is parsed on the standard boolean
    delimiters:

     & | () ! ? :

    Using BooleanEval involves three steps: instantiate an object, loop
    through the elements of the expression setting each to 1 or 0, then call
    eval();

    To create a new object, call new(), passing the expression as the single
    argument:

     $bool = BooleanEval->new('yes|no');

    Generally the easiest way to set each element is to use a foreach loop:

     foreach my $item (@{$bool->{'arr'}}){
        next unless defined $item;
            $item = ($item =~ m/^no|off|false|null$/i) ? 1 : 0;
     }

    Notice that the first thing to do at the top of the loop is to check if
    the item is defined. If it is not defined leave it as it is. Otherwise,
    use the item for whatever checks you like. In the example above we test
    if the item is one of the standard English words for false. Set the item
    to 1 or 0, nothing else.

    Finally, get the evaluation of the expression with the eval() method:

     print $bool->eval();

PUBLIC INTERFACE
  Math::BooleanEval->new(expression)

    Instantiates a BooleanEval object.

  $bool->reset()

    Resets the object for another round of setting and evaluating. The
    object automatically resets after "eval()" unless you set the
    "auto_reset" property to false (by default it's true), so it's not
    usually necessary to reset after calling "eval".

  $bool->eval()

    Evaluates the expression. By the time you call this method you should
    have set all elements in the {'arr'} array to 1, 0, or left them
    undefined if that's how they were to begin with. See examples above.

  syntaxcheck()

    Returns true if the expression is syntacally valid, false if not. For
    example, "Me & You" would return true but "Me & | You" would return
    false.

    "syntaxcheck" can be called as either an object method:

      if ($bool->syntaxcheck)

    or as a static sub:

      if (Math::BooleanEval::syntaxcheck($expr))

TERMS AND CONDITIONS
    Copyright (c) 2000 by Miko O'Sullivan. All rights reserved. This program
    is free software; you can redistribute it and/or modify it under the
    same terms as Perl itself. This software comes with NO WARRANTY of any
    kind.

AUTHOR
    Miko O'Sullivan miko@idocs.com

    Created: Sometime around the end of the twentieth century. I'm kind of
    vague on the exact date.

VERSION
      Version 0.9    December 18, 2000
      Original release.
  
      Version 0.91   Oct 15, 2001
      Same as 0.9, but hopefully more properly packaged for CPAN.  We'll see.
  
      Version 1.00   July 11, 2002
      Added reset method.
      Cleaned up documentation.

