SIGPLwinterschool2012

Size: px
Start display at page:

Download "SIGPLwinterschool2012"

Transcription

1

2 1994

3

4

5

6

7

8

9

10

11

12

13 2002

14 Semantics Engineering with PLT Redex Matthias Felleisen, Robert Bruce Findler and Matthew Flatt 2009 Text

15 David A. Schmidt

16

17 EXPRESSION E ::= N ( E1 O E2 ) OPERATOR O ::= + - NUMERAL N ::= D D N DIGIT D ::= : ((2 + 1) - (3-4)) ETREE ::= NUM [ OP, ETREE, ETREE ] OP ::= + - NUM ::= <string of digits> : ["-", ["+", "2", "1"], ["-", "3", "4"]]

18 def interpetree(t): # pre: t == ETREE # where ETREE ::= NUM [ OP, ETREE, ETREE ] # OP ::= + - # NUM ::= <string of digits> # post: ans == t ( ) # returns: ans if isinstance(t, str): if t.isdigit(): ans = int(t) else: raise Exception else: if t[0] == + : ans = interpetree(t[1]) + interpetree(t[2]) elif t[0] == - : ans = interpetree(t[1]) - interpetree(t[2]) else: print( interpetree error:,t, is illegal. ) raise Exception return ans

19 interpetree( ["-", ["+", "2", "1"], ["-", "3", "4"]]) => ans = interpetree(["+", "2", "1"]) - interpetree(["-", "3", "4"]) => ans = interpetree("2") + interpetree("1") => ans = 2 = 2 + interpetree("1") => ans = 1 = = 3 = 3 - interpetree(["-", "3", "4"]) => ans = interpetree("3") - interpetree("4") => ans = 3 = 3 - interpetree("4") = 3 - => ans = 4 = 3-4 = -1 = 3 - (-1) = 4 = 4

20 Program P ::= CL CommandList CL ::= C C ; CL Command C ::= I = E print I while E : CL end Expression E ::= N I ( E O E ) Operator O ::= + - Numeral N ::= <strings of digits> Variable I := <strings> PTREE ::= CLIST CLIST ::= [ CTREE+ ] CTREE ::= ["=", ID, ETREE] ["print", ID] ["while", ETREE, CLIST] ETREE ::= NUM ID [OP, ETREE, ETREE]

21 x = 3 ; while x : x = x - 1 end ; print x [["=", "x", "3"], ["while", "x", [["=", "x", ["-", "x", "1"]]]], ["print", "x"] ]

22 x = 3 ; while x : x = x - 1 end ; print x program [["=", "x", "3"], ["while", "x", [["=", "x", ["-", "x", "1"]]]], ["print", "x"] ] interpptree interpctree interpetree namespace x 3 def interpptree(program): # pre: program == PTREE ::= CLIST # CLIST ::= [ CTREE+ ] # post: namespace == program ( ) global namespace namespace = {} # for command in program: interpctree(command) print( final namespace =, namespace)

23 def interpctree(c): # pre: c == CTREE ::= [ =, ID, ETREE] [ print, ID] [ while, ETREE, CLIST] # post: namespace == c ( ) op = c[0] if op == = : var = c[1] expr = c[2] exprval = interpetree(expr) namespace[var] = exprval elif op == print : var = c[1] if var in namespace: val = namespace[var] print(val) else: crash( variable name undefined ) elif op == while : expr = c[1] body = c[2] while (interpetree(expr)!= 0) interpclist(body) else: crash( invalid command )

24 def interpetree(e): # pre: e == ETREE ::= NUM ID [OP, ETREE, ETREE] OP ::= + - # post: val == e ( ) # returns: val if isinstance(e,str) and e.isdigit(): val = int(e) elif isinstance(e,str) and len(e)>0 and e[0].isalpha(): if e in namespace: val = namespace[e] else: crash( variable name undefined ) else: op = e[0] val1 = interpetree(e[1]) val2 = interpetree(e[2]) if op == + : val = val1 + val2 elif op == - : val = val1 - val2 else: crash( illegal arithmetic operator ) return val

25 interpptree([["=", "x", "3"], ["while", "x", [["=", "x", ["-", "x", "1"]]]], ["print", "x"] ])

26

27

28 Program P ::= CL CommandList CL ::= C C ; CL Command C ::= L = E while E : CL end print L Expression E ::= N L &L ( E + E ) LefthandSide L ::= I *L Numeral N ::= <strings of digits> Variable I ::= <strings> PTREE ::= CLIST CLIST ::= [ CTREE+ ] CTREE ::= ["=", LTREE, ETREE] ["while", ETREE, CLIST] ["print", LTREE] ETREE ::= NUM LTREE [ &, LTREE] [ +, ETREE, ETREE] LTREE ::= ID [ *, LTREE]

29 y = 5; z = 0; x = (6 + y) [["=", "y", "5"], ["=", "z", "0"], ["=", "x", [ +, 6, y ]] ] program interpptree interpctree interpetree interpltree namespace memory

30 y = 5; z = 0; x = (6 + y) [["=", "y", "5"], ["=", "z", "0"], ["=", "x", [ +, 6, y ]] ] program interpptree interpctree interpetree interpltree y 0 namespace memory

31 y = 5; z = 0; x = (6 + y) [["=", "y", "5"], ["=", "z", "0"], ["=", "x", [ +, 6, y ]] ] program interpptree interpctree interpetree interpltree y 0 z 1 namespace memory

32 y = 5; z = 0; x = (6 + y) [["=", "y", "5"], ["=", "z", "0"], ["=", "x", [ +, 6, y ]] ] program interpptree interpctree interpetree interpltree y 0 z 1 x 2 namespace memory

33 y = 5; z = &y; x = (6 + *z) program [["=", "y", "5"], ["=", "z", ["&", "y"]], ["=", "x", [ +, 6, [ *, z ]]] ] interpptree interpctree interpetree interpltree namespace memory

34 y = 5; z = &y; x = (6 + *z) program [["=", "y", "5"], ["=", "z", ["&", "y"]], ["=", "x", [ +, 6, [ *, z ]]] ] interpptree interpctree interpetree interpltree y 0 namespace memory

35 y = 5; z = &y; x = (6 + *z) program [["=", "y", "5"], ["=", "z", ["&", "y"]], ["=", "x", [ +, 6, [ *, z ]]] ] interpptree interpctree interpetree interpltree y 0 z 1 namespace memory

36 y = 5; z = &y; x = (6 + *z) program [["=", "y", "5"], ["=", "z", ["&", "y"]], ["=", "x", [ +, 6, [ *, z ]]] ] interpptree interpctree interpetree interpltree y 0 z 1 x 2 namespace memory

37 memory = [] # memory = [5,0,11] namespace = {} # namespace = { y =0, z =1, x =2} def interpc(program): # pre: program == PTREE ::= [ CTREE+ ] # post: memory == program ( ) global namespace, memory namespace = {} memory = [] for command in program: interpctree(command) print( final namespace =, namespace) print( final memory =, memory)

38 def interpltree(x): # pre: x == LTREE ::= ID [ *, LTREE] # post: loc == x # returns: loc if isinstance(x,str): if x in namespace: loc = namespace[x] else: memory.append( err ) namespace[x] = len(memory) - 1 loc = namespace[x] else: y = interpltree(x[1]) loc = memory[y] return loc

39 def interpctree(c): # pre: c == CTREE ::= [ =, LTREE, ETREE] [ while, ETREE, CLIST] [ print, LTREE] # post: memory == c ( ) op = c[0] if op == = : lval = interpltree(c[1]) rval = interpetree(c[2]) memory[lval] = rval elif op == while : expr = c[1] body = c[2] while (interpetree(expr)!= 0) interpclist(body) elif op == print : print(interpltree(c[1])) else: crash( invalid command )

40 def interpetree(e): # pre: e == ETREE ::= NUM LTREE [ &, LTREE] [ +, ETREE, ETREE] # post: val == e ( ) # returns: val if isinstance(e,str) and e.isdigit(): val = int(e) elif isinstance(e,list) and e[0] == + :: val1 = interpetree(e[1]) val2 = interpetree(e[2]) val = val1 + val2 elif isinstance(e,list) and e[0] == & : val = interpltree(e[1]) else: x = interpltree(e) val = memory[x] return val

41 declare y : int; declare z : *int; y = 5; z = &y; declare x : int; x = (6 + *z) declare x : int; x = 0; declare y : int; y = (6 + &x) declare x : int; x = 0; *x = 999

42 Program CommandList Command P ::= CL CL ::= C C ; CL C ::= L = E while E : CL end print L declare I : T Type T ::= int *T Expression E ::= N L &L ( E1 + E2 ) LefthandSide L ::= I *L Numeral Variable N ::= <strings of digits> I ::= <strings> PTREE ::= CLIST CLIST ::= [ CTREE+ ] CTREE ::= ["=", LTREE, ETREE] ["while", ETREE, CLIST] ["print", LTREE] [ dec, ID, TYPE] TYPE ::= [ ptr *, int ] ETREE ::= NUM LTREE [ &, LTREE] [ +, ETREE, ETREE] LTREE ::= ID [ *, LTREE]

43 declare y : int; declare z : *int; y = 5; z = &y; declare x; x = (6 + *z) program interpptree interpctree interpetree interpltree namespace [[ dec, y, [ int ]], [ dec, z, [ ptr, int ]], ["=", "y", "5"], ["=", "z", ["&", "y"]], [ dec, x, [ int ]], ["=", "x", [ +, 6, [ *, z ]]] ] memory

44 declare y : int; declare z : *int; y = 5; z = &y; declare x; x = (6 + *z) program interpptree interpctree interpetree interpltree y [ int ], 0 namespace [[ dec, y, [ int ]], [ dec, z, [ ptr, int ]], ["=", "y", "5"], ["=", "z", ["&", "y"]], [ dec, x, [ int ]], ["=", "x", [ +, 6, [ *, z ]]] ] memory

45 declare y : int; declare z : *int; y = 5; z = &y; declare x; x = (6 + *z) program interpptree interpctree interpetree interpltree y [ int ], 0 z [ ptr, int ], 1 namespace [[ dec, y, [ int ]], [ dec, z, [ ptr, int ]], ["=", "y", "5"], ["=", "z", ["&", "y"]], [ dec, x, [ int ]], ["=", "x", [ +, 6, [ *, z ]]] ] memory

46 declare y : int; declare z : *int; y = 5; z = &y; declare x; x = (6 + *z) program interpptree interpctree interpetree interpltree y [ int ], 0 z [ ptr, int ], 1 namespace [[ dec, y, [ int ]], [ dec, z, [ ptr, int ]], ["=", "y", "5"], ["=", "z", ["&", "y"]], [ dec, x, [ int ]], ["=", "x", [ +, 6, [ *, z ]]] ] memory

47 declare y : int; declare z : *int; y = 5; z = &y; declare x; x = (6 + *z) program interpptree interpctree interpetree interpltree y [ int ], 0 z [ ptr, int ], 1 namespace [[ dec, y, [ int ]], [ dec, z, [ ptr, int ]], ["=", "y", "5"], ["=", "z", ["&", "y"]], [ dec, x, [ int ]], ["=", "x", [ +, 6, [ *, z ]]] ] memory

48 declare y : int; declare z : *int; y = 5; z = &y; declare x; x = (6 + *z) program interpptree interpctree interpetree interpltree y [ int ], 0 z [ ptr, int ], 1 x [ int ], 2 namespace [[ dec, y, [ int ]], [ dec, z, [ ptr, int ]], ["=", "y", "5"], ["=", "z", ["&", "y"]], [ dec, x, [ int ]], ["=", "x", [ +, 6, [ *, z ]]] ] memory

49 declare y : int; declare z : *int; y = 5; z = &y; declare x; x = (6 + *z) program interpptree interpctree interpetree interpltree y [ int ], 0 z [ ptr, int ], 1 x [ int ], 2 namespace [[ dec, y, [ int ]], [ dec, z, [ ptr, int ]], ["=", "y", "5"], ["=", "z", ["&", "y"]], [ dec, x, [ int ]], ["=", "x", [ +, 6, [ *, z ]]] ] memory

50 memory = [] # memory = [5,0,11] namespace = {} # namespace = { y =([ int ],0), # z =([ ptr, int ],1), # x =([ int ],2)} def interpct(program): # pre: program == PTREE ::= [ CTREE+ ] # post: memory == program ( ) global namespace, memory namespace = {} memory = [] for command in program: interpctree(command) print( final namespace =, namespace) print( final memory =, memory)

51 def interpltree(x): # pre: x == LTREE ::= ID [ *, LTREE] # post: ans == x (, ) # returns: ans if isinstance(x,str): if x in namespace: ans = namespace[x] else: crash( variable,x, undeclared ) else: type, loc = interpltree(x[1]) if type[0] == ptr : ans = (type[1:],memory[loc]) else: crash( variable not a pointer ) return ans

52 def interpctree(c): # pre: c == CTREE ::= [ =, LTREE, ETREE] [ while, ETREE, CLIST] [ print, LTREE] [ dec, ID, TYPE] TYPE ::= [ ptr *, int ] # post: memory == c ( ) op = c[0] if op == = : type1,lval = interpltree(c[1]) type2,rval = interpetree(c[2]) if type1 == type2: memory[lval] = rval else: crash( incompatible types for assignment ) elif op == while : expr = c[1] body = c[2] type,val = interpetree(expr) while (val!= 0) interpclist(body) type,val = interpetree(expr) elif op == print : type,num = interpltree(c[1]) print(num) elif op == dec : x = c[1] if x in namespace: crash( variable,x, redeclared ) else: memory.append( err ) namespace[x] = (c[2],len(memory)-1) else: crash( invalid command )

53 def interpetree(e): # pre: e == ETREE ::= NUM LTREE [ &, LTREE] [ +, ETREE, ETREE] # post: ans == e (, ) # returns: ans if isinstance(e,str) and e.isdigit(): ans = ([ int ],int(e)) elif isinstance(e,list) and e[0] == + :: type1,val1 = interpetree(e[1]) type2,val2 = interpetree(e[2]) if type1 == [ int ] and type2 == [ int ]: ans = ([ int ],val1 + val2) elif isinstance(e,list) and e[0] == & : type,val = interpltree(e[1]) ans = ([ ptr ]+type,val) else: type,loc = interpltree(e) ans = (type,memory[loc]) return ans

54

55 x = 7; y = new {f, g}; y.f = x; y.g = new {r}; y.g.r = y.f program interpptree interpctree interpetree interpltree α namespace α heap

56 x = 7; y = new {f, g}; y.f = x; y.g = new {r}; y.g.r = y.f program interpptree interpctree interpetree interpltree α namespace α x 7 heap

57 x = 7; y = new {f, g}; y.f = x; y.g = new {r}; y.g.r = y.f program interpptree interpctree interpetree interpltree α namespace α x 7 y β heap β f g

58 x = 7; y = new {f, g}; y.f = x; y.g = new {r}; y.g.r = y.f program interpptree interpctree interpetree interpltree α namespace α x 7 y β heap β f 7 g

59 x = 7; y = new {f, g}; y.f = x; y.g = new {r}; y.g.r = y.f program interpptree interpctree interpetree interpltree α namespace α x 7 y β heap β f 7 g ɣ ɣ r

60 x = 7; y = new {f, g}; y.f = x; y.g = new {r}; y.g.r = y.f program interpptree interpctree interpetree interpltree α namespace α x 7 y β heap β f 7 g ɣ ɣ r 7

61 Program CommandList Command Expression LefthandSide FieldNames Numeral Variable P ::= CL CL ::= C C ; CL C ::= L = E if E : CL1 else CL2 end print L E ::= N L ( E + E ) new { F } L ::= I L. I F ::= I I, F N ::= <strings of digits> I ::= <strings> PTREE ::= CLIST CLIST ::= [ CTREE+ ] CTREE ::= ["=", LTREE, ETREE] ["if", ETREE, CLIST, CLIST] ["print", LTREE] ETREE ::= NUM [ deref, LTREE] [ +, ETREE, ETREE] [ new, OBJ] LTREE ::= [ ID+ ] OBJ ::= [ ID+ ] a = new { f,g }; a.f = 3; a.g = (1 + a.f) [ ["=", ["a"], ["new", ["f","g"]]], ["=", ["a", "f"], "3"], ["=", ["a", "g"], ["+", "1", ["deref", ["a", "f"]]]] ]

62 heap = {} # { ( = )+ } heap_count = 0 # x = 7; y = new {f,g}; y.g = 5; z = new {r}; z.r = (y.g + x) heap 0 namespace 0

63 heap = {} # { ( = )+ } heap_count = 0 # x = 7; y = new {f,g}; y.g = 5; z = new {r}; z.r = (y.g + x) heap 0 x 7 namespace 0

64 heap = {} # { ( = )+ } heap_count = 0 # x = 7; y = new {f,g}; y.g = 5; z = new {r}; z.r = (y.g + x) heap 0 x 7 y 1 namespace 0 1 f g

65 heap = {} # { ( = )+ } heap_count = 0 # x = 7; y = new {f,g}; y.g = 5; z = new {r}; z.r = (y.g + x) heap 0 x 7 y 1 namespace 0 1 f g 5

66 heap = {} # { ( = )+ } heap_count = 0 # x = 7; y = new {f,g}; y.g = 5; z = new {r}; z.r = (y.g + x) heap 0 x 7 y 1 z 2 namespace 0 1 f g 5 2 r

67 heap = {} # { ( = )+ } heap_count = 0 # x = 7; y = new {f,g}; y.g = 5; z = new {r}; z.r = (y.g + x) heap 0 x 7 y 1 z 2 namespace 0 1 f g 5 2 r 12

68 heap = {} # { ( = )+ } heap_count = 0 # x = 7; y = new {f,g}; y.g = 5; z = new {r}; z.r = (y.g + x) heap 0 x 7 y 1 z 2 namespace 0 heap = { "0": {"x":7, "y":"1", "z":"2"}, "1": {"f":"nil", "g":5}, "2": {"r":12} } heap_count = f g 5 r 12

69 def cleartheheap(): global heap_count, heap heap_count = 0 heap = {} def allocatens(): global heap_count newloc = str(heap_count) heap[newloc] = {} heap_count = heap_count + 1 return newloc def dereference(lval): ans = nil loc,f = lval if isinstance(loc,str) and loc.isdigit(): ans = heap[loc][f] else: crash( dereference error: lval =,str(lval)) return ans def store(lval,rval): loc, qual = lval if isinstance(loc,str) and loc.isdigit(): heap[loc][qual] = rval else: crash( store error: lval =,str(lval))

70 def interpct(program): # pre: program == PTREE ::= [ CTREE+ ] # post: memory == program ( ) global namespace, heap cleartheheap() namespace = allocatens() for command in program: interpctree(command) print( final namespace =,namespace) print( final heap =,heap)

71 def interpctree(c): # pre: c == CTREE ::= [ =, LTREE, ETREE] [ if, ETREE, CLIST, CLIST] [ print, LTREE] # post: heap == c ( ) op = c[0] if op == = : lval = interpltree(c[1]) rval = interpetree(c[2]) store(lval,rval) elif op == if : test = interpetree(c[1]) if test!= 0: interpclist(c[2]) else: interpclist(c[3]) elif op == print : val = dereference(interpltree(c[1])) print(val) else: crash( invalid command )

72 def interpetree(e): # pre: e == ETREE ::= NUM [ deref, LTREE] [ +, ETREE, ETREE] [ new OBJ] OBJ ::= [ ID+ ] # post: ans == or or nil (+ ) # returns: ans ans = nil if isinstance(e,str) and e.isdigit(): ans = int(e) elif e[0] == + :: val1 = interpetree(e[1]) val2 = interpetree(e[2]) if isinstance(val1,int) and isinstance(val2,int): ans = val1 + val2 else: crash( addition error - non-int value used ) elif e[0] == deref : ans = dereference(interpltree(e[1])) elif e[0] == new : handle = allocatens() fields = e[1] for f in fields: store((handle,f), nil ) ans = handle else: crash( invalid expression ) return ans

73 def interpltree(x): # pre: x == LTREE ::= [ ID+ ] # post: lval == (, ) # returns: ans lval = (namespace,x[0]) indexlist = x[1:] while indexlist!= []: fieldname = indexlist[0] indexlist = indexlist[1:] handle = dereference(lval) lval = (handle, fieldname) return lval

74 x y.f y.g.h ["x"] ["y", "f"] ["y", "g", h ] ( 0, x ) ( 1, f ) crash! heap namespace 0 x 7 y 1 z f g 5 2 r 12

75

76

77

78

79

80 Peter J. Landin, "Correspondence between ALGOL 60 and Church's Lambda-notation: part I & II". Communications of the ACM, (February 1965).

81

82

83

84

85 Program Declaration Command Expression Numeral Variable P ::= D ; C D ::= int I D1 ; D2 C ::= I = E C1 ; C2 while E : C print E E ::= N E1 + E2 E1 == N ::= <strings of digits> I ::= <alphanumeric strings>

86 Program Declaration Command Expression Numeral Variable P ::= D ; C D ::= int I D1 ; D2 proc I = C C ::= I = E C1 ; C2 while E : C print E call I E ::= N E1 + E2 E1 == N ::= <strings of digits> I ::= <alphanumeric strings>

87 Program Declaration Command Expression Numeral Variable P ::= D ; C D ::= int I D1 ; D2 proc I = C fun I = E C ::= I = E C1 ; C2 while E : C print E call I E ::= N E1 + E2 E1 == I() N ::= <strings of digits> I ::= <alphanumeric strings>

88 int i; i = 0; fun f = (i + i) + 1; i = i + 1; i = f() + f() - i int i; i = 0; fun f = 1; i = i + 1; i = f() + f() - i int i; i = 0; fun f = 1; i = i + 1; i = i

89 int i; i = 0; fun f = (i + i) + 1; i = i + 1; i = f() + f() - i int i; i = 0; fun f = (i + i) + 1; i = i + 1; i = (i + i) (i + i) i

90 Program Declaration Command Expression Numeral Variable P ::= D ; C D ::= int I D1 ; D2 proc I = C fun I = { C ; return E} C ::= I = E C1 ; C2 while E : C print E call I E ::= N E1 + E2 E1 == I() N ::= <strings of digits> I ::= <alphanumeric strings>

91

92

93 Program Declaration Command P ::= D ; C D ::= int I D1 ; D2 proc I(I *) = C C ::= I = E C1 ; C2 while E : C print E I(E*) Program Declaration Command P ::= D ; C D ::= int I D1 ; D2 proc I(I ) = C C ::= I = E C1 ; C2 while E : C print E I(C)

94 (a) int x; int[3] y; proc p(x, z) { z = x + y[1]; y[x] = z }; x = 1; y[1] = 5; p(x + x, 0); print x; (a) namespace heap α α β x 1 y β p ɣ nil ɣ codeptr α

95 int x; int[3] y; proc p(x, z) { (b) α δ z = x + y[1]; y[x] = z }; x = 1; y[1] = 5; p(x + x, 0); print x; (b) namespace α β heap x 1 y p β ɣ nil δ x 2 z 0 α ɣ codeptr α

96 (c) int x; int[3] y; proc p(x, z) { z = x + y[1]; y[x] = z }; x = 1; y[1] = 5; p(x + x, 0); print x; (c) namespace heap α δ α β x 1 y β p ɣ nil δ x 2 z 7 α ɣ codeptr α

97 (d) int x; int[3] y; proc p(x, z) { z = x + y[1]; y[x] = z }; x = 1; y[1] = 5; p(x + x, 0); print x; (d) namespace heap α α β x 1 y β p ɣ nil δ x 2 z 7 α ɣ codeptr α

98

99 (a) (a) int x; x = 1; proc f(n) { if n > 0 { x = x * n; f(n - 1) } }; f(4) namespace α heap α x 1 f β nil β codeptr α

100 (b) (b) int x; x = 1; proc f(n) { if n > 0 { x = x * n; f(n - 1) } }; f(4) namespace α ɣ heap α x 1 f β ɣ n 4 α nil β codeptr α

101 (c) (c) int x; x = 1; proc f(n) { if n > 0 { x = x * n; f(n - 1) } }; f(4) namespace α ɣ heap α x 4 f β ɣ n 4 α nil β codeptr α

102 (d) (d) int x; x = 1; proc f(n) { if n > 0 { x = x * n; f(n - 1) } }; f(4) namespace α ɣ δ heap α x 4 f β ɣ n 4 α δ n 3 α nil β codeptr α

103 (e) (e) int x; x = 1; proc f(n) { if n > 0 { x = x * n; f(n - 1) } }; f(4) namespace α ɣ δ heap α x 12 f β ɣ n 4 α δ n 3 α nil β codeptr α

104 (f) int x; x = 1; proc f(n) { if n > 0 { x = x * n; f(n - 1) } }; f(4) (f) namespace α ɣ δ ε heap α ɣ δ ε x 12 n 4 n 3 n 2 f β nil β codeptr α α α α

105 define I = U define F(I) =... F(U)

106

107 Declaration D ::= int I D1 ; D2 proc I(I ) { C } Command C ::= I = E C1 ; C2 while E : C print E I(E) begin D in C end int x = 0; # begin int y # in y = x + 1; x = y + y end; # y print x # 2 int x = 0; # int y = 9; # begin int y # in y = x + 1; x = y + y print y end; print y # 1 # 9

108 int i = 0; proc p() { i = i + 1 }; begin int i = 9 in p(); print i # 9? 10? end; p(); print i # 1? 2?

109 (a) proc f(n) { begin int i; proc g(m) { print m + n + i } in i = 1; return g end }; int i = 9; h = f(2); h(3) (a) namespace α heap α f β i 9 nil β codeptr α

110 (b) proc f(n) { begin int i; proc g(m) { print m + n + i } in i = 1; return g end }; int i = 9; h = f(2); h(3) (b) namespace α ɣ heap α ɣ f β i 9 nil β codeptr α n 2 i 1 g δ α δ codeptr ɣ

111 (c) proc f(n) { begin int i; proc g(m) { print m + n + i } in i = 1; return g end }; int i = 9; h = f(2); h(3) (c) namespace α heap α f i β 9 ɣ n i 2 1 h δ g δ nil α β codeptr α δ codeptr ɣ

112 (d) proc f(n) { begin int i; proc g(m) { print m + n + i } in i = 1; return g end }; int i = 9; h = f(2); h(3) (d) namespace α ε heap α f β ɣ n 2 ε i 9 i 1 h δ g δ nil α m 3 ɣ β δ codeptr codeptr α ɣ

113 (d) proc f(n) { begin int i; proc g(m) { print m + n + i } in i = 1; return g end }; int i = 9; h = f(2); h(3) (d) namespace α ε heap α f β ɣ n 2 ε i 9 i 1 h δ g δ nil α m 3 ɣ β δ codeptr codeptr α ɣ

114

115

116

slide2

slide2 Program P ::= CL CommandList CL ::= C C ; CL Command C ::= L = E while E : CL end print L Expression E ::= N ( E + E ) L &L LefthandSide L ::= I *L Variable I ::= Numeral N ::=

More information

ENE414 프로그래밍언어론강의노트 1 1 문법, 핵심구문나무, 인터프리터 한양대학교 ERICA캠퍼스컴퓨터공학과도경구 2012년 1학기 (version 0.35) 1 c David A. Schmidt, 도경구 (2012). 본문서는 Kansas State Univers

ENE414 프로그래밍언어론강의노트 1 1 문법, 핵심구문나무, 인터프리터 한양대학교 ERICA캠퍼스컴퓨터공학과도경구 2012년 1학기 (version 0.35) 1 c David A. Schmidt, 도경구 (2012). 본문서는 Kansas State Univers ENE414 프로그래밍언어론강의노트 1 1 문법, 핵심구문나무, 인터프리터 한양대학교 ERICA캠퍼스컴퓨터공학과도경구 2012년 1학기 (version 0.35) 1 c David A. Schmidt, 도경구 (2012). 본문서는 Kansas State University의 David A. Schmidt 교수의강의노트 Introduction to Programming-Language

More information

HW5 Exercise 1 (60pts) M interpreter with a simple type system M. M. M.., M (simple type system). M, M. M., M.

HW5 Exercise 1 (60pts) M interpreter with a simple type system M. M. M.., M (simple type system). M, M. M., M. 오늘할것 5 6 HW5 Exercise 1 (60pts) M interpreter with a simple type system M. M. M.., M (simple type system). M, M. M., M. Review: 5-2 7 7 17 5 4 3 4 OR 0 2 1 2 ~20 ~40 ~60 ~80 ~100 M 언어 e ::= const constant

More information

1

1 1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2

More information

OCaml

OCaml OCaml 2009.. (khheo@ropas.snu.ac.kr) 1 ML 2 ML OCaml INRIA, France SML Bell lab. & Princeton, USA nml SNU/KAIST, KOREA 3 4 (let) (* ex1.ml *) let a = 10 let add x y = x + y (* ex2.ml *) let sumofsquare

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

C++-¿Ïº®Çؼ³10Àå

C++-¿Ïº®Çؼ³10Àå C C++. (preprocessor directives), C C++ C/C++... C++, C. C++ C. C C++. C,, C++, C++., C++.,.. #define #elif #else #error #if #itdef #ifndef #include #line #pragma #undef #.,.,. #include #include

More information

03장.스택.key

03장.스택.key ---------------- DATA STRUCTURES USING C ---------------- 03CHAPTER 1 ? (stack): (LIFO:Last-In First-Out) 2 : top : ( index -1 ),,, 3 : ( ) ( ) -> ->. ->.... 4 Stack ADT : (LIFO) : init():. is_empty():

More information

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어 개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,

More information

61 62 63 64 234 235 p r i n t f ( % 5 d :, i+1); g e t s ( s t u d e n t _ n a m e [ i ] ) ; if (student_name[i][0] == \ 0 ) i = MAX; p r i n t f (\ n :\ n ); 6 1 for (i = 0; student_name[i][0]!= \ 0&&

More information

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

More information

chap10.PDF

chap10.PDF 10 C++ Hello!! C C C++ C++ C++ 2 C++ 1980 Bell Bjarne Stroustrup C++ C C++ C, C++ C C 3 C C++ (prototype) (type checking) C C++ : C++ 4 C C++ (prototype) (type checking) [ 10-1] #include extern

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 4 (Object) (Class) (Instance) (Method) (Constructor) Memory 1 UML 1 @ & 1 (Real World) (Software World) @ &.. () () @ & 2 (Real World) (Software World) OOA/ Modeling Abstraction Instantiation

More information

본 발명은 중공코어 프리캐스트 슬래브 및 그 시공방법에 관한 것으로, 자세하게는 중공코어로 형성된 프리캐스트 슬래브 에 온돌을 일체로 구성한 슬래브 구조 및 그 시공방법에 관한 것이다. 이를 위한 온돌 일체형 중공코어 프리캐스트 슬래브는, 공장에서 제작되는 중공코어 프

본 발명은 중공코어 프리캐스트 슬래브 및 그 시공방법에 관한 것으로, 자세하게는 중공코어로 형성된 프리캐스트 슬래브 에 온돌을 일체로 구성한 슬래브 구조 및 그 시공방법에 관한 것이다. 이를 위한 온돌 일체형 중공코어 프리캐스트 슬래브는, 공장에서 제작되는 중공코어 프 (51) Int. Cl. E04B 5/32 (2006.01) (19)대한민국특허청(KR) (12) 등록특허공보(B1) (45) 공고일자 (11) 등록번호 (24) 등록일자 2007년03월12일 10-0693122 2007년03월05일 (21) 출원번호 10-2006-0048965 (65) 공개번호 (22) 출원일자 2006년05월30일 (43) 공개일자 심사청구일자

More information

Microsoft PowerPoint - PL_03-04.pptx

Microsoft PowerPoint - PL_03-04.pptx Copyright, 2011 H. Y. Kwak, Jeju National University. Kwak, Ho-Young http://cybertec.cheju.ac.kr Contents 1 프로그래밍 언어 소개 2 언어의 변천 3 프로그래밍 언어 설계 4 프로그래밍 언어의 구문과 구현 기법 5 6 7 컴파일러 개요 변수, 바인딩, 식 및 제어문 자료형 8

More information

Modern Javascript

Modern Javascript ES6 - Arrow Function Class Template String Destructuring Default, Rest, Spread let, const for..of Promises Module System Map, Set * Generator * Symbol * * https://babeljs.io/ Babel is a JavaScript compiler.

More information

歯처리.PDF

歯처리.PDF E06 (Exception) 1 (Report) : { $I- } { I/O } Assign(InFile, InputName); Reset(InFile); { $I+ } { I/O } if IOResult 0 then { }; (Exception) 2 2 (Settling State) Post OnValidate BeforePost Post Settling

More information

2힉년미술

2힉년미술 제 회 Final Test 문항 수 배점 시간 개 00 점 분 다음 밑줄 친 부분의 금속 공예 가공 기법이 바르게 연결된 것은? 금, 은, 동, 알루미늄 등의 금속을 ᄀ불에 녹여 틀에 붓거나 금속판을 ᄂ구부리거나 망치로 ᄃ두들겨서 여러 가지 형태의 쓸모 있는 물건을 만들 수 있다. ᄀ ᄂ ᄃ ᄀ ᄂ ᄃ 조금 단금 주금 주금 판금 단금 단금 판금 주금 판금 단금

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

Microsoft PowerPoint - semantics

Microsoft PowerPoint - semantics 제 3 장시맨틱스 (Semantics) Reading Chap 13 숙대창병모 Sep. 2007 1 3.1 Operational Semantics 숙대창병모 Sep. 2007 2 시맨틱스의필요성 프로그램의미의정확한이해 소프트웨어의정확한명세 소프트웨어시스템에대한검증혹은추론 컴파일러혹은해석기작성의기초 숙대창병모 Sep. 2007 3 의미론의종류 Operational

More information

특허청구의 범위 청구항 1 몸체(110)의 일측에는 테스트의 필요성에 따라 여타한 디젤 자동차(100)에서 분리시킨 상태의 분리형 커먼레일 인젝트(110)를 고정할 수 있는 분리형 인젝터 고정부(20)가 구비되고, 그 고정부(20)의 하측에는 분리형 커먼 레일 인젝터(

특허청구의 범위 청구항 1 몸체(110)의 일측에는 테스트의 필요성에 따라 여타한 디젤 자동차(100)에서 분리시킨 상태의 분리형 커먼레일 인젝트(110)를 고정할 수 있는 분리형 인젝터 고정부(20)가 구비되고, 그 고정부(20)의 하측에는 분리형 커먼 레일 인젝터( (19) 대한민국특허청(KR) (12) 공개특허공보(A) (11) 공개번호 10-2010-0038259 (43) 공개일자 2010년04월14일 (51) Int. Cl. G01M 15/09 (2006.01) G01M 15/00 (2006.01) (21) 출원번호 10-2008-0097443 (22) 출원일자 2008년10월04일 심사청구일자 전체 청구항 수 :

More information

February

February February 3 8 10 12 14 18 22 24 26 28 30 37 38 40 42 44 45 45 46 46 47 48 50 51 155 379 503 763 867 955 1031 1061 1 171 051 052 053 053 054 054 054 055 056 057 058 059 060 061 062 063 064 064 065 066 068

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

- 2 -

- 2 - - 1 - - 2 - - 3 - - 4 - - 1 - - 2 - 구분청구 심결 (B) 취하절차무효미처리 (A) 인용기각각하소계 (C) (D) (E=A-(B+C+D) 2015 505 0 165 0 165 176 116 48 2016 3 0 2 0 2 0 0 1 합계 508 0 167 0 167 176 116 49 구분 심결년 2013 2014 2015 2016

More information

6 강남구 청담지구 청담동 46, 삼성동 52 일대 46,592-46,592 7 강남구 대치지구 대치동 922번지 일대 58,440-58,440 8 강남구 개포지구 개포동 157일대 20,070-20,070 9 강남구 개포지구중심 포이동 238 일대 25,070-25,

6 강남구 청담지구 청담동 46, 삼성동 52 일대 46,592-46,592 7 강남구 대치지구 대치동 922번지 일대 58,440-58,440 8 강남구 개포지구 개포동 157일대 20,070-20,070 9 강남구 개포지구중심 포이동 238 일대 25,070-25, 서울특별시시 제2014-77호 도시관리계획[성내지구 지구단위계획구역 등 176개 구역 (민간부문 운영시행지침)] 결정(변경) 시 서울특별시 성내지구 등 176개소 지구단위계획구역 민간부문 운영시행지침 에 대하여 국토의 계획 및 이용에 관한 법률 제30조 및 같은법 시행령 제25조 규정에 따라 도시관리 계획결정(변경) 사항을 다음과 같이 시합니다. 2014년

More information

27집최종10.22

27집최종10.22 경 축 2012년 한국문인협회 선정 우수지부상 수상 아래 글은 한국문인협회 지회, 지부 중 홍천지부가 전국 우수지부로 선정되어 지난 2012년 9월 22~23일 원주 인터블고 호텔에서 개최한 한국문인협회 제32차 문협 전국대표자 대회 에서 수상하고 석도익 회장이 발표한 홍천지부 지부운영사례에 대한 글을 옮김. 2012년 한국문인협회 선정 우수지부장

More information

황룡사 복원 기본계획 Ⅵ. 사역 및 주변 정비계획 가. 사역주변 정비구상 문화유적지구 조성 1. 정비방향의 설정 황룡사 복원과 함께 주변 임해전지(안압지) 海殿址(雁鴨池)와 분황사 등의 문화유적과 네트워크로 연계되는 종합적 정비계획안을 수립한다. 주차장과 광장 등 주변

황룡사 복원 기본계획 Ⅵ. 사역 및 주변 정비계획 가. 사역주변 정비구상 문화유적지구 조성 1. 정비방향의 설정 황룡사 복원과 함께 주변 임해전지(안압지) 海殿址(雁鴨池)와 분황사 등의 문화유적과 네트워크로 연계되는 종합적 정비계획안을 수립한다. 주차장과 광장 등 주변 194 197 황룡사 복원 기본계획 Ⅵ. 사역 및 주변 정비계획 가. 사역주변 정비구상 문화유적지구 조성 1. 정비방향의 설정 황룡사 복원과 함께 주변 임해전지(안압지) 海殿址(雁鴨池)와 분황사 등의 문화유적과 네트워크로 연계되는 종합적 정비계획안을 수립한다. 주차장과 광장 등 주변 편의시설에 대한 계획을 고려하여 하나의 유적지구로 조성한다. 각 유적을 하나의

More information

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf(hihi\n); } warning: conflicting types for functiona 이름 : 학번 : A. True or False: 각각항목마다 True 인지 False 인지적으세요. 1. (Python:) randint 함수를사용하려면, random 모듈을 import 해야한다. 2. (Python:) '' (single quote) 는한글자를표현할때, (double quote) 는문자열을표현할때사용한다. B. 다음에러를수정하는방법을적으세요.

More information

제4장 기본 의미구조 (Basic Semantics)

제4장  기본 의미구조 (Basic Semantics) 제 4 장블록및유효범위 Reading Chap. 5 숙대창병모 1 4.1 변수선언및유효범위 숙대창병모 2 변수선언과유효범위 변수선언 Declaration before Use! 대부분의언어에서변수는사용전에먼저선언해야한다. 변수의유효범위 (scope) 선언된변수가유효한 ( 사용될수있는 ) 프로그램내의범위 / 영역 변수이름뿐아니라함수등다른이름도생각해야한다. 정적유효범위

More information

6.1 Addresses and Pointers Recall memory concepts from Ch2 ch6_testbasicpointer.c int x1=1, x2=7; double distance; int *p; int q=8; p = &q; name addre

6.1 Addresses and Pointers Recall memory concepts from Ch2 ch6_testbasicpointer.c int x1=1, x2=7; double distance; int *p; int q=8; p = &q; name addre GEN1031 Computer Programming Chapter 6 Pointer 포인터 Kichun Lee Department of Industrial Engineering Hanyang Univesity 1 6.1 Addresses and Pointers Recall memory concepts from Ch2 ch6_testbasicpointer.c

More information

Semantic Consistency in Information Exchange

Semantic Consistency in Information Exchange 제 3 장시맨틱스 (Semantics) Reading Chap 13 숙대창병모 1 시맨틱스의필요성 프로그램의미의정확한이해 소프트웨어의정확한명세 소프트웨어시스템에대한검증혹은추론 컴파일러혹은해석기작성의기초 숙대창병모 2 3.1 Operational Semantics 숙대창병모 3 의미론의종류 Operational Semantics 프로그램의동작과정을정의 Denotational

More information

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4

More information

untitled

untitled if( ) ; if( sales > 2000 ) bonus = 200; if( score >= 60 ) printf(".\n"); if( height >= 130 && age >= 10 ) printf(".\n"); if ( temperature < 0 ) printf(".\n"); // printf(" %.\n \n", temperature); // if(

More information

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Crash Unity SDK... Log & Crash Search. - Unity3D v4.0 ios

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

Exercise (10pts) k-친수 일반적으로 k진수(k > 1)는 다음과 같이 표현한다. d0 dn 여기서 di {0,, k 1}. 그리고 d0 dn 은 크기가 d0 k dn k n 인 정수를 표현한다. 이것을 살짝 확장해서 k친수 를 다음과 같이 정의

Exercise (10pts) k-친수 일반적으로 k진수(k > 1)는 다음과 같이 표현한다. d0 dn 여기서 di {0,, k 1}. 그리고 d0 dn 은 크기가 d0 k dn k n 인 정수를 표현한다. 이것을 살짝 확장해서 k친수 를 다음과 같이 정의 Homework SNU 4190.310, Fall 017 Kwangkeun Yi due: 9/8, 4:00 Exercise 1 (10pts) 참거짓 Propositional Logic 식들 (formula) 을다음과같이정의했습니다 : type formula = TRUE FALSE NOT of formula ANDALSO of formula * formula

More information

Deok9_Exploit Technique

Deok9_Exploit Technique Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security

More information

PART 8 12 16 21 25 28

PART 8 12 16 21 25 28 PART 8 12 16 21 25 28 PART 34 38 43 46 51 55 60 64 PART 70 75 79 84 89 94 99 104 PART 110 115 120 124 129 134 139 144 PART 150 155 159 PART 8 1 9 10 11 12 2 13 14 15 16 3 17 18 19 20 21 4 22 23 24 25 5

More information

MySQL-Ch10

MySQL-Ch10 10 Chapter.,,.,, MySQL. MySQL mysqld MySQL.,. MySQL. MySQL....,.,..,,.,. UNIX, MySQL. mysqladm mysqlgrp. MySQL 608 MySQL(2/e) Chapter 10 MySQL. 10.1 (,, ). UNIX MySQL, /usr/local/mysql/var, /usr/local/mysql/data,

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

DBPIA-NURIMEDIA

DBPIA-NURIMEDIA e- 비즈니스연구 (The e-business Studies) Volume 17, Number 1, February, 28, 2016:pp. 293~316 ISSN 1229-9936 (Print), ISSN 2466-1716 (Online) 원고접수일심사 ( 수정 ) 게재확정일 2015. 12. 04 2015. 12. 24 2016. 02. 25 ABSTRACT

More information

untitled

untitled 5. hamks@dongguk.ac.kr (regular expression): (recognizer) : F(, scanner) CFG(context-free grammar): : PD(, parser) CFG 1 CFG form : N. Chomsky type 2 α, where V N and α V *. recursive construction ) E

More information

untitled

untitled - -, (insert) (delete) - - (insert) (delete) (top ) - - (insert) (rear) (delete) (front) A A B top A B C top push(a) push(b) push(c) A B top pop() top A B D push(d) top #define MAX_STACK_SIZE 100 int

More information

많이 이용하는 라면,햄버그,과자,탄산음료등은 무서운 병을 유발하고 비만의 원인 식품 이다. 8,등겨에 흘려 보낸 영양을 되 찾을 수 있다. 도정과정에서 등겨에 흘려 보낸 영양 많은 쌀눈과 쌀껍질의 영양을 등겨를 물에 우러나게하여 장시간 물에 담가 두어 영양을 되 찾는다

많이 이용하는 라면,햄버그,과자,탄산음료등은 무서운 병을 유발하고 비만의 원인 식품 이다. 8,등겨에 흘려 보낸 영양을 되 찾을 수 있다. 도정과정에서 등겨에 흘려 보낸 영양 많은 쌀눈과 쌀껍질의 영양을 등겨를 물에 우러나게하여 장시간 물에 담가 두어 영양을 되 찾는다 (51) Int. Cl. (19) 대한민국특허청(KR) (12) 공개실용신안공보(U) A23L 1/307 (2006.01) C02F 1/68 (2006.01) (21) 출원번호 20-2011-0002850 (22) 출원일자 2011년04월05일 심사청구일자 2011년04월05일 (11) 공개번호 20-2011-0004312 (43) 공개일자 2011년05월03일

More information

PL10

PL10 assert(p!=null); *p = 10; assert(0

More information

기본자료형만으로이루어진인자를받아서함수를결과값으로반환하는고차함수 기본자료형과함수를인자와결과값에모두이용하는고차함수 다음절에서는여러가지예를통해서고차함수가어떤경우에유용한지를설명한다. 2 고차함수의 예??장에서대상체만바뀌고중간과정은동일한계산이반복될때함수를이용하면전체연산식을간 단

기본자료형만으로이루어진인자를받아서함수를결과값으로반환하는고차함수 기본자료형과함수를인자와결과값에모두이용하는고차함수 다음절에서는여러가지예를통해서고차함수가어떤경우에유용한지를설명한다. 2 고차함수의 예??장에서대상체만바뀌고중간과정은동일한계산이반복될때함수를이용하면전체연산식을간 단 EECS-101 전자계산입문 고차함수 박성우 2008년5월 29일 지금까지정수나부동소수와같은기본적인자료형의조합을인자로받고결과값으로반환하는 함수에대해서배웠다. 이번강의에서는함수자체를다른함수의인자로이용하거나결과값으로 이용하는 방법을 배운다. 1 고차함수의 의미 계산은무엇을어떻게처리하여결과값을얻는지설명하는것으로이루어진다. 여기서 무엇 과 결 과값 은계산의대상체로서정수나부동소수와같은기본자료형의조합으로표현하며,

More information

Microsoft PowerPoint - chap6 [호환 모드]

Microsoft PowerPoint - chap6 [호환 모드] 제 6 장프로세스 (Process) 숙대창병모 1 내용 프로세스시작 / 종료 명령중인수 / 환경변수 메모리배치 / 할당 비지역점프 숙대창병모 2 프로세스시작 / 종료 숙대창병모 3 Process Start Kernel exec system call user process Cstart-up routine call return int main(int argc,

More information

Chap04(Signals and Sessions).PDF

Chap04(Signals and Sessions).PDF Signals and Session Management 2002 2 Hyun-Ju Park (Signal)? Introduction (1) mechanism events : asynchronous events - interrupt signal from users : synchronous events - exceptions (accessing an illegal

More information

Week5

Week5 Week 05 Iterators, More Methods and Classes Hash, Regex, File I/O Joonhwan Lee human-computer interaction + design lab. Iterators Writing Methods Classes & Objects Hash File I/O Quiz 4 1. Iterators Array

More information

Homework 3 SNU , 2011 가을이광근 Program Due: 10/10, 24:00 Essay Due: 10/12, 15:30 이번숙제의목적은 : 수업시간에살펴본, 상식적인명령형언어의정확한정의를이해하고그실행기를구현해보기. 상식적인수준에서디자인

Homework 3 SNU , 2011 가을이광근 Program Due: 10/10, 24:00 Essay Due: 10/12, 15:30 이번숙제의목적은 : 수업시간에살펴본, 상식적인명령형언어의정확한정의를이해하고그실행기를구현해보기. 상식적인수준에서디자인 Homework 3 SNU 4190.310, 2011 가을이광근 Program Due: 10/10, 24:00 Essay Due: 10/12, 15:30 이번숙제의목적은 : 수업시간에살펴본, 상식적인명령형언어의정확한정의를이해하고그실행기를구현해보기. 상식적인수준에서디자인된명령형언어의대표격인 C언어의역사와, 컴퓨터실행 ( 기계적인계산 ) 과상위논리의관계, 제대로정의된언어의쓰임새등에대한이야기를읽고느낀바를글로쓰기.

More information

Application TI-89 / Voyage TM 200 PLT application. application, application. APPLICATIONS :, N. 1. O application. 2. application : D C application,. a

Application TI-89 / Voyage TM 200 PLT application. application, application. APPLICATIONS :, N. 1. O application. 2. application : D C application,. a Custom TI-89 / Voyage TM 200 PLT custom. custom custom. Custom : CustmOn CustmOff custom. Custom, Toolbar. Custom., Home Toolbar, 2 ¾ custom. 2 ¾ Home Toolbar Custom, custom. Tip: Custom. Custom : custom..

More information

확률 및 분포

확률 및 분포 확률및분포 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 확률및분포 1 / 15 학습내용 조건부확률막대그래프히스토그램선그래프산점도참고 박창이 ( 서울시립대학교통계학과 ) 확률및분포 2 / 15 조건부확률 I 첫째가딸일때두아이모두딸일확률 (1/2) 과둘중의하나가딸일때둘다딸일확률 (1/3) 에대한모의실험 >>> from collections import

More information

Microsoft PowerPoint - 기계공학실험1-1MATLAB_개요2D.pptx

Microsoft PowerPoint - 기계공학실험1-1MATLAB_개요2D.pptx 1. MATLAB 개요와 활용 기계공학실험 I 2013년 2학기 MATLAB 시작하기 이장의내용 MATLAB의여러창(window)들의 특성과 목적 기술 스칼라의 산술연산 및 기본 수학함수의 사용. 스칼라 변수들(할당 연산자)의 정의 및 변수들의 사용 방법 스크립트(script) 파일에 대한 소개와 간단한 MATLAB 프로그램의 작성, 저장 및 실행 MATLAB의특징

More information

[ 융합과학 ] 과학고 R&E 결과보고서 뇌파를이용한곤충제어 연구기간 : ~ 연구책임자 : 최홍수 ( 대구경북과학기술원 ) 지도교사 : 박경희 ( 부산일과학고 ) 참여학생 : 김남호 ( 부산일과학고 ) 안진웅 ( 부산일과학고 )

[ 융합과학 ] 과학고 R&E 결과보고서 뇌파를이용한곤충제어 연구기간 : ~ 연구책임자 : 최홍수 ( 대구경북과학기술원 ) 지도교사 : 박경희 ( 부산일과학고 ) 참여학생 : 김남호 ( 부산일과학고 ) 안진웅 ( 부산일과학고 ) [ 융합과학 ] 과학고 R&E 결과보고서 뇌파를이용한곤충제어 연구기간 : 2013. 3. 1 ~ 2014. 2. 28 연구책임자 : 최홍수 ( 대구경북과학기술원 ) 지도교사 : 박경희 ( 부산일과학고 ) 참여학생 : 김남호 ( 부산일과학고 ) 안진웅 ( 부산일과학고 ) 장은영 ( 부산일과학고 ) 정우현 ( 부산일과학고 ) 조아현 ( 부산일과학고 ) 1 -

More information

T100MD+

T100MD+ User s Manual 100% ) ( x b a a + 1 RX+ TX+ DTR GND TX+ RX+ DTR GND RX+ TX+ DTR GND DSR RX+ TX+ DTR GND DSR [ DCE TYPE ] [ DCE TYPE ] RS232 Format Baud 1 T100MD+

More information

Observational Determinism for Concurrent Program Security

Observational Determinism for  Concurrent Program Security 웹응용프로그램보안취약성 분석기구현 소프트웨어무결점센터 Workshop 2010. 8. 25 한국항공대학교, 안준선 1 소개 관련연구 Outline Input Validation Vulnerability 연구내용 Abstract Domain for Input Validation Implementation of Vulnerability Analyzer 기존연구

More information

歯표지.PDF

歯표지.PDF GLOFA MASTERK !!!! 8 4 4 4 4 4!! 8 4 8 8 8 8 4 4 1 1 1 1 1 2 ± 1 1 3 2 + < < ± 2 1 2 DIN BS ( C) (µv) K NiCrNi NiCrNiAI 2000~12000 5891~48828 J PeCuNi 2000~8000 7890~45498 E NiCrCuNi 1500~6000 7297~45085

More information

12-file.key

12-file.key 11 (String).. java.lang.stringbuffer. s String s = "abcd"; s = s + "e"; a b c d e a b c d e ,., "910359,, " "910359" " " " " (token) (token),, (delimiter). java.util.stringtokenizer String s = "910359,,

More information

Microsoft PowerPoint - a10.ppt [호환 모드]

Microsoft PowerPoint - a10.ppt [호환 모드] Structure Chapter 10: Structures t and Macros Structure 관련된변수들의그룹으로이루어진자료구조 template, pattern field structure를구성하는변수 (cf) C언어의 struct 프로그램의 structure 접근 entire structure 또는 individual fields Structure는

More information

Javascript.pages

Javascript.pages JQuery jquery part1 JavaScript : e-mail:leseraphina@naver.com http://www.webhard.co.kr I.? 2 ......,,. : : html5 ; ; .

More information

Homework 2 SNU , Fall 2015 Kwangkeun Yi due: 9/30, 24:00 Exercise 1 (10pts) k- 친수 일반적으로 k 진수 (k > 1) 는다음과같이표현한다. d 0 d n 여기서 d i {0,, k 1}. 그리

Homework 2 SNU , Fall 2015 Kwangkeun Yi due: 9/30, 24:00 Exercise 1 (10pts) k- 친수 일반적으로 k 진수 (k > 1) 는다음과같이표현한다. d 0 d n 여기서 d i {0,, k 1}. 그리 Homework 2 SNU 4190.310, Fall 2015 Kwangkeun Yi due: 9/30, 24:00 Exercise 1 (10pts) k- 친수 일반적으로 k 진수 (k > 1) 는다음과같이표현한다. d 0 d n 여기서 d i {0,, k 1}. 그리고 d 0 d n 은크기가 d 0 k 0 + + d n k n 인정수를표현한다. 이것을살짝확장해서

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0. 차례 SNU 4190.210 프로그래밍원리 (Principles of Programming) Part II Prof. Kwangkeun Yi 다음 데이타구현하기 (data implementation) 새로운타입의데이타 / 값구현하기 기억하는가 : 타입들 (types) τ ::= ι primitive type τ τ pair(product) type τ + τ

More information

NoSQL

NoSQL MongoDB Daum Communications NoSQL Using Java Java VM, GC Low Scalability Using C Write speed Auto Sharding High Scalability Using Erlang Read/Update MapReduce R/U MR Cassandra Good Very Good MongoDB Good

More information

C프로-3장c03逞풚

C프로-3장c03逞풚 C h a p t e r 03 C++ 3 1 9 4 3 break continue 2 110 if if else if else switch 1 if if if 3 1 1 if 2 2 3 if if 1 2 111 01 #include 02 using namespace std; 03 void main( ) 04 { 05 int x; 06 07

More information

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0. 프로그래밍 원리 (Principles of Programming) Part II Prof. Kwangkeun Yi 차례 1 데이타구현하기 (data implementation) 2 데이터속구현감추기 (data abstraction) 3 여러구현동시지원하기 (multiple implemenations) 4 각계층별로속구현감추기 (data abstraction

More information

특허청구의 범위 청구항 1 앵커(20)를 이용한 옹벽 시공에 사용되는 옹벽패널에 있어서, 단위패널형태의 판 형태로 구성되며, 내부 중앙부가 후방 하부를 향해 기울어지도록 돌출 형성되어, 전면이 오 목하게 들어가고 후면이 돌출된 결속부(11)를 형성하되, 이 결속부(11

특허청구의 범위 청구항 1 앵커(20)를 이용한 옹벽 시공에 사용되는 옹벽패널에 있어서, 단위패널형태의 판 형태로 구성되며, 내부 중앙부가 후방 하부를 향해 기울어지도록 돌출 형성되어, 전면이 오 목하게 들어가고 후면이 돌출된 결속부(11)를 형성하되, 이 결속부(11 (51) Int. Cl. (19) 대한민국특허청(KR) (12) 등록특허공보(B1) E02D 29/02 (2006.01) E02D 17/20 (2006.01) E02B 3/14 (2006.01) (21) 출원번호 10-2010-0089517 (22) 출원일자 2010년09월13일 심사청구일자 (56) 선행기술조사문헌 JP2006037700 A* KR100920461

More information

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4 Introduction to software design 2012-1 Final 2012.06.13 16:00-18:00 Student ID: Name: - 1 - 0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x

More information

歯PLSQL10.PDF

歯PLSQL10.PDF 10 - SQL*Pl u s Pl / SQL - SQL*P lus 10-1 1 0.1 PL/ SQL SQL*Pl u s. SQL*P lus 10-2 1 0.2 S QL* Pl u s PL/ S QL SQL*Pl u s, Pl / SQL. - PL/ SQL (i npu t ), (s t or e ), (r un). - PL/ SQL s cr i pt,,. -

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

歯9장.PDF

歯9장.PDF 9 Hello!! C printf() scanf() getchar() putchar() gets() puts() fopen() fclose() fprintf() fscant() fgetc() fputs() fgets() gputs() fread() fwrite() fseek() ftell() I/O 2 (stream) C (text stream) : `/n'

More information

λx.x (λz.λx.x z) (λx.x)(λz.(λx.x)z) (λz.(λx.x) z) Call-by Name. Normal Order. (λz.z)

λx.x (λz.λx.x z) (λx.x)(λz.(λx.x)z) (λz.(λx.x) z) Call-by Name. Normal Order. (λz.z) λx.x (λz.λx.x z) (λx.x)(λz.(λx.x)z) (λz.(λx.x) z) Call-by Name. Normal Order. (λz.z) Simple Type System - - 1+malloc(), {x:=1,y:=2}+2,... (stuck) { } { } ADD σ,m e 1 n 1,M σ,m e 1 σ,m e 2 n 2,M + e 2 n

More information

5.스택(강의자료).key

5.스택(강의자료).key CHP 5: https://www.youtube.com/watch?v=ns-r91557ds ? (stack): (LIFO:Last-In First-Out):. D C B C B C B C B (element) C (top) B (bottom) (DT) : n element : create() ::=. is_empty(s) ::=. is_full(s) ::=.

More information

untitled

untitled Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.

More information

Microsoft PowerPoint - lecture2.ppt

Microsoft PowerPoint - lecture2.ppt Overview s & osg::referenced Class & osg::ref_ptr Template Class 개요 OSG OSG::Referenced Class OSG::ref_ptr Template Class 2008년여름박경신 2 스마트포인터 () 는 C++ class 이다. syntax 와 semantics 상일반포인터와같다. memory

More information

8장 문자열

8장 문자열 8 장문자열 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 8 장문자열 1 / 24 학습내용 문자열 (string) 훑기 (traversal) 부분추출 (slicing) print 함수불변성 (immutablity) 검색 (search) 세기 (count) Method in 연산자비교 박창이 ( 서울시립대학교통계학과 ) 8 장문자열 2 /

More information

3ÆÄÆ®-14

3ÆÄÆ®-14 chapter 14 HTTP >>> 535 Part 3 _ 1 L i Sting using System; using System.Net; using System.Text; class DownloadDataTest public static void Main (string[] argv) WebClient wc = new WebClient(); byte[] response

More information

90

90 89 3 차원공간질의를위한효율적인위상학적데이터모델의검증 Validation of Efficient Topological Data Model for 3D Spatial Queries Seokho Lee Jiyeong Lee 요약 키워드 Abstract Keywords 90 91 92 93 94 95 96 -- 3D Brep adjacency_ordering DECLARE

More information

컴파일러

컴파일러 YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

untitled

untitled 1 PLC 1.1 PLC 1.1.1 PLC PLC(Programmable Logic Controller),,, LSI,,. (NEMA: National Electrical Manufactrurers Association),,,,. 1.1.2 PLC PLC. FMS(Flexible Manufacturing System) PLC,. 1-1 PLC. - 5 - 1.2

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 파이썬을이용한빅데이터수집. 분석과시각화 Part 2. 데이터시각화 이원하 목 차 1 2 3 4 WordCloud 자연어처리 Matplotlib 그래프 Folium 지도시각화 Seabean - Heatmap 03 07 16 21 1 WORDCLOUD - 자연어처리 KoNLPy 형태소기반자연어처리 http://www.oracle.com/technetwork/java/javase/downloads/index.html

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

商用

商用 商用 %{ /* * line numbering 1 */ int lineno = 1 % \n { lineno++ ECHO ^.*$ printf("%d\t%s", lineno, yytext) $ lex ln1.l $ gcc -o ln1 lex.yy.c -ll day := (1461*y) div 4 + (153*m+2) div 5 + d if a then c :=

More information