expressir 1.2.4-x86_64-darwin → 1.2.7-x86_64-darwin
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.cross_rubies +0 -6
- data/.github/workflows/rake.yml +200 -21
- data/.gitignore +7 -2
- data/.gitmodules +3 -0
- data/.rubocop.yml +13 -4
- data/README.adoc +8 -0
- data/Rakefile +4 -1
- data/bin/console +0 -1
- data/bin/rspec +3 -3
- data/exe/expressir +4 -2
- data/exe/format +1 -1
- data/exe/format-test +25 -25
- data/exe/generate-parser +16 -13
- data/expressir.gemspec +12 -10
- data/lib/expressir/config.rb +1 -1
- data/lib/expressir/express/2.7/express_parser.bundle +0 -0
- data/lib/expressir/express/3.0/express_parser.bundle +0 -0
- data/lib/expressir/express/3.1/express_parser.bundle +0 -0
- data/lib/expressir/express/parser.rb +3 -4
- data/lib/expressir/express/visitor.rb +7 -5
- data/lib/expressir/model.rb +78 -78
- data/lib/expressir/version.rb +1 -1
- data/rakelib/antlr4-native.rake +161 -0
- data/rakelib/cross-ruby.rake +213 -162
- data/spec/acceptance/version_spec.rb +17 -2
- data/spec/expressir/express/cache_spec.rb +23 -5
- data/spec/expressir/express/formatter_spec.rb +54 -8
- data/spec/expressir/express/parser_spec.rb +47 -11
- data/spec/expressir/model/model_element_spec.rb +198 -146
- data/spec/spec_helper.rb +7 -0
- metadata +54 -63
- data/demo.rb +0 -18
- data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp +0 -9589
- data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl +0 -36619
- data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.xml +0 -13294
- data/original/examples/employment/eclipse/.project +0 -17
- data/original/examples/employment/eclipse/Export/Employment.png +0 -0
- data/original/examples/employment/eclipse/Express/employment_schema.exp +0 -33
- data/original/examples/employment/eclipse/Express/employment_schema.xmi +0 -77
- data/original/examples/employment/eclipse/Express/employment_schema.xml +0 -93
- data/original/examples/employment/eclipse/Models/Employment.uml +0 -4
- data/original/examples/employment/eclipse/Models/Employment.umldi +0 -240
- data/original/examples/employment/eclipse/readme.txt +0 -7
- data/original/examples/employment/employment_schema.exp +0 -33
- data/original/examples/employment/employment_schema.rb +0 -232
- data/original/examples/employment/employment_schema.xml +0 -93
- data/original/examples/employment/employment_schema___module.rb +0 -46
- data/original/examples/employment/employment_schema___p28attr.rb +0 -126
- data/original/examples/employment/employment_schema___p28inst.rb +0 -26
- data/original/examples/employment/example_employment_data.xml +0 -1
- data/original/examples/employment/example_employment_data_copy.xml +0 -1
- data/original/examples/employment/example_employment_reader.rb +0 -30
- data/original/examples/employment/example_employment_writer.rb +0 -51
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.exp +0 -3710
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.owl +0 -35880
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xmi +0 -15357
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xml +0 -9468
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.exp +0 -8404
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl +0 -43147
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi +0 -18341
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml +0 -11632
- data/original/exp2ruby.rb +0 -525
- data/original/expsm.rb +0 -34
- data/original/mapping_owl.rb +0 -1018
- data/original/mapping_sysml.rb +0 -2281
- data/original/mapping_uml2.rb +0 -599
- data/original/mapping_uml2_eclipse.rb +0 -433
- data/original/reeper.rb +0 -134
- data/spec/expressr_spec.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6030a88e2347a914a26a027154e318d376b7eb351b2f0e0c8d4d4245f6cf8b2d
|
4
|
+
data.tar.gz: 017a19262e9c57df4937713ab56da4245c9d57b4caa1a8d737d0b69be3ba7e85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52ebe9c49d76e588c0a4cb29e3c4c2dbb9781d2eb85b27ddf2b78beaa740e47adf0d838b45f98065863b5fe9b7b1b05869616ed5e447ac5663e1868109cad910
|
7
|
+
data.tar.gz: eb83287a57d97f429b3f8c0a959049c2393da4d34aa7050b5e7be7a868d258e1225e26cd789634a83b197bfedc32db6cfcb2269d63cdf9143852d299be990292
|
data/.cross_rubies
CHANGED
@@ -1,20 +1,14 @@
|
|
1
|
-
3.1.0:i686-w64-mingw32
|
2
1
|
3.1.0:x86_64-w64-mingw32
|
3
|
-
3.1.0:i686-linux-gnu
|
4
2
|
3.1.0:x86_64-linux-gnu
|
5
3
|
3.1.0:aarch64-linux-gnu
|
6
4
|
3.1.0:x86_64-darwin
|
7
5
|
3.1.0:arm64-darwin
|
8
|
-
3.0.0:i686-w64-mingw32
|
9
6
|
3.0.0:x86_64-w64-mingw32
|
10
|
-
3.0.0:i686-linux-gnu
|
11
7
|
3.0.0:x86_64-linux-gnu
|
12
8
|
3.0.0:aarch64-linux-gnu
|
13
9
|
3.0.0:x86_64-darwin
|
14
10
|
3.0.0:arm64-darwin
|
15
|
-
2.7.0:i686-w64-mingw32
|
16
11
|
2.7.0:x86_64-w64-mingw32
|
17
|
-
2.7.0:i686-linux-gnu
|
18
12
|
2.7.0:x86_64-linux-gnu
|
19
13
|
2.7.0:aarch64-linux-gnu
|
20
14
|
2.7.0:x86_64-darwin
|
data/.github/workflows/rake.yml
CHANGED
@@ -6,30 +6,38 @@ on:
|
|
6
6
|
pull_request:
|
7
7
|
|
8
8
|
jobs:
|
9
|
+
rubocop:
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
steps:
|
12
|
+
- name: Checkout
|
13
|
+
uses: actions/checkout@v3
|
14
|
+
with:
|
15
|
+
submodules: recursive
|
16
|
+
|
17
|
+
- name: Install Ruby
|
18
|
+
uses: ruby/setup-ruby@v1
|
19
|
+
with:
|
20
|
+
ruby-version: 3.0
|
21
|
+
bundler-cache: true
|
22
|
+
|
23
|
+
- name: Bundle
|
24
|
+
run: bundle install --jobs 4 --retry 3
|
25
|
+
|
26
|
+
- name: Rubocop
|
27
|
+
run: bundle exec rake rubocop
|
28
|
+
|
9
29
|
rake:
|
10
30
|
name: test on ruby-${{ matrix.ruby }} ${{ matrix.os }}
|
11
|
-
runs-on: ${{ matrix.os }}
|
12
|
-
continue-on-error: ${{ matrix.experimental }}
|
31
|
+
runs-on: ${{ matrix.os }}
|
13
32
|
strategy:
|
14
33
|
fail-fast: false
|
15
34
|
matrix:
|
16
35
|
ruby: [ '3.1', '3.0', '2.7' ]
|
17
36
|
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
18
|
-
experimental: [ false ]
|
19
|
-
include:
|
20
|
-
- ruby: 'head'
|
21
|
-
os: 'ubuntu-latest'
|
22
|
-
experimental: true
|
23
|
-
- ruby: 'head'
|
24
|
-
os: 'windows-latest'
|
25
|
-
experimental: true
|
26
|
-
- ruby: 'head'
|
27
|
-
os: 'macos-latest'
|
28
|
-
experimental: true
|
29
37
|
|
30
38
|
steps:
|
31
39
|
- name: Checkout
|
32
|
-
uses: actions/checkout@
|
40
|
+
uses: actions/checkout@v3
|
33
41
|
with:
|
34
42
|
submodules: recursive
|
35
43
|
|
@@ -55,18 +63,18 @@ jobs:
|
|
55
63
|
run: bundle exec rake compile
|
56
64
|
|
57
65
|
- name: Run tests
|
58
|
-
run:
|
66
|
+
run: |
|
67
|
+
bundle exec rake
|
68
|
+
cat .rspec_status
|
59
69
|
|
60
70
|
# test release workflow
|
61
|
-
pack:
|
71
|
+
pack-ruby:
|
62
72
|
runs-on: ubuntu-latest
|
63
73
|
strategy:
|
64
74
|
fail-fast: false
|
65
|
-
matrix:
|
66
|
-
host: [ linux, windows, darwin ]
|
67
75
|
steps:
|
68
76
|
- name: Checkout
|
69
|
-
uses: actions/checkout@
|
77
|
+
uses: actions/checkout@v3
|
70
78
|
with:
|
71
79
|
submodules: recursive
|
72
80
|
|
@@ -81,16 +89,36 @@ jobs:
|
|
81
89
|
run: bundle install --jobs 4 --retry 3
|
82
90
|
|
83
91
|
- name: Build gem without native extension
|
84
|
-
if: matrix.host == 'linux'
|
85
92
|
run: gem build expressir.gemspec
|
86
93
|
|
87
94
|
- name: Package gem without native extension
|
88
|
-
if: matrix.host == 'linux'
|
89
95
|
uses: actions/upload-artifact@v2
|
90
96
|
with:
|
91
97
|
name: pkg-ruby
|
92
98
|
path: expressir-*.gem
|
93
99
|
|
100
|
+
pack:
|
101
|
+
runs-on: ubuntu-latest
|
102
|
+
strategy:
|
103
|
+
fail-fast: false
|
104
|
+
matrix:
|
105
|
+
host: [ linux, windows, darwin ]
|
106
|
+
steps:
|
107
|
+
- name: Checkout
|
108
|
+
uses: actions/checkout@v3
|
109
|
+
with:
|
110
|
+
submodules: recursive
|
111
|
+
|
112
|
+
- name: Setup Ruby
|
113
|
+
uses: ruby/setup-ruby@v1
|
114
|
+
with:
|
115
|
+
ruby-version: '3.0'
|
116
|
+
# bundler-cache: true important to not use cache because it leads to "cannot find -lrice"
|
117
|
+
# more info https://github.com/lutaml/expressir/runs/2097658383?check_suite_focus=true#step:7:2126
|
118
|
+
|
119
|
+
- name: Bundle
|
120
|
+
run: bundle install --jobs 4 --retry 3
|
121
|
+
|
94
122
|
- name: Enable swap
|
95
123
|
run: |
|
96
124
|
sudo fallocate -l 15g /compile.swap
|
@@ -107,3 +135,154 @@ jobs:
|
|
107
135
|
with:
|
108
136
|
name: pkg-${{ matrix.host }}
|
109
137
|
path: pkg/*.gem
|
138
|
+
|
139
|
+
verify-ruby:
|
140
|
+
name: verify ruby gem on ruby-${{ matrix.ruby }} ${{ matrix.os }}
|
141
|
+
needs: pack-ruby
|
142
|
+
runs-on: ${{ matrix.os }}
|
143
|
+
strategy:
|
144
|
+
fail-fast: false
|
145
|
+
matrix:
|
146
|
+
ruby: [ '3.1', '3.0', '2.7' ]
|
147
|
+
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
148
|
+
steps:
|
149
|
+
- name: Install Ruby
|
150
|
+
uses: ruby/setup-ruby@v1
|
151
|
+
with:
|
152
|
+
ruby-version: ${{ matrix.ruby }}
|
153
|
+
bundler-cache: true
|
154
|
+
|
155
|
+
- name: Checkout
|
156
|
+
uses: actions/checkout@v3
|
157
|
+
with:
|
158
|
+
submodules: recursive
|
159
|
+
|
160
|
+
- name: Bundle
|
161
|
+
run: bundle install --jobs 4 --retry 3
|
162
|
+
|
163
|
+
- name: Download packaged gem
|
164
|
+
uses: actions/download-artifact@v2
|
165
|
+
with:
|
166
|
+
name: pkg-ruby
|
167
|
+
path: pkg
|
168
|
+
|
169
|
+
- name: Install gem
|
170
|
+
run: gem install -l pkg/expressir-*.gem
|
171
|
+
|
172
|
+
- name: Verify
|
173
|
+
run: |
|
174
|
+
cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
|
175
|
+
ruby bin/rspec
|
176
|
+
cat .rspec_status || echo ".rspec_status was not found"
|
177
|
+
|
178
|
+
verify-darwin:
|
179
|
+
name: verify MacOS binary gem on ruby-${{ matrix.ruby }}
|
180
|
+
needs: pack
|
181
|
+
runs-on: macos-latest
|
182
|
+
strategy:
|
183
|
+
fail-fast: false
|
184
|
+
matrix:
|
185
|
+
ruby: [ '3.1', '3.0', '2.7' ]
|
186
|
+
steps:
|
187
|
+
- name: Install Ruby
|
188
|
+
uses: ruby/setup-ruby@v1
|
189
|
+
with:
|
190
|
+
ruby-version: ${{ matrix.ruby }}
|
191
|
+
bundler-cache: true
|
192
|
+
|
193
|
+
- name: Checkout
|
194
|
+
uses: actions/checkout@v3
|
195
|
+
|
196
|
+
- name: Bundle
|
197
|
+
run: bundle install --jobs 4 --retry 3
|
198
|
+
|
199
|
+
- name: Download packaged gem
|
200
|
+
uses: actions/download-artifact@v2
|
201
|
+
with:
|
202
|
+
name: pkg-darwin
|
203
|
+
path: pkg
|
204
|
+
|
205
|
+
- name: Install binary gem
|
206
|
+
run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM.sub(/darwin\d{2}$/, 'darwin')").gem
|
207
|
+
# MacOS with have something like x86_64-darwin19, others just x86_64-linux
|
208
|
+
|
209
|
+
- name: Verify
|
210
|
+
run: |
|
211
|
+
cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
|
212
|
+
ruby bin/rspec
|
213
|
+
cat .rspec_status || echo ".rspec_status was not found"
|
214
|
+
|
215
|
+
verify-linux:
|
216
|
+
name: verify Linux binary gem on ruby-${{ matrix.ruby }}
|
217
|
+
needs: pack
|
218
|
+
runs-on: ubuntu-latest
|
219
|
+
strategy:
|
220
|
+
fail-fast: false
|
221
|
+
matrix:
|
222
|
+
ruby: [ '3.1', '3.0', '2.7' ]
|
223
|
+
steps:
|
224
|
+
- name: Install Ruby
|
225
|
+
uses: ruby/setup-ruby@v1
|
226
|
+
with:
|
227
|
+
ruby-version: ${{ matrix.ruby }}
|
228
|
+
bundler-cache: true
|
229
|
+
|
230
|
+
- name: Checkout
|
231
|
+
uses: actions/checkout@v3
|
232
|
+
|
233
|
+
- name: Bundle
|
234
|
+
run: bundle install --jobs 4 --retry 3
|
235
|
+
|
236
|
+
- name: Download packaged gem
|
237
|
+
uses: actions/download-artifact@v2
|
238
|
+
with:
|
239
|
+
name: pkg-linux
|
240
|
+
path: pkg
|
241
|
+
|
242
|
+
- name: Install binary gem
|
243
|
+
run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM").gem
|
244
|
+
|
245
|
+
- name: Verify
|
246
|
+
run: |
|
247
|
+
cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
|
248
|
+
ruby bin/rspec
|
249
|
+
cat .rspec_status || echo ".rspec_status was not found"
|
250
|
+
|
251
|
+
verify-windows:
|
252
|
+
name: verify Windows binary gem on ruby-${{ matrix.ruby }}
|
253
|
+
needs: pack
|
254
|
+
continue-on-error: true
|
255
|
+
runs-on: windows-latest
|
256
|
+
strategy:
|
257
|
+
fail-fast: false
|
258
|
+
# Ruby 3.1 fails
|
259
|
+
# https://github.com/lutaml/expressir/issues/103
|
260
|
+
matrix:
|
261
|
+
ruby: [ '3.1', '3.0', '2.7' ]
|
262
|
+
steps:
|
263
|
+
- name: Install Ruby
|
264
|
+
uses: ruby/setup-ruby@v1
|
265
|
+
with:
|
266
|
+
ruby-version: ${{ matrix.ruby }}
|
267
|
+
bundler-cache: true
|
268
|
+
|
269
|
+
- name: Checkout
|
270
|
+
uses: actions/checkout@v3
|
271
|
+
|
272
|
+
- name: Bundle
|
273
|
+
run: bundle install --jobs 4 --retry 3
|
274
|
+
|
275
|
+
- name: Download packaged gem
|
276
|
+
uses: actions/download-artifact@v2
|
277
|
+
with:
|
278
|
+
name: pkg-windows
|
279
|
+
path: pkg
|
280
|
+
|
281
|
+
- name: Install binary gem
|
282
|
+
run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM").gem
|
283
|
+
|
284
|
+
- name: Verify
|
285
|
+
run: |
|
286
|
+
cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
|
287
|
+
ruby bin/rspec
|
288
|
+
cat .rspec_status || echo ".rspec_status was not found"
|
data/.gitignore
CHANGED
@@ -8,11 +8,16 @@
|
|
8
8
|
/tmp/
|
9
9
|
/Gemfile.lock
|
10
10
|
/.idea
|
11
|
+
/.vscode
|
11
12
|
/lib/expressir/express/express_parser.bundle
|
13
|
+
/lib/expressir/express/express_parser.so
|
14
|
+
/lib/expressir/express/*/express_parser.bundle
|
15
|
+
/lib/expressir/express/*/express_parser.so
|
12
16
|
/spec/syntax/*-pretty.exp
|
17
|
+
/ext/express-parser/rice-embed
|
13
18
|
|
14
19
|
# rspec failure tracking
|
15
20
|
.rspec_status
|
16
21
|
|
17
|
-
|
18
|
-
|
22
|
+
# rubocop guide
|
23
|
+
.rubocop-https---*
|
data/.gitmodules
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,8 +1,17 @@
|
|
1
1
|
inherit_from:
|
2
2
|
- https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
|
3
3
|
|
4
|
-
# local repo-specific modifications
|
5
|
-
# ...
|
6
|
-
|
7
4
|
AllCops:
|
8
|
-
TargetRubyVersion: 2.
|
5
|
+
TargetRubyVersion: 2.6
|
6
|
+
SuggestExtensions: false
|
7
|
+
Exclude:
|
8
|
+
- 'vendor/**/*'
|
9
|
+
- 'expressir.gemspec'
|
10
|
+
- 'tmp/**/*'
|
11
|
+
- 'pkg/**/*'
|
12
|
+
- 'exe/format-test'
|
13
|
+
- 'lib/expressir/express/**/*'
|
14
|
+
- 'lib/expressir/model/**/*'
|
15
|
+
|
16
|
+
Layout/LineLength:
|
17
|
+
Max: 160
|
data/README.adoc
CHANGED
@@ -75,6 +75,14 @@ Run the test suite
|
|
75
75
|
bin/rspec
|
76
76
|
----
|
77
77
|
|
78
|
+
=== Grammar updates
|
79
|
+
EXPRESS grammar is lined as git submodule to ext/express-grammar
|
80
|
+
Shoudl you update it, run ```rake generate```. This command will generate source code for updated native extension using antlr4-native gem.
|
81
|
+
Please note that we create several classes on top of antlr4-native output so using embedded rake task is a real requirement.
|
82
|
+
|
83
|
+
When new extension is gnerated and tested plase check in updated C++ files to git (```rake generate``` is NOT a CI step,
|
84
|
+
extension source files are pulled from the repo).
|
85
|
+
|
78
86
|
== Installation
|
79
87
|
|
80
88
|
Add this line to your application's `Gemfile`:
|
data/Rakefile
CHANGED
@@ -1,14 +1,17 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
require "rspec/core/rake_task"
|
3
3
|
require "rake/extensiontask"
|
4
|
+
require "rubocop/rake_task"
|
4
5
|
require "yard"
|
5
6
|
|
6
7
|
RSpec::Core::RakeTask.new(:spec)
|
7
8
|
|
8
|
-
task :
|
9
|
+
task default: :spec
|
9
10
|
|
10
11
|
GEMSPEC = Gem::Specification.load("expressir.gemspec")
|
11
12
|
|
13
|
+
RuboCop::RakeTask.new
|
14
|
+
|
12
15
|
Gem::PackageTask.new(GEMSPEC).define
|
13
16
|
|
14
17
|
YARD::Rake::YardocTask.new
|
data/bin/console
CHANGED
data/bin/rspec
CHANGED
@@ -10,12 +10,12 @@
|
|
10
10
|
|
11
11
|
require "pathname"
|
12
12
|
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
-
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
14
|
|
15
|
-
bundle_binstub = File.expand_path("
|
15
|
+
bundle_binstub = File.expand_path("bundle", __dir__)
|
16
16
|
|
17
17
|
if File.file?(bundle_binstub)
|
18
|
-
if
|
18
|
+
if /This file was generated by Bundler/.match?(File.read(bundle_binstub, 300))
|
19
19
|
load(bundle_binstub)
|
20
20
|
else
|
21
21
|
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
data/exe/expressir
CHANGED
@@ -11,8 +11,10 @@ $:.unshift File.expand_path("../../lib", bin_file)
|
|
11
11
|
# Fixes https://github.com/rubygems/rubygems/issues/1420
|
12
12
|
require "rubygems/specification"
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
module Gem
|
15
|
+
class Specification
|
16
|
+
def this; self; end
|
17
|
+
end
|
16
18
|
end
|
17
19
|
|
18
20
|
# start up the CLI
|
data/exe/format
CHANGED
data/exe/format-test
CHANGED
@@ -24,30 +24,30 @@ exp_files = [
|
|
24
24
|
# '../iso-10303-stepmod/data/resources/iso13584_expressions_schema/iso13584_expressions_schema.exp',
|
25
25
|
# annotated-express test (12s)
|
26
26
|
# see https://github.com/metanorma/annotated-express/blob/master/data/documents/resources/fundamentals_of_product_description_and_support/sections/04-schemas.adoc
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
27
|
+
"../iso-10303-stepmod/data/resources/action_schema/action_schema_annotated.exp",
|
28
|
+
"../iso-10303-stepmod/data/resources/application_context_schema/application_context_schema_annotated.exp",
|
29
|
+
"../iso-10303-stepmod/data/resources/approval_schema/approval_schema_annotated.exp",
|
30
|
+
"../iso-10303-stepmod/data/resources/basic_attribute_schema/basic_attribute_schema_annotated.exp",
|
31
|
+
"../iso-10303-stepmod/data/resources/certification_schema/certification_schema_annotated.exp",
|
32
|
+
"../iso-10303-stepmod/data/resources/contract_schema/contract_schema_annotated.exp",
|
33
|
+
"../iso-10303-stepmod/data/resources/date_time_schema/date_time_schema_annotated.exp",
|
34
|
+
"../iso-10303-stepmod/data/resources/document_schema/document_schema.exp",
|
35
|
+
"../iso-10303-stepmod/data/resources/effectivity_schema/effectivity_schema_annotated.exp",
|
36
|
+
"../iso-10303-stepmod/data/resources/experience_schema/experience_schema_annotated.exp",
|
37
|
+
"../iso-10303-stepmod/data/resources/external_reference_schema/external_reference_schema_annotated.exp",
|
38
|
+
"../iso-10303-stepmod/data/resources/group_schema/group_schema_annotated.exp",
|
39
|
+
"../iso-10303-stepmod/data/resources/language_schema/language_schema_annotated.exp",
|
40
|
+
"../iso-10303-stepmod/data/resources/location_schema/location_schema_annotated.exp",
|
41
|
+
"../iso-10303-stepmod/data/resources/management_resources_schema/management_resources_schema_annotated.exp",
|
42
|
+
"../iso-10303-stepmod/data/resources/measure_schema/measure_schema_annotated.exp",
|
43
|
+
"../iso-10303-stepmod/data/resources/person_organization_schema/person_organization_schema_annotated.exp",
|
44
|
+
"../iso-10303-stepmod/data/resources/process_property_schema/process_property_schema_annotated.exp",
|
45
|
+
"../iso-10303-stepmod/data/resources/product_definition_schema/product_definition_schema_annotated.exp",
|
46
|
+
"../iso-10303-stepmod/data/resources/product_property_definition_schema/product_property_definition_schema_annotated.exp",
|
47
|
+
"../iso-10303-stepmod/data/resources/product_property_representation_schema/product_property_representation_schema_annotated.exp",
|
48
|
+
"../iso-10303-stepmod/data/resources/qualifications_schema/qualifications_schema_annotated.exp",
|
49
|
+
"../iso-10303-stepmod/data/resources/security_classification_schema/security_classification_schema_annotated.exp",
|
50
|
+
"../iso-10303-stepmod/data/resources/support_resource_schema/support_resource_schema_annotated.exp",
|
51
51
|
# full test (6m18s + 8s = 6m26s)
|
52
52
|
# *`bundle exec ../stepmod-utils/exe/stepmod-find-express-files ../iso-10303-stepmod`.strip.split("\n").map{|file| File.exists?(file.sub(/\.exp$/, '_annotated.exp')) ? file.sub(/\.exp$/, '_annotated.exp') : file}
|
53
53
|
]
|
@@ -78,4 +78,4 @@ end
|
|
78
78
|
result = repository.to_hash(formatter: formatter, skip_empty: true)
|
79
79
|
puts "Repository.to_hash time: #{(Time.now - start).round(2)}s"
|
80
80
|
|
81
|
-
# puts YAML.dump(result)
|
81
|
+
# puts YAML.dump(result)
|
data/exe/generate-parser
CHANGED
@@ -1,29 +1,30 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "fileutils"
|
4
|
+
require "antlr4-native"
|
5
5
|
|
6
6
|
grammar_file = ARGV.shift
|
7
7
|
|
8
8
|
# ANTLR does weird things if the grammar file isn't in the current working directory
|
9
|
-
temp_grammar_file = File.join(FileUtils.pwd
|
9
|
+
temp_grammar_file = File.join(FileUtils.pwd, File.basename(grammar_file))
|
10
10
|
FileUtils.cp(grammar_file, temp_grammar_file)
|
11
11
|
|
12
12
|
# generate parser
|
13
13
|
generator = Antlr4Native::Generator.new(
|
14
14
|
grammar_files: [File.basename(temp_grammar_file)],
|
15
|
-
output_dir:
|
16
|
-
parser_root_method:
|
15
|
+
output_dir: "ext",
|
16
|
+
parser_root_method: "syntax",
|
17
17
|
)
|
18
18
|
generator.generate
|
19
19
|
|
20
20
|
# fix issues with generated parser
|
21
|
-
parser_source_file = File.join(
|
22
|
-
parser_source_lines = File.read(parser_source_file).split(
|
21
|
+
parser_source_file = File.join("ext", "express-parser", "express_parser.cpp")
|
22
|
+
parser_source_lines = File.read(parser_source_file).split("\n")
|
23
23
|
|
24
24
|
# - add ParserProxy tokens method, simple compensation for missing exposed BufferedTokenStream
|
25
|
-
i = parser_source_lines.index{|x| x ==
|
26
|
-
parser_source_lines[i + 6] +=
|
25
|
+
i = parser_source_lines.index { |x| x == " Object syntax() {" }
|
26
|
+
parser_source_lines[i + 6] += <<~CPP.split("\n").map { |x| x == "" ? x : " #{x}" }.join("\n")
|
27
|
+
|
27
28
|
Array getTokens() {
|
28
29
|
Array a;
|
29
30
|
|
@@ -35,14 +36,16 @@ parser_source_lines[i + 6] += "\n" + <<~CPP.split(/\n/).map{|x| x != "" ? " " +
|
|
35
36
|
|
36
37
|
return a;
|
37
38
|
}
|
39
|
+
|
38
40
|
CPP
|
39
|
-
i = parser_source_lines.index{|x| x == ' .define_method("syntax", &ParserProxy::syntax)'}
|
40
|
-
parser_source_lines[i] +=
|
41
|
+
i = parser_source_lines.index { |x| x == ' .define_method("syntax", &ParserProxy::syntax, Return().keepAlive())' }
|
42
|
+
parser_source_lines[i] += <<~CPP.split("\n").map { |x| x == "" ? x : " #{x}" }.join("\n")
|
43
|
+
|
41
44
|
.define_method("tokens", &ParserProxy::getTokens)
|
42
45
|
CPP
|
43
46
|
|
44
47
|
# write fixed parser file
|
45
|
-
File.write(parser_source_file, parser_source_lines.join("\n")
|
48
|
+
File.write(parser_source_file, "#{parser_source_lines.join("\n")}\n")
|
46
49
|
|
47
50
|
# cleanup
|
48
|
-
FileUtils.rm(temp_grammar_file)
|
51
|
+
FileUtils.rm(temp_grammar_file)
|
data/expressir.gemspec
CHANGED
@@ -17,10 +17,10 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.metadata["source_code_uri"] = spec.homepage
|
18
18
|
spec.metadata["changelog_uri"] = "https://github.com/lutaml/expressir/releases"
|
19
19
|
|
20
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.
|
20
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
|
21
21
|
|
22
22
|
spec.files = `git ls-files`.split("\n")\
|
23
|
-
+ Dir.glob(
|
23
|
+
+ Dir.glob("ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/**/*")
|
24
24
|
|
25
25
|
spec.test_files = `git ls-files -- {spec}/*`.split("\n")
|
26
26
|
|
@@ -30,17 +30,19 @@ Gem::Specification.new do |spec|
|
|
30
30
|
|
31
31
|
spec.extensions = File.join(*%w(ext express-parser extconf.rb))
|
32
32
|
|
33
|
-
spec.add_runtime_dependency "thor", "~> 1.0"
|
34
33
|
spec.add_runtime_dependency "rice", "~> 4.0.3"
|
34
|
+
spec.add_runtime_dependency "thor", "~> 1.0"
|
35
|
+
spec.add_development_dependency "antlr4-native", "~> 2.1.0"
|
35
36
|
spec.add_development_dependency "asciidoctor", "~> 2.0.13"
|
36
|
-
spec.add_development_dependency "
|
37
|
-
spec.add_development_dependency "bundler", "~> 2.0"
|
38
|
-
spec.add_development_dependency "pry", "~> 0.12.2"
|
37
|
+
spec.add_development_dependency "bundler", "~> 2.3"
|
39
38
|
spec.add_development_dependency "byebug", "~> 11.1"
|
39
|
+
spec.add_development_dependency "pry", "~> 0.12.2"
|
40
40
|
spec.add_development_dependency "rake", "~> 13.0"
|
41
|
-
spec.add_development_dependency "rake-compiler", "~> 1.
|
42
|
-
spec.add_development_dependency "rake-compiler-dock", "~> 1.1"
|
43
|
-
spec.add_development_dependency "rspec", "~> 3.
|
44
|
-
spec.add_development_dependency "
|
41
|
+
spec.add_development_dependency "rake-compiler", "~> 1.2"
|
42
|
+
spec.add_development_dependency "rake-compiler-dock", "~> 1.2.1"
|
43
|
+
spec.add_development_dependency "rspec", "~> 3.11"
|
44
|
+
spec.add_development_dependency "rubocop", "1.5.2"
|
45
|
+
spec.add_development_dependency "rubocop-performance", "~> 1.0"
|
45
46
|
spec.add_development_dependency "webrick", "~> 1.7.0"
|
47
|
+
spec.add_development_dependency "yard", "~> 0.9.26"
|
46
48
|
end
|
data/lib/expressir/config.rb
CHANGED
Binary file
|
Binary file
|
Binary file
|
@@ -31,13 +31,12 @@ module Expressir
|
|
31
31
|
# @param [Boolean] include_source attach original source code to model elements
|
32
32
|
# @return [Model::Repository]
|
33
33
|
def self.from_file(file, skip_references: nil, include_source: nil)
|
34
|
-
input = File.read(file)
|
35
34
|
|
36
35
|
# An important note re memory management
|
37
|
-
# parse, syntax, visitor methods return complex tree structures created in
|
36
|
+
# parse, syntax, visitor methods return complex tree structures created in native (C++) extension
|
38
37
|
# visit method references nodes and leaves of this structures but it is totally untransparent for Ruby GarbageCllector
|
39
|
-
# so in this class we keep those C++ structure marked for GC so
|
40
|
-
@parser = ::ExpressParser::
|
38
|
+
# so in this class we keep those C++ structure marked for GC so they are not freed
|
39
|
+
@parser = ::ExpressParser::ParserExt.new(file.to_s)
|
41
40
|
@parse_tree = @parser.syntax()
|
42
41
|
|
43
42
|
@visitor = Visitor.new(@parser.tokens, include_source: include_source)
|