システムソフトウェア

科目基礎情報

学校 苫小牧工業高等専門学校 開講年度 令和07年度 (2025年度)
授業科目 システムソフトウェア
科目番号 0028 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 学修単位: 2
開設学科 創造工学科(情報科学・工学系共通科目) 対象学年 5
開設期 前期 週時間数 2
教科書/教材 教科書:大川知・鈴木大郎 著『コンパイラ 言語処理系の基礎からyacc/lexまで』近代科学社 (2008).参考図書:中田育男 著『コンパイラ 作りながら学ぶ』オーム社 (2017),富田悦次・横森貴 著 『オートマトン・言語理論』森北出版,第2版 (2013),M. S. Lam・R. Sethi・J. D. Ullman,・A. V. Aho 著『Compilers: Principles, Techniques, and Tools.』 Addison-Wesley, 2nd edition (2006)
担当教員 大川 創

到達目標

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)の演習
 到達目標の確認として,達成度評価試験1回,定期試験1回,演習3回および課題を課し,これらを成績評価に含める.
 原則として再試験を実施しないが,指定された期日までに演習課題を提出し,かつ授業態度等に問題がない学生に対しては,再試験を実施することがある.再試験は,成績の全体を上書きする.再試験を受験した場合,評価全体の上限を60点とする.
 また,学年末に再評価を行う場合がある.再評価を行う場合は担当教員の指示に従うこと.
注意点:
 受講に際して,教科書,ノート,筆記用具を持参すること.適宜,資料を配布することがある.科目「情報数学」の内容全般および科目「ソフトウェアデザイン演習」のスタックや木構造に関する内容を復習しておくとよい.演習課題の提出物は期限までに提出すること.報告・連絡・相談もなく提出期限までに提出されない場合は,課題評価点を減点する.また,提出物の内容が不十分な場合には再提出を求める.なお,講義予定に変更がある場合には,講義中に連絡するので注意すること.
 本講義は学修単位制を導入していることから,自学自習として講義中に課す課題に取り組むこと.また,講義および演習に取り組む前には,関連分野の予習復習をおこなうこと.
 授業時間内に演習課題が完了しない場合は,コンピュータ実習室(第1ICT実習室,第2ICT実習室)を利用して演習課題に取り組むことができる.

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 言語処理系の歴史,言語処理系の構成要素,コンパイラの論理的構造 言語処理系の構成要素について理解し役割と意味を説明できる.また,コンパイラの論理的構造を理解し説明できる.
2週 (復習) 形式言語,オートマトン 形式言語の文法を定義できる.形式言語を文法の型にしたがって分類できる.与えられた言語を受理するオートマトンを構成できる.
3週 (復習) 形式言語,オートマトン 形式言語の文法を定義できる.形式言語を文法の型にしたがって分類できる.与えられた言語を受理するオートマトンを構成できる.
4週 字句解析 字句解析の役割と仕組みを理解し説明できる.正規表現から有限オートマトンを構成できる.
5週 構文解析 構文解析の役割と仕組みを理解し説明できる.文法のあいまい性を理解し説明できる.LL(1)文法およびLR(1)文法の構文解析を計算できる.
6週 構文解析 構文解析の役割と仕組みを理解し説明できる.文法のあいまい性を理解し説明できる.LL(1)文法およびLR(1)文法の構文解析を計算できる.
7週 構文解析 構文解析の役割と仕組みを理解し説明できる.文法のあいまい性を理解し説明できる.LL(1)文法およびLR(1)文法の構文解析を計算できる.
8週 達成度評価試験 字句解析および構文解析を計算できる.
2ndQ
9週 意味解析 意味解析の役割と仕組みを理解し説明できる.翻訳スキームにしたがって属性付き構文解析木を計算できる.
10週 意味解析 意味解析の役割と仕組みを理解し説明できる.翻訳スキームにしたがって属性付き構文解析木を計算できる.
11週 中間コード生成 中間コード生成の役割を理解し説明できる.構文解析木から,抽象構文木,逆ポーランド記法および3番地コードを生成できる.
12週 目的コード生成 目的コード生成の役割を理解し説明できる.重み付き抽象構文木から目的コードを生成できる.
13週 字句解析演習(lex) 字句解析生成器ツール(lex)を利用して目的にあう簡易的な字句解析器を生成できる.
14週 構文解析演習(yacc) 構文解析生成器ツール(yacc)を利用して目的にあう簡易的な構文解析器を生成できる.
15週 字句解析演習と構文解析演習 字句解析生成器ツール(lex)および構文解析生成器ツール(yacc)を利用して目的にあう簡易的な字句解析器および構文解析器を生成できる.
16週 定期試験

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野システムプログラム形式言語の概念について説明できる。4前2,前3,前8,前16
形式言語が制限の多さにしたがって分類されることを説明できる。4前2,前3,前8,前16
オートマトンの概念について説明できる。4前2,前3,前8,前16
正規表現と有限オートマトンの関係を説明できる。4前4,前8,前16
コンパイラの役割と仕組みについて説明できる。4前1,前4,前5,前6,前7,前8,前9,前10,前11,前12,前13,前14,前15,前16
分野別の工学実験・実習能力情報系分野【実験・実習能力】情報系【実験・実習】与えられた問題に対してそれを解決するためのソースプログラムを、標準的な開発ツールや開発環境を利用して記述できる。4前13,前14,前15
フローチャートなどを用いて、作成するプログラムの設計図を作成することができる。4
ソフトウェア生成に利用される標準的なツールや環境を使い、ソースプログラムをロードモジュールに変換して実行できる。4前13,前14,前15
問題を解決するために、与えられたアルゴリズムを用いてソースプログラムを記述し、得られた実行結果を確認できる。4前13,前14,前15
ソフトウェア開発の現場において標準的とされるツールを使い、生成したロードモジュールの動作を確認できる。4前13,前14,前15
要求仕様に従って標準的な手法によりプログラムを設計し、適切な実行結果を得ることができる。3前13,前14,前15

評価割合

定期試験達成度試験課題演習合計
総合評価割合40302010100
基礎的能力201510550
専門的能力201510550