本文整理汇总了Python中util.arbitrary_init_machine函数的典型用法代码示例。如果您正苦于以下问题:Python arbitrary_init_machine函数的具体用法?Python arbitrary_init_machine怎么用?Python arbitrary_init_machine使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了arbitrary_init_machine函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: test_genAST_sub_any
def test_genAST_sub_any(self):
string = '''
MACHINE Test
VARIABLES xx
INVARIANT xx:NAT
INITIALISATION BEGIN xx:=1;
ANY r1, r2 WHERE
r1 : NAT &
r2 : NAT &
r1*r1 + r2*r2 = 25
THEN
xx := r1 + r2
END
END
END'''
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
env._min_int = -1
env._max_int = 5
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch) # init VARIABLES and eval INVARIANT
assert isinstance(root.children[2], AInvariantMachineClause)
assert interpret(root.children[2], env)
assert env.get_value("xx")==5 or env.get_value("xx")==7 # 3+4 or 5+0
开发者ID:hhu-stups,项目名称:pyB,代码行数:29,代码来源:test_interp_substitutions.py
示例2: test_genAST_sub_var
def test_genAST_sub_var(self):
# Build AST
string = '''
MACHINE Test
VARIABLES xx
INVARIANT xx:NAT
INITIALISATION BEGIN xx:=1;
VAR varLoc1, varLoc2 IN
varLoc1 := xx + 1 ;
varLoc2 := 2 * varLoc1 ;
xx := varLoc2
END
END
END'''
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
env._min_int = -1
env._max_int = 5
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch) # init VARIABLES and eval INVARIANT
assert isinstance(root.children[2], AInvariantMachineClause)
assert interpret(root.children[2], env)
assert env.get_value("xx")==4
开发者ID:hhu-stups,项目名称:pyB,代码行数:28,代码来源:test_interp_substitutions.py
示例3: test_CartesianProductOverride
def test_CartesianProductOverride(self):
string = '''
MACHINE CartesianProductOverride
SETS
S;T
CONSTANTS a,b,c
PROPERTIES
/* Rule Hypotheses */
a : S <-> T &
dom(a) = b &
c <: T &
/* Rule Conclusion */
not( a <+ b * c = b * c )
END'''
# Build AST
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch) # eval CONSTANTS and PROPERTIES
assert isinstance(root.children[3], APropertiesMachineClause)
assert interpret(root.children[3], env)
开发者ID:hhu-stups,项目名称:pyB,代码行数:27,代码来源:test_mch_load.py
示例4: test_genAST_sub_let
def test_genAST_sub_let(self):
string = '''
MACHINE Test
VARIABLES SumR, DifferenceR, Var1, Var2
INVARIANT SumR:NAT & DifferenceR:NAT & Var1:NAT & Var2:NAT
INITIALISATION BEGIN Var1:=2; Var2:=3;
LET r1, r2 BE
r1 = (Var1 + Var2) / 2 &
r2 = (Var1 - Var2) / 2
IN
SumR := r1 + r2 ||
DifferenceR := r1 - r2
END
END
END'''
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
env._min_int = -1
env._max_int = 5
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch) # init VARIABLES and eval INVARIANT
assert isinstance(root.children[2], AInvariantMachineClause)
assert interpret(root.children[2], env)
assert env.get_value("SumR")==1
assert env.get_value("DifferenceR")==3
assert env.get_value("Var1")==2
assert env.get_value("Var2")==3
开发者ID:hhu-stups,项目名称:pyB,代码行数:33,代码来源:test_interp_substitutions.py
示例5: test_examples_no_query_op
def test_examples_no_query_op(self):
string = '''
MACHINE Query
VARIABLES xx
INVARIANT xx:NAT
INITIALISATION xx:=1
OPERATIONS
no_query = xx:=2
END'''
# Build AST
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch) # init VARIABLES and eval INVARIANT
assert isinstance(root.children[2], AInvariantMachineClause)
assert interpret(root.children[2], env)
开发者ID:hhu-stups,项目名称:pyB,代码行数:28,代码来源:test_mch_load.py
示例6: test_genAST_sub_let2
def test_genAST_sub_let2(self):
string = '''
MACHINE Test
VARIABLES X, Y
INVARIANT X:NAT & Y:NAT
INITIALISATION BEGIN X:=10;
LET r1, X BE
X = 6 &
r1 = X / 2
IN
Y := r1
END
END
END'''
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
env._min_int = -1
env._max_int = 5
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch) # init VARIABLES and eval INVARIANT
assert isinstance(root.children[2], AInvariantMachineClause)
assert interpret(root.children[2], env)
assert env.get_value("X")==10
assert env.get_value("Y")==3
开发者ID:hhu-stups,项目名称:pyB,代码行数:30,代码来源:test_interp_substitutions.py
示例7: test_genAST_para_def
def test_genAST_para_def(self):
# Build AST
string ='''
MACHINE Test
VARIABLES z
INVARIANT z:MyType
INITIALISATION z:= Expr(2)
DEFINITIONS
Expr(X) == 1+X;
MyType == NAT;
END'''
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
dh = DefinitionHandler(env, str_ast_to_python_ast)
dh.repl_defs(root)
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch) # init VARIABLES and eval INVARIANT
invariant = root.children[2]
assert isinstance(invariant, AInvariantMachineClause)
assert interpret(invariant, env)
assert env.get_value("z")==3
开发者ID:hhu-stups,项目名称:pyB,代码行数:26,代码来源:test_interp_definitions.py
示例8: test_genAST_subst_def2
def test_genAST_subst_def2(self):
string='''
MACHINE Test
VARIABLES z, b, x
INVARIANT x:NAT & z:NAT & b:BOOL
INITIALISATION x:=2 ; Assign(x+1, z) ; Assign(TRUE, b)
DEFINITIONS Assign(Expr, VarName) == VarName := Expr;
END'''
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
#Test
env = Environment()
dh = DefinitionHandler(env, str_ast_to_python_ast)
dh.repl_defs(root)
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch)# init VARIABLES and eval INVARIANT
invariant = root.children[2]
assert isinstance(invariant, AInvariantMachineClause)
assert interpret(invariant, env)
assert env.get_value("z")==3
assert env.get_value("b")==True
assert env.get_value("x")==2
开发者ID:hhu-stups,项目名称:pyB,代码行数:25,代码来源:test_interp_definitions.py
示例9: test_library_length
def test_library_length(self):
string = '''
MACHINE LibraryStrings
CONSTANTS length
PROPERTIES
/* compute the length of a string */
length: STRING --> INTEGER &
length = %x.(x:STRING|STRING_LENGTH(x))
DEFINITIONS
STRING_LENGTH(x) == length(x);
EXTERNAL_FUNCTION_STRING_LENGTH == STRING --> INTEGER;
ASSERTIONS
length("abc") = 3;
length("") = 0;
length("hello") = 5
END
'''
# Build AST
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
dh = DefinitionHandler(env, str_ast_to_python_ast)
dh.repl_defs(root)
mch = parse_ast(root, env)
type_check_bmch(root, env, mch)
assert isinstance(get_type_by_name(env, "length"), PowerSetType)
assert isinstance(get_type_by_name(env, "length").data, CartType)
assert isinstance(get_type_by_name(env, "length").data.left.data, StringType)
assert isinstance(get_type_by_name(env, "length").data.right.data, IntegerType)
arbitrary_init_machine(root, env, mch) # init VARIABLES and eval INVARIANT
assert isinstance(root.children[4], AAssertionsMachineClause)
interpret(root.children[4], env)
开发者ID:hhu-stups,项目名称:pyB,代码行数:35,代码来源:test_library.py
示例10: test_examples_knights_knaves
def test_examples_knights_knaves(self):
string ='''
MACHINE KnightsKnaves
/* Puzzle from Smullyan:
Knights: always tell the truth
Knaves: always lie
1: A says: “B is a knave or C is a knave”
2: B says “A is a knight”
What are A & B & C?
*/
CONSTANTS A,B,C
PROPERTIES
A:BOOL & B:BOOL & C:BOOL /* TRUE if they are a Knight */
&
(A=TRUE <=> (B=FALSE or C=FALSE)) &
(B=TRUE <=> A=TRUE)
END'''
# Build AST
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch) # search for CONSTANTS which make PROPERTIES True
assert env.get_value("A") == True
assert env.get_value("B") == True
assert env.get_value("C") == False
开发者ID:hhu-stups,项目名称:pyB,代码行数:32,代码来源:test_mch_load.py
示例11: test_examples_simple_testset
def test_examples_simple_testset(self):
string = '''
MACHINE TestSet
SETS
ID={aa, bb, cc}
CONSTANTS iv
PROPERTIES
iv:ID
VARIABLES xx
INVARIANT
xx:ID
INITIALISATION xx:=iv
END'''
# Build AST
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch) # init VARIABLES and eval INVARIANT
assert isinstance(root.children[5], AInvariantMachineClause)
assert interpret(root.children[5], env)
开发者ID:hhu-stups,项目名称:pyB,代码行数:27,代码来源:test_mch_load.py
示例12: test_genAST_sub_case3
def test_genAST_sub_case3(self):
# Build AST
string = '''
MACHINE Test
VARIABLES xx
INVARIANT xx:NAT
INITIALISATION
BEGIN xx:=1;
CASE 1+1 OF
EITHER 4,5,6 THEN xx:=2
OR 7,8,9 THEN xx:=3
ELSE xx:=4 END
END
END
END'''
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch) # init VARIABLES and eval INVARIANT
assert isinstance(root.children[2], AInvariantMachineClause)
assert interpret(root.children[2], env)
assert env.get_value("xx")==4
开发者ID:hhu-stups,项目名称:pyB,代码行数:27,代码来源:test_interp_substitutions.py
示例13: test_examples_simple_bakery1
def test_examples_simple_bakery1(self):
string ='''
MACHINE Bakery1
ABSTRACT_VARIABLES p1, p2, y1, y2
INVARIANT
p1:0..2 & p2:0..2 & y1:NATURAL & y2:NATURAL &
(p1=2 => p2<2) &
(p2=2 => p1<2)
INITIALISATION p1,p2,y1,y2 := 0,0,0,0
END'''
# Build AST
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch) # init VARIABLES and eval INVARIANT
assert isinstance(root.children[2], AInvariantMachineClause)
assert interpret(root.children[2], env)
开发者ID:hhu-stups,项目名称:pyB,代码行数:27,代码来源:test_mch_load.py
示例14: test_abrial_book_page83_fail
def test_abrial_book_page83_fail(self):
# added some 42 in the assertions clause
string = """
MACHINE BBook_Page83
/* Translation of example from page 83 of Abrial's B-Book */
CONSTANTS p,w,q,f,g,s,t,h,k
PROPERTIES
p = {3|->5, 3|->9, 6|->3, 9|->2} &
w = {1, 2, 3} &
p[w] = {5,9} &
q = {2|->7, 3|->4, 5|->1, 9|->5} &
q <+ p = {3|->5, 3|->9, 6|->3, 9|->2, 2|->7, 5|->1} &
f = {8|->10, 7|->11, 2|->11, 6|->12} &
g = {1|->20, 7|->20, 2|->21, 1|->22} &
f >< g = {(7|->(11|->20)), (2|->(11|->21))} &
s = {1,4} &
t = {2,3} &
prj1(s,t) = {((1|->2)|->1),((1|->3)|->1),((4|->2)|->4),((4|->3)|->4)} &
prj2(s,t) = {((1|->2)|->2),((1|->3)|->3),((4|->2)|->2),((4|->3)|->3)} &
h = {1|->11, 4|->12} &
k = {2|->21, 7|->22} &
(h||k) = { (1,2) |-> (11,21), (1,7) |-> (11,22),
(4,2) |-> (12,21), (4,7) |-> (12,22) }
ASSERTIONS
p[w] = {5,42};
q <+ p = {(3|->5),(3|->9),(6|->3),(9|->2),(2|->7),(5|->42)};
f >< g = {(7|->(11|->20)), (2|->(11|->42))};
prj1(s,t) = {((1|->2)|->1),((1|->3)|->1),((4|->2)|->4),((4|->3)|->42)};
prj2(s,t) = {((1|->2)|->2),((1|->3)|->3),((4|->2)|->2),((4|->3)|->42)};
(h||k) = { (1,2) |-> (11,21), (1,7) |-> (11,22),
(4,2) |-> (12,21), (4,7) |-> (12,42) }
END"""
# Build AST
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch) # eval CONSTANTS and PROPERTIES
# eval ASSERTIONS (again)
assert isinstance(root.children[3], AAssertionsMachineClause)
assert not interpret(root.children[3].children[0], env)
assert not interpret(root.children[3].children[1], env)
assert not interpret(root.children[3].children[2], env)
assert not interpret(root.children[3].children[3], env)
assert not interpret(root.children[3].children[4], env)
assert not interpret(root.children[3].children[5], env)
开发者ID:hhu-stups,项目名称:pyB,代码行数:51,代码来源:test_mch_assertions.py
示例15: test_only_invariant
def test_only_invariant(self):
string = '''
MACHINE Only
INVARIANT 4=4
END'''
# Build AST
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
mch = parse_ast(root, env)
type_check_bmch(root, env, mch)
arbitrary_init_machine(root, env, mch)
开发者ID:hhu-stups,项目名称:pyB,代码行数:15,代码来源:test_mch_load.py
示例16: test_library_append
def test_library_append(self):
string = '''
MACHINE m
DEFINITIONS
EXTERNAL_FUNCTION_STRING_APPEND == STRING*STRING --> STRING;
STRING_APPEND(x,y) == append(x,y);
STRING_LENGTH(x) == length(x);
EXTERNAL_FUNCTION_STRING_LENGTH == STRING --> INTEGER;
ABSTRACT_CONSTANTS
append, length
PROPERTIES
append = %(x,y).(x: STRING & y: STRING | STRING_APPEND(x,y)) &
length: STRING --> INTEGER &
length = %x.(x:STRING|STRING_LENGTH(x))
ASSERTIONS
append("abc","abc") = "abcabc";
append("","abc") = "abc";
append("abc","") = "abc";
/*{x|x:{"abc","abcabc","hello"} & #(prefx).(append(prefx,"c")=x)} = {"abcabc","abc"};*/
{x|x/="" & #y.(append(x,y)="abc" & y/="")} = {"a","ab"}; /* compute true prefixes */
{x|x/="" & #y.(append(y,x)="abc" & y/="")} = {"c","bc"}; /* compute true postfixes */
{y|y/="" & #(x,z).(append(x,append(y,z))="abc" & length(x)+length(z)>0)} =
/* compute true substrings */ {"a","ab","b","bc","c"};
{y|y/="" & #(x,z).(append(append(x,y),z)="abc" & length(x)+length(z)>0)} =
/* compute true substrings */ {"a","ab","b","bc","c"}
END'''
# TODO: prolog-style args
# {x|x:{"abc","abcabc","hello"} & #(prefx).(append(prefx,"c")=x)} = {"abcabc","abc"};
# Build AST
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
dh = DefinitionHandler(env, str_ast_to_python_ast)
dh.repl_defs(root)
mch = parse_ast(root, env)
type_check_bmch(root, env, mch)
assert isinstance(get_type_by_name(env, "append"), PowerSetType)
assert isinstance(get_type_by_name(env, "append").data, CartType)
assert isinstance(get_type_by_name(env, "append").data.left.data, CartType)
assert isinstance(get_type_by_name(env, "append").data.left.data.left.data, StringType)
assert isinstance(get_type_by_name(env, "append").data.left.data.right.data, StringType)
assert isinstance(get_type_by_name(env, "append").data.right.data, StringType)
arbitrary_init_machine(root, env, mch) # init VARIABLES and eval INVARIANT
assert isinstance(root.children[4], AAssertionsMachineClause)
interpret(root.children[4], env)
开发者ID:hhu-stups,项目名称:pyB,代码行数:48,代码来源:test_library.py
示例17: test_genAST_subst_def3
def test_genAST_subst_def3(self):
string='''
MACHINE Test3
SEES UsingDefinitions
END'''
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
#Test
env = Environment()
dh = DefinitionHandler(env, str_ast_to_python_ast)
dh.repl_defs(root)
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch)
开发者ID:hhu-stups,项目名称:pyB,代码行数:16,代码来源:test_interp_definitions.py
示例18: test_library_codes
def test_library_codes(self):
string = '''
MACHINE LibraryStrings
CONSTANTS codes, append
PROPERTIES
append = %(x,y).(x: STRING & y: STRING | STRING_APPEND(x,y)) &
/* obtain the characters of a string as a B sequence of Ascii codes; it is reversible */
codes: STRING --> (INTEGER <-> INTEGER) &
codes = %(s).(s:STRING|STRING_CODES(s))
DEFINITIONS
STRING_CODES(x) == codes(x);
EXTERNAL_FUNCTION_STRING_CODES == (STRING --> (INTEGER<->INTEGER));
EXTERNAL_FUNCTION_STRING_APPEND == STRING*STRING --> STRING;
STRING_APPEND(x,y) == append(x,y)
ASSERTIONS
codes("") = <>;
/* codes(" ") = [32]; the Java parser currently swallows whitespace within strings */
codes("abc") = [97,98,99];
{x| codes(x) = codes("abc") ^ codes("abc")} = {"abcabc"};
!(x,y).(x:{"abc","hello",""} & y:{"abc","hello",""}
=> codes(append(x,y)) = codes(x)^codes(y))
END
'''
# FIXME: composition typechecking bug
# {x| codes(x) = (codes("abc") ; succ) } = {"bcd"};
# TODO: prolog style args
# {x| codes(x) = %i.(i:1..26|96+i)} = {"abcdefghijklmnopqrstuvwxyz"}
# Build AST
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
dh = DefinitionHandler(env, str_ast_to_python_ast)
dh.repl_defs(root)
mch = parse_ast(root, env)
type_check_bmch(root, env, mch)
assert isinstance(get_type_by_name(env, "codes"), PowerSetType)
assert isinstance(get_type_by_name(env, "codes").data, CartType)
assert isinstance(get_type_by_name(env, "codes").data.left.data, StringType)
assert isinstance(get_type_by_name(env, "codes").data.right.data.data, CartType)
assert isinstance(get_type_by_name(env, "codes").data.right.data.data.left.data, IntegerType)
assert isinstance(get_type_by_name(env, "codes").data.right.data.data.right.data, IntegerType)
arbitrary_init_machine(root, env, mch) # init VARIABLES and eval INVARIANT
assert isinstance(root.children[4], AAssertionsMachineClause)
interpret(root.children[4], env)
开发者ID:hhu-stups,项目名称:pyB,代码行数:47,代码来源:test_library.py
示例19: test_structs2
def test_structs2(self):
string = '''
MACHINE Test
VARIABLES RES
INVARIANT RES:struct(Mark:NAT, Good_enough:BOOL)
INITIALISATION RES := rec(Mark : 14, Good_enough : TRUE)
END'''
# Build AST
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch) # search for CONSTANTS which make PROPERTIES True
开发者ID:hhu-stups,项目名称:pyB,代码行数:17,代码来源:test_mch_load.py
示例20: test_abrial_book_page82_fail
def test_abrial_book_page82_fail(self):
# changes example: change 3|->5 to 1->5 in p (PROPERTIES-clause)
string = """
MACHINE BBook_Page80
/* Translation of example from page 82 of Abrial's B-Book */
CONSTANTS p,q,u,s,t
PROPERTIES
p = {1|->5, 3|->9, 6|->3, 9|->2} &
q = {2|->7, 3|->4, 5|->1, 9|->5} &
u = {1,2,3} &
s = {4,7,3} &
t = {4,8,1}
ASSERTIONS
p~ = {5|->3, 9|->3, 3|->6, 2|->9};
dom(p) = {3,6,9};
ran(p) = {5,9,3,2};
(p;q) = {3|->1, 3|->5, 6|->4, 9|->7};
id(u) = {1|->1, 2|->2, 3|->3};
s <|p = {3|->5, 3|->9};
p |> t = {};
s <<| p = {6|->3, 9|->2};
p |>> t = {3|->5, 3|->9, 6|->3, 9|->2}
END
"""
# Build AST
string_to_file(string, file_name)
ast_string = file_to_AST_str(file_name)
root = str_ast_to_python_ast(ast_string)
# Test
env = Environment()
mch = parse_ast(root, env)
type_check_bmch(root, env, mch) # also checks all included, seen, used and extend
arbitrary_init_machine(root, env, mch) # eval CONSTANTS and PROPERTIES
# eval ASSERTIONS (again)
assert isinstance(root.children[3], AAssertionsMachineClause)
assert not interpret(root.children[3].children[0], env)
assert not interpret(root.children[3].children[1], env)
assert interpret(root.children[3].children[2], env)
assert not interpret(root.children[3].children[3], env)
assert interpret(root.children[3].children[4], env)
assert not interpret(root.children[3].children[5], env)
assert interpret(root.children[3].children[6], env)
assert not interpret(root.children[3].children[7], env)
assert not interpret(root.children[3].children[8], env)
开发者ID:hhu-stups,项目名称:pyB,代码行数:46,代码来源:test_mch_assertions.py
注:本文中的util.arbitrary_init_machine函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论