logic 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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.