工学部H23〜H26入学生
|
Faculty of Engineering (2011〜2014) students
|
|
|
|
|
E-mail: lect-compiler(at)cs.okayama-u.ac.jp (E-mail アドレスの (at) の部分は半角の@に置き換えて送信のこと)
|
E-mail: lect-compiler(at)cs.okayama-u.ac.jp (Please replace '(at)' part of above address with '@')
|
|
|
|
電子メールにて連絡先に事前にアポイントメントをとること
|
Students should make an appointment by e-mail in advance.
|
|
|
|
|
|
プログラミング言語における基礎的な概念および形式化について述べ, プログラミング言語処理系の概要と構成・実現法を講述する。 特に,プログラミング言語をアセンブリ言語/機械語に変換する 変換系(コンパイラ)における基本的な技術である字句解析, 構文解析,意味解析,コード生成を中心に講述する。
|
This course presents the fundamental concept and formalization in a programming language and lectures on the outline of a programming language processor and the method of its organization/realization. The lecture is given focusing on the lexical analysis, the syntactic analysis, the semantic analysis, and code generation which are the fundamental technology in the compiler that translates a programming language into an assembly language/machine language especially.
|
|
|
|
コンパイラの役割,基本的な概念,機能,理論的な背景,構造, 実現方式について学習する。
|
The objective of this course is understanding the role, the fundamental concepts, the function, the theoretical background, the structure and the realization of compilers.
|
|
|
|
1. コンパイラの基本的な機能と構成を理解する 2. 字句解析,構文解析を通した形式的な言語処理を理解する 3. コード生成を通してコンピュータアーキテクチャやオペレーティングシステムの理解を深める
|
The goals of this cource are: 1. Understand the basic functions and structure of the compiler, 2. Understand formal language processing through lexical analysis and syntactic analysis, and 3. Deepen one's understanding of computer architecture and operating system through code generation.
|
|
|
|
授業計画(連続する2時間(50分×2)の授業を1回としている) 1. 授業の概要とコンパイラの概要 プログラミング言語と言語処理系(変換系,通訳系),コンパイラの機能と構成 2. 字句解析(1) 字句解析の概要,正規表現,有限オートマトン 3. 字句解析(2) 字句解析プログラム,字句解析プログラムと自動生成 4. 文法 バッカス記法(BNF),構文図式,文法と言語の形式的定義 5. 構文解析(1) 構文解析の概要,構文解析法,再帰的下向き構文解析 6. 構文解析(2) LR構文解析 7. 構文解析(3) 構文解析プログラムの自動生成 8. 意味解析 意味解析の概要,名前空間とスコープ,型チェック,エラーリカバリ 9. コード生成(1) コード生成の概要,実行時環境,メモリ領域,関数フレーム 10. コード生成(2) 式,文,関数のコード生成 11. コード生成(3) C言語プログラムからのコード生成 12. 最適化 主要なコード最適化,制御フローグラフ,変数生存性解析 13. コンパイラに関するトピック 14. 復習(1) 演習問題 15. 復習(2) 全体の復習 期末試験
|
Course plan (Two consecutive hours [50 minutes × 2] count as a single class.) 1. Introduction of the course and outline of compiling process in compiler Programming language and its processor including translator and interpreter; T-diagram; Functions of compiler and its organization 2. Lexical analysis (part 1) Overview of lexical analysis; Regular expressions; Finite automaton 3. Lexical analysis (part 2) Program of lexical analysis; Generating of lexical analysis program 4: Grammar BNF - Backus Naur Form; Syntax diagram; Formal definition of grammar and language 5: Syntactic analysis (part 1) Overview of syntactic analysis; Typical parsing methods; Recursive descent parsing 6. Syntactic analysis (part 2) LR parsing 7. Syntactic analysis (part 3) Generating of parser 8. Semantic analysis Overview of semantic analysis; Name space and scope; Type checking; Error recovering 9. Code generation (part 1) Overview of code generation; Runtime environment; Memory area; Function frame 10. Code generation (part 2) Code generation for expressions, statements, and functions 11. Code generation (part 3) Code generation from C language programs 12. Optimization Typical optimizations; Control flow graph; Liveness analysis 13. Compiler topics 14. Review etc. (part 1) 15. Review etc. (part 2) Final examination
|
|
|
|
予習: 授業前に教科書をよく読んでおくこと 復習: 演習課題に取り組むこと
|
Students are required to read text book before attending the class. Students should finish the assignments and exercises each class.
|
|
|
|
|
|
|
|
|
|
|
|
講義形式の授業で主であるが,一部,PCを用いてプログラミングを伴う演習を行う。
|
This course is mainly lecture-style lecture. Some exercises involving programming with PC are included.
|
|
|
|
|
|
|
|
プロジェクターによるスライドと板書を併用する。
|
In this lecture, not only the slide by the projector but also writing to the blackboard is used.
|
|
|
|
|
備考
「コンパイラ ― 情報系教科書シリーズ ―」,湯淺太一著,オーム社
|
YUASA Taiichi, Compiler (in Japanese), Ohmsha, Ltd., 2014.
|
|
|
|
|
備考
1. 「コンパイラ ― 新コンピュータサイエンス講座 ―」,中田育男著,オーム社 2. 「コンピュータの構成と設計 ハードウエアとソフトウエアのインタフェース 第5版あるいは第6版」上巻および下巻,David A. Patterson, John L. Hennessy著,日経BP社
その他,授業時に適宜提示する
|
1. NAKATA Ikuo, Compiler (in Japanese), Ohmsha, Ltd., 1994. 2. David A. Patterson, John L. Hennessy (translated by M. Narita), Computer Organization and Design: The Hardware/Software Interface (in Japanese), Fifth Edition or Sixth Edition, Nikkei BP, Inc., 2014/2021.
Other references will be introduced as appropriate in the class.
|
|
|
|
出席状況,演習課題(20%),期末試験(80%)により総合的に評価する
|
The course grade is assessed based on the attendance situation, exercise assignments (20%), and final examination (80%).
|
|
|
|
|
C言語によるプログラミングの基本的な知識を有すること
|
Students are required to have knowledge about the basic programming in C language.
|
|
|
|
情報の教科に関する科目(科目区分: 情報システム)に該当
|
A subject in the field of "Information System"
|
|
|
|
|
(インフラ、産業化、イノベーション)強靱(レジリエント)なインフラ構築、包摂的かつ持続可能な産業化の促進及びイノベーションの推進を図る。 |
|
|
該当する
|
担当教員の1名は企業での研究開発経験あり
|
One of the faculty members in charge of this class has experience in research and development at a company.
|
|
|
情報工学実験C(ソフトウェア)の履修に必要な知識を講義するため, 履修することを強く勧める.
|
It is strongly recommended to take this class in order to give a lecture on the knowledge necessary for taking Information Technology Experiments C (Computer Software).
|
|
|
|
|
「学修成果(LCOs)」
|
関連するコア・コンピテンシー
|
評価の方法
|
コンピュータのハードウェアとソフトウェアに関する基礎知識を修得している。
|
情報処理システムに関する知識
|
演習課題と期末試験
|
情報処理技術の基盤となる基礎理論や人工知能、メディア処理などの高度情報処理に関する基礎知識を修得している。
|
情報処理基盤に関する知識
|
演習課題と期末試験
|
※コア・コンピテンシーに関する説明
|
|