shex 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,106 @@
1
+ require 'ebnf/ll1/lexer'
2
+
3
+ module ShEx
4
+ module Terminals
5
+ # Definitions of token regular expressions used for lexical analysis
6
+
7
+ ##
8
+ # Unicode regular expressions for Ruby 1.9+ with the Oniguruma engine.
9
+ U_CHARS1 = Regexp.compile(<<-EOS.gsub(/\s+/, ''))
10
+ [\\u00C0-\\u00D6]|[\\u00D8-\\u00F6]|[\\u00F8-\\u02FF]|
11
+ [\\u0370-\\u037D]|[\\u037F-\\u1FFF]|[\\u200C-\\u200D]|
12
+ [\\u2070-\\u218F]|[\\u2C00-\\u2FEF]|[\\u3001-\\uD7FF]|
13
+ [\\uF900-\\uFDCF]|[\\uFDF0-\\uFFFD]|[\\u{10000}-\\u{EFFFF}]
14
+ EOS
15
+ U_CHARS2 = Regexp.compile("\\u00B7|[\\u0300-\\u036F]|[\\u203F-\\u2040]").freeze
16
+ IRI_RANGE = Regexp.compile("[[^<>\"{}|^`\\\\]&&[^\\x00-\\x20]]").freeze
17
+
18
+ # 26t
19
+ UCHAR = EBNF::LL1::Lexer::UCHAR
20
+ # 171s
21
+ PERCENT = /%\h\h/.freeze
22
+ # 173s
23
+ PN_LOCAL_ESC = /\\[_~\.\-\!$\&'\(\)\*\+,;=\/\?\#@%]/.freeze
24
+ # 170s
25
+ PLX = /#{PERCENT}|#{PN_LOCAL_ESC}/.freeze.freeze
26
+ # 164s
27
+ PN_CHARS_BASE = /[A-Za-z]|#{U_CHARS1}/.freeze
28
+ # 165s
29
+ PN_CHARS_U = /_|#{PN_CHARS_BASE}/.freeze
30
+ # 167s
31
+ PN_CHARS = /[\d-]|#{PN_CHARS_U}|#{U_CHARS2}/.freeze
32
+ PN_LOCAL_BODY = /(?:(?:\.|:|#{PN_CHARS}|#{PLX})*(?:#{PN_CHARS}|:|#{PLX}))?/.freeze
33
+ PN_CHARS_BODY = /(?:(?:\.|#{PN_CHARS})*#{PN_CHARS})?/.freeze
34
+ # 168s
35
+ PN_PREFIX = /#{PN_CHARS_BASE}#{PN_CHARS_BODY}/.freeze
36
+ # 169s
37
+ PN_LOCAL = /(?:[\d|]|#{PN_CHARS_U}|#{PLX})#{PN_LOCAL_BODY}/.freeze
38
+ # 155s
39
+ EXPONENT = /[eE][+-]?\d+/
40
+ # 160s
41
+ ECHAR = /\\[tbnrf\\"']/
42
+
43
+ WS = /(?:\s|(?:#[^\n\r]*))+/m.freeze
44
+
45
+ # 60
46
+ RDF_TYPE = /a/.freeze
47
+ # 18t
48
+ IRIREF = /<(?:#{IRI_RANGE}|#{UCHAR})*>/.freeze
49
+ # 140s
50
+ PNAME_NS = /#{PN_PREFIX}?:/.freeze
51
+ # 141s
52
+ PNAME_LN = /#{PNAME_NS}#{PN_LOCAL}/.freeze
53
+ # 61
54
+ ATPNAME_NS = /@#{WS}*#{PN_PREFIX}?:/m.freeze
55
+ # 62
56
+ ATPNAME_LN = /@#{WS}*#{PNAME_NS}#{PN_LOCAL}/m.freeze
57
+ # 142s
58
+ BLANK_NODE_LABEL = /_:(?:\d|#{PN_CHARS_U})(?:(?:#{PN_CHARS}|\.)*#{PN_CHARS})?/.freeze
59
+ # 145s
60
+ LANGTAG = /@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*/.freeze
61
+ # 19t
62
+ INTEGER = /[+-]?\d+/.freeze
63
+ # 20t
64
+ DECIMAL = /[+-]?(?:\d*\.\d+)/.freeze
65
+ # 21t
66
+ DOUBLE = /[+-]?(?:\d+\.\d*#{EXPONENT}|\.?\d+#{EXPONENT})/.freeze
67
+ # 156s
68
+ STRING_LITERAL1 = /'(?:[^\'\\\n\r]|#{ECHAR}|#{UCHAR})*'/.freeze
69
+ # 157s
70
+ STRING_LITERAL2 = /"(?:[^\"\\\n\r]|#{ECHAR}|#{UCHAR})*"/.freeze
71
+ # 158s
72
+ STRING_LITERAL_LONG1 = /'''(?:(?:'|'')?(?:[^'\\]|#{ECHAR}|#{UCHAR}))*'''/m.freeze
73
+ # 159s
74
+ STRING_LITERAL_LONG2 = /"""(?:(?:"|"")?(?:[^"\\]|#{ECHAR}|#{UCHAR}))*"""/m.freeze
75
+
76
+ # 29
77
+ CODE = /\{(?:[^%\\]|\\[%\\]|#{UCHAR})*%#{WS}*\}/m.freeze
78
+ # 30
79
+ REPEAT_RANGE = /\{\s*#{INTEGER}(?:,#{WS}*(?:#{INTEGER}|\*)?)?#{WS}*\}/.freeze
80
+
81
+ # String terminals, mixed case sensitivity
82
+ STR_EXPR = %r(true|false
83
+ |\^\^|\/\/
84
+ |[\(\)\{\}\[\],\.;\=\-\~!\|\&\@\$\?\+\*\%\^\/a]|
85
+ (?i:OR|AND|NOT
86
+ |BASE|PREFIX
87
+ |IRI|BNODE|NONLITERAL|PATTERN
88
+ |MINLENGTH|MAXLENGTH|LENGTH
89
+ |MAXINCLUSIVE|MAXEXCLUSIVE
90
+ |MININCLUSIVE|MINEXCLUSIVE
91
+ |TOTALDIGITS|FRACTIONDIGITS
92
+ |START
93
+ |EXTERNAL|CLOSED|EXTRA|LITERAL
94
+ )
95
+ )x.freeze
96
+
97
+ # Map terminals to canonical form
98
+ STR_MAP = %w{OR AND NOT BASE PREFIX IRI BNODE NONLITERAL PATTERN
99
+ MINLENGTH MAXLENGTH LENGTH MININCLUSIVE MAXINCLUSIVE MINEXCLUSIVE MAXEXCLUSIVE
100
+ TOTALDIGITS FRACTIONDIGITS START EXTERNAL CLOSED EXTRA LITERAL}.
101
+ inject({}) do |memo, t|
102
+ memo.merge(t.downcase => t)
103
+ end
104
+
105
+ end
106
+ end
metadata ADDED
@@ -0,0 +1,224 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shex
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Gregg Kellogg
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-12-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rdf
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.1.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.1'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.1.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: ebnf
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.1'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.1'
47
+ - !ruby/object:Gem::Dependency
48
+ name: sxp
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rdf-xsd
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '2.0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '2.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: sparql
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '2.0'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '2.0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: rdf-spec
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '2.0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '2.0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: rdf-turtle
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '2.0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '2.0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: rspec
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '3.5'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '3.5'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rspec-its
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '1.2'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '1.2'
145
+ - !ruby/object:Gem::Dependency
146
+ name: yard
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '0.9'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '0.9'
159
+ description: Implements ShExC and ShEx JSON.
160
+ email: public-rdf-ruby@w3.org
161
+ executables: []
162
+ extensions: []
163
+ extra_rdoc_files: []
164
+ files:
165
+ - AUTHORS
166
+ - CREDITS
167
+ - LICENSE
168
+ - README.md
169
+ - VERSION
170
+ - etc/doap.ttl
171
+ - lib/shex.rb
172
+ - lib/shex/algebra.rb
173
+ - lib/shex/algebra/and.rb
174
+ - lib/shex/algebra/annotation.rb
175
+ - lib/shex/algebra/base.rb
176
+ - lib/shex/algebra/each_of.rb
177
+ - lib/shex/algebra/external.rb
178
+ - lib/shex/algebra/inclusion.rb
179
+ - lib/shex/algebra/node_constraint.rb
180
+ - lib/shex/algebra/not.rb
181
+ - lib/shex/algebra/one_of.rb
182
+ - lib/shex/algebra/operator.rb
183
+ - lib/shex/algebra/or.rb
184
+ - lib/shex/algebra/prefix.rb
185
+ - lib/shex/algebra/satisfiable.rb
186
+ - lib/shex/algebra/schema.rb
187
+ - lib/shex/algebra/semact.rb
188
+ - lib/shex/algebra/shape.rb
189
+ - lib/shex/algebra/shape_ref.rb
190
+ - lib/shex/algebra/start.rb
191
+ - lib/shex/algebra/stem.rb
192
+ - lib/shex/algebra/stem_range.rb
193
+ - lib/shex/algebra/triple_constraint.rb
194
+ - lib/shex/algebra/triple_expression.rb
195
+ - lib/shex/algebra/unary_shape.rb
196
+ - lib/shex/algebra/value.rb
197
+ - lib/shex/meta.rb
198
+ - lib/shex/parser.rb
199
+ - lib/shex/terminals.rb
200
+ homepage: http://ruby-rdf.github.com/shex
201
+ licenses:
202
+ - Unlicense
203
+ metadata: {}
204
+ post_install_message:
205
+ rdoc_options: []
206
+ require_paths:
207
+ - lib
208
+ required_ruby_version: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: 2.2.2
213
+ required_rubygems_version: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: '0'
218
+ requirements: []
219
+ rubyforge_project: rdf
220
+ rubygems_version: 2.6.8
221
+ signing_key:
222
+ specification_version: 4
223
+ summary: Implementation of Shape Expressions (ShEx) for RDF.rb
224
+ test_files: []