어셈블리 언어
- 모든 비트조합(기계어에서 쓰이는)을 외우지 않고 조금은 이해하기 쉬운 니모닉을 통해 명령어 사용
- 주소에 이름, 레이블을 붙일수 있음
- 어셈블리 언어로 작성된 코드를 읽어서 기계어 코드를 생성해주는 프로그램을 어셈블러

코드를 어떻게 처리하는지
어휘 분석
- 코드를 기호(문자들)로부터 단어와 같은 성격의 토큰으로 변환하는 과정
정규식
- 부동소수점 수의 예시에서 가능한 값의 리스트 : (0.1, .1, 1e-1 등)
- 위의 값들을 다 토큰화 해야하는데 경우들을 다 나누는것보다 언어를 지정하기 위한 언어를 정의하는 것이 나음. → 정규식(패턴 매칭에서 중추적 역할)
- 입력을 토큰으로 처리할 수 있는 정규식 언어가 있고, 이로부터 자동으로 상태 테이블(어떠한 입력에 대한 완료 or 오류)을 만들어 내면 훨씬 유용함

단어에서 문장으로
- 그다음 단계로 토큰으로 이뤄진 시퀀스에 대한 패턴 매칭이 필요함
파스 트리
- 일반적으로 컴파일러나 인터프리터는 파스트리를 구성하는데, 파스트리는 언어 문법으로부터 만들어낸 DAG(Directed Acyclic Graph) 데이터구조
- 인터프리트냐 컴파일이냐의 선택은 언어 설계 자체보다는 구현에 의해 이뤄짐
인터프리터
- 인터프리터 언어는 실제 기계에 사용할 기계어를 만들어 내지 않고, 가상머신에서 실행됨
- 가상 머신은 소프트웨어로 작성된 기계

컴파일러

- 인터프리터와 거의 비슷하지만, 백엔드 실행코드 대신 코드 생성기가 들어감