PL λαβ

Lab 1.2a[최준혁]: 구문 분석기 본문

kos

Lab 1.2a[최준혁]: 구문 분석기

junhyeokk 2021. 4. 8. 21:09

오늘 강의 내용 중 이해하지 못한 부분이 많아 이것저것 찾아보며 따라해본 수준으로 만들어보았습니다. 주말동안 다시 공부해보고 수정하도록 하겠습니다.

class Token:
    def __init__(self, lexeme, location):
        self.lexeme = lexeme
        self.location = location

    def match(self, another_token):     # ?
        return self.lexeme == another_token.lexeme

class Input:
    def __init__(self, multiline_inputs):
        self.token_list = []
        for line in multiline_inputs:
            for token in line.split(' '):   # space로만 구분되는거 수정 필요
                self.token_list.append(token)
            self.token_list.append('\n')

        # self.current_line = 0
        self.current_index = 0

    def nextToken(self):
        if len(self.token_list) <= self.current_index:
            return None
            
        token = Token(self.token_list[self.current_index], self.current_index)
        return token
        

def parse(lexical_analyzer):    # Input class를 인자로
    # 순환 하강 구문분석
    # list를 return?
    LA = lexical_analyzer.nextToken()
    A(LA, lexical_analyzer)

def A(LA, lexical_analyzer):
    if LA == None:
        return 0
    else:
        L(LA, lexical_analyzer)
        A(LA, lexical_analyzer)

def L(LA, lexical_analyzer):
    next_token = lexical_analyzer.nextToken()
    S(next_token, lexical_analyzer)
    next_token.match('\n')

def S():
    if LA == '(':
        match('(')
        S()
        match(')')
        S()
    else:
        pass

'kos' 카테고리의 다른 글

Lab 1.2b[최준혁]: 구문 분석기  (0) 2021.04.12
Lab 1.2b[김예령]: 구문 분석기  (0) 2021.04.12
Lab 1.2a[박인철]: 구문 분석기  (0) 2021.04.08
Lab 1.2a[김예령]: 구문 분석기  (0) 2021.04.08
Lab 1.2: 구문 분석기  (0) 2021.04.08
Comments