logic 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc59412e7a4c95a2104f101dbe57fd5b9aacc6250ac885b8e64f58f139852bad
4
- data.tar.gz: 8a97b64638e50d50ee0fd36827afb60e2771cfbf84e61765e435d2e7ac2f8918
3
+ metadata.gz: f481073e7764c17e89d4b3dc6c815a4f80a6c5bbe1127e7c1eb6aed715a772cf
4
+ data.tar.gz: d376cb1038e3d591a8f08f7f729cac2cb63212bf253b42923391e594dc1b6f8a
5
5
  SHA512:
6
- metadata.gz: 185427c28647b5124e6efd34ce2c114ccba5d5e881a411afcb5458ed6c39b5d1addedc816a99414bdfd64df6d4f2f5df9c473a621f4cedb3489a528096f2e244
7
- data.tar.gz: 18a97e43de0ea689fdb053e8e455f2db7b629fe868d26a8a8940b689bb6ff0ad8dd88e62992efd897f4248e34ebd82fb0bab2d28b46c2d0d4ae9a69281e62659
6
+ metadata.gz: 9e5151ce6d38b0b049d8b10fe0daa4aaf35d8e10e8dd138239c64f76ede097fd80f724c9fd69c54a4cd628f4484465903fe2164c83555ef650ef4f7b7a999591
7
+ data.tar.gz: 155670f39c0a88e89fc7be17ac12338f984c89a4aede20af26d4587bd744967a4f18090c939ac3a30e2a3576bc35695c1a077844ed3799c747cdf8e8b3416d04
@@ -0,0 +1,53 @@
1
+ # logic
2
+
3
+ Parses logic expressions to produce a truth table and MC/DC cases.
4
+
5
+ ## Installation
6
+
7
+ gem install logic
8
+
9
+ ## Usage
10
+
11
+ By default, you get a truth table and a list of MC/DC pairs:
12
+
13
+ logic '(apple or bongo) and (cat or dog)'
14
+
15
+ Gives you:
16
+
17
+ a <= apple
18
+ b <= bongo
19
+ c <= cat
20
+ d <= dog
21
+
22
+ a b c d | output
23
+ 1) 0 0 0 0 | 0
24
+ 2) 0 0 0 1 | 0
25
+ 3) 0 0 1 0 | 0
26
+ 4) 0 0 1 1 | 0
27
+ 5) 0 1 0 0 | 0
28
+ 6) 0 1 0 1 | 1
29
+ 7) 0 1 1 0 | 1
30
+ 8) 0 1 1 1 | 1
31
+ 9) 1 0 0 0 | 0
32
+ 10) 1 0 0 1 | 1
33
+ 11) 1 0 1 0 | 1
34
+ 12) 1 0 1 1 | 1
35
+ 13) 1 1 0 0 | 0
36
+ 14) 1 1 0 1 | 1
37
+ 15) 1 1 1 0 | 1
38
+ 16) 1 1 1 1 | 1
39
+
40
+ a => [[2, 10], [3, 11], [4, 12]]
41
+ b => [[2, 6], [3, 7], [4, 8]]
42
+ c => [[5, 7], [9, 11], [13, 15]]
43
+ d => [[5, 6], [9, 10], [13, 14]]
44
+
45
+ ## Options
46
+
47
+ -l, --[no-]truth_table Show the truth table for the decision
48
+ -m, --[no-]mcdc_pairs Show MC/DC test case pairs
49
+
50
+
51
+ ## Operators
52
+
53
+ The syntax understands: `and`, `&&`, `or`, `||`, `xor`, `^`, `not`, `!`, and parenthesis.
@@ -8,21 +8,21 @@ grammar Logic
8
8
  end
9
9
 
10
10
  rule and_tail
11
- (operator:and operand:primitive)* <Tail>
11
+ (operator:and_operator operand:primitive)* <Tail>
12
12
  end
13
13
 
14
14
  rule or_tail
15
- (operator:or operand:conjunction)* <Tail>
15
+ (operator:or_operator operand:conjunction)* <Tail>
16
16
  end
17
17
 
18
- rule and
19
- (space 'and' space / space? '&&' space?) <And>
18
+ rule and_operator
19
+ (space and space / space? '&&' space?) <And>
20
20
  end
21
21
 
22
- rule or
23
- (space 'or' space / space? '||' space?) <Or>
22
+ rule or_operator
23
+ (space or space / space? '||' space?) <Or>
24
24
  /
25
- (space 'xor' space / space? '^' space?) <Xor>
25
+ (space xor space / space? '^' space?) <Xor>
26
26
  end
27
27
 
28
28
  rule primitive
@@ -41,6 +41,18 @@ grammar Logic
41
41
  '(' space? contents:disjunction space? ')' <Parenthesized>
42
42
  end
43
43
 
44
+ rule and
45
+ [aA] [nN] [dD]
46
+ end
47
+
48
+ rule or
49
+ [oO] [rR]
50
+ end
51
+
52
+ rule xor
53
+ [xX] [oO] [rR]
54
+ end
55
+
44
56
  rule space
45
57
  [ \t\n\r]+
46
58
  end
@@ -68,6 +68,12 @@ describe LogicParser, :parsing do
68
68
  [1, 0] => 1,
69
69
  [1, 1] => 1
70
70
  },
71
+ 'A OR B' =>
72
+ { [0, 0] => 0,
73
+ [0, 1] => 1,
74
+ [1, 0] => 1,
75
+ [1, 1] => 1
76
+ },
71
77
  'A || B' =>
72
78
  { [0, 0] => 0,
73
79
  [0, 1] => 1,
@@ -104,6 +110,12 @@ describe LogicParser, :parsing do
104
110
  [1, 0] => 0,
105
111
  [1, 1] => 1
106
112
  },
113
+ 'A AND B' =>
114
+ { [0, 0] => 0,
115
+ [0, 1] => 0,
116
+ [1, 0] => 0,
117
+ [1, 1] => 1
118
+ },
107
119
  'A && B' =>
108
120
  { [0, 0] => 0,
109
121
  [0, 1] => 0,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Ash
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-17 00:00:00.000000000 Z
11
+ date: 2019-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: treetop
@@ -59,10 +59,10 @@ executables:
59
59
  extensions: []
60
60
  extra_rdoc_files:
61
61
  - LICENSE
62
- - README.rdoc
62
+ - README.md
63
63
  files:
64
64
  - LICENSE
65
- - README.rdoc
65
+ - README.md
66
66
  - bin/logic
67
67
  - lib/integer.rb
68
68
  - lib/logic_operations.rb
@@ -1,49 +0,0 @@
1
- = logic
2
-
3
- == Installation
4
-
5
- gem install logic
6
-
7
- == Usage
8
-
9
- By default, you get a truth table and a list of MC/DC pairs:
10
-
11
- logic '(apple or bongo) and (cat or dog)'
12
-
13
- Gives you:
14
-
15
- a <= apple
16
- b <= bongo
17
- c <= cat
18
- d <= dog
19
-
20
- a b c d | output
21
- 1) 0 0 0 0 | 0
22
- 2) 0 0 0 1 | 0
23
- 3) 0 0 1 0 | 0
24
- 4) 0 0 1 1 | 0
25
- 5) 0 1 0 0 | 0
26
- 6) 0 1 0 1 | 1
27
- 7) 0 1 1 0 | 1
28
- 8) 0 1 1 1 | 1
29
- 9) 1 0 0 0 | 0
30
- 10) 1 0 0 1 | 1
31
- 11) 1 0 1 0 | 1
32
- 12) 1 0 1 1 | 1
33
- 13) 1 1 0 0 | 0
34
- 14) 1 1 0 1 | 1
35
- 15) 1 1 1 0 | 1
36
- 16) 1 1 1 1 | 1
37
-
38
- a => [[2, 10], [3, 11], [4, 12]]
39
- b => [[2, 6], [3, 7], [4, 8]]
40
- c => [[5, 7], [9, 11], [13, 15]]
41
- d => [[5, 6], [9, 10], [13, 14]]
42
-
43
- == Operators
44
-
45
- The syntax understands: 'and', '&&', 'or', '||', 'xor', '^', 'not', '!', and parenthesis.
46
-
47
- == Copyright
48
-
49
- Copyright (c) 2019 Bryan Ash. See LICENSE for details.