- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
본 자료는 미리보기를 지원하지 않습니다.
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
-
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
-
80
-
81
-
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
-
103
-
104
-
105
-
106
-
107
-
108
-
109
-
110
-
111
-
112
-
113
-
114
-
115
-
116
-
117
-
118
-
119
-
120
-
121
-
122
-
123
-
124
-
125
목차
프로그래밍언어론 hw1~9.zip
3.61mb
------------------------------------------------------
hw-01 : HomeWork1.jpg
hw-02 : mycount.scm, myfind.scm, mylength.scm, mysum.scm, mytrans.scm
hw-03 : p_1.jpg, p_2.jpg
hw-04 : datatype.scm, test.scm
hw-05 : parse.scm, test.scm
hw-06 : tests(테스트프로그램폴더), env.scm, Let, misc.scm, parse.scm, run.scm, value.scm
hw-07 : tests(테스트프로그램폴더), env.scm, letrec, misc.scm, parse.scm, run.scm, value.scm
hw-08 : my(add, loop, multi, power), tests, env.scm implicit-refs, misc.scm, parse.scm, parse.scm.bak, run.scm, store.scm, value.scm
hw-09 : tests, check.scm, checked, env.scm, misc.scm, parse.scm, run.scm, tenv.scm, value.scm
3.61mb
------------------------------------------------------
hw-01 : HomeWork1.jpg
hw-02 : mycount.scm, myfind.scm, mylength.scm, mysum.scm, mytrans.scm
hw-03 : p_1.jpg, p_2.jpg
hw-04 : datatype.scm, test.scm
hw-05 : parse.scm, test.scm
hw-06 : tests(테스트프로그램폴더), env.scm, Let, misc.scm, parse.scm, run.scm, value.scm
hw-07 : tests(테스트프로그램폴더), env.scm, letrec, misc.scm, parse.scm, run.scm, value.scm
hw-08 : my(add, loop, multi, power), tests, env.scm implicit-refs, misc.scm, parse.scm, parse.scm.bak, run.scm, store.scm, value.scm
hw-09 : tests, check.scm, checked, env.scm, misc.scm, parse.scm, run.scm, tenv.scm, value.scm
본문내용
parse.scm의 내용 중
-----------------------------------------------------------------------
;; ======================================================================
(define-datatype program program?
(a-program (exp1 expression?)))
(define-datatype expression expression?
(const-exp (num number?))
(var-exp (var symbol?))
(zero?-exp (exp1 expression?))
(diff-exp (exp1 expression?) (exp2 expression?))
(mul-exp (exp1 expression?) (exp2 expression?))
(if-exp (exp1 expression?) (exp2 expression?) (exp3 expression?))
(let-exp (var symbol?) (exp1 expression?) (exp2 expression?))
(proc-exp (var symbol?) (ty type?) (body expression?))
(call-exp (rator expression?) (rand expression?))
(letrec-exp (p-result-type type?) (p-name symbol?)
(b-var symbol?) (b-var-type type?)
(p-body expression?) (letrec-body expression?)))
(define-datatype type type?
(int-type)
(bool-type)
(proc-type (arg-type type?) (result-type type?)))
;; ======================================================================
(define scanner-rules
'((whitespace (whitespace) skip)
(comment ("%" (arbno (not #\newline))) skip)
(identifier (letter (arbno (or letter digit "_" "?"))) symbol)
(number (digit (arbno digit)) number)
(number ("-" digit (arbno digit)) number)))
(define parser-rules
'((program (expression) a-program)
(expression (number) const-exp)
(expression (identifier) var-exp)
(expression ("zero?" "(" expression ")") zero?-exp)
(expression ("-" "(" expression "," expression ")") diff-exp)
(expression ("*" "(" expression "," expression ")") mul-exp)
(expression ("if" expression "then" expression "else" expression) if-exp)
(expression ("let" identifier "=" expression "in" expression) let-exp)
(expression ("proc" "(" identifier ":" type ")" expression) proc-exp)
(expression ("(" expression expression ")") call-exp)
(expression ("letrec" type identifier "(" identifier ":" type ")" "=" expression
"in" expression) letrec-exp)
(type ("int") int-type)
(type ("bool") bool-type)
(type ("(" type "->" type ")") proc-type)))
(define scan&parse
(sllgen:make-string-parser scanner-rules parser-rules))
;; ======================================================================
-----------------------------------------------------------------------
;; ======================================================================
(define-datatype program program?
(a-program (exp1 expression?)))
(define-datatype expression expression?
(const-exp (num number?))
(var-exp (var symbol?))
(zero?-exp (exp1 expression?))
(diff-exp (exp1 expression?) (exp2 expression?))
(mul-exp (exp1 expression?) (exp2 expression?))
(if-exp (exp1 expression?) (exp2 expression?) (exp3 expression?))
(let-exp (var symbol?) (exp1 expression?) (exp2 expression?))
(proc-exp (var symbol?) (ty type?) (body expression?))
(call-exp (rator expression?) (rand expression?))
(letrec-exp (p-result-type type?) (p-name symbol?)
(b-var symbol?) (b-var-type type?)
(p-body expression?) (letrec-body expression?)))
(define-datatype type type?
(int-type)
(bool-type)
(proc-type (arg-type type?) (result-type type?)))
;; ======================================================================
(define scanner-rules
'((whitespace (whitespace) skip)
(comment ("%" (arbno (not #\newline))) skip)
(identifier (letter (arbno (or letter digit "_" "?"))) symbol)
(number (digit (arbno digit)) number)
(number ("-" digit (arbno digit)) number)))
(define parser-rules
'((program (expression) a-program)
(expression (number) const-exp)
(expression (identifier) var-exp)
(expression ("zero?" "(" expression ")") zero?-exp)
(expression ("-" "(" expression "," expression ")") diff-exp)
(expression ("*" "(" expression "," expression ")") mul-exp)
(expression ("if" expression "then" expression "else" expression) if-exp)
(expression ("let" identifier "=" expression "in" expression) let-exp)
(expression ("proc" "(" identifier ":" type ")" expression) proc-exp)
(expression ("(" expression expression ")") call-exp)
(expression ("letrec" type identifier "(" identifier ":" type ")" "=" expression
"in" expression) letrec-exp)
(type ("int") int-type)
(type ("bool") bool-type)
(type ("(" type "->" type ")") proc-type)))
(define scan&parse
(sllgen:make-string-parser scanner-rules parser-rules))
;; ======================================================================
소개글