sfp 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/sfp/sas_translator.rb +69 -21
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23b018fd1c5d9bf2cff7ef5902e504f3e3966798
|
4
|
+
data.tar.gz: aa1242187f4b5010a93adc6efa813571c318aba9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2893d324135fc4dda7a361e48a87faf2ebdf14202c6a8a31940484e63aac0a6f8255b7b9d712965293b7fa1a668af60839511e425faa05f8c4c5f81bb27db4d
|
7
|
+
data.tar.gz: 131dcf2321a6f6b558cbef77155b721d647f7658fc856b7f839282c6a1e407535ddaba54da5fec4858c69ecd1c1cda1503f9f8f4bb67d1640e7c5e2a47832975
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.2
|
data/lib/sfp/sas_translator.rb
CHANGED
@@ -291,7 +291,6 @@ module Sfp
|
|
291
291
|
# actions. Then reduce the size of their domain by 1 only i.e. the possible
|
292
292
|
# value is only their initial value.
|
293
293
|
# BUGGY! -- operator's effects may contain other object's variable
|
294
|
-
=begin
|
295
294
|
def identify_immutable_variables
|
296
295
|
def is_this(ref)
|
297
296
|
ref.length > 7 and (ref[0,7] == '$.this.' or ref[0,7] == '$.self.')
|
@@ -325,7 +324,6 @@ module Sfp
|
|
325
324
|
end
|
326
325
|
end
|
327
326
|
end
|
328
|
-
=end
|
329
327
|
|
330
328
|
#####
|
331
329
|
# Method for postprocessing simple global constraints
|
@@ -916,13 +914,18 @@ module Sfp
|
|
916
914
|
params = Hash.new
|
917
915
|
procedure.each { |k,v|
|
918
916
|
next if k[0,1] == '_'
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
917
|
+
### debug
|
918
|
+
#puts procedure.ref
|
919
|
+
#p = Sfp::Helper.deep_clone(procedure)
|
920
|
+
#p.accept(Sfp::Visitor::ParentEliminator.new)
|
921
|
+
#p.delete('_parent')
|
922
|
+
#puts JSON.pretty_generate(p)
|
923
|
+
### end debug
|
924
|
+
type = case v
|
925
|
+
when Sfp::Undefined
|
926
|
+
v.type
|
927
|
+
when Hash
|
928
|
+
case v['_context']
|
926
929
|
when 'null', 'any_value'
|
927
930
|
v['_isa']
|
928
931
|
when 'set'
|
@@ -930,11 +933,33 @@ module Sfp
|
|
930
933
|
else
|
931
934
|
nil
|
932
935
|
end
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
+
else
|
937
|
+
return nil
|
938
|
+
end
|
939
|
+
|
940
|
+
#if not @types.has_key?( v['_isa'] )
|
941
|
+
# return nil
|
942
|
+
#end
|
943
|
+
#type = case v['_context']
|
944
|
+
# when 'null', 'any_value'
|
945
|
+
# v['_isa']
|
946
|
+
# when 'set'
|
947
|
+
# "(#{v['_isa']})"
|
948
|
+
# else
|
949
|
+
# nil
|
950
|
+
# end
|
951
|
+
|
952
|
+
#next if type == nil
|
953
|
+
#raise TypeNotFoundException, type if not @types.has_key?(type)
|
954
|
+
|
955
|
+
# if the specified parameter does not have any value,
|
956
|
+
# then it's invalid procedure (should print a warning)
|
957
|
+
return nil if not @types.has_key?(type)
|
958
|
+
|
959
|
+
params[k] = Array.new
|
960
|
+
@types[ type ].each { |val| params[k] << val if
|
961
|
+
not (val.is_a?(Hash) and val.isnull) and
|
936
962
|
!val.is_a?(Sfp::Undefined) and !val.is_a?(Sfp::Unknown) }
|
937
|
-
#puts k.to_s + ": " + params[k].length.to_s
|
938
963
|
}
|
939
964
|
# combinatorial method for all possible values of parameters
|
940
965
|
# using recursive method
|
@@ -1788,6 +1813,7 @@ module Sfp
|
|
1788
1813
|
if name[0,1] != '_'
|
1789
1814
|
modified = false
|
1790
1815
|
map.each { |k,v|
|
1816
|
+
#puts k + ',' + name if v.is_a?(Sfp::Undefined) or v.is_a?(Sfp::Unknown)
|
1791
1817
|
next if v.is_a?(Sfp::Undefined) or v.is_a?(Sfp::Unknown)
|
1792
1818
|
if name == k
|
1793
1819
|
obj[v] = value
|
@@ -1797,6 +1823,7 @@ module Sfp
|
|
1797
1823
|
modified = true
|
1798
1824
|
break
|
1799
1825
|
elsif name.length > k.length and name[k.length,1] == '.' and name[0, k.length] == k
|
1826
|
+
#next if v.is_a?(Sfp::Undefined) or v.is_a?(Sfp::Unknown)
|
1800
1827
|
grounded = v + name[k.length, (name.length-k.length)]
|
1801
1828
|
obj[grounded] = value
|
1802
1829
|
obj.delete(name)
|
@@ -1819,11 +1846,9 @@ module Sfp
|
|
1819
1846
|
value['_self'] = name if value.is_a?(Hash)
|
1820
1847
|
end
|
1821
1848
|
end
|
1822
|
-
# TODO
|
1823
|
-
# ----- HACK! -----
|
1824
|
-
# these lines should handle nested 'iterator'
|
1849
|
+
# TODO ----- HACK! -----
|
1825
1850
|
if obj.is_a?(Hash) and obj.isconstraint and obj['_type'] == 'iterator' and
|
1826
|
-
|
1851
|
+
value.is_a?(String) and value.isref and map.has_key?(value)
|
1827
1852
|
obj[name] = value = map[value]
|
1828
1853
|
#puts map[value].inspect
|
1829
1854
|
#puts "==>> " + obj.ref.push(name)
|
@@ -2054,12 +2079,32 @@ module Sfp
|
|
2054
2079
|
def dump(stream, root, variables)
|
2055
2080
|
prevails = self.values.select { |p| p.post.nil? }
|
2056
2081
|
preposts = self.values.select { |p| not p.post.nil? }
|
2082
|
+
=begin
|
2083
|
+
pre_lines = []
|
2084
|
+
prevails.each do |p|
|
2085
|
+
line = p.to_sas(root, variables)
|
2086
|
+
return if line[-1] == ' '
|
2087
|
+
pre_lines << line
|
2088
|
+
end
|
2089
|
+
prepost_lines = []
|
2090
|
+
preposts.each do |p|
|
2091
|
+
line = p.to_sas(root, variables, false)
|
2092
|
+
return if line [-1] == ' '
|
2093
|
+
prepost_lines << line
|
2094
|
+
end
|
2095
|
+
=end
|
2057
2096
|
|
2058
2097
|
stream.write "begin_operator\n#{@name}"
|
2059
2098
|
@params.each do |key,val|
|
2060
2099
|
stream.write " #{key}=#{val}" if key != '$.this'
|
2061
2100
|
end if @params.is_a?(Hash)
|
2062
2101
|
|
2102
|
+
=begin
|
2103
|
+
stream.write "\n#{pre_lines.length}"
|
2104
|
+
stream.write "\n#{pre_lines.join("\n")}" if pre_lines.length > 0
|
2105
|
+
stream.write "\n#{prepost_lines.length}\n"
|
2106
|
+
stream.write "#{prepost_lines.join("\n")}\n" if prepost_lines.length > 0
|
2107
|
+
=end
|
2063
2108
|
stream.write "\n#{prevails.length}\n"
|
2064
2109
|
prevails.each { |p| p.dump(stream, root, variables) }
|
2065
2110
|
|
@@ -2094,6 +2139,9 @@ module Sfp
|
|
2094
2139
|
if not p['post'].nil?
|
2095
2140
|
sfw['effect'][p['name']] = (p['post'].is_a?(Sfp::Null) ? nil : p['post'])
|
2096
2141
|
end
|
2142
|
+
|
2143
|
+
#sfw['condition'][ p['name'] ] = p['pre'] if p['pre'] != nil
|
2144
|
+
#sfw['effect'][ p['name'] ] = p['post'] if p['post'] != nil
|
2097
2145
|
end
|
2098
2146
|
return sfw
|
2099
2147
|
end
|
@@ -2219,10 +2267,10 @@ module Sfp
|
|
2219
2267
|
post = Sfp::Null.new if @post.is_a?(Hash) and @post.isnull
|
2220
2268
|
|
2221
2269
|
return {
|
2222
|
-
|
2223
|
-
|
2224
|
-
|
2225
|
-
|
2270
|
+
'name' => @var.name,
|
2271
|
+
'pre' => pre,
|
2272
|
+
'post' => post
|
2273
|
+
}
|
2226
2274
|
end
|
2227
2275
|
end
|
2228
2276
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sfp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Herry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: antlr3
|
@@ -89,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
89
|
version: '0'
|
90
90
|
requirements: []
|
91
91
|
rubyforge_project: sfp
|
92
|
-
rubygems_version: 2.
|
92
|
+
rubygems_version: 2.0.14
|
93
93
|
signing_key:
|
94
94
|
specification_version: 4
|
95
95
|
summary: SFP Parser
|