Computer Science/프로그래밍 언어론

부 프로그램의 구현 정적구조 프로그램이 실행할 때부터 끝날 때까지 메모리 변동이 없다 포틀란 포틀란은 메모리에 할당이 적재시간에 이루어지면, 모든 변수들의 위치가 고정이다 부프로그램은 중첩 될 수 없고, 재귀 호출도 허용하지 않는다 관련 썰 정적구조는 확실히 안정성이 있다 나사에서도, C언어로 우주선을 쏠 때, 무조건 재귀 허용하지 않고, 동적 할당하지 않고 마치 포틀란 쓰듯이 안정적으로 보수적으로 사용했었다고 한다 단순하고 디버깅하기 쉽고, 오류도 적게 되는거지! 활성 레코드 지연 변수는 해당 주/부 프로그램에서 선언된 지역 변수를 의미한다 매개변수는 해당 부 프로그램의 매개변수이다 복귀주소는 부 프로그램의 실행이 종료되고 복귀해야 할 주소를 의미한다 함수 값은 부 프로그램이 함수인 경우 함수의 반환 ..
매크로 함수와 인라인 함수 일반 함수 사용 시 단점 호출과 반환으로 인한 메모리 할당 등 오버헤드가 발생 짧은 길이의 C 함수를 이용하는 것은 장점보다는 비효율적인 면이 많음 매크로 함수 함수 이용으로 인한 오버헤드가 발생하지 않음 매크로 함수의 정의 부분이 길면 프로그램의 크기가 커지게 되는 문제점이 있음 짧은 길이인 경우에 매크로 함수를 이용하고 긴 경우에는 일반적인 함수를 이용하는 것이 바람직 발생하는 문제 해결 방법은 괄호! 를 사용하라 #define substraction(x,y)((x)-(y)) 헷갈린다면, 매크로 함수는 식이 그대로 입력 된다. 생각하라 위의 문제도, 연산자 우선순위가 바로 적용되어서 발생한 문제이기 때문이다 C++의 인라인 함수 일반 함수처럼 정의하기 쉽고, 매크로 함수처럼..
유한 오토마타 어떤 알파벳 Σ로부터 만들어지는 문자열의 특별한 것들을 받아들이는 시스템의 수학적 모델로서, 그 시스템에서 변화할 수 있는 상태가 유한개이다. 컴퓨터의 여러 분야에서 널리 사용되고 있다. 특히 플립플롭(flip-flop)을 비롯한 여러 컴퓨터 관련 고안물들, 형식언어의 연구, 그리고 컴파일러 등에 유용하게 쓰인다 또, 컴파일러의 어휘 분석(lexical analysis) 또한 유한 오토마타의 대표적인 것이다. 상태 전이 함수의 형태에 따라 결정적 유한 오토마타 (Deterministic Finite Automata; DFA)와 비결정적 유한 오토마타(Nondeterministic Finite Automata; NFA)를 구분한다. 오토마타의 전이 함수는 유한 오토마타의 상태 전이를 행렬(m..
BNF 표현 방법 BNF (Backus-Naur Form)는 프로그래밍 언어의 형식적 정의(formal definition)을 위해 가장 널리 사용되는 방법입니다 이 표기법은 메타 기호(meta-symbol; 메타기호는 표현하려는 언어의 일부분이 아니라, 그 언어를 표현하려고 사용된 특수기호)로서 세 가지 기호를 사용합니다 논터미널기호는 로 묶어 표현 대체(replacement)는 ::= 사용 양자택일은 | 를 사용 예제 3.24 BNF로 표현하기 1 논 터미널 기호인 E,T,F는 각각 , , 로 나타난다. → 는 ::= 로 표시한다 P: ::= + | - | ::= * | / | ::= () | id 예제 3.25 BNF로 표현하기 2 첫 번째 기호가 영문 소문자로 시작하고, 두 번째 기호부터는 영문 ..
정규 문법 표현하는 방법 해당 글은 정규 문법의 연산 순서의 양줄이기 버전입니다 정규 문법을 가장 잘 표현 할 수 있는 방법에 대해 알아보자! 위의 정의에서 연산자의 우선 순위는 *(클리니 클로저) > •(접속) > +(합집합)이다. 사칙 연산과 동일하게 왼쪽 결합 법칙 이 적용 된다 예제. 다음 정규 표현의 연산 순서는? 앞서 말한, 연산자 우선 순위와 왼쪽 결합 법칙을 이용하면 위와 같은 연산 순서를 가지게 된다. 이렇게 보니, 사칙 연산과 동일하다 생각해도 될 듯하다 예제 3.20 정규표현에 의해 생성 되는 언어 0 + 1은 언어 {0 , 1 }을 나타낸다 (0 + 1) 0은 {00, 10}을 나타낸다 0*는 언어 { ε, 0, 00, 000, ⋯}를 나타낸다 (0 + 1)*는 언어 {ε, 0, 1..
정규 문법(regular grammar) 모든 규칙이 다음과 같은 형태를 가지는 문법을 말합니다. A -> aB A -> a A -> ε A와 B는 비터미널 심볼(nonterminal symbol) a는 터미널 심볼(terminal symbol) ε는 빈 문자열(empty string)을 나타냅니다. 정규 문법은 주로 언어의 구문 분석에 사용되며, 정규 표현식(regular expression)과 같은 형식 언어(formal language)의 기본적인 표현 방법 중 하나입니다. 비터미널 심볼(nonterminal symbol) 다른 비터미널 심볼 또는 터미널 심볼로 대체될 수 있습니다. 예를 들어 위의 정규 문법에서 A가 다른 비터미널 심볼이나 터미널 심볼로 대체될 수 있다는 의미입니다. Right-l..
IEEE 802 프로토콜 매체 접근 제어 (MAC: Media Access Control) 매체의 능력을 질서 있고, 효율적으로 사용할 수 있도록 하는 접근 제어 방식 상위 프로토콜 계층에서 MAC 서비스 데이터 단위(MSDU: MAC Service Data Unit) 형태로 데이터를 수신 LAN 송수신 매체에 대한 접근을 제어합니다. IEEE 802 MPDU 형식 MAC 헤더 MAC 제어: MAC 프로토콜의 동작에 필요한 모든 프로토콜 제어 정보를 포함 목적지 MAC 주소: MPDU의 목적지 물리 주소 발신지 MAC 주소: MPDU의 발신지 물리 주소 MAC 서비스 데이터 단위: 상위 계층에서 제공된 데이터 MAC 트레일러 프레임 검사 순서(FCS: Frame Check Sequence) 순환 중복 검..
프로그래밍 언어론 - 포괄 부프로그램 다양한 타입의 매개변수를 허용하는 부프로그램을 의미한다. Ada 예를 통한 이해 : 두 예가 거의 유사 → 이때 포괄 부프로그램을 사용 Ada generic이라는 예약어를 이용해서 포괄 부프로그램을 생성 generic type Element is private; procedure exchange(x, y: in out Element); procedure exchange (x, y: in out Element) is temp: Element; begin temp := x; x := y; y := temp; end exchange; integer, float, character 타입의 데이터를 교환하는 swap이라 불리는 3개의 부프로그램이 정의 procedure swa..
프로그래밍언어론 - 중복 부프로그램 같은 이름을 갖는 두 개 이상의 부프로그램들을 의미한다 단 모든 중복 부프로그램은 매개변수 내용이 달라야 한다 C++, Java, Ada 등에서 중복 부프로그램 기능을 지원 C언어에서는 허락하지 않아서 에러가 발생…! C++에서는 가능…! 주의 사항 : 중복 부프로그램이 매개변수까지 동일하면 안된다 부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
프로그래밍언어론 - 매개변수 전달 방식 값 전달 실 매개변수의 값을 형식 매개변수에 저장하고 형식 매개변수를 부프로그램의 지역 변수로 사용하는 방식이다 실 매개변수와 형식 매개변수는 별개의 변수이므로 형식 매개변수의 어떠한 변화도 실 매개변수에는 아무런 영향을 미치지 않는다 C와 Java, C++는 값 전달이 기본 방식, Ada의 in 매개변수가 값 전달 방식이다. in 매개 변수를 이용해서 값 전달을 보여주는 Ada의 예 Ada in 매개변수의 특이점은 값을 배정 할 수 없다는 점이다. with TEXT_IO; use TEXT_IO; procedure parameter is package INT_IO is new TEXT_IO.INTEGER_IO (integer); use INT_IO; a, b: in..
berom
'Computer Science/프로그래밍 언어론' 카테고리의 글 목록