언어/프로그래밍언어 5

재귀하강

좌순환 문제LL에서 top down parser는 사용될 수 없다. 따라서 해당 문법이 있으면 제거 후 사용해야 한다. // ex) A → A + B 의 경우 A + A + B ...로 좌순환 재귀 하강 파서 recursive descent parser 우선 EBNF에 대해 간단히 설명 → if [ else ] → ident {, ident} 여기서 []는 선택, {}는 반복의 의미를 갖는다. → {(+ | -) } → {(* | /) } → id | int_constant | () 이와 같은 산술 표현식에 대한 EBNF 문법은 어떤 결합성 규칙도 강요하지 않는다. 하지만 우리는 코드 생성 프로세스가 언어의 결합성 규칙을 준수하는 코드를 생성하는지 확인해야 한다. 이 때, 재귀 하강 구문 분석을 사용하여..

어휘 및 구문 분석

구문 분석에서 특히 자주 나올 terminal과 non terminal의 의미에 대해 알아보자 PL(프로그래밍 언어)에서 "terminal"과 "non-terminal"은 문법적인 요소를 나타내는 용어입니다. 이 용어들은 주로 형식 문법(또는 문법 규칙)에 관련이 있으며, 프로그래밍 언어의 구조를 정의하고 해석하는 데 사용됩니다. Terminal: 터미널은 언어에서 실제로 사용되는 단어나 기호를 나타냅니다. 이러한 터미널은 파싱 과정에서 더 이상 분해되거나 확장되지 않습니다. 예를 들어, 프로그래밍 언어의 터미널 요소로는 예약어(예: if, while, for), 식별자(변수나 함수의 이름), 숫자, 연산자(예: +, -, *, /) 등이 있습니다. 터미널은 문법적으로 더 이상 분해되지 않으므로 이러한 ..

구문의 의미론에 대한 과정

BNF와 문맥 context free grammar는 동등한 메타언어이다. ( 다른 언어를 기술하거나 설명하는 언어 ) 이는 프로그래밍 언어의 구문을 설명하는 데 적합하다. attribute grammar는 언어의 구문과 의미를 모두 설명할 수 있는 기술 형식 의미론적 설명의 세 가지 주요 방법 언어 Denotational Semantics (의미 표현론): Denotational semantics는 프로그램의 의미를 수학적인 객체나 구조로 표현하는 방법을 제공합니다. 이 접근 방식은 수학적인 함수나 수식을 사용하여 프로그램의 동작을 형식적으로 설명합니다. Denotational semantics에서, 각 프로그램 구성 요소는 어떻게 동작하며 어떤 결과를 생성하는지를 나타내는 함수나 의미론적 객체에 매핑..

구문 표현하기

Syntax: 표현식, 명령문, 프로그램 단위의 형식이나 구조 ex) while (bool_expr){} 여기서 while문, for문 등등 구문 자체를 의미 • Semantics: 표현식, 명령문, 프로그램 단위의 의미 bool 표현식(bool_expr)의 현재 값이 true인 경우 포함된 문이 실행됩니다. bool 표현식(bool_expr)이 false인 경우 제어는 while 구문 다음의 명령문으로 전달됩니다 구문과 의미론은 언어의 정의를 제공한다. 여기서 문장 sentence : 일부 알파벳에 대한 문자열의 집합. (명령문이라고도 한다.) 언어 language : 문장의 집합 어휘소 lexeme : 언어의 가장 낮은 수준의 구문 단위 ex) *, sum 토큰 token : lexeme의 범주에 있..

프로그래밍 언어를 사용하는 이유

우리가 프로그래밍 언어를 공부하는 이유는 말로 표현하기 복잡하고 추상적인 아이디어를 표현하는 능력이 향상된다. 언어에 따라 제어 구조, 데이터 구조 및 추상화의 종류에 따라 제한이 있다. 이에 따라서 우리가 구성할 수 있는 알고리즘도 제한되는데 다양한 프로그래밍 언어를 공부함으로서 이런 제한을 극복할 수 있다. 적절한 언어를 선택하는데 도움을 준다. 설계가 언어에 통합된 기능을 사용하는 것이 더 좋다. 복잡한 코드보다 더 우아하고, 덜 번거롭고, 더 안전하기 때문이다. 새로운 언어를 배우는 능력이 향상된다. 모국어의 문법을 더 잘 알수록 제2외국어를 배우는 것이 더 쉬워짐과 같다. 이 점에서 현직 프로그래머는 프로그래밍 언어의 어휘와 기본 개념을 알아야 프로그래밍 언어 설명 및 평가는 물론 언어 및 컴파..