Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Franck Pommereau
/
zinc
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Franck Pommereau
2017-11-21 17:56:40 +0100
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
13e423bdc137fc5318d4df00573e0a5b1313881b
13e423bd
1 parent
c80a4223
Go and Python build same LTS (to be further tested)
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
37 additions
and
22 deletions
goenv.sh
test/compare.py
test/testall-go.snk
test/testall-python.snk
goenv.sh
0 → 100644
View file @
13e423b
export
GOPATH
=
$(
pwd
)
/libs/go
test/compare.py
View file @
13e423b
...
...
@@ -4,6 +4,17 @@ from snakes.nets import Marking, mset, dot, hdict
event
=
collections
.
namedtuple
(
"event"
,
[
"trans"
,
"mode"
,
"state"
])
def
dumps
(
obj
)
:
if
isinstance
(
obj
,
Marking
)
:
return
"{
%
s}"
%
", "
.
join
(
"
%
s:
%
s"
%
(
p
,
list
(
sorted
(
t
)))
for
p
,
t
in
sorted
(
obj
.
items
()))
elif
isinstance
(
obj
,
event
)
:
return
"
%
s
%
s =>
%
s"
%
(
obj
.
trans
,
dumps
(
obj
.
mode
),
dumps
(
obj
.
state
))
elif
isinstance
(
obj
,
dict
)
:
return
"{
%
s}"
%
", "
.
join
(
"
%
s:
%
s"
%
i
for
i
in
sorted
(
obj
.
items
()))
else
:
return
str
(
obj
)
def
load_code
(
text
)
:
return
eval
(
text
,
{
"dot"
:
dot
,
"mset"
:
mset
})
...
...
@@ -24,7 +35,10 @@ def load (infile) :
if
head
.
startswith
(
"["
)
:
ident
=
int
(
head
[
1
:
-
1
])
last
=
load_state
(
text
,
ident
)
g
[
last
]
=
set
()
if
last
in
g
:
print
(
"# duplicated state"
,
dumps
(
last
))
else
:
g
[
last
]
=
set
()
if
ident
==
0
:
g
[
0
]
=
last
elif
head
==
"@"
:
...
...
@@ -42,11 +56,11 @@ def load (infile) :
raise
ValueError
(
"invalid line
%
r"
%
line
)
return
g
def
compare
(
left
,
right
)
:
def
diff
(
left
,
right
)
:
if
left
[
0
]
!=
right
[
0
]
:
print
(
"not same initial state:"
)
print
(
" "
,
left
[
0
]
)
print
(
" "
,
right
[
0
]
)
print
(
" "
,
dumps
(
left
[
0
])
)
print
(
" "
,
dumps
(
right
[
0
])
)
return
print
(
"let's go (
%
s states vs
%
s)"
%
(
len
(
left
)
-
1
,
len
(
right
)
-
1
))
todo
=
collections
.
deque
([
left
[
0
]])
...
...
@@ -57,18 +71,29 @@ def compare (left, right) :
todo
.
extend
(
succs
)
seen
.
update
(
succs
)
if
state
not
in
right
:
print
(
"missing"
,
state
)
print
(
"missing"
,
dumps
(
state
)
)
return
elif
left
[
state
]
!=
right
[
state
]
:
print
(
"not same successors for [
%
s]
%
s"
%
(
state
.
ident
,
state
))
print
(
"not same successors for [
%
s]
%
s"
%
(
state
.
ident
,
dumps
(
state
)
))
for
s
in
left
[
state
]
-
right
[
state
]
:
print
(
" -"
,
s
)
print
(
" -"
,
dumps
(
s
)
)
for
s
in
right
[
state
]
-
left
[
state
]
:
print
(
" +"
,
s
)
print
(
" +"
,
dumps
(
s
)
)
return
print
(
"no difference found"
)
def
states
(
g
)
:
d
=
{}
for
s
in
g
:
if
isinstance
(
s
,
int
)
:
continue
d
[
dumps
(
s
)]
=
s
for
k
,
s
in
sorted
(
d
.
items
())
:
print
(
dumps
(
s
))
if
__name__
==
"__main__"
:
import
sys
print
(
"loading
%
r and
%
r..."
%
tuple
(
sys
.
argv
[
-
2
:]))
compare
(
load
(
open
(
sys
.
argv
[
-
2
])),
load
(
open
(
sys
.
argv
[
-
1
])))
left
=
load
(
open
(
sys
.
argv
[
-
2
]))
right
=
load
(
open
(
sys
.
argv
[
-
1
]))
...
...
test/testall-go.snk
View file @
13e423b
...
...
@@ -35,7 +35,6 @@ net "test net" :
place p1 int = 0, 1, 2
place p2 int = 1, 2, 3
place p3 int = MAX, {MAX+1}
place p4
# values
trans t01 :
< p0 val = DOT
...
...
@@ -66,7 +65,7 @@ net "test net" :
< p1 expr = abs(x - y)
> p2 var = x
> p2 expr = y+1
> p
4
expr = abs(x - y)
> p
3
expr = abs(x - y)
# test on input
trans t06 x != y :
< p0 val = DOT
...
...
@@ -158,10 +157,6 @@ net "test net" :
> p6 (expr, var, val) = ({fmt.Sprintf("%d", x)}, y, true)
> p6 (val, (var, expr), val) = ({fmt.Sprintf("%d", x)}, (x, {x-1}), true)
# inhibitor
trans t21 :
< p0 val = DOT
< p5 !(var, val) = (x, 0)
# inhibitor
trans t22 :
< p0 val = DOT
< p5 !(var, val) = (x, 0)
...
...
test/testall-python.snk
View file @
13e423b
...
...
@@ -11,7 +11,6 @@ net "test net" :
place p1 int = 0, 1, 2
place p2 int = 1, 2, 3
place p3 int = MAX, {MAX+1}
place p4
# values
trans t01 :
< p0 val = dot
...
...
@@ -42,7 +41,7 @@ net "test net" :
< p1 expr = abs(x - y)
> p2 var = x
> p2 expr = y+1
> p
4
expr = abs(x - y)
> p
3
expr = abs(x - y)
# test on input
trans t06 x != y :
< p0 val = dot
...
...
@@ -133,11 +132,6 @@ net "test net" :
< p5 var = y
> p6 (expr, var, val) = ({str(x)}, y, True)
> p6 (expr, (var, expr), val) = ({str(x)}, (x, {x-1}), True)
# untyped :
trans t21 x < y :
< p0 val = dot
< p4 (var, var) = (x, y)
> p4 (var, var) = (y, x)
# inhibitor
trans t22 :
< p0 val = dot
...
...
Please
register
or
login
to post a comment