yaparc 0.2.2 → 0.2.3
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.
- data/lib/yaparc.rb +141 -122
- data/test/n3-report.html +169 -0
- data/test/n3.bnf +129 -0
- data/{tests/test_abc.rb → test/test_abc.rb.bak} +0 -0
- data/{tests → test}/test_calc.rb +3 -3
- data/test/test_lambda.rb +87 -0
- data/test/test_metric.rb +617 -0
- data/{tests → test}/test_owl.rb +0 -0
- data/{tests → test}/test_parser.rb +42 -22
- data/test/test_prolog.rb +287 -0
- data/{tests → test}/test_sql.rb +11 -10
- data/{tests → test}/test_uri.rb +0 -0
- metadata +24 -18
- data/tests/abc20bnf.txt +0 -264
data/lib/yaparc.rb
CHANGED
@@ -29,10 +29,6 @@ module Yaparc
|
|
29
29
|
IS_WHITESPACE = lambda {|i| i == ' ' or i == "\n" or i == "\t"}
|
30
30
|
IS_CR = lambda {|i| i == "\n"}
|
31
31
|
|
32
|
-
# def self.included(mod)
|
33
|
-
# mod.extend ClassMethods
|
34
|
-
# end
|
35
|
-
|
36
32
|
def parse(input) #, &block)
|
37
33
|
result = @parser.call(input)
|
38
34
|
|
@@ -41,44 +37,14 @@ module Yaparc
|
|
41
37
|
else
|
42
38
|
result
|
43
39
|
end
|
44
|
-
|
45
|
-
# if result.respond_to? :parse
|
46
|
-
# result = result.parse(input)
|
47
|
-
# else
|
48
|
-
# # if block_given?
|
49
|
-
# # result.value = yield result.value
|
50
|
-
# # @tree = result
|
51
|
-
# # end
|
52
|
-
# result
|
53
|
-
# end
|
54
|
-
|
55
|
-
# if result.respond_to? :parse
|
56
|
-
# result = result.parse(input)
|
57
|
-
# else
|
58
|
-
# if block_given?
|
59
|
-
# result.value = yield result.value
|
60
|
-
# @tree = result
|
61
|
-
# else
|
62
|
-
# @tree = result.value
|
63
|
-
# end
|
64
|
-
# result
|
65
|
-
# end
|
66
40
|
end
|
67
41
|
|
68
|
-
# def eval
|
69
|
-
# tree = parse(input)
|
70
|
-
# end
|
71
|
-
|
72
|
-
|
73
|
-
# module ClassMethods
|
74
|
-
# def included(mod)
|
75
|
-
# end
|
76
|
-
# end
|
77
42
|
end # of Module Parsable
|
78
43
|
|
79
44
|
class Succeed
|
80
45
|
include Parsable
|
81
46
|
attr_reader :remaining
|
47
|
+
|
82
48
|
def initialize(value, remaining = nil)
|
83
49
|
@parser = lambda do |input|
|
84
50
|
Result::OK.new(:value => value, :input => input)
|
@@ -99,6 +65,7 @@ module Yaparc
|
|
99
65
|
|
100
66
|
class Item
|
101
67
|
include Parsable
|
68
|
+
|
102
69
|
def initialize
|
103
70
|
@parser = lambda do |input|
|
104
71
|
if input.nil? or input.empty?
|
@@ -112,6 +79,7 @@ module Yaparc
|
|
112
79
|
|
113
80
|
class ZeroOne
|
114
81
|
include Parsable
|
82
|
+
|
115
83
|
def initialize(parser, identity = [])
|
116
84
|
@parser = lambda do |input|
|
117
85
|
case result = parser.parse(input)
|
@@ -131,9 +99,9 @@ module Yaparc
|
|
131
99
|
|
132
100
|
class Satisfy
|
133
101
|
include Parsable
|
102
|
+
|
134
103
|
def initialize(predicate)
|
135
104
|
raise unless predicate.instance_of?(Proc)
|
136
|
-
|
137
105
|
@parser = lambda do |input|
|
138
106
|
result = Item.new.parse(input)
|
139
107
|
if result.instance_of?(Result::OK) and predicate.call(result.value)
|
@@ -141,27 +109,6 @@ module Yaparc
|
|
141
109
|
else
|
142
110
|
Fail.new
|
143
111
|
end
|
144
|
-
|
145
|
-
# if result.instance_of?(Result::OK)
|
146
|
-
# if predicate.call(result.value)
|
147
|
-
# Succeed.new(result.value, result.input)
|
148
|
-
# else
|
149
|
-
# Fail.new
|
150
|
-
# end
|
151
|
-
# else # Result::Fail or Result::Error
|
152
|
-
# Fail.new
|
153
|
-
# end
|
154
|
-
|
155
|
-
# case result = Item.new.parse(input)
|
156
|
-
# when Result::OK
|
157
|
-
# parser = if predicate.call(result.value)
|
158
|
-
# Succeed.new(result.value, result.input)
|
159
|
-
# else
|
160
|
-
# Fail.new
|
161
|
-
# end
|
162
|
-
# else # Result::Fail or Result::Error
|
163
|
-
# Fail.new
|
164
|
-
# end
|
165
112
|
end
|
166
113
|
end
|
167
114
|
|
@@ -190,15 +137,6 @@ module Yaparc
|
|
190
137
|
else
|
191
138
|
Succeed.new(result.value)
|
192
139
|
end
|
193
|
-
# case result = parser.parse(input)
|
194
|
-
# when Result::Fail
|
195
|
-
# Result::Error.new(:value => result.value, :input => result.input)
|
196
|
-
# when Result::OK
|
197
|
-
# Succeed.new(result.value)
|
198
|
-
# else
|
199
|
-
# Succeed.new(result.value)
|
200
|
-
# # Result::OK.new(:value => result.value,:input => result.input)
|
201
|
-
# end
|
202
140
|
end
|
203
141
|
end
|
204
142
|
end # of NoFail
|
@@ -206,6 +144,7 @@ module Yaparc
|
|
206
144
|
|
207
145
|
class Seq
|
208
146
|
include Parsable
|
147
|
+
|
209
148
|
def initialize(*parsers, &block)
|
210
149
|
@parser = lambda do |input|
|
211
150
|
args = []
|
@@ -218,13 +157,6 @@ module Yaparc
|
|
218
157
|
args << result.value
|
219
158
|
result
|
220
159
|
end
|
221
|
-
# case result = parser.parse(subsequent.input)
|
222
|
-
# when Result::Fail
|
223
|
-
# break Result::Fail.new(:input => subsequent.input)
|
224
|
-
# else
|
225
|
-
# args << result.value
|
226
|
-
# result
|
227
|
-
# end
|
228
160
|
end
|
229
161
|
|
230
162
|
case final_result
|
@@ -267,8 +199,34 @@ module Yaparc
|
|
267
199
|
end # of initialize
|
268
200
|
end
|
269
201
|
|
202
|
+
# class Alt
|
203
|
+
# include Parsable
|
204
|
+
# def initialize(*parsers)
|
205
|
+
# @parser = lambda do |input|
|
206
|
+
# if head = parsers[0]
|
207
|
+
# case result = head.parse(input)
|
208
|
+
# when Result::Fail
|
209
|
+
# if parsers.empty?
|
210
|
+
# result
|
211
|
+
# else
|
212
|
+
# Alt.new(*parsers[1..-1]).parse(input)
|
213
|
+
# end
|
214
|
+
# when Result::OK
|
215
|
+
# result
|
216
|
+
# else
|
217
|
+
# raise
|
218
|
+
# end
|
219
|
+
# else
|
220
|
+
# Result::Fail.new(:input => input)
|
221
|
+
# end
|
222
|
+
# end
|
223
|
+
# end # of initialize
|
224
|
+
# end
|
225
|
+
|
226
|
+
|
270
227
|
class Apply
|
271
228
|
include Parsable
|
229
|
+
|
272
230
|
def initialize(parser, &block)
|
273
231
|
@parser = lambda do |input|
|
274
232
|
result = parser.parse(input)
|
@@ -277,12 +235,6 @@ module Yaparc
|
|
277
235
|
else
|
278
236
|
Fail.new.parse(input)
|
279
237
|
end
|
280
|
-
# case result = parser.parse(input)
|
281
|
-
# when Result::OK
|
282
|
-
# Succeed.new(yield(result.value)).parse(result.input)
|
283
|
-
# else
|
284
|
-
# Fail.new.parse(input)
|
285
|
-
# end
|
286
238
|
end
|
287
239
|
end # of initialize
|
288
240
|
end # of Apply
|
@@ -290,6 +242,7 @@ module Yaparc
|
|
290
242
|
|
291
243
|
class String
|
292
244
|
include Parsable
|
245
|
+
|
293
246
|
def initialize(string, case_sensitive = true)
|
294
247
|
@parser = lambda do |input|
|
295
248
|
result = Item.new.parse(string)
|
@@ -298,30 +251,15 @@ module Yaparc
|
|
298
251
|
Char.new(result.value, case_sensitive),
|
299
252
|
Yaparc::String.new(result.input, case_sensitive),
|
300
253
|
Succeed.new(result.value + result.input)
|
301
|
-
) do |char_result, string_result, succeed_result|
|
254
|
+
# ) do |char_result, string_result, succeed_result|
|
255
|
+
) do |_, _, succeed_result|
|
302
256
|
succeed_result
|
303
257
|
end
|
304
258
|
else
|
305
|
-
Succeed.new(result)
|
259
|
+
Succeed.new(result)
|
306
260
|
end
|
307
|
-
# case result = Item.new.parse(string)
|
308
|
-
# when Result::OK
|
309
|
-
# Seq.new(
|
310
|
-
# Char.new(result.value, case_sensitive),
|
311
|
-
# Yaparc::String.new(result.input, case_sensitive),
|
312
|
-
# Succeed.new(result.value + result.input)
|
313
|
-
# ) do |char_result, string_result, succeed_result|
|
314
|
-
# succeed_result
|
315
|
-
# end
|
316
|
-
# else
|
317
|
-
# Succeed.new(result) # Is it OK?
|
318
|
-
# end
|
319
261
|
end
|
320
262
|
end
|
321
|
-
|
322
|
-
# def parse(input)
|
323
|
-
# @parser.call(input).parse(input)
|
324
|
-
# end
|
325
263
|
end
|
326
264
|
|
327
265
|
class Regex
|
@@ -342,23 +280,24 @@ module Yaparc
|
|
342
280
|
end
|
343
281
|
end
|
344
282
|
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
283
|
+
# def parse_with_parameter(input)
|
284
|
+
# raise "Deprecated!! Use Regex with block"
|
285
|
+
# if match = Regexp.new(@regex).match(input)
|
286
|
+
# if block_given?
|
287
|
+
# yield match.to_a[1..match.to_a.length]
|
288
|
+
# else
|
289
|
+
# Result::OK.new(:value => match, :input => match.post_match)
|
290
|
+
# end
|
291
|
+
# else
|
292
|
+
# Result::Fail.new(:input => input)
|
293
|
+
# end
|
294
|
+
# end
|
357
295
|
end
|
358
296
|
|
359
297
|
# permits zero or more applications of parser.
|
360
298
|
class Many
|
361
299
|
include Parsable
|
300
|
+
|
362
301
|
def initialize(parser, identity = [])
|
363
302
|
@parser = lambda do |input|
|
364
303
|
Alt.new(ManyOne.new(parser, identity), Succeed.new(identity))
|
@@ -369,6 +308,7 @@ module Yaparc
|
|
369
308
|
# requires at least one successfull application of parser.
|
370
309
|
class ManyOne
|
371
310
|
include Parsable
|
311
|
+
|
372
312
|
def initialize(parser, identity = [])
|
373
313
|
@parser = lambda do |input|
|
374
314
|
Seq.new(parser, Many.new(parser, identity)) do |head, tail|
|
@@ -430,6 +370,7 @@ module Yaparc
|
|
430
370
|
|
431
371
|
class WhiteSpace
|
432
372
|
include Parsable
|
373
|
+
|
433
374
|
def initialize
|
434
375
|
@parser = lambda do |input|
|
435
376
|
#Many.new(Satisfy.new(IS_WHITESPACE),'')
|
@@ -442,7 +383,7 @@ module Yaparc
|
|
442
383
|
include Parsable
|
443
384
|
attr_accessor :prefix, :postfix
|
444
385
|
|
445
|
-
def initialize(parser, args = {
|
386
|
+
def initialize(parser, args = {}, &block)
|
446
387
|
@parser = lambda do |input|
|
447
388
|
@prefix = args[:prefix] ? args[:prefix] : WhiteSpace.new
|
448
389
|
@postfix = args[:postfix] ? args[:postfix] : WhiteSpace.new
|
@@ -462,6 +403,7 @@ module Yaparc
|
|
462
403
|
|
463
404
|
class Literal
|
464
405
|
include Parsable
|
406
|
+
|
465
407
|
def initialize(literal, case_sensitive = true)
|
466
408
|
@parser = lambda do |input|
|
467
409
|
Tokenize.new(Yaparc::String.new(literal, case_sensitive))
|
@@ -469,33 +411,110 @@ module Yaparc
|
|
469
411
|
end
|
470
412
|
end
|
471
413
|
|
414
|
+
# class Tokenizer
|
415
|
+
# include Parsable
|
416
|
+
# attr_accessor :prefix, :postfix
|
417
|
+
|
418
|
+
# def initialize(args = {})
|
419
|
+
# @parser = lambda do |input|
|
420
|
+
# @prefix = args[:prefix] ? args[:prefix] : WhiteSpace.new
|
421
|
+
# @postfix = args[:postfix] ? args[:postfix] : WhiteSpace.new
|
422
|
+
# end
|
423
|
+
# end
|
424
|
+
|
425
|
+
# def tokenize(&block)
|
426
|
+
# parser = yield
|
427
|
+
|
428
|
+
# Seq.new(@prefix, parser, @postfix) do |_, vs, _|
|
429
|
+
# vs
|
430
|
+
# end
|
431
|
+
# end
|
432
|
+
# end
|
433
|
+
|
434
|
+
# class Literalizer
|
435
|
+
# include Parsable
|
436
|
+
|
437
|
+
# def initialize(literal, options = {})
|
438
|
+
# unless case_sensitive = options[:case_sensitive]
|
439
|
+
# true
|
440
|
+
# end
|
441
|
+
|
442
|
+
# unless tokenizer = options[:tokenizer]
|
443
|
+
# tokenizer = Tokenizer.new
|
444
|
+
# end
|
445
|
+
|
446
|
+
# @parser = lambda do |input|
|
447
|
+
# tokenizer.tokenize do
|
448
|
+
# Yaparc::String.new(literal, case_sensitive)
|
449
|
+
# end
|
450
|
+
# end
|
451
|
+
# end
|
452
|
+
# end
|
453
|
+
|
472
454
|
# Refer to http://www.cs.nott.ac.uk/~gmh/monparsing.pdf, p.23
|
473
455
|
class Identifier
|
474
456
|
include Yaparc::Parsable
|
475
|
-
@@identifier_regex =
|
457
|
+
@@identifier_regex = /\A[a-zA-Z_]+[a-zA-Z0-9_]*/
|
476
458
|
|
477
|
-
def initialize(
|
478
|
-
if
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
459
|
+
def initialize(options = {})
|
460
|
+
identifier_regex = if regex = options[:regex]
|
461
|
+
::Yaparc::Regex.new(regex)
|
462
|
+
else
|
463
|
+
::Yaparc::Regex.new(@@identifier_regex)
|
464
|
+
end
|
465
|
+
|
466
|
+
tokenizer = Tokenize.new(identifier_regex)
|
467
|
+
|
468
|
+
if exclude = options[:exclude]
|
483
469
|
@parser = lambda do |input|
|
484
|
-
keyword_parsers =
|
470
|
+
keyword_parsers = exclude.map {|keyword| Yaparc::String.new(keyword)}
|
471
|
+
|
485
472
|
case result = Yaparc::Alt.new(*keyword_parsers).parse(input)
|
486
473
|
when Yaparc::Result::OK
|
487
474
|
Yaparc::Fail.new
|
488
475
|
else # Result::Fail or Result::Error
|
489
|
-
|
476
|
+
tokenizer
|
490
477
|
end
|
491
478
|
end
|
479
|
+
else
|
480
|
+
@parser = lambda do |input|
|
481
|
+
tokenizer
|
482
|
+
end
|
492
483
|
end
|
493
484
|
end
|
485
|
+
end
|
494
486
|
|
495
|
-
#
|
496
|
-
#
|
487
|
+
# class Identifier
|
488
|
+
# include Yaparc::Parsable
|
489
|
+
# @@identifier_regex = ::Yaparc::Regex.new(/\A[a-zA-Z_]+[a-zA-Z0-9_]*/)
|
490
|
+
|
491
|
+
# def initialize(*keywords)
|
492
|
+
# # def initialize(*keywords, &block)
|
493
|
+
# if keywords == []
|
494
|
+
# @parser = lambda do |input|
|
495
|
+
# Tokenize.new(@@identifier_regex)
|
496
|
+
# # if block_given?
|
497
|
+
# # tokenize = Tokenize.new(@@identifier_regex)
|
498
|
+
# # yield tokenize
|
499
|
+
# # tokenize
|
500
|
+
# # else
|
501
|
+
# # Tokenize.new(@@identifier_regex)
|
502
|
+
# # end
|
503
|
+
# end
|
504
|
+
# else
|
505
|
+
# @parser = lambda do |input|
|
506
|
+
# keyword_parsers = keywords.map {|keyword| Yaparc::String.new(keyword)}
|
507
|
+
|
508
|
+
# case result = Yaparc::Alt.new(*keyword_parsers).parse(input)
|
509
|
+
# when Yaparc::Result::OK
|
510
|
+
# Yaparc::Fail.new
|
511
|
+
# else # Result::Fail or Result::Error
|
512
|
+
# Tokenize.new(@@identifier_regex)
|
513
|
+
# end
|
514
|
+
# end
|
515
|
+
# end
|
497
516
|
# end
|
498
|
-
|
517
|
+
# end
|
499
518
|
|
500
519
|
class Char
|
501
520
|
include Parsable
|
data/test/n3-report.html
ADDED
@@ -0,0 +1,169 @@
|
|
1
|
+
<html><head><title>BNF</title></head><body>
|
2
|
+
<h1>BNF</h1>
|
3
|
+
<p>Productions are in normal type, linked to their definitions.<br>
|
4
|
+
<em>Regular expressions are in italics</em><br>
|
5
|
+
<b><code>Literal characters in quoted in bold</code></b><br>
|
6
|
+
<em>void</em> means an empty production.
|
7
|
+
</p>
|
8
|
+
<dl>
|
9
|
+
<dt><a name="barename">barename</a></dt><dd>
|
10
|
+
<p><em>[A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�𐀀-][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ--‿-⁀⁰-Ⰰ-、-豈-﷏ﷰ-�𐀀-]*</em></p>
|
11
|
+
</dd>
|
12
|
+
<dt><a name="barename_csl">barename_csl</a></dt><dd>
|
13
|
+
<p><a href="#barename">barename</a> <a href="#barename_csl_tail">barename_csl_tail</a></p>
|
14
|
+
<p><em>void</em></p>
|
15
|
+
</dd>
|
16
|
+
<dt><a name="barename_csl_tail">barename_csl_tail</a></dt><dd>
|
17
|
+
<p><b><code>","</code></b> <a href="#barename">barename</a> <a href="#barename_csl_tail">barename_csl_tail</a></p>
|
18
|
+
<p><em>void</em></p>
|
19
|
+
</dd>
|
20
|
+
<dt><a name="boolean">boolean</a></dt><dd>
|
21
|
+
<p><b><code>"@false"</code></b></p>
|
22
|
+
<p><b><code>"@true"</code></b></p>
|
23
|
+
</dd>
|
24
|
+
<dt><a name="decimal">decimal</a></dt><dd>
|
25
|
+
<p><em>[-+]?[0-9]+(\.[0-9]+)?</em></p>
|
26
|
+
</dd>
|
27
|
+
<dt><a name="declaration">declaration</a></dt><dd>
|
28
|
+
<p><b><code>"@base"</code></b> <a href="#explicituri">explicituri</a></p>
|
29
|
+
<p><b><code>"@keywords"</code></b> <a href="#barename_csl">barename_csl</a></p>
|
30
|
+
<p><b><code>"@prefix"</code></b> <a href="#prefix">prefix</a> <a href="#explicituri">explicituri</a></p>
|
31
|
+
</dd>
|
32
|
+
<dt><a name="document">document</a></dt><dd>
|
33
|
+
<p><a href="#statements_optional">statements_optional</a> <em>EOF</em></p>
|
34
|
+
</dd>
|
35
|
+
<dt><a name="double">double</a></dt><dd>
|
36
|
+
<p><em>[-+]?[0-9]+(\.[0-9]+)?([eE][-+]?[0-9]+)</em></p>
|
37
|
+
</dd>
|
38
|
+
<dt><a name="dtlang">dtlang</a></dt><dd>
|
39
|
+
<p><b><code>"@"</code></b> <a href="#langcode">langcode</a></p>
|
40
|
+
<p><b><code>"^^"</code></b> <a href="#symbol">symbol</a></p>
|
41
|
+
<p><em>void</em></p>
|
42
|
+
</dd>
|
43
|
+
<dt><a name="existential">existential</a></dt><dd>
|
44
|
+
<p><b><code>"@forSome"</code></b> <a href="#symbol_csl">symbol_csl</a></p>
|
45
|
+
</dd>
|
46
|
+
<dt><a name="explicituri">explicituri</a></dt><dd>
|
47
|
+
<p><em><[^>]*></em></p>
|
48
|
+
</dd>
|
49
|
+
<dt><a name="expression">expression</a></dt><dd>
|
50
|
+
<p><a href="#pathitem">pathitem</a> <a href="#pathtail">pathtail</a></p>
|
51
|
+
</dd>
|
52
|
+
<dt><a name="formulacontent">formulacontent</a></dt><dd>
|
53
|
+
<p><a href="#statementlist">statementlist</a></p>
|
54
|
+
</dd>
|
55
|
+
<dt><a name="integer">integer</a></dt><dd>
|
56
|
+
<p><em>[-+]?[0-9]+</em></p>
|
57
|
+
</dd>
|
58
|
+
<dt><a name="langcode">langcode</a></dt><dd>
|
59
|
+
<p><em>[a-z]+(-[a-z0-9]+)*</em></p>
|
60
|
+
</dd>
|
61
|
+
<dt><a name="literal">literal</a></dt><dd>
|
62
|
+
<p><a href="#string">string</a> <a href="#dtlang">dtlang</a></p>
|
63
|
+
</dd>
|
64
|
+
<dt><a name="numericliteral">numericliteral</a></dt><dd>
|
65
|
+
<p><a href="#decimal">decimal</a></p>
|
66
|
+
<p><a href="#double">double</a></p>
|
67
|
+
<p><a href="#integer">integer</a></p>
|
68
|
+
</dd>
|
69
|
+
<dt><a name="object">object</a></dt><dd>
|
70
|
+
<p><a href="#expression">expression</a></p>
|
71
|
+
</dd>
|
72
|
+
<dt><a name="objecttail">objecttail</a></dt><dd>
|
73
|
+
<p><b><code>","</code></b> <a href="#object">object</a> <a href="#objecttail">objecttail</a></p>
|
74
|
+
<p><em>void</em></p>
|
75
|
+
</dd>
|
76
|
+
<dt><a name="pathitem">pathitem</a></dt><dd>
|
77
|
+
<p><a href="#boolean">boolean</a></p>
|
78
|
+
<p><a href="#literal">literal</a></p>
|
79
|
+
<p><a href="#numericliteral">numericliteral</a></p>
|
80
|
+
<p><a href="#quickvariable">quickvariable</a></p>
|
81
|
+
<p><a href="#symbol">symbol</a></p>
|
82
|
+
<p><b><code>"("</code></b> <a href="#pathlist">pathlist</a> <b><code>")"</code></b></p>
|
83
|
+
<p><b><code>"["</code></b> <a href="#propertylist">propertylist</a> <b><code>"]"</code></b></p>
|
84
|
+
<p><b><code>"{"</code></b> <a href="#formulacontent">formulacontent</a> <b><code>"}"</code></b></p>
|
85
|
+
</dd>
|
86
|
+
<dt><a name="pathlist">pathlist</a></dt><dd>
|
87
|
+
<p><a href="#expression">expression</a> <a href="#pathlist">pathlist</a></p>
|
88
|
+
<p><em>void</em></p>
|
89
|
+
</dd>
|
90
|
+
<dt><a name="pathtail">pathtail</a></dt><dd>
|
91
|
+
<p><b><code>"!"</code></b> <a href="#expression">expression</a></p>
|
92
|
+
<p><b><code>"^"</code></b> <a href="#expression">expression</a></p>
|
93
|
+
<p><em>void</em></p>
|
94
|
+
</dd>
|
95
|
+
<dt><a name="prefix">prefix</a></dt><dd>
|
96
|
+
<p><em>([A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�𐀀-][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ--‿-⁀⁰-Ⰰ-、-豈-﷏ﷰ-�𐀀-]*)?:</em></p>
|
97
|
+
</dd>
|
98
|
+
<dt><a name="propertylist">propertylist</a></dt><dd>
|
99
|
+
<p><a href="#verb">verb</a> <a href="#object">object</a> <a href="#objecttail">objecttail</a> <a href="#propertylisttail">propertylisttail</a></p>
|
100
|
+
<p><em>void</em></p>
|
101
|
+
</dd>
|
102
|
+
<dt><a name="propertylisttail">propertylisttail</a></dt><dd>
|
103
|
+
<p><b><code>";"</code></b> <a href="#propertylist">propertylist</a></p>
|
104
|
+
<p><em>void</em></p>
|
105
|
+
</dd>
|
106
|
+
<dt><a name="qname">qname</a></dt><dd>
|
107
|
+
<p><em>(([A
|
108
|
+
-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�𐀀-][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ-
|
109
|
+
-‿-⁀⁰-Ⰰ-、-豈-﷏ﷰ-�𐀀-]*)?:)?[A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-
|
110
|
+
�𐀀-][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ--‿-⁀⁰-Ⰰ-、-豈-﷏ﷰ-�𐀀-]*</em></p>
|
111
|
+
</dd>
|
112
|
+
<dt><a name="quickvariable">quickvariable</a></dt><dd>
|
113
|
+
<p><em>\?[A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�𐀀-][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ--‿-⁀⁰-Ⰰ-、-豈-﷏ﷰ-�𐀀-]*</em></p>
|
114
|
+
</dd>
|
115
|
+
<dt><a name="simpleStatement">simpleStatement</a></dt><dd>
|
116
|
+
<p><a href="#subject">subject</a> <a href="#propertylist">propertylist</a></p>
|
117
|
+
</dd>
|
118
|
+
<dt><a name="statement">statement</a></dt><dd>
|
119
|
+
<p><a href="#declaration">declaration</a></p>
|
120
|
+
<p><a href="#existential">existential</a></p>
|
121
|
+
<p><a href="#simpleStatement">simpleStatement</a></p>
|
122
|
+
<p><a href="#universal">universal</a></p>
|
123
|
+
</dd>
|
124
|
+
<dt><a name="statementlist">statementlist</a></dt><dd>
|
125
|
+
<p><a href="#statement">statement</a> <a href="#statementtail">statementtail</a></p>
|
126
|
+
<p><em>void</em></p>
|
127
|
+
</dd>
|
128
|
+
<dt><a name="statements_optional">statements_optional</a></dt><dd>
|
129
|
+
<p><a href="#statement">statement</a> <b><code>"."</code></b> <a href="#statements_optional">statements_optional</a></p>
|
130
|
+
<p><em>void</em></p>
|
131
|
+
</dd>
|
132
|
+
<dt><a name="statementtail">statementtail</a></dt><dd>
|
133
|
+
<p><b><code>"."</code></b> <a href="#statementlist">statementlist</a></p>
|
134
|
+
<p><em>void</em></p>
|
135
|
+
</dd>
|
136
|
+
<dt><a name="string">string</a></dt><dd>
|
137
|
+
<p><em>("""[^"\\]*(?:(?:\\.|"(?!""))[^"\\]*)*""")|("[^"\\]*(?:\\.[^"\\]*)*")</em></p>
|
138
|
+
</dd>
|
139
|
+
<dt><a name="subject">subject</a></dt><dd>
|
140
|
+
<p><a href="#expression">expression</a></p>
|
141
|
+
</dd>
|
142
|
+
<dt><a name="symbol">symbol</a></dt><dd>
|
143
|
+
<p><a href="#explicituri">explicituri</a></p>
|
144
|
+
<p><a href="#qname">qname</a></p>
|
145
|
+
</dd>
|
146
|
+
<dt><a name="symbol_csl">symbol_csl</a></dt><dd>
|
147
|
+
<p><a href="#symbol">symbol</a> <a href="#symbol_csl_tail">symbol_csl_tail</a></p>
|
148
|
+
<p><em>void</em></p>
|
149
|
+
</dd>
|
150
|
+
<dt><a name="symbol_csl_tail">symbol_csl_tail</a></dt><dd>
|
151
|
+
<p><b><code>","</code></b> <a href="#symbol">symbol</a> <a href="#symbol_csl_tail">symbol_csl_tail</a></p>
|
152
|
+
<p><em>void</em></p>
|
153
|
+
</dd>
|
154
|
+
<dt><a name="universal">universal</a></dt><dd>
|
155
|
+
<p><b><code>"@forAll"</code></b> <a href="#symbol_csl">symbol_csl</a></p>
|
156
|
+
</dd>
|
157
|
+
<dt><a name="verb">verb</a></dt><dd>
|
158
|
+
<p><a href="#expression">expression</a></p>
|
159
|
+
<p><b><code>"<="</code></b></p>
|
160
|
+
<p><b><code>"="</code></b></p>
|
161
|
+
<p><b><code>"=>"</code></b></p>
|
162
|
+
<p><b><code>"@a"</code></b></p>
|
163
|
+
<p><b><code>"@has"</code></b> <a href="#expression">expression</a></p>
|
164
|
+
<p><b><code>"@is"</code></b> <a href="#expression">expression</a> <b><code>"@of"</code></b></p>
|
165
|
+
</dd>
|
166
|
+
|
167
|
+
</dl>
|
168
|
+
|
169
|
+
</body></html>
|