CS/프로그래밍 언어론 6

[프로그래밍 언어론] Lex

학교에서 들은 프로그래밍 언어론 강의 내용을 복습하면서 작성한 글입니다.April 12, 2024 12:56 PMScanner: Text의 어휘 패턴을 인식하는 프로그램token: 입력을 나눈 의미있는 단위Lex 구조%{ //정의절 #include int count = 0;%}//여기에 패턴 단순화를 위한 변수 선언 가능//예: DIGIT [0-9]//사용시 {[0-9]}+ 대신 {DIGIT}+ 가능%% //규칙절: 입력된 문자에서 매칭되는 패턴과 패턴이 나타났을 때 해당하는 동작 ([0-9])+ {count++;} \n ;%%//사용자 서브루틴절int main(){ yylex(); return 0;}int yywrap(){ return 1;} 규칙절 속 패턴(정규표현식)특정한 규칙을 가진 ..

[프로그래밍 언어론] Lexical and Syntax Analysis

학교에서 들은 프로그래밍 언어론 강의 내용을 복습하면서 작성한 글입니다.April 8, 2024 6:41 PM source code 분석lexical analysislexical analyzer : 소스분석(들어온 것이 무엇인지 알 수 있어야함)syntax analysis - 문법syntax analyzer(parser): 문법에 맞는지 분석 (BNF 로 표시)BNF 사용의 장점 → 간결한 구문 설명, parser 만들수 있음, 유지보수 간단컴파일러소스코드-lexical analyzer-syntax analyzer-중간코드Lexical(Low Level), Syntax(High Level) Analysis 분리 이유 → Simplicity: 합치면 매우 복잡 → Efficiency → Portabilit..

[프로그래밍 언어론] Semantics

학교에서 들은 프로그래밍 언어론 강의 내용을 복습하면서 작성한 글입니다.March 26, 2024 4:17 PMSemantics (의미)작성된 수식, 문장 혹은 프로그램의 의미 정하기프로그램이 어떻게 동작하는가!semantics가 필요한 이유프로그래머 - 문장의 의미 알아야함컴파일러 작성자: 언어 구조가 하는 것 정확히 알아야함correctness 증명컴파일러 생성기 가능디자이너는 모호함, 불일치 감지종류operational semantics : 시뮬레이션denotational semantics : 수학적 함수 기반axiomatic semantics : 공리(반드시 참이 되는 명제) 기반Operational Semantics프로그램의 동작, 실행 과정을 정의: 프로그래밍 문장 실행하여, 기계(regist..

[프로그래밍 언어론] Attribute Grammars (AGs)

학교에서 들은 프로그래밍 언어론 강의 내용을 복습하면서 작성한 글입니다.March 25, 2024 5:27 PM Static Semantics (정적의미론)프로그래밍 언어의 문법 구조만으로는 설명할 수 없는 언어의 의미를 정의하는 방법Context-free grammar는 모든 프로그래밍 언어의 문법을 설명할 수는 X문제문맥 자유이지만 번거로움비문맥 자유: 변수 사용전에 선언해야함context-free의 한계: 오류에 대한 처리, 변수 사용 전 선언 → AGs: 해결하기 위해 나옴Attribute GrammarsContext-free grammar에 확장: 파스 트리 노드에 의미 정보를 가지고 있음parsing하며 알 수 있는 간단한 semantic 정보 집어넣어놓음이점프로그램의 정적 의미 명세 가능컴파..

[프로그래밍 언어론] BNF/EBNF

학교에서 들은 프로그래밍 언어론 강의 내용을 복습하면서 작성한 글입니다.March 25, 2024 12:20 AM Syntax: 문장이 언어의 문법에 맞게 구성되었는가?Semantics: 문장의 의미가 타당한가?Terminologysentence: string of characterslanguage: set of sentenceslexeme(어휘): lowest level syntatic unit, 코드에 작성되고 사용되는 모든 문자열, 숫자, 기호 등sum, *,,,⬇️ lexical analyzer(어휘분석기)token: lexeme을 카테고리로 묶어서 항목별 분류해놓은 것identifier, equal sign,,,프로그래밍 언어 정의 방법recognizer(언어 인식기): 입력되는 문자열을 읽고,..

[프로그래밍 언어론] 개요

프로그래밍 언어 배우는 이유different construct 이용하는 capacity 늘리기언어 선택을 더욱 intelligently 하게새로운 언어 배우는 것이 쉽게Programming Domains(분야)과학 기술 응용: scientific applications(floating point) → FortranBusiness applications: 휴대폰 요금 고지서 → COBOLAI: 기호 이용 계산, linked list → LISPSystem programming: 효율성 중요(속도⬆️, 메모리⬇️) → CWeb Software: markup(HTML), scripting(PHP), general-purpose(Java)Language Evaluation Criteria(평가기준)Readabi..