Variables (변수) 변수는 컴퓨터 메모리의 특정 위치를 가리키며, 그 안에 저장된 데이터를 참조하는 역할을 한다. 변수는 다음과 같은 6개의 속성들로 이루어져 있다.Name (이름): 변수의 이름으로, 이를 통해 변수에 접근할 수 있다.Address (주소): 변수가 저장된 메모리 위치의 주소.Value (값): 변수에 저장된 실제 데이터 값이다.Type (타입): 변수에 저장할 수 있는 데이터의 유형을 정의한다.Lifetime (생명주기): 변수의 생명주기는 변수의 생성부터 소멸까지의 기간을 나타낸다.Scope (범위): 변수에 접근할 수 있는 코드 영역을 의미한다. 변수가 선언된 위치에 따라 접근 가능한 범위가 달라진다. 변수의 binding 개념 binding이란 프로그램에서 어..
Bottom-up Parsing (상향식 구문 분석) 문장을 오른쪽에서부터 분석하여 규칙을 찾고, 이 규칙을 통해 문장 형태를 점차 줄여나간다. E → E + T | TT → T * F | FF → (E) | id 핸들(handle)은 위에서 설명한 Bottom-up Parsing에서 한 단계 축약할 수 있는 문장 부분을 말한다.다시 말해, 핸들은 축약 시점 문장에서 어떤 부분이 특정 생성 규칙의 우변에 해당하는지를 알려주는 역할을 한다. 핸들의 정의 정의 1 (핸들의 유도 방식): 문장을 유도할 때, 현재 문장 형태를 만들기 위해 오른쪽 유도에서 사용된 생성 규칙의 우변에 해당하는 부분을 핸들이라고 한다.예를 들어, S =>* αAw =>rm αβw에서, β는 오른쪽 유도를 통해 얻은 문장 γ ..
소스 코드 분석은 언어 구현 시스템에서 중요한 부분이다.이를 위해서 우리는 구문을 분석해야 한다. (어휘 분석과 구분 분석이 최적화 문제로 나뉘어져 있음)분석은 주로 BNF를 통해 이루어진다. 어휘 분석기 어휘 분석기는 문자열의 패턴을 매칭해준다. 일반적으로 파서가 다음 토큰을 필요로 할 때 호출되는 함수를 말한다. 여기서 파서는 프론트 엔드와 같은 역할을 한다.가장 중요한 역할인 lexeme은 소스 프로그램에서 함께 묶이는 부분 문자열을 식별하는 역할을 한다.렉심은 문자 패턴과 일치하며, 이는 토큰이라는 어휘 카테고리에 연관된다.예를 들어, sum은 렉심이며, 해당 토큰은 IDENT일 수 있다. result = oldsum - value / 100; 에 대한 토큰화 과정 Token Lexem..
이전 포스팅은 구문에 대해 알아봤었다. 이제 여러가지 의미론들에 대해 알아보자. 그 전에 이것들을 배우는 이유를 짚고가자면, 우리가 직접 컴파일러와 비슷하게 언어 문법 규칙들을 배우고직접 구현하기 위해서 어떤식으로 문법 규칙이 이루어지는지 공부하는 것이다.어차피 나중에 과제할 때 쓰일 논리들. Semantics (의미론)의미론: 프로그래밍 언어의 표현식, 문장, 프로그램 단위의 의미를 정의한다. 이것은 실행 규칙(execution rules)을 포함한다.의미론을 설명하기 위한 표준적인 기호나 형식이 존재하지 않으므로 널리 수용되는 하나의 기호 체계나 형식이 없다는 점을 강조한다. Operational Semantics (운영 의미론)운영 의미론: 프로그램의 의미를 실제 또는 시뮬레이션된 머..
구문과 의미론은 언어를 어떻게 정의해야 하는지에 대해 도움을 준다. 구문: 표현식, 문장, 프로그램 단위의 형태나 구조Java의 while 문 구문:while (bool_expr) statement의미론: 표현식, 문장, 프로그램 단위의 의미현재 불 표현식 (bool_expr)의 값이 참이면, 포함된 문장이 실행됨불 표현식 (bool_expr)이 거짓이면, 제어가 while 구조 다음의 문장으로 이동함 구문 구문을 묘사하는 데 사용되는 용어들은 다음과 같다. 문장 (sentence): 어떤 알파벳 상에서 문자들의 문자열을 의미한다. 즉, 특정 규칙을 따르는 기호의 나열.언어 (language): 문장의 집합. 이는 특정 규칙이나 문법을 따르는 여러 문장들이 모인 것을 의미한다.어휘소 (lexe..
각각의 응용 분야마다 사용되는 프로그래밍 언어가 다르다.이렇게 수많은 언어들이 있는데,여기서 우리가 프로그래밍 언어론을 배우는 이유는 새로운 언어를 학습하는 능력이 향상되고 적절한 언어를 선택하기 위한 배경 지식이 향상되기 때문에 공부한다. 프밍언은 대략적으로 Readability (가독성)프로그램이 얼마나 쉽게 읽히고 이해될 수 있는지에 대한 기준Writability (작성 용이성)언어가 프로그램을 얼마나 쉽게 작성할 수 있게 하는지에 대한 기준Reliability (신뢰성)주어진 모든 조건에서 언어가 명세에 맞춰 올바르게 동작하는지(명세 준수 여부)에 대한 기준Cost (비용)프로그래머 교육 비용, 프로그램 작성/컴파일/실행 비용을 포함한 총 비용에 대한 기준 이렇게 4가지 언어 평가 기준을 ..