bel_parser 1.0.0.alpha.7 → 1.0.0.alpha.8
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 +4 -4
- data/.gemspec +1 -1
- data/VERSION +1 -1
- data/bin/bel2_validator +7 -4
- data/lib/bel_parser/ast_filter.rb +2 -2
- data/lib/bel_parser/ast_generator.rb +11 -18
- data/lib/bel_parser/language/expression_validator.rb +8 -0
- data/lib/bel_parser/language/quoting.rb +19 -22
- data/lib/bel_parser/language/semantics/deeply_nested_statement.rb +65 -0
- data/lib/bel_parser/language/semantics/function_deprecation.rb +36 -0
- data/lib/bel_parser/language/semantics/list_function_subject.rb +45 -0
- data/lib/bel_parser/language/semantics/relationship_deprecation.rb +36 -0
- data/lib/bel_parser/language/semantics/signature_mapping.rb +30 -16
- data/lib/bel_parser/language/semantics.rb +7 -2
- data/lib/bel_parser/language/semantics_ast.rb +22 -12
- data/lib/bel_parser/language/semantics_function.rb +4 -1
- data/lib/bel_parser/language/semantics_result.rb +1 -0
- data/lib/bel_parser/language/semantics_warning.rb +2 -0
- data/lib/bel_parser/language/signature.rb +3 -3
- data/lib/bel_parser/language/syntax/invalid_function.rb +2 -2
- data/lib/bel_parser/language/syntax/invalid_relationship.rb +2 -2
- data/lib/bel_parser/language/syntax/undefined_namespace.rb +0 -1
- data/lib/bel_parser/language/syntax.rb +7 -2
- data/lib/bel_parser/language/syntax_error.rb +2 -0
- data/lib/bel_parser/language/syntax_function.rb +4 -1
- data/lib/bel_parser/language/syntax_result.rb +1 -0
- data/lib/bel_parser/language/syntax_warning.rb +2 -0
- data/lib/bel_parser/language/version1_0/functions/abundance.rb +14 -15
- data/lib/bel_parser/language/version1_0/functions/biological_process.rb +14 -15
- data/lib/bel_parser/language/version1_0/functions/catalytic_activity.rb +25 -21
- data/lib/bel_parser/language/version1_0/functions/cell_secretion.rb +15 -12
- data/lib/bel_parser/language/version1_0/functions/cell_surface_expression.rb +15 -12
- data/lib/bel_parser/language/version1_0/functions/chaperone_activity.rb +25 -21
- data/lib/bel_parser/language/version1_0/functions/complex_abundance.rb +26 -25
- data/lib/bel_parser/language/version1_0/functions/composite_abundance.rb +13 -12
- data/lib/bel_parser/language/version1_0/functions/degradation.rb +15 -12
- data/lib/bel_parser/language/version1_0/functions/fusion.rb +135 -129
- data/lib/bel_parser/language/version1_0/functions/gene_abundance.rb +34 -34
- data/lib/bel_parser/language/version1_0/functions/gtp_bound_activity.rb +24 -21
- data/lib/bel_parser/language/version1_0/functions/kinase_activity.rb +25 -21
- data/lib/bel_parser/language/version1_0/functions/list.rb +24 -24
- data/lib/bel_parser/language/version1_0/functions/micro_rna_abundance.rb +18 -17
- data/lib/bel_parser/language/version1_0/functions/molecular_activity.rb +14 -12
- data/lib/bel_parser/language/version1_0/functions/pathology.rb +14 -15
- data/lib/bel_parser/language/version1_0/functions/peptidase_activity.rb +23 -21
- data/lib/bel_parser/language/version1_0/functions/phosphatase_activity.rb +23 -21
- data/lib/bel_parser/language/version1_0/functions/products.rb +9 -10
- data/lib/bel_parser/language/version1_0/functions/protein_abundance.rb +94 -91
- data/lib/bel_parser/language/version1_0/functions/protein_modification.rb +60 -57
- data/lib/bel_parser/language/version1_0/functions/reactants.rb +9 -10
- data/lib/bel_parser/language/version1_0/functions/reaction.rb +18 -17
- data/lib/bel_parser/language/version1_0/functions/ribosylation_activity.rb +25 -21
- data/lib/bel_parser/language/version1_0/functions/rna_abundance.rb +34 -34
- data/lib/bel_parser/language/version1_0/functions/substitution.rb +29 -28
- data/lib/bel_parser/language/version1_0/functions/transcriptional_activity.rb +25 -21
- data/lib/bel_parser/language/version1_0/functions/translocation.rb +33 -32
- data/lib/bel_parser/language/version1_0/functions/transport_activity.rb +26 -21
- data/lib/bel_parser/language/version1_0/functions/truncation.rb +15 -14
- data/lib/bel_parser/language/version1_0/relationships/acts_in.rb +16 -2
- data/lib/bel_parser/language/version1_0/relationships/analogous.rb +8 -2
- data/lib/bel_parser/language/version1_0/relationships/association.rb +13 -2
- data/lib/bel_parser/language/version1_0/relationships/biomarker_for.rb +9 -2
- data/lib/bel_parser/language/version1_0/relationships/causes_no_change.rb +13 -2
- data/lib/bel_parser/language/version1_0/relationships/decreases.rb +22 -2
- data/lib/bel_parser/language/version1_0/relationships/directly_decreases.rb +11 -2
- data/lib/bel_parser/language/version1_0/relationships/directly_increases.rb +11 -2
- data/lib/bel_parser/language/version1_0/relationships/has_component.rb +25 -2
- data/lib/bel_parser/language/version1_0/relationships/has_components.rb +20 -2
- data/lib/bel_parser/language/version1_0/relationships/has_member.rb +15 -2
- data/lib/bel_parser/language/version1_0/relationships/has_members.rb +20 -2
- data/lib/bel_parser/language/version1_0/relationships/has_modification.rb +13 -2
- data/lib/bel_parser/language/version1_0/relationships/has_product.rb +15 -2
- data/lib/bel_parser/language/version1_0/relationships/has_variant.rb +13 -2
- data/lib/bel_parser/language/version1_0/relationships/includes.rb +18 -2
- data/lib/bel_parser/language/version1_0/relationships/increases.rb +22 -2
- data/lib/bel_parser/language/version1_0/relationships/is_a.rb +15 -2
- data/lib/bel_parser/language/version1_0/relationships/negative_correlation.rb +13 -2
- data/lib/bel_parser/language/version1_0/relationships/orthologous.rb +15 -2
- data/lib/bel_parser/language/version1_0/relationships/positive_correlation.rb +9 -2
- data/lib/bel_parser/language/version1_0/relationships/prognostic_biomarker_for.rb +11 -2
- data/lib/bel_parser/language/version1_0/relationships/rate_limiting_step_of.rb +16 -2
- data/lib/bel_parser/language/version1_0/relationships/reactant_in.rb +15 -2
- data/lib/bel_parser/language/version1_0/relationships/sub_process_of.rb +22 -2
- data/lib/bel_parser/language/version1_0/relationships/transcribed_to.rb +12 -2
- data/lib/bel_parser/language/version1_0/relationships/translated_to.rb +13 -2
- data/lib/bel_parser/language/version1_0/relationships/translocates.rb +16 -2
- data/lib/bel_parser/language/version1_0/syntax/function.rb +0 -1
- data/lib/bel_parser/language/version1_0.rb +13 -2
- data/lib/bel_parser/language/version2_0/functions/abundance.rb +54 -53
- data/lib/bel_parser/language/version2_0/functions/activity.rb +8 -5
- data/lib/bel_parser/language/version2_0/functions/biological_process.rb +16 -16
- data/lib/bel_parser/language/version2_0/functions/cell_secretion.rb +15 -12
- data/lib/bel_parser/language/version2_0/functions/cell_surface_expression.rb +15 -12
- data/lib/bel_parser/language/version2_0/functions/complex_abundance.rb +61 -58
- data/lib/bel_parser/language/version2_0/functions/composite_abundance.rb +13 -12
- data/lib/bel_parser/language/version2_0/functions/degradation.rb +15 -12
- data/lib/bel_parser/language/version2_0/functions/fragment.rb +8 -6
- data/lib/bel_parser/language/version2_0/functions/from_location.rb +18 -17
- data/lib/bel_parser/language/version2_0/functions/fusion.rb +120 -117
- data/lib/bel_parser/language/version2_0/functions/gene_abundance.rb +64 -62
- data/lib/bel_parser/language/version2_0/functions/list.rb +24 -24
- data/lib/bel_parser/language/version2_0/functions/location.rb +14 -15
- data/lib/bel_parser/language/version2_0/functions/micro_rna_abundance.rb +58 -55
- data/lib/bel_parser/language/version2_0/functions/molecular_activity.rb +16 -14
- data/lib/bel_parser/language/version2_0/functions/pathology.rb +14 -15
- data/lib/bel_parser/language/version2_0/functions/products.rb +9 -10
- data/lib/bel_parser/language/version2_0/functions/protein_abundance.rb +96 -92
- data/lib/bel_parser/language/version2_0/functions/protein_modification.rb +57 -54
- data/lib/bel_parser/language/version2_0/functions/reactants.rb +9 -10
- data/lib/bel_parser/language/version2_0/functions/reaction.rb +18 -17
- data/lib/bel_parser/language/version2_0/functions/rna_abundance.rb +64 -62
- data/lib/bel_parser/language/version2_0/functions/to_location.rb +16 -16
- data/lib/bel_parser/language/version2_0/functions/translocation.rb +23 -22
- data/lib/bel_parser/language/version2_0/functions/variant.rb +13 -13
- data/lib/bel_parser/language/version2_0/relationships/acts_in.rb +16 -2
- data/lib/bel_parser/language/version2_0/relationships/analogous.rb +8 -2
- data/lib/bel_parser/language/version2_0/relationships/association.rb +13 -2
- data/lib/bel_parser/language/version2_0/relationships/biomarker_for.rb +9 -2
- data/lib/bel_parser/language/version2_0/relationships/causes_no_change.rb +13 -2
- data/lib/bel_parser/language/version2_0/relationships/decreases.rb +22 -2
- data/lib/bel_parser/language/version2_0/relationships/directly_decreases.rb +11 -2
- data/lib/bel_parser/language/version2_0/relationships/directly_increases.rb +11 -2
- data/lib/bel_parser/language/version2_0/relationships/has_component.rb +25 -2
- data/lib/bel_parser/language/version2_0/relationships/has_components.rb +20 -2
- data/lib/bel_parser/language/version2_0/relationships/has_member.rb +15 -2
- data/lib/bel_parser/language/version2_0/relationships/has_members.rb +20 -2
- data/lib/bel_parser/language/version2_0/relationships/has_modification.rb +13 -2
- data/lib/bel_parser/language/version2_0/relationships/has_product.rb +15 -2
- data/lib/bel_parser/language/version2_0/relationships/has_variant.rb +13 -2
- data/lib/bel_parser/language/version2_0/relationships/includes.rb +18 -2
- data/lib/bel_parser/language/version2_0/relationships/increases.rb +22 -2
- data/lib/bel_parser/language/version2_0/relationships/is_a.rb +15 -2
- data/lib/bel_parser/language/version2_0/relationships/negative_correlation.rb +13 -2
- data/lib/bel_parser/language/version2_0/relationships/orthologous.rb +15 -2
- data/lib/bel_parser/language/version2_0/relationships/positive_correlation.rb +9 -2
- data/lib/bel_parser/language/version2_0/relationships/prognostic_biomarker_for.rb +11 -2
- data/lib/bel_parser/language/version2_0/relationships/rate_limiting_step_of.rb +16 -2
- data/lib/bel_parser/language/version2_0/relationships/reactant_in.rb +15 -2
- data/lib/bel_parser/language/version2_0/relationships/regulates.rb +14 -2
- data/lib/bel_parser/language/version2_0/relationships/sub_process_of.rb +22 -2
- data/lib/bel_parser/language/version2_0/relationships/transcribed_to.rb +12 -2
- data/lib/bel_parser/language/version2_0/relationships/translated_to.rb +13 -2
- data/lib/bel_parser/language/version2_0/relationships/translocates.rb +16 -2
- data/lib/bel_parser/language.rb +18 -8
- data/lib/bel_parser/parser.rb +1 -0
- data/lib/bel_parser/parsers/ast/node.rb +112 -74
- data/lib/bel_parser/parsers/bel_script/set.rl +1 -1
- data/lib/bel_parser/parsers/bel_script/set_document.rb +7087 -0
- data/lib/bel_parser/parsers/bel_script/set_document.rl +97 -0
- data/lib/bel_parser/parsers/bel_script.rb +1 -0
- data/lib/bel_parser/parsers/common/common.rl +1 -1
- data/lib/bel_parser/script/parser.rb +1 -0
- metadata +8 -2
|
@@ -13,14 +13,13 @@ module BELParser
|
|
|
13
13
|
|
|
14
14
|
# BEL application-specific AST node.
|
|
15
15
|
#
|
|
16
|
-
# All BEL AST nodes have a basic set of properties. Additional
|
|
17
|
-
# may be specified by subclasses. Each class in
|
|
18
|
-
# its type through the class variable
|
|
19
|
-
#
|
|
20
|
-
# library itself.
|
|
16
|
+
# All BEL AST nodes have a basic set of properties. Additional
|
|
17
|
+
# properties may be specified by subclasses. Each class in
|
|
18
|
+
# the hierarchy describes its type through the class variable
|
|
19
|
+
# _ast_type_. This is equivalent to its _type_ instance variable
|
|
20
|
+
# but the former is not used by the AST library itself.
|
|
21
21
|
#
|
|
22
|
-
# @see Node.ast_type
|
|
23
|
-
# @see Node.initialize
|
|
22
|
+
# @see Node.ast_type @see Node.initialize
|
|
24
23
|
#
|
|
25
24
|
class Node < ::AST::Node
|
|
26
25
|
# AST node type
|
|
@@ -30,17 +29,17 @@ module BELParser
|
|
|
30
29
|
|
|
31
30
|
# New BEL AST node.
|
|
32
31
|
#
|
|
33
|
-
# @param [Symbol] type The node type symbol
|
|
34
|
-
#
|
|
35
|
-
#
|
|
32
|
+
# @param [Symbol] type The node type symbol @param [Array]
|
|
33
|
+
# children Optional children of node @param [Hash] properties
|
|
34
|
+
# Optional supported node properties
|
|
36
35
|
#
|
|
37
|
-
# === Supported properties
|
|
38
|
-
#
|
|
39
|
-
# - +character_range+ -> {#character_range}, {#range_start},
|
|
36
|
+
# === Supported properties - +line_number+ -> {#line_number} -
|
|
37
|
+
# +character_range+ -> {#character_range}, {#range_start},
|
|
40
38
|
# {#range_end}
|
|
41
39
|
# - +complete+ -> {#complete?}
|
|
42
40
|
#
|
|
43
|
-
# @raise ArgumentError If _children_ is not an Array or
|
|
41
|
+
# @raise ArgumentError If _children_ is not an Array or
|
|
42
|
+
# _properties_
|
|
44
43
|
# is not a Hash
|
|
45
44
|
def initialize(type, children = [], properties = {})
|
|
46
45
|
AST.assert_is_a(Array, children, 'children')
|
|
@@ -48,20 +47,19 @@ module BELParser
|
|
|
48
47
|
super(type, children, properties)
|
|
49
48
|
end
|
|
50
49
|
|
|
51
|
-
# Get the class AST node type.
|
|
52
|
-
# @return [Symbol]
|
|
50
|
+
# Get the class AST node type. @return [Symbol]
|
|
53
51
|
class << self; attr_reader :ast_type end
|
|
54
52
|
|
|
55
|
-
# Get whether this class AST node has semantics.
|
|
56
|
-
#
|
|
53
|
+
# Get whether this class AST node has semantics. @return
|
|
54
|
+
# [boolean]
|
|
57
55
|
class << self; attr_reader :has_semantics end
|
|
58
56
|
|
|
59
57
|
# Get the line number where this AST node originates.
|
|
60
58
|
attr_reader :line_number
|
|
61
59
|
|
|
62
|
-
# Get the character range enclosing this AST node.
|
|
63
|
-
#
|
|
64
|
-
#
|
|
60
|
+
# Get the character range enclosing this AST node. It is defined
|
|
61
|
+
# as the close interval containing all the characters of this
|
|
62
|
+
# AST node.
|
|
65
63
|
attr_reader :character_range
|
|
66
64
|
|
|
67
65
|
# Get the syntax errors for this AST node.
|
|
@@ -112,8 +110,7 @@ module BELParser
|
|
|
112
110
|
end
|
|
113
111
|
|
|
114
112
|
def freeze
|
|
115
|
-
# no freeze...nothing
|
|
116
|
-
# I want to be able to modify properties!
|
|
113
|
+
# no freeze...nothing I want to be able to modify properties!
|
|
117
114
|
self
|
|
118
115
|
end
|
|
119
116
|
|
|
@@ -128,7 +125,8 @@ module BELParser
|
|
|
128
125
|
end
|
|
129
126
|
end
|
|
130
127
|
|
|
131
|
-
# Concatenates `array` with `children` and returns the resulting
|
|
128
|
+
# Concatenates `array` with `children` and returns the resulting
|
|
129
|
+
# node.
|
|
132
130
|
#
|
|
133
131
|
# @return [Node]
|
|
134
132
|
def concat(array)
|
|
@@ -209,8 +207,7 @@ module BELParser
|
|
|
209
207
|
|
|
210
208
|
# AST node representing the function of a BEL term.
|
|
211
209
|
#
|
|
212
|
-
# === Special node properties
|
|
213
|
-
# - _return_type_: {#return_type}
|
|
210
|
+
# === Special node properties - _return_type_: {#return_type}
|
|
214
211
|
#
|
|
215
212
|
class Function < Node
|
|
216
213
|
# AST node type
|
|
@@ -294,13 +291,13 @@ module BELParser
|
|
|
294
291
|
end
|
|
295
292
|
|
|
296
293
|
# Determine if this is a URL domain.
|
|
297
|
-
def
|
|
294
|
+
def url?
|
|
298
295
|
children[0] && children[0].is_a?(Url)
|
|
299
296
|
end
|
|
300
297
|
|
|
301
298
|
# Get the domain's Url.
|
|
302
299
|
def url
|
|
303
|
-
|
|
300
|
+
url? ? children[0] : nil
|
|
304
301
|
end
|
|
305
302
|
end
|
|
306
303
|
|
|
@@ -409,12 +406,12 @@ module BELParser
|
|
|
409
406
|
end
|
|
410
407
|
|
|
411
408
|
# Does the argument have a {Parameter} child?
|
|
412
|
-
def
|
|
409
|
+
def parameter?
|
|
413
410
|
children[0].is_a?(Parameter)
|
|
414
411
|
end
|
|
415
412
|
|
|
416
413
|
# Does the argument have a {Term} child?
|
|
417
|
-
def
|
|
414
|
+
def term?
|
|
418
415
|
children[0].is_a?(Term)
|
|
419
416
|
end
|
|
420
417
|
|
|
@@ -505,12 +502,38 @@ module BELParser
|
|
|
505
502
|
|
|
506
503
|
# Get what is being set.
|
|
507
504
|
def name
|
|
508
|
-
|
|
505
|
+
children[0]
|
|
509
506
|
end
|
|
510
507
|
|
|
511
508
|
# Get the value of what is being set.
|
|
512
509
|
def value
|
|
513
|
-
|
|
510
|
+
children[1]
|
|
511
|
+
end
|
|
512
|
+
end
|
|
513
|
+
|
|
514
|
+
# AST node representing a document property (e.g. +SET DOCUMENT
|
|
515
|
+
# ...+).
|
|
516
|
+
class DocumentProperty < Node
|
|
517
|
+
# AST node type
|
|
518
|
+
@ast_type = :document_property
|
|
519
|
+
# DocumentProperty has semantics (what was set?)
|
|
520
|
+
@has_semantics = true
|
|
521
|
+
|
|
522
|
+
# New DocumentProperty AST node.
|
|
523
|
+
#
|
|
524
|
+
# @see Node#initialize Node class for basic properties
|
|
525
|
+
def initialize(children = [], properties = {})
|
|
526
|
+
super(DocumentProperty.ast_type, children, properties)
|
|
527
|
+
end
|
|
528
|
+
|
|
529
|
+
# Get what is being set.
|
|
530
|
+
def name
|
|
531
|
+
children[0]
|
|
532
|
+
end
|
|
533
|
+
|
|
534
|
+
# Get the value of what is being set.
|
|
535
|
+
def value
|
|
536
|
+
children[1]
|
|
514
537
|
end
|
|
515
538
|
end
|
|
516
539
|
|
|
@@ -533,30 +556,30 @@ module BELParser
|
|
|
533
556
|
children[0]
|
|
534
557
|
end
|
|
535
558
|
|
|
536
|
-
def
|
|
559
|
+
def relationship?
|
|
537
560
|
children[1] && children[1].is_a?(Relationship)
|
|
538
561
|
end
|
|
539
562
|
|
|
540
563
|
# Get the relationship of the nested statement.
|
|
541
564
|
def relationship
|
|
542
|
-
|
|
565
|
+
relationship? ? children[1] : nil
|
|
543
566
|
end
|
|
544
567
|
|
|
545
|
-
def
|
|
568
|
+
def object?
|
|
546
569
|
children[2] && children[2].is_a?(Object)
|
|
547
570
|
end
|
|
548
571
|
|
|
549
572
|
# Get the object of the nested statement.
|
|
550
573
|
def object
|
|
551
|
-
|
|
574
|
+
object? ? children[2] : nil
|
|
552
575
|
end
|
|
553
576
|
|
|
554
|
-
def
|
|
577
|
+
def comment?
|
|
555
578
|
children[-1] && children[-1].is_a?(Comment)
|
|
556
579
|
end
|
|
557
580
|
|
|
558
581
|
def comment
|
|
559
|
-
|
|
582
|
+
comment? ? children[-1] : nil
|
|
560
583
|
end
|
|
561
584
|
end
|
|
562
585
|
|
|
@@ -574,20 +597,10 @@ module BELParser
|
|
|
574
597
|
super(NestedStatement.ast_type, children, properties)
|
|
575
598
|
end
|
|
576
599
|
|
|
577
|
-
# Get the
|
|
578
|
-
def
|
|
600
|
+
# Get the statement.
|
|
601
|
+
def statement
|
|
579
602
|
children[0]
|
|
580
603
|
end
|
|
581
|
-
|
|
582
|
-
# Get the relationship of the nested statement.
|
|
583
|
-
def relationship
|
|
584
|
-
children[1]
|
|
585
|
-
end
|
|
586
|
-
|
|
587
|
-
# Get the object of the nested statement.
|
|
588
|
-
def object
|
|
589
|
-
children[2]
|
|
590
|
-
end
|
|
591
604
|
end
|
|
592
605
|
|
|
593
606
|
# AST node representing a observed term statement.
|
|
@@ -604,8 +617,8 @@ module BELParser
|
|
|
604
617
|
super(ObservedTerm.ast_type, children, properties)
|
|
605
618
|
end
|
|
606
619
|
|
|
607
|
-
# Get the
|
|
608
|
-
def
|
|
620
|
+
# Get the statement.
|
|
621
|
+
def statement
|
|
609
622
|
children[0]
|
|
610
623
|
end
|
|
611
624
|
end
|
|
@@ -624,20 +637,10 @@ module BELParser
|
|
|
624
637
|
super(SimpleStatement.ast_type, children, properties)
|
|
625
638
|
end
|
|
626
639
|
|
|
627
|
-
# Get the
|
|
628
|
-
def
|
|
640
|
+
# Get the statement.
|
|
641
|
+
def statement
|
|
629
642
|
children[0]
|
|
630
643
|
end
|
|
631
|
-
|
|
632
|
-
# Get the relationship of the nested statement.
|
|
633
|
-
def relationship
|
|
634
|
-
children[1]
|
|
635
|
-
end
|
|
636
|
-
|
|
637
|
-
# Get the object of the nested statement.
|
|
638
|
-
def object
|
|
639
|
-
children[2]
|
|
640
|
-
end
|
|
641
644
|
end
|
|
642
645
|
|
|
643
646
|
# AST node representing the subject of a statement.
|
|
@@ -675,12 +678,12 @@ module BELParser
|
|
|
675
678
|
end
|
|
676
679
|
|
|
677
680
|
# Does the object have a {Term} child?
|
|
678
|
-
def
|
|
681
|
+
def term?
|
|
679
682
|
children[0].is_a?(Term)
|
|
680
683
|
end
|
|
681
684
|
|
|
682
685
|
# Does the object have a {Statement} child?
|
|
683
|
-
def
|
|
686
|
+
def statement?
|
|
684
687
|
children[0].is_a?(Statement)
|
|
685
688
|
end
|
|
686
689
|
|
|
@@ -735,16 +738,17 @@ module BELParser
|
|
|
735
738
|
end
|
|
736
739
|
|
|
737
740
|
# Get the term's function semantics.
|
|
738
|
-
|
|
739
|
-
@function_semantics
|
|
740
|
-
end
|
|
741
|
+
attr_reader :function_semantics
|
|
741
742
|
|
|
742
743
|
# Sets the term's function semantics.
|
|
743
744
|
def function_semantics=(function_semantics)
|
|
744
|
-
if function_semantics
|
|
745
|
-
|
|
745
|
+
if !function_semantics.nil? &&
|
|
746
|
+
!function_semantics.is_a?(BELParser::Language::Signature)
|
|
747
|
+
raise(
|
|
748
|
+
ArgumentError,
|
|
749
|
+
'function_semantics: expected nil or Signature')
|
|
746
750
|
end
|
|
747
|
-
assign_properties(
|
|
751
|
+
assign_properties(function_semantics: function_semantics)
|
|
748
752
|
end
|
|
749
753
|
end
|
|
750
754
|
|
|
@@ -768,10 +772,28 @@ module BELParser
|
|
|
768
772
|
end
|
|
769
773
|
end
|
|
770
774
|
|
|
775
|
+
# AST node representing a name.
|
|
776
|
+
class Name < Node
|
|
777
|
+
# AST node type
|
|
778
|
+
@ast_type = :name
|
|
779
|
+
# Name has semantics (name of property or annotation).
|
|
780
|
+
@has_semantics = true
|
|
781
|
+
|
|
782
|
+
# New Name AST node.
|
|
783
|
+
#
|
|
784
|
+
# @see Node#initialize Node class for basic properties
|
|
785
|
+
def initialize(children = [], properties = {})
|
|
786
|
+
super(Name.ast_type, children, properties)
|
|
787
|
+
end
|
|
788
|
+
|
|
789
|
+
def identifier
|
|
790
|
+
children[0]
|
|
791
|
+
end
|
|
792
|
+
end
|
|
793
|
+
|
|
771
794
|
# AST node representing a value.
|
|
772
795
|
#
|
|
773
|
-
# === Special node properties
|
|
774
|
-
# - _encoding_: {#encoding}
|
|
796
|
+
# === Special node properties - _encoding_: {#encoding}
|
|
775
797
|
#
|
|
776
798
|
class Value < Node
|
|
777
799
|
# AST node type
|
|
@@ -790,6 +812,10 @@ module BELParser
|
|
|
790
812
|
attr_reader :encoding
|
|
791
813
|
end
|
|
792
814
|
|
|
815
|
+
# Sexp defines a module that creates {BELParser::Parsers::AST::Node
|
|
816
|
+
# AST nodes} using S-expression syntax.
|
|
817
|
+
#
|
|
818
|
+
# @see https://en.wikipedia.org/wiki/S-expression S-expression
|
|
793
819
|
module Sexp
|
|
794
820
|
def nested_statement(*children)
|
|
795
821
|
NestedStatement.new(children)
|
|
@@ -839,6 +865,10 @@ module BELParser
|
|
|
839
865
|
Prefix.new(children)
|
|
840
866
|
end
|
|
841
867
|
|
|
868
|
+
def name(*children)
|
|
869
|
+
Name.new(children)
|
|
870
|
+
end
|
|
871
|
+
|
|
842
872
|
def value(*children)
|
|
843
873
|
Value.new(children)
|
|
844
874
|
end
|
|
@@ -871,6 +901,14 @@ module BELParser
|
|
|
871
901
|
BlankLine.new
|
|
872
902
|
end
|
|
873
903
|
|
|
904
|
+
def set(*children)
|
|
905
|
+
Set.new(children)
|
|
906
|
+
end
|
|
907
|
+
|
|
908
|
+
def document_property(*children)
|
|
909
|
+
DocumentProperty.new(children)
|
|
910
|
+
end
|
|
911
|
+
|
|
874
912
|
def annotation_definition(*children)
|
|
875
913
|
AnnotationDefinition.new(children)
|
|
876
914
|
end
|