tla-parser-s 0.2.2 → 0.2.5
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/README.md +2 -2
- data/VERSION +1 -1
- data/lib/parser/parser_sexp.treetop +16 -8
- data/spec/fixtures/resolver1/op_domain.tla +1 -0
- data/spec/parser/parser_spec.rb +26 -0
- data/spec/semantics/resolver_spec.rb +6 -0
- data/tla-parser-s.gemspec +3 -2
- metadata +24 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ebb55209f382a77488d0541f147f82616795a2b7
|
4
|
+
data.tar.gz: 9b3b143c43fb410967b4e2a2e88f67673207e63b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df3858b3f83b89c097f715a1987cf56f7a319807fd8dafdacc1ff83876fe61803de8f0b1d1a9857406cf5d9f41b83cf31c23065c72e524f2c4448c80ed28f82e
|
7
|
+
data.tar.gz: 55fea89b643ea8d308c3b518e5f905018b2d990dbabd650e82ba7db9667836cd115eda59ed524a3ae29c586a2e5310505ffb488684640a004d2e767a02db8be4
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
<link href="../site.css" rel="stylesheet"></link>
|
2
|
-
[
|
2
|
+
[Readme](README.md) [Releases](RELEASES.md) [Todo](TODO.md)
|
3
3
|
|
4
4
|
|
5
|
-
# tla-parser-s - TLA+ language parser (for tla-sbuilder) - $Release:0.2.
|
5
|
+
# tla-parser-s - TLA+ language parser (for tla-sbuilder) - $Release:0.2.5$
|
6
6
|
|
7
7
|
A Ruby library for parsing
|
8
8
|
[TLA+ language](http://research.microsoft.com/en-us/um/people/lamport/tla/book.html).
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.5
|
@@ -148,14 +148,21 @@ end
|
|
148
148
|
|
149
149
|
|
150
150
|
rule unit_expression
|
151
|
-
sequence_expression
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
151
|
+
sequence_expression
|
152
|
+
/ set_expression
|
153
|
+
/ set_expression_map
|
154
|
+
/ set_constructor
|
155
|
+
/ record_expression
|
156
|
+
/ operator_expression
|
157
|
+
/ quantify_expression
|
158
|
+
/ choose_expression
|
159
|
+
/ function_expression
|
160
|
+
/ let_expression
|
161
|
+
/ if_expression
|
162
|
+
/ identifier / 'DOMAIN' space* identifier <Identifier>
|
163
|
+
/ record_self
|
164
|
+
/ original_value
|
165
|
+
/ string / integer / ( '(' space? expression space? ')' <ParenthesisExpression>) <UnitExpression>
|
159
166
|
|
160
167
|
end
|
161
168
|
|
@@ -250,6 +257,7 @@ rule set_constructor
|
|
250
257
|
'{' space* expression_list? space* '}' space* <SetConstructor>
|
251
258
|
end
|
252
259
|
|
260
|
+
|
253
261
|
rule bound_expression
|
254
262
|
identifier space* '\in' space+ 'DOMAIN'? space? expression space* <BoundInExpression>
|
255
263
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
op_domain(rec) == "x" \in DOMAIN rec \/ op_let
|
data/spec/parser/parser_spec.rb
CHANGED
@@ -267,6 +267,9 @@ describe TlaParserS::Parser do
|
|
267
267
|
# manually traverse quantified expression
|
268
268
|
quantified_expression = node.quantified_expression.traverse { |m, node_type, enode, node_val| m.concat( expression_value(node_type, enode, node_val )) }
|
269
269
|
"#{node_val} #{binds.join(', ')} : #{quantified_expression}"
|
270
|
+
|
271
|
+
when "BoundInExpression"
|
272
|
+
raise "BoundInExpression missing implemetation"
|
270
273
|
when "IntegerValue"
|
271
274
|
"#{node_val}"
|
272
275
|
else
|
@@ -1684,6 +1687,29 @@ describe TlaParserS::Parser do
|
|
1684
1687
|
:expression => "TRUE"
|
1685
1688
|
},
|
1686
1689
|
},
|
1690
|
+
{
|
1691
|
+
:str => 'operator(rec) == "x" \in rec',
|
1692
|
+
:desc => "in-set",
|
1693
|
+
:start => :operator,
|
1694
|
+
:exception => nil,
|
1695
|
+
:debug => false,
|
1696
|
+
:expect => {
|
1697
|
+
:parameters=>{:node_type=>"Parameters", :value=>[{:node_type=>"Identifier", :value=>'rec'}]},
|
1698
|
+
:expression => '"x"\\inrec'
|
1699
|
+
},
|
1700
|
+
},
|
1701
|
+
|
1702
|
+
{
|
1703
|
+
:str => 'operator(rec) == "x" \in DOMAIN rec',
|
1704
|
+
:desc => "in-set",
|
1705
|
+
:start => :operator,
|
1706
|
+
:exception => nil,
|
1707
|
+
:debug => false,
|
1708
|
+
:expect => {
|
1709
|
+
:parameters=>{:node_type=>"Parameters", :value=>[{:node_type=>"Identifier", :value=>'rec'}]},
|
1710
|
+
:expression => '"x"\\inDOMAIN rec'
|
1711
|
+
},
|
1712
|
+
},
|
1687
1713
|
|
1688
1714
|
{
|
1689
1715
|
:str => "itWork( param1 ) == TRUE",
|
@@ -274,6 +274,12 @@ describe TlaParserS::Resolver do
|
|
274
274
|
:expect => [ "op_let.tla", "var4.tla", "directives.tla", "directives.cfg" ]
|
275
275
|
},
|
276
276
|
|
277
|
+
{
|
278
|
+
:desc => "Domain expression",
|
279
|
+
:entrypoints => ["op_domain"],
|
280
|
+
:expect => [ "op_domain.tla", "op_let.tla", "directives.tla", "var4.tla", "directives.cfg" ]
|
281
|
+
},
|
282
|
+
|
277
283
|
|
278
284
|
{
|
279
285
|
:desc => "RECURSIVE directive",
|
data/tla-parser-s.gemspec
CHANGED
@@ -34,8 +34,9 @@ EOF
|
|
34
34
|
|
35
35
|
s.required_ruby_version = '~> 2'
|
36
36
|
|
37
|
+
s.add_runtime_dependency 'ffi', '~>1.9', ">=1.9.18"
|
37
38
|
s.add_runtime_dependency 'thor', '~>0.19', ">=0.19.1"
|
38
|
-
s.add_runtime_dependency 'treetop', '~>1.6', ">=1.6.3"
|
39
|
-
|
39
|
+
s.add_runtime_dependency 'treetop', '~>1.6', ">=1.6.3"
|
40
|
+
|
40
41
|
|
41
42
|
end
|
metadata
CHANGED
@@ -1,15 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tla-parser-s
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jarjuk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: ffi
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.9'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.9.18
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.9'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.9.18
|
13
33
|
- !ruby/object:Gem::Dependency
|
14
34
|
name: thor
|
15
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +114,7 @@ files:
|
|
94
114
|
- spec/fixtures/resolver1/op2.tla
|
95
115
|
- spec/fixtures/resolver1/op3.tla
|
96
116
|
- spec/fixtures/resolver1/op4.tla
|
117
|
+
- spec/fixtures/resolver1/op_domain.tla
|
97
118
|
- spec/fixtures/resolver1/op_let.tla
|
98
119
|
- spec/fixtures/resolver1/op_tail_chg.tla
|
99
120
|
- spec/fixtures/resolver1/proc1.tla
|
@@ -157,9 +178,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
178
|
version: '0'
|
158
179
|
requirements: []
|
159
180
|
rubyforge_project:
|
160
|
-
rubygems_version: 2.
|
181
|
+
rubygems_version: 2.6.14
|
161
182
|
signing_key:
|
162
183
|
specification_version: 4
|
163
184
|
summary: Treetop parser & sematic routines to resolve modules+
|
164
185
|
test_files: []
|
165
|
-
has_rdoc:
|