일지

인터프리터...26

niamdank 2020. 12. 14. 11:36

전자 계산기 프로그램

재귀적 하향 구문 분석 루틴을 이용해 전자 계산기를 만든다. 적용할 기능은 다음과 같다.

  • 변수는 a~z, 26개
  • 정수만 지원
  • 연산 및 대입 처리
  • 연산자 () + - * / 지원
  • 사칙 연산 법칙 적용
  • ? 로 출력
  • 공백 상태에서 엔터 시 종료

 

MiniCalculator.h

#pragma once
#include <iostream>

#pragma region 토큰 설정
enum class TokenKind : char
{
    LeftParenthesis = '(', RightParenthesis = ')',
    Plus = '+', Minus = '-', Multiply = '*', Divide = '/',
    Assign = '=',

    Print = 1,

    VariableName, Int,

    EndOfToken,
    Others,
};

struct Token
{
    Token()
        :tokenKind(TokenKind::Others), intValue(0) {}
    Token(TokenKind tokenKind, int intValue = 0)
        :tokenKind(tokenKind), intValue(intValue) {}

    TokenKind tokenKind;
    int intValue;
};
#pragma endregion