επιστημη さん 提供の VB.NETプログラムを丸裸にする!?

Slides:



Advertisements
Similar presentations
プログラミング論 第八回数字の計算,整数の入出力. 本日の内容 前回の課題(続き) 前回の課題(続き) 数字の計算をする 数字の計算をする – 加減乗除を行う – インクリメント演算子とデクリメン ト演算子.
Advertisements

2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
和田俊和 資料保存場所 /2/26 文法と言語 ー正規表現とオートマトンー 和田俊和 資料保存場所
Problem J: いにしえの数式 問題作成・解説: 北村 解答作成協力: 八森.
基本情報技術概論 I 演習(第5回) 埼玉大学 理工学研究科 堀山 貴史
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
コンパイラ 2011年10月17日
プログラミング言語としてのR 情報知能学科 白井 英俊.
わんくま同盟 東京勉強会 #2 10:30~10:40 わんくま同盟について、えムナウのプログラミングのページについて
数値計算及び実習 第3回 プログラミングの基礎(1).
プログラミング基礎I(再) 山元進.
文法と言語 ー文脈自由文法とLR構文解析2ー
コンパイラ 第9回 コード生成 ― スタックマシン ―
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
文法と言語 ー文脈自由文法とLL構文解析ー
プログラミング言語論 第4回 式の構文、式の評価
第6章 2重ループ&配列 2重ループと配列をやります.
言語処理系(5) 金子敬一.
プログラミング論 II 電卓,逆ポーランド記法電卓
  【事例演習6】  数式インタプリタ      解 説     “インタプリタの基本的な仕組み”.
情報基礎実習I (第1回) 木曜4・5限 担当:北川 晃.
コンパイラ 2012年10月15日
コンピュータと情報 第15回 Excelの使い方 その4.
スクリプト言語を用いたPHITSの連続実行
コンピュータと情報 第14回 Excelの使い方 その4.
東京工科大学 コンピュータサイエンス学部 亀田弘之
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
FlexとBison+アルファ -実習編-
アルゴリズムとプログラミング (Algorithms and Programming)
東京工科大学 コンピュータサイエンス学部 亀田弘之
WinUnit お気楽お手軽 UnitTest
WinUnit お気楽お手軽 UnitTest
コンパイラ 第13回 上昇型構文解析(1) 38号館4階N-411 内線5459
言語と文法 言語とは,ルールに従う記号列の無限集合である. 文法を与えることで言語が定義できる.
文法と言語 ー文脈自由文法とLR構文解析2ー
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
文法と言語 ー文脈自由文法とLL構文解析ー
コンパイラ 2011年10月20日
C言語 はじめに 2016年 吉田研究室.
補講:アルゴリズムと漸近的評価.
基礎プログラミング演習 第6回.
文法と言語 ー文脈自由文法とLR構文解析ー
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
アルゴリズムと数式の表現 コンピュータの推論
わんくま同盟 大阪勉強会 #1 15:00~15:10 わんくま同盟について 15:10~16:00
わんくま同盟 大阪#2 & 東京#1 合同勉強会 18:25~18:30 前座:わんくま同盟について 18:30~18:50
Webページに動きを持たせるJavascript言語について 例題のプログラムを通して体験的に理解することとします。
ウェブデザイン演習 第6回.
計算の理論 I -数学的概念と記法- 月曜3校時 大月 美佳.
計算の理論 I -講義について+αー 月曜3校時 大月美佳 平成31年5月18日 佐賀大学理工学部知能情報システム学科.
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
C言語講座 制御(選択) 2006年 計算技術研究会.
情報処理Ⅱ 2005年10月28日(金).
プログラミング入門 第4回講義 選択(分岐) - if, switch/case - データ構造とアルゴリズム(2)
コンパイラ 2012年10月11日
文法と言語 ー文脈自由文法とLR構文解析2ー
計算の理論 I -講義について+αー 火曜3校時 大月美佳 平成31年8月23日 佐賀大学理工学部知能情報システム学科.
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
情報処理Ⅱ 2005年11月25日(金).
情報処理Ⅱ 小テスト 2005年2月1日(火).
3.テキストボックスによる データ入力 データ入力と表示のプログラム.
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
情報処理Ⅱ 2006年10月27日(金).
プログラミング入門 -「計算」に注目して考える-
情報処理Ⅱ 第8回:2003年12月9日(火).
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
4.2 再帰下降解析 (1)再帰下降解析とは ■再帰下降解析(Recursive Descent Parsing)
Presentation transcript:

επιστημη さん 提供の VB.NETプログラムを丸裸にする!? 再帰下降構文解析による 計算式の演算 επιστημη さん 提供の VB.NETプログラムを丸裸にする!? アクア@わんくま同盟

計算式を以下のような仕様である。と考えて構文解析する。 計算式の構文図 計算式を以下のような仕様である。と考えて構文解析する。 式 項 加減演算子 項 因子 乗除演算子 因子 変数又は定数 ()内の式 乗除演算子 × ÷ 加減演算子 + -

式 = 項 + 項 構文図の解説① 計算式の例: 式 = a + b * (c - d) / ( e + f ) ① 式は1つ以上の項と加減演算子により構成されている。 式 項 加減演算子 加減演算子 + - 上記にある計算式の例を①に照らし合わせて分析すると 式 = 項 + 項 となる

式 = 因子 + 因子 * 因子 / 因子 構文図の解説② 計算式の例: 式 = a + b * (c - d) / ( e + f ) ② 項は1つ以上の因子と乗除演算子により構成されている。 項 因子 乗除演算子 乗除演算子 × ÷ 上記にある計算式の例を②に照らし合わせて分析すると 式 = 項 + 項 は 式 = 因子 + 因子 * 因子 / 因子 となる

式= a + b *(別の式)/ (別の式) 構文図の解説③ 計算式の例: 式 = a + b * (c - d) / ( e + f ) ③ 因子は変数または定数と ()←括弧で囲まれた別の式で構成されている。 因子 変数又は定数 ()内の式 上記にある計算式の例を③に照らし合わせて分析すると 式 = 因子 + 因子 * 因子 / 因子 は 式= a + b *(別の式)/ (別の式) となる。 別の式は式として構文図の解説①に戻り、再度分析し、評価を繰り返す。

プログラミングコードの解説 επιστημη さん のプログラムに使われている数式処理の命令文 Sub expression() 命令文  式を構文解説①にある式の処理に当てはめ、項と加減演算子の組み合わせにする。  Sub expression() 命令文 により分類された項の処理は、以下にある Sub term()命令文にて行う。  Sub term() 命令文  式を構文解説②にある項の処理に当てはめ、因子と乗除演算子の組み合わせにする。  Sub term() 命令文 により分類された因子の処理は、以下にある Sub factor()命令文の処理にて行う。  Sub factor() 命令文  式を構文解説③にある因子の処理に当てはめ、変数又は定数と ()←カッコ でくくられた式の組み合わせにする。  Sub factor() 命令文 により分類された項の処理は、上記の Sub expression() 命令文 にて行う。 

επιστημη さん の大まかなプログラムフロー プログラミングコードの解説 επιστημη さん の大まかなプログラムフロー Sub Main() dicに変数となる文字と数値を代入 計算式を指定したのち Sub expressionを呼び出す。 Sub expression() その他の命令文 Sub term() 命令文を呼び出す。 スタックをダンプして出力する 文字列の空白を文字単位で精査する といった処理を実行 Sub term() Sub factor() 命令文を呼び出す。 Sub factor() ()で括られた式があれば、 Sub expression () 命令文を呼び出す。

まとめ 決してスゲー事はしていない。でも押さえるトコは抑えとけ!  掲示板にある逆ポーランド記法というキーワードに惑わされるな!   実は再帰下降構文解析が真に押さえるべきキーワード。 Wikipedia :『構文解析』『再帰下降構文解析』  ジェネリック等を使ってるからVB.NETの文法はキッチリ押さえる。   # 自分は未だ使いこなせないけどね♪  基本となるアルゴリズムは数学でいう公式みたいなもの?   中級者へのステップとして勉強して損はしない!!  C++の第一人者がわざわざVB.NETでプログラミングコードを示してくれるその価値を見逃すな!!   上級者が視線を落としてくれるのは我々にもっと切磋琢磨しろ  と叱咤激励してくれている!!??  まとめは蛇足!?   επιστημηさんへの感謝をこのページに込めたつもり…