프로그래밍 언어 처리

김민우·2023년 9월 9일
0

컴퓨터구조

목록 보기
8/8

어셈블리 언어

초기 프로그래밍에서 각 명령어에 대한 비트 조합을 외우지 않고 이해하기 쉬운 니모닉을 통해 프로그램을 작성하는 방법.

  • 주소에 이름(레이블)을 붙있을 수 있다.
  • 주석을 달 수 있다.
  • 이 방식이 발전함에 따라 부트(부트 스트랩)이라는 말이 생겨났다.

어셈블러

어셈블리 언어로 작성된 코드를 기계어 코드로 바꿔주는 프로그램.

  • 레이블이나 심볼의 값을 결정해 채워준다.
  • 덕분에, 코드에서 명령어 위치가 바뀌어도 문제가 되지 않는다.

고수준 언어

어셈블리 언어보다 더 높은 추상화 단계에서 작동하는 방식.

  • 컴파일러를 통해 기계어로 번역된다. 이 과정을 컴파일이라 한다.
  • 명시적으로 메모리를 선언할 필요 X
  • 코드가 복잡해지면 분기문의 GOTO 로 이뤄진 연결을 관리하기 매우 힘들다.
    • 레이블 번호를 10이나 100 정도 떨어뜨려 여유를 두는 방식도 있긴하나, 이는 항상 잘 통하는 것은 아니다.

구조적 프로그래밍

GOTO 와 레이블을 조합할 때 발생하는 스파게티 코드 문제를 해결하기 위해 개발된 방식

  • 초기 포트란, 베이직 언어는 비구조적 언어라 한다.
  • 명시적 분기(레이블 값)이 없다.
    • 덕분에, 제어 흐름이 깔끔하여 프로그램의 직관성이 높아진다.

어휘 분석

코드를 기호(문자)로 부터 단어와 같은 성격의 토큰으로 변환하는 과정.

  • 실용성을 위해 이름, 숫자, 연산자, 구분자 유무 등 다양한 유형으로 토큰을 구분할 필요가 있다.

상태 기계

상태로 이뤄진 집합과 한 상태에서 다른 상태로 전이되는 원인의 목록들로 이루어진 표.

  • ex)
    • 상태 1에서 숫자 -> 상태 3
    • 상태 1에서 e 또는 E -> 상태 5

이를 사용하면 아래와 같이 간단한 코드를 사용해 입력을 분류할 수 있다.

  • 다른 유형의 토큰에 대해서 각기 다른 완료 상태값을 부여하면 이 접근 방법을 쉽게 적용할 수 있다.

정규식

앞서 상태 기계에서 사용되는 테이블을 만드는 부가 비용을 없애기 위해 나온 언어를 지정하기 위한 새로운 언어.

  • 패턴 매칭에서 중추적 역할을 수행
  • 아래 규칙에 의존
  1. 왼쪽에서 오른쪽으로 처리
  2. .은 아무 글자든 한 글자와 매치될 수 있다.
  3. |은 이 기호의 왼쪽과 오른쪽 패턴 중 하나와 매치되면 된다.
  4. ()은 수학과 동일하게 정규식을 그룹으로 묶을 때 쓰인다.
  5. \을 통해 이러한 예약어들을 매치할 수 있다.

0개의 댓글