Enviar pesquisa
Carregar
コンパイラ(Lexとyaccを使う)
•
Transferir como PPTX, PDF
•
1 gostou
•
1,287 visualizações
kataware
Seguir
名古屋低レイヤー勉強会用のスライドシェア、
Leia menos
Leia mais
Engenharia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 14
Baixar agora
Recomendados
[DL輪読会]Unsupervised Neural Machine Translation
[DL輪読会]Unsupervised Neural Machine Translation
Deep Learning JP
2014 1-19
2014 1-19
Satoshi KOJIMA
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
Fujio Kojima
PyCharm入門
PyCharm入門
Yuki Nagai
iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"
Ryohei Suzuki
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
susumu tanaka
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
健太 田上
Recomendados
[DL輪読会]Unsupervised Neural Machine Translation
[DL輪読会]Unsupervised Neural Machine Translation
Deep Learning JP
2014 1-19
2014 1-19
Satoshi KOJIMA
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
Fujio Kojima
PyCharm入門
PyCharm入門
Yuki Nagai
iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"
Ryohei Suzuki
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
susumu tanaka
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
健太 田上
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
No Bu
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
Multi paradigm design
Multi paradigm design
Akira Takahashi
nl-1. 形態素解析と構文解析
nl-1. 形態素解析と構文解析
kunihikokaneko1
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
Yuki Katada
一口で何度もおいしい?DSL
一口で何度もおいしい?DSL
You&I
2011年10月21日
2011年10月21日
nukaemon
私とOSSの25年
私とOSSの25年
MITSUNARI Shigeo
OpeLa セルフホストなOSと言語処理系の自作
OpeLa セルフホストなOSと言語処理系の自作
uchan_nos
プログラミング言語として考えたTensor flow
プログラミング言語として考えたTensor flow
Keisuke Umezawa
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)
mosa siru
C# と .NET と ・・・
C# と .NET と ・・・
ShinichiAoyagi
RedPen texconf15
RedPen texconf15
Recruit Technologies
Clrh 110827 wfho
Clrh 110827 wfho
Tomoyuki Obi
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版
Go Yamada
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx
hkharu0803
Common Lisp ユーザへのScheme紹介
Common Lisp ユーザへのScheme紹介
たけおか しょうぞう
サーバーレス(Azure Functions)でスマートスピーカーのアプリを作ってみよう ( #GoogleHome / LINE #Clova/ Ama...
サーバーレス(Azure Functions)でスマートスピーカーのアプリを作ってみよう ( #GoogleHome / LINE #Clova/ Ama...
Madoka Chiyoda
セキュリティ関連OSSツール紹介
セキュリティ関連OSSツール紹介
kataware
名古屋セキュリティ勉強会LT~学内CTFの話~
名古屋セキュリティ勉強会LT~学内CTFの話~
kataware
Mais conteúdo relacionado
Semelhante a コンパイラ(Lexとyaccを使う)
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
No Bu
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
Multi paradigm design
Multi paradigm design
Akira Takahashi
nl-1. 形態素解析と構文解析
nl-1. 形態素解析と構文解析
kunihikokaneko1
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
Yuki Katada
一口で何度もおいしい?DSL
一口で何度もおいしい?DSL
You&I
2011年10月21日
2011年10月21日
nukaemon
私とOSSの25年
私とOSSの25年
MITSUNARI Shigeo
OpeLa セルフホストなOSと言語処理系の自作
OpeLa セルフホストなOSと言語処理系の自作
uchan_nos
プログラミング言語として考えたTensor flow
プログラミング言語として考えたTensor flow
Keisuke Umezawa
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)
mosa siru
C# と .NET と ・・・
C# と .NET と ・・・
ShinichiAoyagi
RedPen texconf15
RedPen texconf15
Recruit Technologies
Clrh 110827 wfho
Clrh 110827 wfho
Tomoyuki Obi
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版
Go Yamada
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx
hkharu0803
Common Lisp ユーザへのScheme紹介
Common Lisp ユーザへのScheme紹介
たけおか しょうぞう
サーバーレス(Azure Functions)でスマートスピーカーのアプリを作ってみよう ( #GoogleHome / LINE #Clova/ Ama...
サーバーレス(Azure Functions)でスマートスピーカーのアプリを作ってみよう ( #GoogleHome / LINE #Clova/ Ama...
Madoka Chiyoda
Semelhante a コンパイラ(Lexとyaccを使う)
(20)
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
メタプログラミングって何だろう
メタプログラミングって何だろう
Multi paradigm design
Multi paradigm design
nl-1. 形態素解析と構文解析
nl-1. 形態素解析と構文解析
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
一口で何度もおいしい?DSL
一口で何度もおいしい?DSL
2011年10月21日
2011年10月21日
私とOSSの25年
私とOSSの25年
OpeLa セルフホストなOSと言語処理系の自作
OpeLa セルフホストなOSと言語処理系の自作
プログラミング言語として考えたTensor flow
プログラミング言語として考えたTensor flow
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)
C# と .NET と ・・・
C# と .NET と ・・・
RedPen texconf15
RedPen texconf15
Clrh 110827 wfho
Clrh 110827 wfho
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx
Common Lisp ユーザへのScheme紹介
Common Lisp ユーザへのScheme紹介
サーバーレス(Azure Functions)でスマートスピーカーのアプリを作ってみよう ( #GoogleHome / LINE #Clova/ Ama...
サーバーレス(Azure Functions)でスマートスピーカーのアプリを作ってみよう ( #GoogleHome / LINE #Clova/ Ama...
Mais de kataware
セキュリティ関連OSSツール紹介
セキュリティ関連OSSツール紹介
kataware
名古屋セキュリティ勉強会LT~学内CTFの話~
名古屋セキュリティ勉強会LT~学内CTFの話~
kataware
Isolation forest
Isolation forest
kataware
git入門(講義っぽく)
git入門(講義っぽく)
kataware
0511 lt
0511 lt
kataware
Abc#004d
Abc#004d
kataware
Mais de kataware
(6)
セキュリティ関連OSSツール紹介
セキュリティ関連OSSツール紹介
名古屋セキュリティ勉強会LT~学内CTFの話~
名古屋セキュリティ勉強会LT~学内CTFの話~
Isolation forest
Isolation forest
git入門(講義っぽく)
git入門(講義っぽく)
0511 lt
0511 lt
Abc#004d
Abc#004d
コンパイラ(Lexとyaccを使う)
1.
コンパイラ(LexとYaccを使う) かたわれ@名古屋低レイヤー勉強会 1
2.
自己紹介 • 名前:かたわれ(八木 鶫) •
所属:名古屋工業大学 • Twitter:@_ktwr • 最近の困りごと:研究が忙しすぎる 2
3.
お品書き • コンパイラについて緩い説明 • 字句解析器とlex •
構文解析器とyacc • 電卓を作ってみよう 3
4.
コンパイラって? 4
5.
コンパイラとは • コンピュータの自動プログラミングに使うプログラ ムの一種。一般に、一定方式に従い、使用機種には 依存せず人間に分かりよい形で書いたプログラムを、 機械コード(=機械がすぐ実行できる形)に翻訳す る仕事を受け持つ。また「コンパイラ言語(=コン パイラに与えるために約束された人工言語)」の略 語としても使う。 5 高級言語(C,C++,Java等)を 機械語に翻訳する
6.
コンパイラの処理の流れ 6 字句解析 構文解析 実行コード生成 ソースコード 実行
7.
lexとyaccとは 7 字句解析 構文解析 実行コード生成 ソースコード 実行 Lex(flex) Yacc(bison) 実行コード生成 ソースコード 実行
8.
字句解析 • Lexical Analysis:字句解析 •
字句解析器はトークンを得る • トークン:「num」「=」「1」「+」「3」「;」 ⇒意味を持つ、これ以上分割できない最小単位 • トークンには型がつけられる • 「1」「3」 :NUMBER • 「=」 :ASSIGN • 「+」 :ADD • 「num」 :IDENT • 「;」 :SEMICOLON 8 num = 1 + 3; 型は構文解析で使うよ
9.
lex:a lexical analyzer
generator • 字句解析器を生成するプログラム • 正規表現とC言語の関数を使う 9 C言語の変数を記述 ここの変数は構文解析でも使える 字句解析のルールを記述 一番長いルールに一致するものを探す Lex単体で動かすときの main関数を記述
10.
構文解析 • syntactic analysis:構文解析 •
字句解析をもとに構文木を作る • バッカスナウア(BNF)記法が使われる • IDENT ::= NUMBER ADD NUMBER 10 + 1 3
11.
yacc:yet another compiler
compiler • 構文解析器を生成するパーサジェネレーター • lexと違って単独で動かすことはない • 三部構成 • 宣言部 • トークンを宣言する • ルール部 • BNF記法で構文規則記述 • プログラム部 • main関数記述 11
12.
簡単な電卓を作る 12 lexプログラム yaccプログラム四則演算の トークン作成 改行の トークン作成 数字の トークン作成 何もしない ための定義 Lexで作成した トークンを宣言 下に行くほど 優先度が高い 構文木作成 再帰で処理を記入 プログラム部
13.
CTFで出るの? • (ほぼ)出ない • 知ってることでやれることがあるかも •
ASIS Cyber Security Contest Finals 2014: ASIS calc† • lexとyaccのプログラムは 解析できないとき 「syntax error」と出す 13 †https://github.com/ctfs/write-ups-2014/tree/master/asis-ctf-finals-2014/asis-calc
14.
参考文献 • https://www.ibm.com/developerworks/jp/linux/ library/l-lexyac/index.html • http://cis.k.hosei.ac.jp/~nakata/lectureCompiler /YaccLex/ 14
Baixar agora