SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
Elixir解答
Report
Tsunenori Oohara
Follow
Programmer at ドリコム
Aug. 20, 2017
•
0 likes
•
9,504 views
1
of
22
Elixir解答
Aug. 20, 2017
•
0 likes
•
9,504 views
Download Now
Download to read offline
Report
Engineering
四則演算パーサー解答例
Tsunenori Oohara
Follow
Programmer at ドリコム
Recommended
Okinawapm #1
Kei Kamikawa
466 views
•
25 slides
Goをカンストさせる話
Moriyoshi Koizumi
6.4K views
•
25 slides
Javaセキュアコーディングセミナー東京第1回 演習
JPCERT Coordination Center
355 views
•
6 slides
error handling using expected
Akira Takahashi
3K views
•
30 slides
C++0x in programming competition
yak1ex
1K views
•
24 slides
Replace Output Iterator and Extend Range JP
Akira Takahashi
1.6K views
•
26 slides
More Related Content
Similar to Elixir解答
Algebraic DP: 動的計画法を書きやすく
Hiromi Ishii
6.7K views
•
50 slides
Perlで伝統芸能
hitode909
1.6K views
•
47 slides
FP in JS
Kiara Grouwstra
503 views
•
106 slides
JavaScriptクイックスタート
Shumpei Shiraishi
2.2K views
•
65 slides
データサイエンスワールドからC++を眺めてみる
Shintaro Fukushima
7.4K views
•
32 slides
Pythonで始めるDropboxAPI
Daisuke Igarashi
3.6K views
•
219 slides
Similar to Elixir解答
(14)
Algebraic DP: 動的計画法を書きやすく
Hiromi Ishii
•
6.7K views
Perlで伝統芸能
hitode909
•
1.6K views
FP in JS
Kiara Grouwstra
•
503 views
JavaScriptクイックスタート
Shumpei Shiraishi
•
2.2K views
データサイエンスワールドからC++を眺めてみる
Shintaro Fukushima
•
7.4K views
Pythonで始めるDropboxAPI
Daisuke Igarashi
•
3.6K views
Introduction to Spock
Takahiro Sugiura
•
7.1K views
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Koichi Sasada
•
15.4K views
asm.js x emscripten: The foundation of the next level Web games
Noritada Shimizu
•
2K views
わかるコードを書くために For writing clean code
Eyes, JAPAN
•
1.3K views
20年越しで Perl 4 to 5 した話
outerinside
•
5.8K views
2017年夏のPerl
charsbar
•
6.4K views
Python opt
Mikio Kubo
•
1.1K views
秀スクリプトの話
Hiroshi Tokumaru
•
31.4K views
More from Tsunenori Oohara
Elixirハンズオン2
Tsunenori Oohara
1.9K views
•
17 slides
meguro.rb LT
Tsunenori Oohara
886 views
•
15 slides
Elixir言語紹介
Tsunenori Oohara
2.6K views
•
18 slides
パンチラに関する考察
Tsunenori Oohara
2.2K views
•
80 slides
how-to-learn-elixir
Tsunenori Oohara
1.5K views
•
14 slides
Elixir-Conf-Japan-2017-session-ohr486
Tsunenori Oohara
4.7K views
•
36 slides
More from Tsunenori Oohara
(20)
Elixirハンズオン2
Tsunenori Oohara
•
1.9K views
meguro.rb LT
Tsunenori Oohara
•
886 views
Elixir言語紹介
Tsunenori Oohara
•
2.6K views
パンチラに関する考察
Tsunenori Oohara
•
2.2K views
how-to-learn-elixir
Tsunenori Oohara
•
1.5K views
Elixir-Conf-Japan-2017-session-ohr486
Tsunenori Oohara
•
4.7K views
Elixirハンズオン-2017-03-11
Tsunenori Oohara
•
1.5K views
Re:デブ デブナイト vol.2 LT
Tsunenori Oohara
•
1.7K views
失敗という概念が存在しない退屈なweb開発
Tsunenori Oohara
•
1.7K views
Tokyoex6 EEx
Tsunenori Oohara
•
1.8K views
running-elixir-in-production
Tsunenori Oohara
•
2.3K views
hello waf, hello phoenix
Tsunenori Oohara
•
2.5K views
tokyo.ex3 LT
Tsunenori Oohara
•
1.4K views
running web app on elixir
Tsunenori Oohara
•
3.8K views
Elixir lang bootstrap
Tsunenori Oohara
•
3.4K views
Elixirと他言語の比較的紹介ver.2
Tsunenori Oohara
•
9K views
Elixirについて私が知ってる二、三の事柄
Tsunenori Oohara
•
7.9K views
elixir in production
Tsunenori Oohara
•
7K views
地獄のElixir(目黒スタートアップ勉強会)
Tsunenori Oohara
•
12.8K views
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Tsunenori Oohara
•
16.5K views
Elixir解答
1.
四則演算パーサー (Elixir ver) コード: https://github.com/ohr486/LearnLanguage2017inODC/tree/master/parser_sample Learn
Languages 2017 in ODC おーはら@ohrdev
2.
課題 expression ::= additive additive
::= multitive ( ‘+’ multitive | ‘-’ multitive )* multitive ::= primary ( ‘*’ primary | ‘/’ primary )* primary ::= ‘(‘ expression ‘)’ | number number ::= ‘0’ | [1-9][0-9]*
3.
パーサーI/F • 入力: 四則演算の文字列 •
出力: • 成功時: {:ok, <パース結果>, <残りの文字列>} • 失敗時: {:error, <入力文字列>} • 例) 数値(number)を取り出すパーサーPの場合 • P(“123”) -> {:ok, 123, “”} • P(“123abc”) -> {:ok, 123, “abc”} • P(“abc”) -> {:error, “abc”}
4.
BaseModule • 複雑なパーサーの元になる基本的なパーサーライブラリ • one_of:
文字にマッチするか • reg_of: 正規表現にマッチするか • either: 2つのパーサーのどちらかを適用 • seq: パーサーを順番に適用 • (rep: パーサーの繰り返し) • loop: パーサーの繰り返し • map: 結果に対して関数を適用
5.
CalcModule • BaseModuleのパーサーの組み合わせでできる、四則演算パー サーモジュール、BaseModuleを使って構築 • BNFにそれぞれ対応
6.
テスト
7.
BaseModule.one_of
8.
BaseModule.reg_of
9.
BaseModule.either
10.
BaseModule.seq
11.
BaseModule.rep
12.
BaseModule.loop
13.
BaseModule.map
14.
CalcModule(再掲) • BaseModuleのパーサーの組み合わせでできる、四則演算パー サーモジュール • BNFにそれぞれ対応
15.
CalcModule 補助関数/補足 • パイプ演算子(|>) •
Fun1 ( arg ) => arg |> Fun1 • Fun1 ( Fun2 ( arg ) ) => arg |> Fun2 |> Fun1 • Fun1 ( arg1, arg2 ) => arg1 |> Fun1 ( arg2 )
16.
CalcModule.number
17.
CalcModule.primary
18.
CalcModule.multitive
19.
CalcModule.addtive
20.
CalcModule.expression
21.
CalcModule 評価
22.
テスト結果