|
153 | 153 | # - 'Types and Programming Languages', by Thomas Pierce
|
154 | 154 | # - http://www.cs.yale.edu/homes/hudak/CS201S08/lambda.pdf
|
155 | 155 | # - https://en.wikipedia.org/wiki/Reduction_strategy_(lambda_calculus)
|
156 |
| -EXPRESSION_TO_NORMAL_FORM = ID #Y ( |
| 156 | +TERM_TO_NORMAL_FORM = ID #Y ( |
157 | 157 | # lambda f:
|
158 | 158 | # lambda current_index:
|
159 | 159 | # lambda term:
|
|
175 | 175 | (NONE)
|
176 | 176 | )
|
177 | 177 |
|
178 |
| -EXPRESSION_TO_STRING = Y ( |
| 178 | +TERM_TO_STRING = Y ( |
179 | 179 | lambda f:
|
180 | 180 | lambda expression:
|
181 | 181 | # Switch-case the expression type
|
|
199 | 199 | CHAR_IS_EOF (char)
|
200 | 200 | (lambda _: check_syntax (char)
|
201 | 201 | # TODO: reduce to normal form.
|
202 |
| - (lambda _: EXPRESSION_TO_STRING (EXPRESSION_TO_NORMAL_FORM (parser))) |
| 202 | + (lambda _: TERM_TO_STRING (TERM_TO_NORMAL_FORM (parser))) |
203 | 203 | (lambda _: '<invalid program>')
|
204 | 204 | (NONE))
|
205 | 205 | (lambda _: f (check_syntax (char)) (parser (char)))
|
@@ -237,14 +237,14 @@ class TestStringify(unittest.TestCase):
|
237 | 237 |
|
238 | 238 | def test_variable_to_string(self):
|
239 | 239 | self.assertEqual('10', VARIABLE_TO_STRING (ZERO))
|
240 |
| - self.assertEqual('110', EXPRESSION_TO_STRING (BUILD_VARIABLE (INCR (ZERO)))) |
| 240 | + self.assertEqual('110', TERM_TO_STRING (BUILD_VARIABLE (INCR (ZERO)))) |
241 | 241 |
|
242 | 242 | def test_abstraction_to_string(self):
|
243 |
| - self.assertEqual('0010', EXPRESSION_TO_STRING (BUILD_ABSTRACTION (BUILD_VARIABLE (ZERO)))) |
| 243 | + self.assertEqual('0010', TERM_TO_STRING (BUILD_ABSTRACTION (BUILD_VARIABLE (ZERO)))) |
244 | 244 |
|
245 | 245 | def test_application_to_string(self):
|
246 | 246 | self.assertEqual('0110110',
|
247 |
| - EXPRESSION_TO_STRING |
| 247 | + TERM_TO_STRING |
248 | 248 | (BUILD_APPLICATION (BUILD_VARIABLE (ZERO)) (BUILD_VARIABLE (INCR (ZERO)))))
|
249 | 249 |
|
250 | 250 | class TestSyntax(unittest.TestCase):
|
@@ -280,25 +280,25 @@ class TestParser(unittest.TestCase):
|
280 | 280 |
|
281 | 281 | def test_parse_variable(self):
|
282 | 282 | var = PARSER (CHAR_1) (CHAR_0)
|
283 |
| - self.assertEqual('10', EXPRESSION_TO_STRING (var)) |
| 283 | + self.assertEqual('10', TERM_TO_STRING (var)) |
284 | 284 | var = PARSER (CHAR_1) (CHAR_1) (CHAR_0)
|
285 |
| - self.assertEqual('110', EXPRESSION_TO_STRING (var)) |
| 285 | + self.assertEqual('110', TERM_TO_STRING (var)) |
286 | 286 |
|
287 | 287 | def test_parse_abstraction(self):
|
288 | 288 | var = PARSER (CHAR_0) (CHAR_0) (CHAR_1) (CHAR_0)
|
289 |
| - self.assertEqual('0010', EXPRESSION_TO_STRING (var)) |
| 289 | + self.assertEqual('0010', TERM_TO_STRING (var)) |
290 | 290 | var = PARSER (CHAR_0) (CHAR_0) (CHAR_0) (CHAR_0) (CHAR_1) (CHAR_0)
|
291 |
| - self.assertEqual('000010', EXPRESSION_TO_STRING (var)) |
| 291 | + self.assertEqual('000010', TERM_TO_STRING (var)) |
292 | 292 | var = PARSER (CHAR_0) (CHAR_0) (CHAR_0) (CHAR_0) (CHAR_0) (CHAR_0) (CHAR_1) (CHAR_1) (CHAR_0)
|
293 |
| - self.assertEqual('000000110', EXPRESSION_TO_STRING (var)) |
| 293 | + self.assertEqual('000000110', TERM_TO_STRING (var)) |
294 | 294 |
|
295 | 295 | def test_parse_application(self):
|
296 | 296 | var = PARSER (CHAR_0) (CHAR_1) (CHAR_1) (CHAR_0) (CHAR_1) (CHAR_0)
|
297 |
| - self.assertEqual('011010', EXPRESSION_TO_STRING (var)) |
| 297 | + self.assertEqual('011010', TERM_TO_STRING (var)) |
298 | 298 | var = PARSER (CHAR_0) (CHAR_1) (CHAR_0) (CHAR_0) (CHAR_1) (CHAR_1) (CHAR_0) (CHAR_1) (CHAR_0)
|
299 |
| - self.assertEqual('010011010', EXPRESSION_TO_STRING (var)) |
| 299 | + self.assertEqual('010011010', TERM_TO_STRING (var)) |
300 | 300 | var = PARSER (CHAR_0) (CHAR_1) (CHAR_0) (CHAR_1) (CHAR_1) (CHAR_1) (CHAR_0) (CHAR_1) (CHAR_0) (CHAR_1) (CHAR_0)
|
301 |
| - self.assertEqual('01011101010', EXPRESSION_TO_STRING (var)) |
| 301 | + self.assertEqual('01011101010', TERM_TO_STRING (var)) |
302 | 302 |
|
303 | 303 | def run_string(string):
|
304 | 304 | state = INTERPRETER
|
|
0 commit comments