到達目標
1.言語処理系(コンパイラ)の構成要素における役割,目的,機能を正確に理解し説明できる.
2.字句解析の原理とアルゴリズムを理解し,目的にあう字句解析器を生成および応用ができる.
3.構文解析の原理とアルゴリズムを理解し,目的にあう構文解析器を生成および応用ができる.
ルーブリック
| 理想的な到達レベルの目安 | 標準的な到達レベルの目安 | 未到達レベルの目安 |
1.言語処理系(主にコンパイラ)の構成要素における役割,目的,機能を正確に理解し説明できる. | コンパイラの構成要素における役割,目的,機能を正確に理解し詳しく説明できる. | コンパイラの構成要素における役割,目的,機能を理解し簡単に説明できる. | コンパイラの構成要素における役割,目的,機能を理解していない. |
2.字句解析の原理とアルゴリズムを理解し,目的にあう字句解析器を生成および応用ができる. | 字句解析の原理とアルゴリズムを理解し,目的にあう字句解析器を生成および応用ができる. | 字句解析の原理とアルゴリズムを理解し,目的にあう字句解析器を生成できる. | 字句解析の原理とアルゴリズムを理解し,目的にあう字句解析器を生成できない. |
3.構文解析の原理とアルゴリズムを理解し,目的にあう構文解析器を生成および応用ができる. | 構文解析の原理とアルゴリズムを理解し,目的にあう構文解析器を生成および応用ができる. | 構文解析の原理とアルゴリズムを理解し,目的にあう構文解析器を生成できる. | 構文解析の原理とアルゴリズムを理解し,目的にあう構文解析器を生成できない. |
学科の到達目標項目との関係
Ⅰ 人間性 1 Ⅰ 人間性
Ⅱ 実践性 2 Ⅱ 実践性
Ⅲ 国際性 3 Ⅲ 国際性
CP2 各系の工学的専門基盤知識,および実験・実習および演習・実技を通してその知識を社会実装に応用・実践できる力 5 CP2 各系の工学的専門基盤知識,および実験・実習および演習・実技を通してその知識を社会実装に応用・実践できる力
CP4 他者を理解・尊重し,協働できるコミュニケーション能力と人間力 7 CP4 他者を理解・尊重し,協働できるコミュニケーション能力と人間力
教育方法等
概要:
コンピュータシステムを構成するソフトウェアを一般にシステムソフトウェアと呼ぶ.本講義ではコンパイラに着目し,形式言語解析の基礎理論とアルゴリズムについて学び,演習課題も含めた内容に取り組むことになる.特に,コンパイラを構成するための理論・技術の中心となる字句解析と構文解析については,早くから自動生成の方法が確立されている.本講義では,このような自動生成ツール(Lex,Yacc)を利用したコンパイラの構成方法とそれらの背景にある理論について詳しく学習する.
授業の進め方・方法:
授業は座学を中心に進めるが,コンピュータを使用した演習も実施する.
授業内容は,到達目標に記載した3つ内容を中心に学習する.字句解析および構文解析の学習については,字句解析器生成ツール(Lex)と構文解析器生成ツール(Yacc)を使用した演習課題に取り組み,実践的な内容からコンパイラの構成方法と内部処理について理解する.
1.言語処理系(コンパイラ)の構成要素における役割,目的,機能の学習
2.字句解析の原理とアルゴリズムの学習,字句解析器生成ツール(Lex)の演習
3.構文解析の原理とアルゴリズムの学習,構文解析器生成ツール(Yacc)の演習
到達目標の確認として,単元テスト2回,定期試験1回,演習課題2回を実施し,これらを成績評価に含める.
指定された期日までに演習課題を提出しない場合や授業態度等に問題がある学生は,再試験を実施しない.
また,学年末に再評価を行う場合がある.再評価を行う場合は担当教員の指示に従うこと.
この科目は学修単位科目のため,事前・事後の自学自習課題として単元テストや演習課題を課す.
注意点:
受講に際して,教科書,ノート,筆記用具を持参すること.適宜,資料を配布することがある.また,演習課題の提出が必須となることから,プログラム作成に関連する知識,特に「データ構造とアルゴリズム」に関する内容を復習しておくこと.演習課題の提出物は期限までに提出すること.報告・連絡・相談もなく提出期限までに提出されない場合は,課題評価点を減点する.また,提出物の内容が不十分な場合には再提出を求める.なお,講義予定に変更がある場合には,講義中に連絡するので注意すること.
本講義は学修単位制を導入していることから,自学自習として講義および演習に取り組む前には,関連分野の予習復習をおこなうこと.
授業時間内に演習課題が完了しない場合は,コンピュータ実習室(情報処理実習室,情報システム実習室)を積極的に利用し,演習課題に取り組まなければならない.
授業の属性・履修上の区分
授業計画
|
|
週 |
授業内容 |
週ごとの到達目標 |
後期 |
3rdQ |
1週 |
言語処理系の歴史,言語処理系の構成要素,コンパイラの論理的構造 |
言語処理系の構成要素について理解し役割と意味を説明できる.また,コンパイラの論理的構造を理解し説明できる.
|
2週 |
形式言語の文法定義,BNF記法,構文図式,解析木 |
形式言語の文法を定義し文法定義に用いる表記方法(BNF,構文図式等)を理解できる.また,言語の構文から解析木を導出できる.
|
3週 |
形式言語の文法定義,BNF記法,構文図式,解析木 |
形式言語の文法を定義し文法定義に用いる表記方法(BNF,構文図式等)を理解できる.また,言語の構文から解析木を導出できる.
|
4週 |
字句解析,正規表現,状態遷移図,非決定性有限オートマトン(NFA),決定性有限オートマトン(DFA),NFAからDFAへの変換処理 |
字句解析の役割と仕組みを理解し説明できる.また,字句解析を行う正規表現から有限オートマトンを構成し,その状態数の最小化ができる.
|
5週 |
字句解析,正規表現,状態遷移図,非決定性有限オートマトン(NFA),決定性有限オートマトン(DFA),NFAからDFAへの変換処理 |
字句解析の役割と仕組みを理解し説明できる.また,字句解析を行う正規表現から有限オートマトンを構成し,その状態数の最小化ができる.
|
6週 |
字句解析,正規表現,状態遷移図,非決定性有限オートマトン(NFA),決定性有限オートマトン(DFA),NFAからDFAへの変換処理 |
字句解析の役割と仕組みを理解し説明できる.また,字句解析を行う正規表現から有限オートマトンを構成し,その状態数の最小化ができる.
|
7週 |
構文解析,上向き構文解析,下向き構文解析 |
構文解析の役割と仕組みを理解し説明できる.また,異なる構文解析手法について,それぞれの差異を理解し説明できる.
|
8週 |
構文解析,上向き構文解析,下向き構文解析 |
構文解析の役割と仕組みを理解し説明できる.また,異なる構文解析手法について,それぞれの差異を理解し説明できる.
|
4thQ |
9週 |
構文解析,上向き構文解析,下向き構文解析 |
構文解析の役割と仕組みを理解し説明できる.また,異なる構文解析手法について,それぞれの差異を理解し説明できる.
|
10週 |
構文解析,上向き構文解析,下向き構文解析 |
構文解析の役割と仕組みを理解し説明できる.また,異なる構文解析手法について,それぞれの差異を理解し説明できる.
|
11週 |
意味解析 |
字句解析と構文解析の処理手続きおよび意味解析を理解し,説明できる.
|
12週 |
解析演習(Lex) |
字句解析生成器ツール(Lex)を利用して目的にあう簡易的な字句解析器を生成できる.
|
13週 |
構文解析演習(Yacc) |
構文解析生成器ツール(Yacc)を利用して目的にあう簡易的な構文解析器を生成できる.
|
14週 |
字句解析演習と構文解析演習 |
字句解析生成器ツール(Lex)および構文解析生成器ツール(Yacc)を利用して目的にあう簡易的な字句解析器および構文解析器を生成できる.
|
15週 |
字句解析と構文解析の処理手続き,意味解析,言語処理系のまとめ |
字句解析と構文解析および意味解析といったフロントエンド処理およびバックエンド処理を含めた処理手続き全体を理解し,説明できる.
|
16週 |
定期試験 |
|
モデルコアカリキュラムの学習内容と到達目標
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
専門的能力 | 分野別の専門工学 | 情報系分野 | システムプログラム | 形式言語の概念について説明できる。 | 4 | 後1,後2,後3,後16 |
形式言語が制限の多さにしたがって分類されることを説明できる。 | 4 | 後1,後2,後3,後16 |
オートマトンの概念について説明できる。 | 4 | 後4,後5,後6,後7,後16 |
正規表現と有限オートマトンの関係を説明できる。 | 4 | 後4,後5,後6,後7,後16 |
コンパイラの役割と仕組みについて説明できる。 | 4 | 後1,後2,後3,後10,後11,後12,後13,後16 |
分野別の工学実験・実習能力 | 情報系分野【実験・実習能力】 | 情報系【実験・実習】 | 与えられた問題に対してそれを解決するためのソースプログラムを、標準的な開発ツールや開発環境を利用して記述できる。 | 4 | 後8,後9,後14,後15,後16 |
フローチャートなどを用いて、作成するプログラムの設計図を作成することができる。 | 4 | |
ソフトウェア生成に利用される標準的なツールや環境を使い、ソースプログラムをロードモジュールに変換して実行できる。 | 4 | 後8,後9,後14,後15,後16 |
問題を解決するために、与えられたアルゴリズムを用いてソースプログラムを記述し、得られた実行結果を確認できる。 | 4 | 後8,後9,後14,後15,後16 |
ソフトウェア開発の現場において標準的とされるツールを使い、生成したロードモジュールの動作を確認できる。 | 4 | 後8,後9,後14,後15,後16 |
要求仕様に従って標準的な手法によりプログラムを設計し、適切な実行結果を得ることができる。 | 3 | 後8,後9,後14,後15,後16 |
評価割合
| 定期試験 | 単元テスト | 演習課題 | 合計 |
総合評価割合 | 40 | 30 | 30 | 100 |
基礎的能力 | 20 | 30 | 0 | 50 |
専門的能力 | 20 | 0 | 30 | 50 |