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

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