bel_parser 1.0.0.alpha.38 → 1.0.0.alpha.39

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.gemspec +1 -1
  3. data/VERSION +1 -1
  4. data/lib/bel_parser/ast_filter.rb +6 -2
  5. data/lib/bel_parser/parsers/ast/node.rb +113 -58
  6. data/lib/bel_parser/parsers/bel_script/define_annotation.rb +4175 -3097
  7. data/lib/bel_parser/parsers/bel_script/define_annotation.rl +142 -49
  8. data/lib/bel_parser/parsers/bel_script/define_namespace.rb +980 -461
  9. data/lib/bel_parser/parsers/bel_script/define_namespace.rl +79 -39
  10. data/lib/bel_parser/parsers/bel_script/set.rb +4878 -2743
  11. data/lib/bel_parser/parsers/bel_script/set.rl +114 -32
  12. data/lib/bel_parser/parsers/bel_script/set_document.rb +5839 -5292
  13. data/lib/bel_parser/parsers/bel_script/set_document.rl +130 -27
  14. data/lib/bel_parser/parsers/bel_script/unset.rb +321 -234
  15. data/lib/bel_parser/parsers/bel_script/unset.rl +49 -21
  16. data/lib/bel_parser/parsers/common.rb +1 -0
  17. data/lib/bel_parser/parsers/common/blank_line.rb +12 -11
  18. data/lib/bel_parser/parsers/common/blank_line.rl +12 -12
  19. data/lib/bel_parser/parsers/common/comment_line.rb +65 -40
  20. data/lib/bel_parser/parsers/common/comment_line.rl +26 -26
  21. data/lib/bel_parser/parsers/common/common.rl +60 -0
  22. data/lib/bel_parser/parsers/common/function.rb +319 -0
  23. data/lib/bel_parser/parsers/common/function.rl +149 -0
  24. data/lib/bel_parser/parsers/common/identifier.rb +72 -68
  25. data/lib/bel_parser/parsers/common/identifier.rl +73 -29
  26. data/lib/bel_parser/parsers/common/list.rb +1617 -1243
  27. data/lib/bel_parser/parsers/common/list.rl +120 -60
  28. data/lib/bel_parser/parsers/common/string.rb +114 -41
  29. data/lib/bel_parser/parsers/common/string.rl +91 -28
  30. data/lib/bel_parser/parsers/expression/comment.rb +70 -38
  31. data/lib/bel_parser/parsers/expression/comment.rl +37 -20
  32. data/lib/bel_parser/parsers/expression/nested_statement.rb +63116 -13958
  33. data/lib/bel_parser/parsers/expression/nested_statement.rl +53 -23
  34. data/lib/bel_parser/parsers/expression/observed_term.rb +32497 -5188
  35. data/lib/bel_parser/parsers/expression/observed_term.rl +25 -20
  36. data/lib/bel_parser/parsers/expression/parameter.rb +2861 -847
  37. data/lib/bel_parser/parsers/expression/parameter.rl +178 -21
  38. data/lib/bel_parser/parsers/expression/relationship.rb +73 -55
  39. data/lib/bel_parser/parsers/expression/relationship.rl +41 -23
  40. data/lib/bel_parser/parsers/expression/simple_statement.rb +42895 -7846
  41. data/lib/bel_parser/parsers/expression/simple_statement.rl +41 -24
  42. data/lib/bel_parser/parsers/expression/term.rb +16498 -2602
  43. data/lib/bel_parser/parsers/expression/term.rl +52 -35
  44. data/lib/bel_parser/parsers/line_parser.rb +1 -0
  45. data/lib/bel_parser/parsers/mixin/buffer.rb +4 -0
  46. data/lib/bel_parser/parsers/tracer.rb +19 -0
  47. data/lib/bel_parser/script/state/namespace_definition.rb +1 -0
  48. metadata +13 -9
@@ -3,89 +3,104 @@
3
3
  %%{
4
4
  machine bel;
5
5
 
6
+ include 'function.rl';
6
7
  include 'parameter.rl';
7
8
 
8
- action start_function {
9
- @buffers[:function] = []
10
- }
11
-
12
- action append_function {
13
- @buffers[:function] << fc
14
- }
15
-
16
- action finish_function {
17
- @buffers[:function] = identifier(utf8_string(@buffers[:function]))
18
- }
19
-
20
9
  action term_init {
10
+ trace('TERM term_init')
21
11
  @buffers[:term_stack] = [ term() ]
22
12
  }
23
13
 
24
14
  action inner_term_init {
15
+ trace('TERM inner_term_init')
25
16
  @buffers[:term_stack] << term()
26
17
  }
27
18
 
28
19
  action term_fx {
29
- fx = @buffers[:function]
30
- @buffers[:term_stack][-1] = @buffers[:term_stack][-1] << function(fx)
20
+ trace('TERM term_fx')
21
+ new_term = @buffers[:term_stack][-1] << @buffers[:function]
22
+ @buffers[:term_stack][-1] = new_term
31
23
  }
32
24
 
33
25
  action term_argument {
34
- @buffers[:term_stack][-1] = @buffers[:term_stack][-1] << argument(@buffers[:parameter])
35
- @buffers[:parameter] = nil
26
+ trace('TERM term_argument')
27
+ arg_node = argument(@buffers[:parameter])
28
+ new_term = @buffers[:term_stack][-1] << arg_node
29
+ @buffers[:term_stack][-1] = new_term
30
+ @buffers[:parameter] = nil
36
31
  }
37
32
 
38
33
  action fxbt {
39
- fpc -= @buffers[:function].length + 1
34
+ trace('TERM fxbt')
35
+ function_string = @buffers[:function].identifier.string_literal
36
+ fpc -= function_string.length + 1
40
37
  fcall inner_term;
41
38
  }
42
39
 
43
40
  action fxret {
41
+ trace('TERM fxret')
44
42
  inner_term = @buffers[:term_stack].pop
45
- @buffers[:term_stack][-1] = @buffers[:term_stack][-1] << argument(inner_term)
43
+ arg_node = argument(inner_term)
44
+ new_term = @buffers[:term_stack][-1] << arg_node
45
+ @buffers[:term_stack][-1] = new_term
46
46
  fret;
47
47
  }
48
48
 
49
+ action outer_term_end {
50
+ trace('TERM outer_term_end')
51
+ term_stack = @buffers[:term_stack]
52
+ term_stack.each { |term| term.complete = true }
53
+ }
54
+
55
+ action eof_parameter_argument {
56
+ trace('TERM eof_parameter_argument')
57
+ @buffers[:term_stack][-1].complete = false
58
+ yield @buffers[:term_stack][-1]
59
+ }
60
+
49
61
  action yield_term_ast {
50
62
  yield @buffers[:term_stack][-1]
51
63
  }
52
64
 
53
65
  inner_term :=
54
- IDENT >inner_term_init >start_function $append_function %finish_function
66
+ a_function >inner_term_init
55
67
  SP*
56
68
  '(' @term_fx
57
69
  (
58
- BEL_PARAMETER %term_argument |
59
- IDENT >start_function $append_function '(' @fxbt
70
+ a_parameter %term_argument |
71
+ a_function '(' @fxbt
60
72
  )
61
73
  (
62
- SP* ',' SP*
74
+ COMMA_DELIM
63
75
  (
64
- BEL_PARAMETER %term_argument |
65
- IDENT >start_function $append_function '(' @fxbt
76
+ a_parameter %term_argument |
77
+ a_function '(' @fxbt
66
78
  )
67
79
  )*
68
80
  ')' @fxret;
69
81
 
70
82
  outer_term =
71
- IDENT >term_init >start_function $append_function %finish_function
83
+ a_function >term_init
72
84
  SP*
73
85
  '(' @term_fx
74
86
  (
75
- BEL_PARAMETER %term_argument |
76
- IDENT >start_function $append_function '(' @fxbt
87
+ a_parameter %term_argument $eof(eof_parameter_argument) |
88
+ a_function '(' @fxbt
77
89
  )
78
90
  (
79
- SP* ',' SP*
91
+ COMMA_DELIM
80
92
  (
81
- BEL_PARAMETER %term_argument |
82
- IDENT >start_function $append_function '(' @fxbt
93
+ a_parameter %term_argument $eof(eof_parameter_argument) |
94
+ a_function '(' @fxbt
83
95
  )
84
96
  )*
85
97
  ')';
86
98
 
87
99
  term :=
88
- outer_term %yield_term_ast NL;
100
+ outer_term
101
+ %outer_term_end
102
+ %yield_term_ast
103
+ NL?;
89
104
  }%%
90
105
  =end
91
106
  # end: ragel
@@ -93,6 +108,7 @@
93
108
  require_relative '../ast/node'
94
109
  require_relative '../mixin/buffer'
95
110
  require_relative '../nonblocking_io_wrapper'
111
+ require_relative '../tracer'
96
112
 
97
113
  module BELParser
98
114
  module Parsers
@@ -118,12 +134,13 @@ module BELParser
118
134
  include Enumerable
119
135
  include BELParser::Parsers::Buffer
120
136
  include BELParser::Parsers::AST::Sexp
137
+ include BELParser::Parsers::Tracer
121
138
 
122
139
  def initialize(content)
123
140
  @content = content
124
- # begin: ragel
141
+ # begin: ragel
125
142
  %% write data;
126
- # end: ragel
143
+ # end: ragel
127
144
  end
128
145
 
129
146
  def each
@@ -134,10 +151,10 @@ module BELParser
134
151
  pe = data.length
135
152
  eof = data.length
136
153
 
137
- # begin: ragel
154
+ # begin: ragel
138
155
  %% write init;
139
156
  %% write exec;
140
- # end: ragel
157
+ # end: ragel
141
158
  end
142
159
  end
143
160
  end
@@ -14,6 +14,7 @@ module LINE
14
14
  BELParser::Parsers::Common::Identifier,
15
15
  BELParser::Parsers::Common::String,
16
16
  BELParser::Parsers::Common::List,
17
+ BELParser::Parsers::Common::Function,
17
18
  BELParser::Parsers::Expression::Parameter,
18
19
  BELParser::Parsers::Expression::Term,
19
20
  BELParser::Parsers::Expression::Relationship,
@@ -5,6 +5,10 @@ module BELParser
5
5
  def utf8_string(buffer)
6
6
  buffer.pack('C*').force_encoding('utf-8')
7
7
  end
8
+
9
+ def ord_to_str(enumerable)
10
+ (enumerable.map { |x| x.chr }).join()
11
+ end
8
12
  end
9
13
  end
10
14
  end
@@ -0,0 +1,19 @@
1
+ module BELParser
2
+ module Parsers
3
+ # Tracer provides a facility to trace ragel finite state machines.
4
+ # Tracing is enabled with using +$DEBUG+ or the environment variable
5
+ # +BELPARSER_PARSER_TRACE+
6
+ module Tracer
7
+ # Defines trace on require based on environment.
8
+ if $DEBUG || (ENV['BELPARSER_PARSER_TRACE'] =~ /^(1|yes|on|true)$/)
9
+ def trace(msg)
10
+ $stderr.puts msg
11
+ end
12
+ else
13
+ def trace(_)
14
+ # no-operation
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -18,6 +18,7 @@ module BELParser
18
18
  resource_reader = script_context[:resource_reader]
19
19
 
20
20
  keyword, domain = ast_node.children
21
+ require 'pry'; binding.pry unless domain
21
22
  if domain.url?
22
23
  prefix = keyword.identifier.string_literal
23
24
  url = unquote(domain.child.string.string_literal)
metadata CHANGED
@@ -1,25 +1,25 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bel_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.alpha.38
4
+ version: 1.0.0.alpha.39
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Bargnesi
8
8
  - Nick Bargnesi
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-05-16 00:00:00.000000000 Z
12
+ date: 2016-05-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
+ name: sparql-client
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
20
  version: 2.0.0
20
- name: sparql-client
21
- prerelease: false
22
21
  type: :runtime
22
+ prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
@@ -303,6 +303,8 @@ files:
303
303
  - lib/bel_parser/parsers/common/comment_line.rl
304
304
  - lib/bel_parser/parsers/common/common.rb
305
305
  - lib/bel_parser/parsers/common/common.rl
306
+ - lib/bel_parser/parsers/common/function.rb
307
+ - lib/bel_parser/parsers/common/function.rl
306
308
  - lib/bel_parser/parsers/common/identifier.rb
307
309
  - lib/bel_parser/parsers/common/identifier.rl
308
310
  - lib/bel_parser/parsers/common/list.rb
@@ -328,6 +330,7 @@ files:
328
330
  - lib/bel_parser/parsers/mixin/buffer.rb
329
331
  - lib/bel_parser/parsers/nonblocking_io_wrapper.rb
330
332
  - lib/bel_parser/parsers/serializer.rb
333
+ - lib/bel_parser/parsers/tracer.rb
331
334
  - lib/bel_parser/quoting.rb
332
335
  - lib/bel_parser/resource.rb
333
336
  - lib/bel_parser/resource/concept.rb
@@ -374,7 +377,7 @@ homepage: https://github.com/OpenBEL/bel_parser
374
377
  licenses:
375
378
  - Apache-2.0
376
379
  metadata: {}
377
- post_install_message:
380
+ post_install_message:
378
381
  rdoc_options: []
379
382
  require_paths:
380
383
  - lib
@@ -389,9 +392,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
389
392
  - !ruby/object:Gem::Version
390
393
  version: 1.3.1
391
394
  requirements: []
392
- rubyforge_project:
393
- rubygems_version: 2.6.4
394
- signing_key:
395
+ rubyforge_project:
396
+ rubygems_version: 2.5.1
397
+ signing_key:
395
398
  specification_version: 4
396
399
  summary: Parser for Biolgical Expression Language.
397
400
  test_files: []
401
+ has_rdoc: