3-1 학기/Programming Languages6 [프로그래밍언어] Ch 10 Implementing Subprograms subprogram 반환값의 의미Out mode 및 Inout mode 매개변수는 해당 값이 반환되어야 한다.stack-dynamic local variables의 할당 해제실행 상태 복훤caller에게 제어권 반환 Implementing “Simple” Subprograms1) Call Semanticscaller의 실행 상태 저장매개변수 전달 return address를 caller에게 전달called에게 제어권 이전2) Return Semantics만약 pass-by-value-result 또는 out mode parameters가 사용되는 경우, 해당 파라미터의 현재 값을 해당하는 실제 파라미터로 이동한다. 함수인 경우 함수 값을 caller가 얻을 수 있는 곳으로 이동한다.caller의 실행.. 2024. 6. 1. [프로그래밍언어] Ch9 Subprograms Subprograms각 subprogram에는 단일 진입점(single entry point)이 있다.subprogram 이 호출되면 호출 프로그램은 중단(suspended)된다.호출된 subprogram 의 실행이 종료되면 항상 호출자에게 제어권이 반환된다. ☑️ 매개변수 대응 1. positional binding: 실제 매개변수와 형식 매개변수의 바인딩은 위치에 따라 결정됨을 의미한다. ABC (x , y)ABC (int a, int b)위의 코드를 예시로 들자면 x는 a로 가고, y는 b로 감을 의미한다.C, C++, Java, Python 모두 지원 가능하다. 특징으로는 안전하고 효과적이라는 것이다. 2. keyword binding: 실제 매개변수를 바인딩할 형식 매개변수의 이름이 실제 매개변.. 2024. 5. 31. [프로그래밍언어] Ch6 Concepts of Programming Languages C언어의 자료형 참고로 모든 배열은 구조체로 변환이 가능하다. 단, 구조체는 배열로 변환이 불가능하다. Java의 자료형 Java는 크게 기본 타입과 레퍼런스 타입으로 나뉘는 것을 볼 수 있다. Dangling Pointer Problem Dangling pointer 문제란 이미 해제된 메모리를 가리키는 포인터를 의미한다. 이를 해결하기 위한 방법으로는 포인터를 NULL로 설정하는 것이 있다. 이렇게 하면 포인터가 더 이상 유효하지 않은 메모리 주소를 가리키지 않게 될 것이다. Array Type Static Array(정적 배열): 정적 배열은 컴파일 시간에 그 크기가 결정되며, 프로그램의 실행 동안 크기가 변경되지 않는다. Subscript binding(인덱스 결정)과 Storage binding.. 2024. 4. 16. [프로그래밍언어] Ch5 Names, Bindings, and Scopes Variables 변수는 memory cell의 추상화이다. 다음과 같은 속성으로 특징지을 수 있다. Name, Address, Value, Type, Lifetime, Scope 1. Name - 가독성에 도움이 된다. - 키워드는 특정 컨텍스트에서만 특수한 단어이다. 2. Address - 변수는 실행 중 다른 시간에 다른 주소를 가질 수 있다. - 두 개의 변수 이름을 사용하여 동일한 메모리 위치에 액세스할 수 있는 경우 별칭이라고 한다. - Aliases는 포인터, 참조 변수, C 및 C++ 결합을 통해 생성된다. - Aliases는 가독성이 좋지 않다.(프로그램 판독기는 별칭을 모두 기억해야 함) 3. Value - 변수가 연관된 위치의 내용 4. Type - 변수 값의 범위와 해당 유형의 값에.. 2024. 4. 14. [프로그래밍언어] Ch4 Lexical and Syntax Analysis Lexical Analysis와 Syntax Analysis를 구분하는 이유 • 단순성 - 덜 복잡한 접근 방식을 어휘 분석에 사용할 수 있다. 이를 분리하면 파서가 단순해진다. • 효율성 - 분리를 통해 어휘 분석기를 최적화할 수 있다. • 이식성 - 어휘 분석기의 일부는 다른 언어로 이식이 불가능할 수 있지만 파서는 항상 이식이 가능하다. Lexical Analysis 어휘 분석이란 소스 프로그램을 읽어 들여 token이라는 의미 있는 문법 단위(문법에서 터미널 심볼에 해당함)로 분리하는 것을 말한다. 즉, 보통 구문을 분석하면서 다음 토큰이 필요할 때마다 어휘 분석기를 호출하는 것이다. 이렇게 구분된 token들에 에러가 있는지 검사하고 또한 문자열에서 공백을 제거하기도 한다. Syntax anal.. 2024. 4. 13. [프로그래밍언어] Ch3 Describing Syntax and Semantics 개념 정리 Syntax: 컴퓨터 언어의 문법 또는 구조 Semantics: 그 문장의 의미 Context-Free Grammars: 문맥에 상관없이 어떤 Non-Terminal이 들어와도 그에 대한 production-rule이 존재하는 문법 Terminal Nonterminal 시작 심볼 S 문법 규칙들의 집합 BNF: 프로그래밍언어의 문법을 만들어놓은 규칙 Derivation: Nonterminal들을 적절한 production-rule을 사용하여 다른 표현으로 치환하는 것 위의 과정을 Nonterminal 심볼이 없을 떄까지 반복 생성 규칙 X -> Y1, Y2, ... Yn 적용 1. 좌측 유도(leftmost derivation) : 각 직접 유도 단계에서 가장 왼쪽 nonterminal을 선택.. 2024. 4. 13. 이전 1 다음