情報とコンピュータ 静岡大学工学部 安藤和敏 2005.01.24.

Slides:



Advertisements
Similar presentations
プログラミング言語論 プログラミング言語の構 文 水野嘉明. 目次 1. プログラミング言語の構文 2. BNF 3. 文脈自由文法 4. 構文図式 2.
Advertisements

プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
情報処理基礎 A ・ B 第 5 回 プログラミング入門 操作の自動化を実現する仕組み. 2004/11/16 ・ 17 情報処理基礎 A ・ B 2 本日の内容 処理の自動化~プログラムの概念 ハードウェアとソフトウェア プログラミング言語 Excel における処理の自動化 入力支援の機能 分析ツール.
和田俊和 資料保存場所 /2/26 文法と言語 ー正規表現とオートマトンー 和田俊和 資料保存場所
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
自然言語処理:第3回 1.前回の確認 2.構文解析 3.格文法.
現在完了形 (present perfect tense)
コンパイラ 2011年10月17日
Note for How to Write an English Paper (2014 Second Semester)
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
「~です」は主語によって am is are を使い分けます。
言語体系とコンピュータ 第6回.
プログラミング基礎I(再) 山元進.
関係代名詞 目的格の関係代名詞.
中学3年 英語 主格の関係代名詞 (who, which).
一致の非対称の 極小理論的分析 小林 亜希子 島根大学 「言語と情報研究プロジェクト研究会:言語理論の動向を考える」 広島大学
関係代名詞 目的格の関係代名詞.
関係代名詞 Fruit Basket Turnover 関係代名詞は フルーツバスケットで導入 Anyone who has a catなど
実験 関数・記号付き文型パターンを用いた機械翻訳の試作と評価 石上真理子 水田理夫 徳久雅人 村上仁一 池原悟 (鳥取大) ◎評価方法1
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
プログラミング言語論 第4回 式の構文、式の評価
命令文.
1.自然言語処理システム 2.単語と形態素 3.文節と係り受け
英語特別講座 代名詞・前置詞・形容詞・助動詞 #1   
関係代名詞の導入 Program 7-2~8-1.
言語処理系(5) 金子敬一.
言語処理系(8) 金子敬一.
コンパイラ 2012年10月15日
言語プロセッサ2015 第10回目 〜資料番号 H28NoA〜
動詞の共起パターンを用いた 動作性名詞の述語項構造解析
あらかじめ決まっていること ・決めていること
自然言語処理及び実習 第11回 形態素解析.
スペイン語初級 第1課 PRIMER CURSO DE ESPAÑOL Lección primera 文法 Gramática.
プログラミング言語論 第3回 BNF記法について(演習付き)
東京工科大学 コンピュータサイエンス学部 亀田弘之
関係代名詞(接触節) 目的格の関係代名詞の省略.
情報とコンピュータ 静岡大学工学部 安藤和敏
程度を表す表現を身につけよう どのくらいなのか?
So・・・that~.
東京工科大学 コンピュータサイエンス学部 亀田弘之
~している:進行形.
平成20年10月5日(月) 東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
より詳しく、より効果的に 相手に伝えよう.
東京工科大学 コンピュータサイエンス学部 亀田弘之
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
情報とコンピュータ 静岡大学工学部 安藤和敏
3人称単数現在形 疑問詞を使った疑問文.
東京工科大学 コンピュータサイエンス学部 亀田弘之
より具体的に 相手に伝えよう2.
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
コンパイラ 2011年10月20日
情報とコンピュータ 静岡大学工学部 安藤和敏
東京工科大学 コンピュータサイエンス学部 亀田弘之
The difference between adjectives and adverbs
情報とコンピュータ 静岡大学工学部 安藤和敏
より具体的に 相手に伝えよう.
情報とコンピュータ 静岡大学工学部 安藤和敏
第7回 Q&A メール講座 Next Stage:翻訳力アップ自己トレ(1)
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
コンパイラ 2012年10月11日
情報とコンピュータ 静岡大学工学部 安藤和敏
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
プログラミング入門2 第5回 配列 変数宣言、初期化について
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
4.2 再帰下降解析 (1)再帰下降解析とは ■再帰下降解析(Recursive Descent Parsing)
Presentation transcript:

情報とコンピュータ 静岡大学工学部 安藤和敏 2005.01.24

10章 言語の翻訳 コンピュータにPascalを理解させる 構文生成規則 今日の話の内容は,情報処理技術者試験[基本情報]の出題範囲であるBNF (Backus Naur Form) と密接に関連する.

プログラムが実行されるまで Pascalプログラム アセンブリ言語のプログラム 機械語プログラム 電気回路による実行 Z := X + Y コンパイル COPY AX,X ADD AX,Y COPY CN1,AX COPY AX,CN1 COPY Z,AX アセンブリ言語のプログラム 0010110100100 0110101010001 0011001000100 1100100101101 0110110100001 機械語プログラム 電気回路による実行

コンピュータはPascalを理解できない Z := X + Y COPY AX,X ADD AX,Y COPY CN1,AX COPY AX,CN1 COPY Z,AX

Pascalからアセンブリ言語への翻訳 コンパイル = Pascal アセンブリ言語 翻訳 Z := X + Y COPY AX,X ADD AX,Y COPY CN1,AX COPY AX,CN1 COPY Z,AX Z := X + Y コンパイル = Pascal アセンブリ言語 翻訳

英文法を思い出してみる はじめに,英語の文が日本語の文にどのように翻訳されるかを考えてみよう. 以降の数ページで,英文法の復習をする.大体の雰囲気が分かればよい.(私の専門は英語ではないので,多少の誤りを含んでいるかも知れない.)

英語の基本5文型 英語の文(平叙文)は,以下の5つの型のどれかにあてはまる(んだそうです). E1: <文> <主語> <述語> E2: <文> <主語> <述語> <補語> E3: <文> <主語> <述語> <目的語> E4: <文> <主語> <述語> <目的語> <補語> E5: <文> <主語> <述語> <目的語> <目的語>

主語 (例: Ando) (例: a crazy guy) (例: the old woman who I met yesterday) <主語> <名詞> (例: Ando) E7: <主語> <冠詞> <形容詞> <名詞> (例: a crazy guy) E8: <主語> <冠詞> <形容詞> <名詞> <形容詞節> (例: the old woman who I met yesterday)

目的語(主語と同じ) E9: <目的語> <名詞> E10: <目的語> <冠詞> <形容詞> <名詞> E11: <目的語> <冠詞> <形容詞> <名詞> <形容詞節>

述語 (例:sings) (例:sings well) (例:can sing well) E12: <述語> <動詞> E13: <述語> <動詞> <副詞> (例:sings well) E14: <述語> <助動詞> <動詞> <副詞> (例:can sing well)

冠詞 (不定冠詞) E15: <冠詞> a (または, an) E16: <冠詞> (定冠詞) the

名詞,動詞 (人称代名詞は格変化する場合もある) (主語,時制などによって変化) E17: <名詞> Ando, Japan, Shizuoka, ... computer, information, ... I (me), you, she (her), ... (人称代名詞は格変化する場合もある) E18: <動詞> play, speak, run, ... (主語,時制などによって変化)

形容詞,副詞 E19: <形容詞> old, beautiful, easy, .... E20: <副詞> well, gently, carefully, ...

文法的に正しい英文の作り方 E1 ~ E21 みたいなものは,英文の構文生成規則と呼ばれる. 文法的に正しい英文は,このような構文生成規則によって生成される文である. もちろん文法的には正しくても意味的には変な文も生成できる. 例) Mr. Ando is a girl.

文法的に正しい英文の作り方 導出 規則 E3: E6: E12: E9: E17: E18: E17: <文> <主語> <述語> <目的語> <主語> <述語> <目的語> E6: <主語> <名詞> <名詞> <述語> <目的語> E12: <述語> <動詞> <名詞> <動詞> <目的語> E9: <目的語> <名詞> <名詞> <動詞> <名詞> E17: <名詞> Ando Ando <動詞> E18: <名詞> <動詞> plays Ando plays <名詞> E17: <名詞> tennis Ando plays tennis

文法的に正しい英文の作り方 導出 規則 E3: E6: E12: E9: E17: E18: E17: <文>1 <主語>2 <述語>3 <目的語>4 <主語>2 <述語>3 <目的語>4 E6: <主語>2 <名詞>5 <名詞>5 <述語>3 <目的語>4 E12: <述語>3 <動詞>6 <名詞>5 <動詞>6 <目的語>4 E9: <目的語>4 <名詞>7 <名詞>5 <動詞>6 <名詞>7 E17: <名詞>5 Ando Ando <動詞>6 E18: <名詞>7 <動詞>6 plays Ando plays <名詞>7 E17: <名詞>7 tennis Ando plays tennis

Pascalの構文生成規則 ― Pascal の文法 ― ただし,文法規則は英語よりもずっと簡単である. 命令文だけである.したがって,時制もない. 動詞や名詞の変化がない. 英語は文法が正しくなくてもある程度は,理解してもらえるが,文法が正しくないPascalは理解してもらえない.

変数名(手続き名)の生成規則 変数名,手続き名(サブルーチン名),などは識別子(identifier)と呼ばれる. R1: <識別子> 英字で始まる英字と数字の並び R1: <i>j 英字で始まる英字と数字の並び

式 (expression) の生成規則(R2) 1つの変数は,式である. R2: <e>i <i>j e は expression (式)の略.

文 (statement) の生成規則 ― 代入文 (R3) ― <s>k <i>j := <e>i 代入文は,左辺が識別子で,右辺が式でなければならない. s は statement の略.

<i>2 := <e>3 <i>2 := <e>3 例題(X := Y の導出) 導出 規則 <s>1 R3: <s>1 <i>2 := <e>3 <i>2 := <e>3 R1: <i>2 X X := <e>3 R2: <e>3 <i>4 X := <i>4 R1: <i>4 Y X := Y

式の生成規則(R4,R5) 式+式は,式である. R4: <e>i (<e>j + <e>k) 式*式も,式である. R5: <e>i (<e>j * <e>k)

例題(Y := (XX + YY) の生成) 導出 規則 <s>1 R3: <s>1 <i>2 := <e>3 <i>2 := <e>3 R1: <i>2 Y Y := <e>3 R4: <e>3 (<e>4 + <e>5) Y := (<e>4 + <e>5) R2: <e>4 <i>6 Y := (<i>6 + <e>5 ) R1: <i>6 XX Y := (XX + <e>5 ) R2: <e>5 <i>7 Y := (XX + <i>7 ) R1: <i>7 YY Y := (XX + YY )

例題(SUM := ((X * C) + SUM) の生成) 導出 規則 <s>1 R3: <s>1 <i>2 := <e>3 <i>2 := <e>3 R1: <i>2 SUM <e>3 (<e>4 + <e>5) SUM := <e>3 R4: SUM := (<e>4+<e>5) R5: (<e>7 * <e>8) <e>4 SUM := ((<e>7*<e>8) +<e>5) R2: <e>7 <i>9 SUM := ((<i>9*<e>8)+<e>5) R1: <i>9 X SUM := ((X*<e>8)+<e>5) R2: <e>8 <i>10 SUM := ((X*<i>10)+<e>5) R1: <i>10 C SUM := ((X*C)+<e>5 ) R2: <e>5 <i>11 SUM := ((X* C)+<i>11 ) R1: <i>11 SUM SUM := ((X* C)+SUM )

文の生成 -*-> <s>1 <i>2 := <e>3 Y := <e>3 Y := (<e>4 + <e>5) Y := (<i>6 + <e>5) Y := (XX + <e>5 ) Y := (XX + <i>7 ) Y := (XX + YY ) Y := (XX + YY) が生成されたといって,以下のように表す. <s>1 -*-> Y := (XX + YY)

<i>1または<s>1からはじめて次の記号文字列を生成せよ (a) YXY (b) JACK (c) X := Y (d) X := (X*X) (e) YYY := (Y * (X + X)) (f) XX := ((X + XX) * Y) (g) X:= ((Y * Y) + (X * X))