@@ -9,22 +9,32 @@ static void Main(params string[] args)
99 {
1010 Console . OutputEncoding = Encoding . UTF8 ;
1111
12+ List < ExpressionWrapper > expressions ;
13+
1214 if ( args . Length == 0 )
1315 {
14- args = QueryExpressions ( ) ;
16+ expressions = QueryExpressions ( ) ;
17+ }
18+ else
19+ {
20+ expressions = new List < ExpressionWrapper > ( ) ;
21+ foreach ( string arg in args )
22+ {
23+ expressions . Add ( new ExpressionWrapper ( arg ) ) ;
24+ }
1525 }
1626
1727 var tables = new List < string > ( ) ;
1828
19- foreach ( var expression in args )
29+ foreach ( var expression in expressions )
2030 {
21- var tokeniser = new Tokeniser ( expression ) ;
31+ var tokeniser = new Tokeniser ( expression . Expression ) ;
2232 var infixTokens = tokeniser . Tokenise ( ) ;
2333
2434 var parser = new Parser ( ) ;
2535 var prefixTokens = parser . ParseTokens ( infixTokens ) ;
2636
27- var ast = parser . GrowAst ( prefixTokens ) ;
37+ var ast = parser . GrowAst ( prefixTokens , expression . VariableOrder ) ;
2838
2939 int numCombinations = ( int ) Math . Pow ( 2 , ast . Variables . Count ) ;
3040 var table = new List < bool [ ] > ( ) ;
@@ -39,7 +49,7 @@ static void Main(params string[] args)
3949 table . Add ( values . Append ( result ) . ToArray ( ) ) ;
4050 }
4151
42- tables . Add ( Formatter . FormatTruthTable ( ast , table , label : expression ) ) ;
52+ tables . Add ( Formatter . FormatTruthTable ( ast , table , label : expression . Expression ) ) ;
4353 }
4454
4555 if ( tables . Count > 1 )
@@ -53,9 +63,9 @@ static void Main(params string[] args)
5363 }
5464
5565
56- static string [ ] QueryExpressions ( )
66+ static List < ExpressionWrapper > QueryExpressions ( )
5767 {
58- var expressions = new List < string > ( ) ;
68+ var expressions = new List < ExpressionWrapper > ( ) ;
5969
6070 Console . WriteLine ( "Enter expressions, one per line. Press enter on a blank line to continue." ) ;
6171
@@ -66,9 +76,12 @@ static string[] QueryExpressions()
6676
6777 if ( string . IsNullOrWhiteSpace ( line ) ) break ;
6878
69- expressions . Add ( line ) ;
79+ var expression = new ExpressionWrapper ( line ) ;
80+ expressions . Add ( expression ) ;
7081 }
7182
72- return expressions . ToArray ( ) ;
83+ return expressions ;
7384 }
85+
86+
7487}
0 commit comments