Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
why3
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
119
Issues
119
List
Boards
Labels
Service Desk
Milestones
Merge Requests
16
Merge Requests
16
Operations
Operations
Incidents
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Why3
why3
Commits
b5f4309f
Commit
b5f4309f
authored
Mar 08, 2010
by
Andrei Paskevich
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
anonymous namespaces + "namespace import"
parent
70ca1d7d
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
47 additions
and
23 deletions
+47
-23
src/core/theory.ml
src/core/theory.ml
+3
-3
src/core/theory.mli
src/core/theory.mli
+1
-1
src/parser/parser.mly
src/parser/parser.mly
+27
-10
src/parser/ptree.mli
src/parser/ptree.mli
+2
-2
src/parser/typing.ml
src/parser/typing.ml
+14
-7
No files found.
src/core/theory.ml
View file @
b5f4309f
...
...
@@ -798,13 +798,13 @@ module Theory = struct
|
[]
->
assert
false
let
close_namespace
uc
s
~
import
=
let
close_namespace
uc
import
s
=
match
uc
.
uc_import
,
uc
.
uc_export
with
|
_
::
i1
::
sti
,
e0
::
e1
::
ste
->
let
i1
=
if
import
then
merge_ns
false
e0
i1
else
i1
in
let
_
=
if
import
then
merge_ns
true
e0
e1
else
e1
in
let
i1
=
add_ns
false
s
e0
i1
in
let
e1
=
add_ns
true
s
e0
e1
in
let
i1
=
match
s
with
Some
s
->
add_ns
false
s
e0
i1
|
_
->
i1
in
let
e1
=
match
s
with
Some
s
->
add_ns
true
s
e0
e1
|
_
->
e1
in
{
uc
with
uc_import
=
i1
::
sti
;
uc_export
=
e1
::
ste
;
}
|
[
_
]
,
[
_
]
->
raise
NoOpenedNamespace
...
...
src/core/theory.mli
View file @
b5f4309f
...
...
@@ -184,7 +184,7 @@ module Theory : sig
val
add_decl
:
theory_uc
->
decl
->
theory_uc
val
open_namespace
:
theory_uc
->
theory_uc
val
close_namespace
:
theory_uc
->
string
->
import
:
bool
->
theory_uc
val
close_namespace
:
theory_uc
->
bool
->
string
option
->
theory_uc
val
use_export
:
theory_uc
->
theory
->
theory_uc
val
clone_export
:
theory_uc
->
theory
->
th_inst
->
theory_uc
...
...
src/parser/parser.mly
View file @
b5f4309f
...
...
@@ -311,15 +311,30 @@ list1_inductive_decl:
;
decl
:
|
list1_type_decl
{
TypeDecl
$
1
}
|
list1_logic_decl
{
LogicDecl
$
1
}
|
list1_inductive_decl
{
IndDecl
$
1
}
|
AXIOM
uident
COLON
lexpr
{
PropDecl
(
loc
()
,
Kaxiom
,
$
2
,
$
4
)
}
|
LEMMA
uident
COLON
lexpr
{
PropDecl
(
loc
()
,
Klemma
,
$
2
,
$
4
)
}
|
GOAL
uident
COLON
lexpr
{
PropDecl
(
loc
()
,
Kgoal
,
$
2
,
$
4
)
}
|
USE
use
{
UseClone
(
loc
()
,
$
2
,
None
)
}
|
CLONE
use
clone_subst
{
UseClone
(
loc
()
,
$
2
,
Some
$
3
)
}
|
NAMESPACE
uident
list0_decl
END
{
Namespace
(
loc
()
,
$
2
,
$
3
)
}
|
list1_type_decl
{
TypeDecl
$
1
}
|
list1_logic_decl
{
LogicDecl
$
1
}
|
list1_inductive_decl
{
IndDecl
$
1
}
|
AXIOM
uident
COLON
lexpr
{
PropDecl
(
loc
()
,
Kaxiom
,
$
2
,
$
4
)
}
|
LEMMA
uident
COLON
lexpr
{
PropDecl
(
loc
()
,
Klemma
,
$
2
,
$
4
)
}
|
GOAL
uident
COLON
lexpr
{
PropDecl
(
loc
()
,
Kgoal
,
$
2
,
$
4
)
}
|
USE
use
{
UseClone
(
loc
()
,
$
2
,
None
)
}
|
CLONE
use
clone_subst
{
UseClone
(
loc
()
,
$
2
,
Some
$
3
)
}
|
NAMESPACE
uident
list0_decl
END
{
Namespace
(
loc
()
,
false
,
Some
$
2
,
$
3
)
}
|
NAMESPACE
UNDERSCORE
list0_decl
END
{
Namespace
(
loc
()
,
false
,
None
,
$
3
)
}
|
NAMESPACE
IMPORT
uident
list0_decl
END
{
Namespace
(
loc
()
,
false
,
Some
$
3
,
$
4
)
}
|
NAMESPACE
IMPORT
UNDERSCORE
list0_decl
END
{
Namespace
(
loc
()
,
false
,
None
,
$
4
)
}
;
list1_theory
:
...
...
@@ -524,7 +539,9 @@ use:
|
imp_exp
tqualid
{
{
use_theory
=
$
2
;
use_as
=
None
;
use_imp_exp
=
$
1
}
}
|
imp_exp
tqualid
AS
uident
{
{
use_theory
=
$
2
;
use_as
=
Some
$
4
;
use_imp_exp
=
$
1
}
}
{
{
use_theory
=
$
2
;
use_as
=
Some
(
Some
$
4
);
use_imp_exp
=
$
1
}
}
|
imp_exp
tqualid
AS
UNDERSCORE
{
{
use_theory
=
$
2
;
use_as
=
Some
None
;
use_imp_exp
=
$
1
}
}
;
imp_exp
:
...
...
src/parser/ptree.mli
View file @
b5f4309f
...
...
@@ -87,7 +87,7 @@ type imp_exp =
type
use
=
{
use_theory
:
qualid
;
use_as
:
ident
option
;
use_as
:
ident
option
option
;
use_imp_exp
:
imp_exp
;
}
...
...
@@ -135,7 +135,7 @@ type decl =
|
IndDecl
of
ind_decl
list
|
PropDecl
of
loc
*
prop_kind
*
ident
*
lexpr
|
UseClone
of
loc
*
use
*
clone_subst
list
option
|
Namespace
of
loc
*
ident
*
decl
list
|
Namespace
of
loc
*
bool
*
ident
option
*
decl
list
type
theory
=
{
pt_loc
:
loc
;
...
...
src/parser/typing.ml
View file @
b5f4309f
...
...
@@ -1153,31 +1153,38 @@ and add_decl env th = function
clone_export
th
t
s
in
let
n
=
match
use
.
use_as
with
|
None
->
t
.
th_name
.
id_short
|
Some
x
->
x
.
id
|
None
->
Some
t
.
th_name
.
id_short
|
Some
(
Some
x
)
->
Some
x
.
id
|
Some
None
->
None
in
begin
try
match
use
.
use_imp_exp
with
|
Nothing
->
(* use T = namespace T use_export T end *)
let
th
=
open_namespace
th
in
let
th
=
use_or_clone
th
in
close_namespace
th
n
~
import
:
false
close_namespace
th
false
n
|
Import
->
(* use import T = namespace T use_export T end import T *)
let
th
=
open_namespace
th
in
let
th
=
use_or_clone
th
in
close_namespace
th
n
~
import
:
true
close_namespace
th
true
n
|
Export
->
use_or_clone
th
with
Theory
.
ClashSymbol
s
->
error
~
loc
(
Clash
s
)
end
|
Namespace
(
_
,
{
id
=
id
;
id_loc
=
loc
}
,
dl
)
->
|
Namespace
(
_
,
import
,
name
,
dl
)
->
let
ns
=
get_namespace
th
in
if
Mnm
.
mem
id
ns
.
ns_ns
then
error
~
loc
(
ClashNamespace
id
);
let
id
=
match
name
with
|
Some
{
id
=
id
;
id_loc
=
loc
}
->
if
Mnm
.
mem
id
ns
.
ns_ns
then
error
~
loc
(
ClashNamespace
id
);
Some
id
|
None
->
None
in
let
th
=
open_namespace
th
in
let
th
=
add_decls
env
th
dl
in
close_namespace
th
i
d
~
import
:
false
close_namespace
th
i
mport
id
and
add_theory
env
pt
=
let
id
=
pt
.
pt_name
in
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment