alphalang 0.1.7 → 0.1.9

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: 1f69af7ab6e40605d9118d7125caf0c99ea961bd20108210a91d77ea790e0489
4
- data.tar.gz: 0bd9593abf719ba7e5704a873f3d5d14aff15a20d424bcc858e7d9a7e45b22f4
3
+ metadata.gz: 8aa1abd7f6b12ba6f941ca7e7baeca95c13b5c962304e903fe997d905f2b8378
4
+ data.tar.gz: 1a5a6287eb251f45c3185d617bf0b9d25a5490b85bd0e982e7486bead31aeeea
5
5
  SHA512:
6
- metadata.gz: 34c909f692a34e3eae601ec4eddcb6361e46480d74a857b277fdbe652d65b2cfa99b6c427661fea5c64720a2122b28e8644f079df2e76b267e53c9bf11c8d26f
7
- data.tar.gz: 0aebab81771209c1f955abd3954e0ba7b9d4c8544fe2d308779d56d19669085b8cb925e6fbdda1cedd3c6b4a7755b95caa17b509bc9f948e85359025aefaf530
6
+ metadata.gz: 9463287f66570dd95d2d9b22268c420611c51d969c45d4cd6ac079e03968cdd1bdab473fd6b56a455d780d8e2d2475e6534b97f1ff9fd3ad8c683241be7ff9f1
7
+ data.tar.gz: 066ec1444b64853a07bce2f2a6b0acc296c8555e48c86589f8fe8de3d52da0e93869fb689c23e1394a7e10a6e2e08c432c2e5649f22ea451219a48edd2fb3cfe
@@ -181,6 +181,10 @@ class ArrayNode < Node
181
181
  @value[index] = value
182
182
  end
183
183
 
184
+ def size
185
+ @value.size
186
+ end
187
+
184
188
  def each
185
189
  @value.each_with_index do |val, index|
186
190
  yield val, index
@@ -37,7 +37,7 @@ class ScopeManager
37
37
  return @@scopes[temp_scope_lvl][name]
38
38
  end
39
39
  end
40
- raise ArgumentError, "Variable '#{name}' is not defined" unless @value
40
+ raise SyntaxError, "Variable '#{name}' is not defined" unless @value
41
41
  end
42
42
 
43
43
  def self.increment_scope_level
@@ -51,7 +51,7 @@ class ScopeManager
51
51
  end
52
52
 
53
53
  def self.lookup_func(name)
54
- raise ArgumentError, "Function '#{name}' is not defined" if @@scopes[0][name].is_a?(NilClass)
54
+ raise SyntaxError, "Function '#{name}' is not defined" if @@scopes[0][name].is_a?(NilClass)
55
55
  return @@scopes[0][name]
56
56
  end
57
57
 
data/lib/rdparse.rb CHANGED
@@ -188,6 +188,9 @@ class Parser
188
188
  end
189
189
 
190
190
  def find_faulty_expression_within_block(block_start_line, block_end_line, problematic_token)
191
+ if block_start_line == nil || block_end_line == nil
192
+ raise ParseError, "Error with <#{problematic_token}> somewhere around line #{block_end_line}#{block_start_line}"
193
+ end
191
194
  index = 0
192
195
  result = []
193
196
  @file_string.each_line do |line|
@@ -212,28 +215,34 @@ class Parser
212
215
  end
213
216
 
214
217
  def find_faulty_line
218
+ if @tokens[@max_pos-0].is_a?(NilClass)
219
+ if @max_pos >= 3
220
+ puts "Problem is in the end of the file after:\n #{@tokens[@max_pos - 3]}#{@tokens[@max_pos - 2]}#{@tokens[@max_pos - 1]}"
221
+ else
222
+ puts "Problem is right in the beginning of the file."
223
+ end
224
+ raise ParseError
225
+ end
226
+
215
227
  problematic_token = "#{@tokens[@max_pos - 1].downcase}"
216
228
  before_problem = "#{@tokens[@max_pos - 2].downcase}"
217
229
  after_problem = "#{@tokens[@max_pos - 0].downcase}"
218
230
 
219
- if @max_pos - 5 <= 0
220
- puts 'problem in the beginning of file, figure it out'
221
- return
222
- elsif @max_pos + 5 < @max_pos
223
- puts 'problem in the end of file, figure it out'
224
- return
225
- end
231
+ after_problem = "[" + after_problem + "]" if !after_problem.match?(/[a-z]/)
232
+ before_problem = "[" + before_problem + "]" if !before_problem.match?(/[a-z]/)
226
233
 
227
234
  translated_problematic_token = @token_list[problematic_token]
228
235
 
229
236
  if translated_problematic_token.is_a?(NilClass)
230
- raise ParseError, "Faulty expression likely between two '#{@token_list['END'.downcase]}' tokens."
237
+ puts "The problem is #{before_problem}#{problematic_token}#{after_problem}"
238
+ raise ParseError, "Faulty expression, this is not completely implemented."
231
239
  end
232
240
 
233
241
  index = 0
234
242
  problem_match_hash = {}
235
243
  found_end = false
236
244
  @file_string.each_line do |line|
245
+
237
246
  if line.match?(before_problem) && found_end == false
238
247
  problem_match_hash[before_problem] = index
239
248
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alphalang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - mattias, victor
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-07 00:00:00.000000000 Z
11
+ date: 2024-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logger
@@ -89,7 +89,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
89
89
  requirements:
90
90
  - - ">="
91
91
  - !ruby/object:Gem::Version
92
- version: '0'
92
+ version: 3.0.2
93
93
  required_rubygems_version: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - ">="