NAME

Logic::Expr - logical expression parsing and related routines

SYNOPSIS

use Logic::Expr::Parser;

# Parser::MGC also supports "from_file"
my $le = Logic::Expr::Parser->new->from_string('Xv~Y');

# and then see Logic::Expr for uses of the $le object

DESCRIPTION

This module parses logic expressions and returns a Logic::Expr object, which in turn has various methods for acting on the expression thus parsed.

Parser::MGC is the parent class used to parse the expressions; from_string and from_file are the most relevant methods.

SYNTAX SANS EBNF

The usual atomic letters (X, Y, etc) are extended to include words in capital letters to allow for more than 26 atoms, or at least more descriptive names, for better or worse.

Operators include ! or ~ for negation of the subsequent atom or parenthesized term, and the binary operators

| v  or            TTTF lojban .a
&    and           TFFF lojban .e
->   conditional   TFTT lojban .a with first term negated
==   biconditional TFFT lojban .o

which taken together allow for such expressions as

X&!Y
GILBERT&SULLIVAN
(CAT|DOG)->FISH
ALIENvPREDICATOR
ETC

MINUTIAE

Code coverage tools can be persnickety about these sorts of things.

on_parse_end

Internal Parser::MGC hook function.

parse

Internal Parser::MGC function.

BUGS

None known.

COPYRIGHT AND LICENSE

Copyright 2022 Jeremy Mates

This program is distributed under the (Revised) BSD License: https://opensource.org/licenses/BSD-3-Clause