calc_fcardona 0.0.3 → 0.2.0

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
  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