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-20 10:19:52 +0100
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
c80a422387eb6ef30cefee7f690aa324f2576871
c80a4223
1 parent
c470c22b
fixed side-effect in Go code
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
13 additions
and
13 deletions
libs/go/src/snk/markings.go
libs/go/src/snk/multisets.go
snakes/compil/go/codegen.py
libs/go/src/snk/markings.go
View file @
c80a422
...
...
@@ -350,7 +350,7 @@ func (self Marking) Geq (other Marking) bool {
//... a.Geq(b)
//=== false
func
(
self
Marking
)
Iter
(
place
string
)
(
MsetIterator
,
*
interface
{})
{
func
(
self
Marking
)
Iter
(
place
string
)
(
MsetIterator
,
interface
{})
{
mset
,
found
:=
(
*
self
.
data
)[
place
]
if
found
{
return
mset
.
Iter
()
...
...
@@ -359,7 +359,7 @@ func (self Marking) Iter (place string) (MsetIterator, *interface{}) {
}
}
func
(
self
Marking
)
IterDup
(
place
string
)
(
MsetIterator
,
*
interface
{})
{
func
(
self
Marking
)
IterDup
(
place
string
)
(
MsetIterator
,
interface
{})
{
mset
,
found
:=
(
*
self
.
data
)[
place
]
if
found
{
return
mset
.
IterDup
()
...
...
libs/go/src/snk/multisets.go
View file @
c80a422
...
...
@@ -176,11 +176,11 @@ func (self Mset) Count (value interface{}) int {
type
MsetIterator
struct
{
done
bool
ask
chan
bool
rep
chan
*
interface
{}
rep
chan
interface
{}
}
func
(
self
MsetIterator
)
Next
()
*
interface
{}
{
var
rep
*
interface
{}
func
(
self
MsetIterator
)
Next
()
interface
{}
{
var
rep
interface
{}
if
self
.
done
{
return
nil
}
...
...
@@ -209,7 +209,7 @@ func (self Mset) iterate (it MsetIterator, dup bool) {
return
}
if
<-
it
.
ask
{
it
.
rep
<-
&
key
it
.
rep
<-
key
}
else
{
return
}
...
...
@@ -220,14 +220,14 @@ func (self Mset) iterate (it MsetIterator, dup bool) {
}
}
func
(
self
Mset
)
Iter
()
(
MsetIterator
,
*
interface
{})
{
it
:=
MsetIterator
{
false
,
make
(
chan
bool
),
make
(
chan
*
interface
{})}
func
(
self
Mset
)
Iter
()
(
MsetIterator
,
interface
{})
{
it
:=
MsetIterator
{
false
,
make
(
chan
bool
),
make
(
chan
interface
{})}
go
self
.
iterate
(
it
,
false
)
return
it
,
it
.
Next
()
}
func
(
self
Mset
)
IterDup
()
(
MsetIterator
,
*
interface
{})
{
it
:=
MsetIterator
{
false
,
make
(
chan
bool
),
make
(
chan
*
interface
{})}
func
(
self
Mset
)
IterDup
()
(
MsetIterator
,
interface
{})
{
it
:=
MsetIterator
{
false
,
make
(
chan
bool
),
make
(
chan
interface
{})}
go
self
.
iterate
(
it
,
true
)
return
it
,
it
.
Next
()
}
...
...
snakes/compil/go/codegen.py
View file @
c80a422
...
...
@@ -147,7 +147,7 @@ class CodeGenerator (ast.CodeGenerator) :
self
.
fill
(
"for
%
s,
%
s :=
%
s.Iter(
%
s);
%
s != nil;
%
s =
%
s.Next() {"
%
(
ivar
,
pvar
,
node
.
marking
,
S
(
node
.
place
.
name
),
pvar
,
pvar
,
ivar
))
with
self
.
indent
()
:
self
.
fill
(
"
%
s =
(*
%
s)
.(
%
s)"
self
.
fill
(
"
%
s =
%
s
.(
%
s)"
%
(
node
.
variable
,
pvar
,
self
.
typedef
[
node
.
place
.
type
]))
self
.
fill
(
"if "
)
self
.
visit
(
node
.
guard
)
...
...
@@ -168,7 +168,7 @@ class CodeGenerator (ast.CodeGenerator) :
self
.
fill
(
"for
%
s,
%
s :=
%
s.Iter(
%
s);
%
s != nil;
%
s =
%
s.Next() {"
%
(
ivar
,
pvar
,
node
.
marking
,
S
(
node
.
place
.
name
),
pvar
,
pvar
,
ivar
))
with
self
.
indent
()
:
self
.
fill
(
"
%
s =
(*
%
s)
.(
%
s)"
self
.
fill
(
"
%
s =
%
s
.(
%
s)"
%
(
node
.
variable
,
pvar
,
self
.
typedef
[
node
.
place
.
type
]))
self
.
children_visit
(
node
.
body
,
True
)
self
.
fill
(
"}"
)
...
...
@@ -190,7 +190,7 @@ class CodeGenerator (ast.CodeGenerator) :
self
.
fill
(
"for
%
s,
%
s :=
%
s.Iter();
%
s != nil;
%
s =
%
s.Next() {"
%
(
ivar
,
pvar
,
node
.
variable
,
pvar
,
pvar
,
ivar
))
with
self
.
indent
()
:
self
.
fill
(
"_,
%
s =
(*
%
s)
.(
%
s)"
self
.
fill
(
"_,
%
s =
%
s
.(
%
s)"
%
(
bvar
,
pvar
,
self
.
typedef
[
node
.
place
.
type
]))
self
.
fill
(
"if !
%
s { break }"
%
bvar
)
self
.
fill
(
"}"
)
...
...
Please
register
or
login
to post a comment