PL λαβ
Lab 1.1[최준혁]: Data 만들기 본문
union을 대체하기 위해 Python의 dictionary 타입을 사용하여 나머지 매서드와 함수들을 구현하였습니다.
from enum import Enum
class Type(Enum):
NIL = 0
INT = 1
PAIR = 2
SYMBOL = 3
class Data:
def __init__(self, type=Type.NIL, pair=(0, 0), symbol="", integer=0):
self.type = type
self.value = {"pair" : pair, "symbol" : symbol, "integer" : integer}
def car(self):
return self.value["pair"][0]
def cdr(self):
return self.value["pair"][1]
def __str__(self):
return f"Data type : {self.type}, Data value : {self.value}"
def nilp(d):
return d.type == Type.NIL
def cons(d1, d2):
return Data(Type.PAIR, pair=(d1, d2))
def mkint(n):
return Data(Type.INT, integer=n)
def make_sym(s):
return Data(Type.SYMBOL, symbol=s)
def print_expr(d):
if d.type == Type.NIL:
print("NIL")
elif d.type == Type.PAIR:
print(d.value["pair"])
elif d.type == Type.SYMBOL:
print(d.value["symbol"])
elif d.type == Type.INT:
print(d.value["integer"])
if __name__ == "__main__":
print(cons(10, 11))
print_expr(cons(1, 2))
print_expr(mkint(3))
print_expr(make_sym("Hello"))
'kos' 카테고리의 다른 글
Lab 1.2: 구문 분석기 (0) | 2021.04.08 |
---|---|
Lab 1.1[박인철]: Data 만들기 (0) | 2021.04.06 |
Lab 1.1[김예령]: Data 만들기 (0) | 2021.04.06 |
Lab 1.1: Data 만들기 (0) | 2021.04.06 |
Scheme 구현 팀블로그에 오신 것을 환영합니다. (0) | 2021.04.05 |
Comments