Skip to content

Commit

Permalink
deploy: b5178c7
Browse files Browse the repository at this point in the history
  • Loading branch information
ericlin-jpg committed Jul 8, 2023
1 parent c95b57d commit 9e5a0eb
Show file tree
Hide file tree
Showing 48 changed files with 223 additions and 138 deletions.
46 changes: 43 additions & 3 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>LogiXpr: Main Page</title>
<title>LogiXpr: LogiXpr</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
Expand Down Expand Up @@ -62,10 +62,50 @@

<div class="PageDoc"><div class="header">
<div class="headertitle">
<div class="title">LogiXpr Documentation</div> </div>
<div class="title">LogiXpr </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><a class="anchor" id="md_README"></a> LogiXpr </p>
<div class="textblock"><p><a class="anchor" id="md_README"></a><img src="https://img.shields.io/github/license/ericlin-jpg/LogiXpr" alt="License" class="inline"/> <a href="https://ericlin-jpg.github.io/LogiXpr/"><img src="https://img.shields.io/badge/docs-read-blue" alt="Static Badge" class="inline"/></a> <img src="https://img.shields.io/github/repo-size/EricLin-jpg/LogiXpr" alt="GitHub repo size" class="inline"/></p>
<p>LogiXpr is a C++ console application that evaluates boolean expressions. It supports the following operators:</p><ul>
<li><code>!</code> - not</li>
<li><code>&amp;</code> - and</li>
<li><code>|</code> - or</li>
<li><code>^</code> - xor</li>
<li><code>-&gt;</code> - implies</li>
<li><code>&lt;=&gt;</code> - if and only if</li>
</ul>
<p>It also supports the following constants:</p><ul>
<li><code>T</code> - true</li>
<li><code>F</code> - false</li>
</ul>
<p>And variables from <code>a</code> to <code>z</code>.</p>
<h1><a class="anchor" id="autotoc_md1"></a>
How it works</h1>
<p>LogiXpr utilizes the shunting yard algorithm to convert expressions into abstract syntax trees (ASTs). These ASTs are subsequently evaluated to determine their equivalence using a truth table analysis. If an equivalence is detected, LogiXpr proceeds to recursively evaluate the initial AST by testing each node against the possible equivalences defined in the <code>include\<a class="el" href="equivLaws_8h.html" title="Header file for equivalence laws class.">equivLaws.h</a></code> file.</p>
<p>To find the shortest equivalent expression, LogiXpr employs a breadth-first search algorithm. This search algorithm systematically explores various transformations and evaluates the resulting expressions at each level. By leveraging the breadth-first search approach, LogiXpr efficiently identifies the shortest equivalent expression by considering all possible transformations at each step before delving deeper into the search space.</p>
<h1><a class="anchor" id="autotoc_md2"></a>
Preview</h1>
<div style="display: flex;"> <div style="flex: 50%; padding-right: 5px;"> <img src="preview/preview_1.png" alt="Preview 1" width="100%" class="inline"/> </div> <div style="flex: 50%; padding-left: 5px;"> <img src="preview/preview_2.png" alt="Preview 2" width="100%" class="inline"/> </div> </div><h1><a class="anchor" id="autotoc_md3"></a>
Installation</h1>
<p>To build and install LogiXpr, you will need to have CMake installed on your system. You can download CMake from the official website: <a href="https://cmake.org/download/">https://cmake.org/download/</a>.</p>
<ol type="1">
<li>Clone the repository <div class="fragment"><div class="line">git clone https://github.com/ericlin-jpg/LogiXpr.git</div>
</div><!-- fragment --></li>
<li>Create a build directory <div class="fragment"><div class="line">cd LogiXpr</div>
<div class="line">mkdir build</div>
<div class="line">cd build</div>
</div><!-- fragment --></li>
<li>Run CMake <div class="fragment"><div class="line">cmake ..</div>
</div><!-- fragment --></li>
<li>Build the project <div class="fragment"><div class="line">cmake --build . --config Release</div>
</div><!-- fragment --></li>
<li>Go to the <code>bin</code> directory and run the executable <div class="fragment"><div class="line">cd bin</div>
<div class="line">./LogiXpr</div>
</div><!-- fragment --></li>
</ol>
<h1><a class="anchor" id="autotoc_md4"></a>
Running Unit Tests</h1>
<p>To run the unit tests in <code>tests</code>, run <code>build.sh</code>. </p>
</div></div><!-- PageDoc -->
</div><!-- contents -->
<!-- start footer part -->
Expand Down
10 changes: 5 additions & 5 deletions search/all_10.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
var searchData=
[
['tokenize_102',['tokenize',['../group__parser.html#ga8432bd0a0fa24dbd96290cbefd1ad628',1,'tokenize(std::string expression):&#160;parser.cpp'],['../group__parser.html#ga8432bd0a0fa24dbd96290cbefd1ad628',1,'tokenize(std::string expression):&#160;parser.cpp']]],
['tostring_103',['toString',['../classExpression.html#a6c01eb2a04250284ec1562f4830e0b68',1,'Expression']]],
['tostringminimal_104',['toStringMinimal',['../classExpression.html#adfab3be63e7acf2f6ed671eadc78c418',1,'Expression']]],
['tostringtree_105',['toStringTree',['../classExpression.html#a72d091fe31b94dec8bcb6a359ccedafb',1,'Expression']]],
['true_106',['TRUE',['../group__stringMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d',1,'expression.h']]]
['tokenize_103',['tokenize',['../group__parser.html#ga8432bd0a0fa24dbd96290cbefd1ad628',1,'tokenize(std::string expression):&#160;parser.cpp'],['../group__parser.html#ga8432bd0a0fa24dbd96290cbefd1ad628',1,'tokenize(std::string expression):&#160;parser.cpp']]],
['tostring_104',['toString',['../classExpression.html#a6c01eb2a04250284ec1562f4830e0b68',1,'Expression']]],
['tostringminimal_105',['toStringMinimal',['../classExpression.html#adfab3be63e7acf2f6ed671eadc78c418',1,'Expression']]],
['tostringtree_106',['toStringTree',['../classExpression.html#a72d091fe31b94dec8bcb6a359ccedafb',1,'Expression']]],
['true_107',['TRUE',['../group__stringMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d',1,'expression.h']]]
];
2 changes: 1 addition & 1 deletion search/all_11.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var searchData=
[
['value_107',['value',['../classExpression.html#adda79355b3caba02c27fe815c3f81769',1,'Expression']]]
['value_108',['value',['../classExpression.html#adda79355b3caba02c27fe815c3f81769',1,'Expression']]]
];
2 changes: 1 addition & 1 deletion search/all_12.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var searchData=
[
['xor_108',['XOR',['../group__stringMacros.html#ga45cd11034d1a7d86c3a88d36f5e7f1ab',1,'expression.h']]]
['xor_109',['XOR',['../group__stringMacros.html#ga45cd11034d1a7d86c3a88d36f5e7f1ab',1,'expression.h']]]
];
3 changes: 2 additions & 1 deletion search/all_9.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
var searchData=
[
['laws_76',['laws',['../classEquivLaws.html#a2cedb4157e4f9bdce82bb14138d10459',1,'EquivLaws']]],
['left_77',['left',['../classExpression.html#a77cb37b491d271a0e61f6144fb81e382',1,'Expression']]]
['left_77',['left',['../classExpression.html#a77cb37b491d271a0e61f6144fb81e382',1,'Expression']]],
['logixpr_78',['LogiXpr',['../index.html',1,'']]]
];
4 changes: 2 additions & 2 deletions search/all_a.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var searchData=
[
['main_78',['main',['../main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main.cpp']]],
['main_2ecpp_79',['main.cpp',['../main_8cpp.html',1,'']]]
['main_79',['main',['../main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main.cpp']]],
['main_2ecpp_80',['main.cpp',['../main_8cpp.html',1,'']]]
];
4 changes: 2 additions & 2 deletions search/all_b.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var searchData=
[
['negation_80',['negation',['../classEquivLaws.html#ad98580eb9e0a31f095de0c32d8413437',1,'EquivLaws']]],
['not_81',['NOT',['../group__stringMacros.html#gad3e9fe0ec59d2dbb3982ababa042720c',1,'expression.h']]]
['negation_81',['negation',['../classEquivLaws.html#ad98580eb9e0a31f095de0c32d8413437',1,'EquivLaws']]],
['not_82',['NOT',['../group__stringMacros.html#gad3e9fe0ec59d2dbb3982ababa042720c',1,'expression.h']]]
];
4 changes: 2 additions & 2 deletions search/all_c.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var searchData=
[
['open_82',['OPEN',['../group__stringMacros.html#ga1354b70ac6803a06beebe84f61b5f95b',1,'expression.h']]],
['or_83',['OR',['../group__stringMacros.html#ga3363ca4d6d3cc0230b2804280591c991',1,'expression.h']]]
['open_83',['OPEN',['../group__stringMacros.html#ga1354b70ac6803a06beebe84f61b5f95b',1,'expression.h']]],
['or_84',['OR',['../group__stringMacros.html#ga3363ca4d6d3cc0230b2804280591c991',1,'expression.h']]]
];
14 changes: 7 additions & 7 deletions search/all_d.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions search/all_e.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var searchData=
[
['readme_2emd_91',['README.md',['../README_8md.html',1,'']]],
['replace_92',['replace',['../classEquivLaws.html#a464b315e2ce4946447041066e69d1e05',1,'EquivLaws']]],
['right_93',['right',['../classExpression.html#a0156954da1ef8ecbde7994ba001fc265',1,'Expression']]]
['readme_2emd_92',['README.md',['../README_8md.html',1,'']]],
['replace_93',['replace',['../classEquivLaws.html#a464b315e2ce4946447041066e69d1e05',1,'EquivLaws']]],
['right_94',['right',['../classExpression.html#a0156954da1ef8ecbde7994ba001fc265',1,'Expression']]]
];
16 changes: 8 additions & 8 deletions search/all_f.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
var searchData=
[
['setleft_94',['setLeft',['../classExpression.html#afa65e7451f6b17779c2a44e7c388dd00',1,'Expression']]],
['setparent_95',['setParent',['../classExpression.html#ab7f8b63431f2d840612fe5a48d11c7c2',1,'Expression']]],
['setright_96',['setRight',['../classExpression.html#a475e30b6c83e8b4ee7f5e761431d51d0',1,'Expression']]],
['solver_20functions_97',['Solver functions',['../group__solver.html',1,'']]],
['solver_2ecpp_98',['solver.cpp',['../solver_8cpp.html',1,'']]],
['solver_2eh_99',['solver.h',['../solver_8h.html',1,'']]],
['string_20macros_100',['String macros',['../group__stringMacros.html',1,'']]],
['success_101',['SUCCESS',['../main_8cpp.html#aa90cac659d18e8ef6294c7ae337f6b58',1,'main.cpp']]]
['setleft_95',['setLeft',['../classExpression.html#afa65e7451f6b17779c2a44e7c388dd00',1,'Expression']]],
['setparent_96',['setParent',['../classExpression.html#ab7f8b63431f2d840612fe5a48d11c7c2',1,'Expression']]],
['setright_97',['setRight',['../classExpression.html#a475e30b6c83e8b4ee7f5e761431d51d0',1,'Expression']]],
['solver_20functions_98',['Solver functions',['../group__solver.html',1,'']]],
['solver_2ecpp_99',['solver.cpp',['../solver_8cpp.html',1,'']]],
['solver_2eh_100',['solver.h',['../solver_8h.html',1,'']]],
['string_20macros_101',['String macros',['../group__stringMacros.html',1,'']]],
['success_102',['SUCCESS',['../main_8cpp.html#aa90cac659d18e8ef6294c7ae337f6b58',1,'main.cpp']]]
];
4 changes: 2 additions & 2 deletions search/classes_0.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var searchData=
[
['equivlaws_109',['EquivLaws',['../classEquivLaws.html',1,'']]],
['expression_110',['Expression',['../classExpression.html',1,'']]]
['equivlaws_110',['EquivLaws',['../classEquivLaws.html',1,'']]],
['expression_111',['Expression',['../classExpression.html',1,'']]]
];
2 changes: 1 addition & 1 deletion search/defines_0.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var searchData=
[
['alert_202',['ALERT',['../main_8cpp.html#ada3f1f3fa9b684d837200490fbb07c26',1,'main.cpp']]]
['alert_203',['ALERT',['../main_8cpp.html#ada3f1f3fa9b684d837200490fbb07c26',1,'main.cpp']]]
];
2 changes: 1 addition & 1 deletion search/defines_1.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var searchData=
[
['failure_203',['FAILURE',['../main_8cpp.html#a6d58f9ac447476b4e084d7ca383f5183',1,'main.cpp']]]
['failure_204',['FAILURE',['../main_8cpp.html#a6d58f9ac447476b4e084d7ca383f5183',1,'main.cpp']]]
];
2 changes: 1 addition & 1 deletion search/defines_2.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var searchData=
[
['success_204',['SUCCESS',['../main_8cpp.html#aa90cac659d18e8ef6294c7ae337f6b58',1,'main.cpp']]]
['success_205',['SUCCESS',['../main_8cpp.html#aa90cac659d18e8ef6294c7ae337f6b58',1,'main.cpp']]]
];
12 changes: 6 additions & 6 deletions search/files_0.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
var searchData=
[
['equivlaws_2ecpp_111',['equivLaws.cpp',['../equivLaws_8cpp.html',1,'']]],
['equivlaws_2eh_112',['equivLaws.h',['../equivLaws_8h.html',1,'']]],
['evaluator_2ecpp_113',['evaluator.cpp',['../evaluator_8cpp.html',1,'']]],
['evaluator_2eh_114',['evaluator.h',['../evaluator_8h.html',1,'']]],
['expression_2ecpp_115',['expression.cpp',['../expression_8cpp.html',1,'']]],
['expression_2eh_116',['expression.h',['../expression_8h.html',1,'']]]
['equivlaws_2ecpp_112',['equivLaws.cpp',['../equivLaws_8cpp.html',1,'']]],
['equivlaws_2eh_113',['equivLaws.h',['../equivLaws_8h.html',1,'']]],
['evaluator_2ecpp_114',['evaluator.cpp',['../evaluator_8cpp.html',1,'']]],
['evaluator_2eh_115',['evaluator.h',['../evaluator_8h.html',1,'']]],
['expression_2ecpp_116',['expression.cpp',['../expression_8cpp.html',1,'']]],
['expression_2eh_117',['expression.h',['../expression_8h.html',1,'']]]
];
2 changes: 1 addition & 1 deletion search/files_1.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var searchData=
[
['main_2ecpp_117',['main.cpp',['../main_8cpp.html',1,'']]]
['main_2ecpp_118',['main.cpp',['../main_8cpp.html',1,'']]]
];
4 changes: 2 additions & 2 deletions search/files_2.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var searchData=
[
['parser_2ecpp_118',['parser.cpp',['../parser_8cpp.html',1,'']]],
['parser_2eh_119',['parser.h',['../parser_8h.html',1,'']]]
['parser_2ecpp_119',['parser.cpp',['../parser_8cpp.html',1,'']]],
['parser_2eh_120',['parser.h',['../parser_8h.html',1,'']]]
];
2 changes: 1 addition & 1 deletion search/files_3.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var searchData=
[
['readme_2emd_120',['README.md',['../README_8md.html',1,'']]]
['readme_2emd_121',['README.md',['../README_8md.html',1,'']]]
];
4 changes: 2 additions & 2 deletions search/files_4.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var searchData=
[
['solver_2ecpp_121',['solver.cpp',['../solver_8cpp.html',1,'']]],
['solver_2eh_122',['solver.h',['../solver_8h.html',1,'']]]
['solver_2ecpp_122',['solver.cpp',['../solver_8cpp.html',1,'']]],
['solver_2eh_123',['solver.h',['../solver_8h.html',1,'']]]
];
6 changes: 3 additions & 3 deletions search/functions_0.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var searchData=
[
['absorption_123',['absorption',['../classEquivLaws.html#a688085551abdc907ade11ca45da406cb',1,'EquivLaws']]],
['associative_124',['associative',['../classEquivLaws.html#a49aed8dae1a6e850bd976c02873401bc',1,'EquivLaws']]],
['associativereversed_125',['associativeReversed',['../classEquivLaws.html#ab3ac59b7e474af1558614859a423c162',1,'EquivLaws']]]
['absorption_124',['absorption',['../classEquivLaws.html#a688085551abdc907ade11ca45da406cb',1,'EquivLaws']]],
['associative_125',['associative',['../classEquivLaws.html#a49aed8dae1a6e850bd976c02873401bc',1,'EquivLaws']]],
['associativereversed_126',['associativeReversed',['../classEquivLaws.html#ab3ac59b7e474af1558614859a423c162',1,'EquivLaws']]]
];
18 changes: 9 additions & 9 deletions search/functions_1.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
var searchData=
[
['bidirectionalimplication0_126',['bidirectionalImplication0',['../classEquivLaws.html#a0a674a082136e812b2534a6dc41e3b2b',1,'EquivLaws']]],
['bidirectionalimplication0reversed_127',['bidirectionalImplication0Reversed',['../classEquivLaws.html#ae478888f9d88af1e7a332ec094b50240',1,'EquivLaws']]],
['bidirectionalimplication1_128',['bidirectionalImplication1',['../classEquivLaws.html#ac215fdf1005eb0e68e02aec0a944f9e2',1,'EquivLaws']]],
['bidirectionalimplication2_129',['bidirectionalImplication2',['../classEquivLaws.html#a8d89920dfe378458c815f9984b917ce5',1,'EquivLaws']]],
['bidirectionalimplication2reversed_130',['bidirectionalImplication2Reversed',['../classEquivLaws.html#a2d4f6a5c6ef8b0a77a9db644e3f5a5dc',1,'EquivLaws']]],
['bidirectionalimplication3_131',['bidirectionalImplication3',['../classEquivLaws.html#a2b060a607ed9ce4fd1bedbf9eba2774d',1,'EquivLaws']]],
['bidirectionalimplication3reversed_132',['bidirectionalImplication3Reversed',['../classEquivLaws.html#adda0d2f3195397f28b85c8e8b7a2fd46',1,'EquivLaws']]],
['bidirectionalimplication4_133',['bidirectionalImplication4',['../classEquivLaws.html#af6a98182da383e73e51d32cecd92fedc',1,'EquivLaws']]],
['bidirectionalimplication4reversed_134',['bidirectionalImplication4Reversed',['../classEquivLaws.html#ac9b31f5118e554eb3232314806d45d90',1,'EquivLaws']]]
['bidirectionalimplication0_127',['bidirectionalImplication0',['../classEquivLaws.html#a0a674a082136e812b2534a6dc41e3b2b',1,'EquivLaws']]],
['bidirectionalimplication0reversed_128',['bidirectionalImplication0Reversed',['../classEquivLaws.html#ae478888f9d88af1e7a332ec094b50240',1,'EquivLaws']]],
['bidirectionalimplication1_129',['bidirectionalImplication1',['../classEquivLaws.html#ac215fdf1005eb0e68e02aec0a944f9e2',1,'EquivLaws']]],
['bidirectionalimplication2_130',['bidirectionalImplication2',['../classEquivLaws.html#a8d89920dfe378458c815f9984b917ce5',1,'EquivLaws']]],
['bidirectionalimplication2reversed_131',['bidirectionalImplication2Reversed',['../classEquivLaws.html#a2d4f6a5c6ef8b0a77a9db644e3f5a5dc',1,'EquivLaws']]],
['bidirectionalimplication3_132',['bidirectionalImplication3',['../classEquivLaws.html#a2b060a607ed9ce4fd1bedbf9eba2774d',1,'EquivLaws']]],
['bidirectionalimplication3reversed_133',['bidirectionalImplication3Reversed',['../classEquivLaws.html#adda0d2f3195397f28b85c8e8b7a2fd46',1,'EquivLaws']]],
['bidirectionalimplication4_134',['bidirectionalImplication4',['../classEquivLaws.html#af6a98182da383e73e51d32cecd92fedc',1,'EquivLaws']]],
['bidirectionalimplication4reversed_135',['bidirectionalImplication4Reversed',['../classEquivLaws.html#ac9b31f5118e554eb3232314806d45d90',1,'EquivLaws']]]
];
Loading

0 comments on commit 9e5a0eb

Please sign in to comment.