calc_fcardona 0.0.3 → 0.2.0

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
  SHA1:
3
- metadata.gz: be7f6147202a8755c23962b0891e9780691df069
4
- data.tar.gz: b08aa8393390a33b9912998f717e69906c557879
3
+ metadata.gz: b58be65020fec2385269041f11aa7df98b79aae1
4
+ data.tar.gz: 3234dc68ec5d71647472a0cb622224b2b1134d0f
5
5
  SHA512:
6
- metadata.gz: 4a2b2c96ee286b81eb30bb58988a4b56b104d9b4ab03ed19f5810e6b13c0720167e9a785cb7b221b5a13bba01b4bbad47b553f355c6c534fed99e85efd82f4f8
7
- data.tar.gz: 8b1f5bfd52727f1c6ad4c2569673699ac664d6d545ad511c77187e00df00c80924f91b063d900374a2f942251b45c69103cd75a761e07870904de6f73597d0c3
6
+ metadata.gz: 9308eb98ecde6506f5e12d5dd804e9216c23f3dd1504c66d7260a52cc982f31c29ecfb3ed124e0a8b245bb14a1e20f75ad73047355a4472e149d9e62ab939dea
7
+ data.tar.gz: d259a8ec214ae0262045981e6cf21fc2c5070fec6c5be0cdfb5141c43e6fb15a199f9bc4655839dc718e529a7a47d76842d8ae025f772cb9d015831d851e2731
data/lib/ast.rb CHANGED
@@ -23,7 +23,7 @@ class AddNode < BinaryNode
23
23
  end
24
24
 
25
25
  def evaluate
26
- @left.evaluate + @right.evaluate
26
+ left.evaluate + right.evaluate
27
27
  end
28
28
  end
29
29
 
@@ -32,7 +32,7 @@ class SubNode < BinaryNode
32
32
  super(left,right)
33
33
  end
34
34
 
35
- def evaluate
35
+ def evaluate
36
36
  left.evaluate - right.evaluate
37
37
  end
38
38
  end
@@ -42,7 +42,7 @@ class TimesNode < BinaryNode
42
42
  super(left,right)
43
43
  end
44
44
 
45
- def evaluate
45
+ def evaluate
46
46
  left.evaluate * right.evaluate
47
47
  end
48
48
  end
@@ -61,7 +61,6 @@ class StoreNode < UnaryNode
61
61
  def initialize(sub)
62
62
  super(sub)
63
63
  end
64
-
65
64
  def evaluate
66
65
  $calc.memory = subTree.evaluate
67
66
  end
data/lib/calculator.rb CHANGED
@@ -4,7 +4,7 @@ require 'ast'
4
4
  class Calculator
5
5
  attr_accessor :memory
6
6
 
7
- def initialize()
7
+ def initialize
8
8
  @memory = 0
9
9
  end
10
10
 
data/lib/parser.rb CHANGED
@@ -8,35 +8,35 @@ class Parser
8
8
  @scan = Scanner.new(istream)
9
9
  end
10
10
 
11
- def parse()
12
- return Prog()
11
+ def parse
12
+ Prog()
13
13
  end
14
14
 
15
15
  private
16
- def Prog()
16
+ def Prog
17
17
  result = Expr()
18
- t = @scan.getToken()
18
+ t = @scan.getToken
19
19
 
20
20
  if t.type != :eof then
21
21
  print "Expected EOF. Found ", t.type, ".\n"
22
22
  raise ParseError.new
23
23
  end
24
24
 
25
- return result
25
+ result
26
26
  end
27
27
 
28
- def Expr()
28
+ def Expr
29
29
  RestExpr(Term())
30
30
  end
31
31
 
32
32
  def RestExpr(e)
33
- t = @scan.getToken()
33
+ t = @scan.getToken
34
34
 
35
- if t.type == :add
35
+ if t.type == :add then
36
36
  return RestExpr(AddNode.new(e,Term()))
37
37
  end
38
38
 
39
- if t.type == :sub
39
+ if t.type == :sub then
40
40
  return RestExpr(SubNode.new(e,Term()))
41
41
  end
42
42
 
@@ -45,12 +45,12 @@ class Parser
45
45
  e
46
46
  end
47
47
 
48
- def Term
49
-
48
+ def Term()
50
49
  RestTerm(Storable())
51
50
  end
52
51
 
53
52
  def RestTerm(e)
53
+
54
54
  t = @scan.getToken
55
55
 
56
56
  if t.type == :times then
@@ -66,8 +66,7 @@ class Parser
66
66
  e
67
67
  end
68
68
 
69
- def Storable()
70
-
69
+ def Storable
71
70
  result = Factor()
72
71
 
73
72
  t = @scan.getToken
@@ -76,16 +75,18 @@ class Parser
76
75
  if t.lex == "S" then
77
76
  return StoreNode.new(result)
78
77
  end
79
- puts "Expected S found: ",t.lex
78
+ print "Expected S found #{t.lex}"
79
+ puts " at line: #{t.line} col: #{t.col}"
80
80
  raise ParseError.new
81
81
  end
82
+
82
83
 
83
84
  @scan.putBackToken
85
+
84
86
  result
85
87
  end
86
88
 
87
- def Factor()
88
-
89
+ def Factor
89
90
  t = @scan.getToken
90
91
 
91
92
  if t.type == :number then
@@ -97,24 +98,22 @@ class Parser
97
98
  return RecallNode.new
98
99
  end
99
100
 
100
- puts "Expected R found: " + t.lex
101
+ puts "Error"
101
102
  raise ParseError.new
102
103
  end
103
104
 
104
105
  if t.type == :lparen then
105
106
  result = Expr()
106
-
107
107
  t = @scan.getToken
108
-
109
108
  if t.type == :rparen then
110
109
  return result
111
110
  end
112
-
113
- puts "Expected ) found: " + t.type.to_s
111
+ puts "Error"
114
112
  raise ParseError.new
115
113
  end
116
114
 
117
- puts "Expected number, R, ( found: " + t.type.to_s
118
- raise ParseError.new # "Parse Error"
115
+ puts "Error"
116
+ raise ParseError.new
117
+
119
118
  end
120
119
  end
data/lib/scanner.rb CHANGED
@@ -11,12 +11,12 @@ class Scanner
11
11
  @lastToken = nil
12
12
  end
13
13
 
14
- def putBackToken
14
+ def putBackToken()
15
15
  @needToken = false
16
16
  end
17
17
 
18
- def getToken
19
- unless @needToken
18
+ def getToken()
19
+ if !@needToken
20
20
  @needToken = true
21
21
  return @lastToken
22
22
  end
@@ -30,7 +30,7 @@ class Scanner
30
30
  return @lastToken
31
31
  end
32
32
 
33
- until foundOne
33
+ while !foundOne
34
34
  @colCount = @colCount + 1
35
35
  case state
36
36
  when 0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: calc_fcardona
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kent D. Lee - Juan Francisco Cardona Mc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-12 00:00:00.000000000 Z
11
+ date: 2015-11-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: An calculator implementation on ruby
14
14
  email: fcardona@eafit.edu.co