Submit Search
Upload
Racc でおてがる構文解析
•
Download as ODP, PDF
•
4 likes
•
4,268 views
M
morphine57
Follow
Ruby/Rails 勉強会@関西第36回で発表したスライド。構文解析についてと、パーサージェネレーターRaccの基本的な使い方について
Read less
Read more
Report
Share
Report
Share
1 of 18
Download now
Recommended
Rpn and forth 超入門
Rpn and forth 超入門
Yoshitaka Seo
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
Hiro Yoshioka
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
Yoshio Hanawa
Programming camp 2008, Codereading
Programming camp 2008, Codereading
Hiro Yoshioka
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
t-sin
Perl io layer
Perl io layer
Hiroko Suzuki
R を起動するその前に
R を起動するその前に
Kosei ABE
Perl6で遊ぼう
Perl6で遊ぼう
VienosNotes
Recommended
Rpn and forth 超入門
Rpn and forth 超入門
Yoshitaka Seo
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
Hiro Yoshioka
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
Yoshio Hanawa
Programming camp 2008, Codereading
Programming camp 2008, Codereading
Hiro Yoshioka
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
t-sin
Perl io layer
Perl io layer
Hiroko Suzuki
R を起動するその前に
R を起動するその前に
Kosei ABE
Perl6で遊ぼう
Perl6で遊ぼう
VienosNotes
php-src の歩き方
php-src の歩き方
do_aki
Write good parser in perl
Write good parser in perl
Jiro Nishiguchi
PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)
do_aki
Rでreproducible research
Rでreproducible research
Shintaro Fukushima
リーダブルコードが良書だったのでまとめました
リーダブルコードが良書だったのでまとめました
Takumi Sato
Pry による repl 駆動開発について
Pry による repl 駆動開発について
Tomoya Kawanishi
PHP AST 徹底解説
PHP AST 徹底解説
do_aki
core dumpでcode golf
core dumpでcode golf
Nomura Yusuke
リーダブルコード 1.0'
リーダブルコード 1.0'
Yamamura Takashi
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
bsdhack
リーダブルコード
リーダブルコード
Keita Otsuka
続・SECDマシン
続・SECDマシン
t-sin
ROS Tutorial 02 - CIT
ROS Tutorial 02 - CIT
Daiki Maekawa
シェルスクリプトを極める
シェルスクリプトを極める
bsdhack
リーダブルコード勉強会
リーダブルコード勉強会
TAKUYA YAMAMOTO
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
do_aki
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011
Hiro Yoshioka
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
icchy
PostgreSQLとpython
PostgreSQLとpython
Soudai Sone
How to debug a perl script using gdb
How to debug a perl script using gdb
akirahiguchi
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
emasaka
セマンテックウェブとRDFDB
セマンテックウェブとRDFDB
Hirosuke Asano
More Related Content
What's hot
php-src の歩き方
php-src の歩き方
do_aki
Write good parser in perl
Write good parser in perl
Jiro Nishiguchi
PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)
do_aki
Rでreproducible research
Rでreproducible research
Shintaro Fukushima
リーダブルコードが良書だったのでまとめました
リーダブルコードが良書だったのでまとめました
Takumi Sato
Pry による repl 駆動開発について
Pry による repl 駆動開発について
Tomoya Kawanishi
PHP AST 徹底解説
PHP AST 徹底解説
do_aki
core dumpでcode golf
core dumpでcode golf
Nomura Yusuke
リーダブルコード 1.0'
リーダブルコード 1.0'
Yamamura Takashi
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
bsdhack
リーダブルコード
リーダブルコード
Keita Otsuka
続・SECDマシン
続・SECDマシン
t-sin
ROS Tutorial 02 - CIT
ROS Tutorial 02 - CIT
Daiki Maekawa
シェルスクリプトを極める
シェルスクリプトを極める
bsdhack
リーダブルコード勉強会
リーダブルコード勉強会
TAKUYA YAMAMOTO
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
do_aki
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011
Hiro Yoshioka
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
icchy
PostgreSQLとpython
PostgreSQLとpython
Soudai Sone
How to debug a perl script using gdb
How to debug a perl script using gdb
akirahiguchi
What's hot
(20)
php-src の歩き方
php-src の歩き方
Write good parser in perl
Write good parser in perl
PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)
Rでreproducible research
Rでreproducible research
リーダブルコードが良書だったのでまとめました
リーダブルコードが良書だったのでまとめました
Pry による repl 駆動開発について
Pry による repl 駆動開発について
PHP AST 徹底解説
PHP AST 徹底解説
core dumpでcode golf
core dumpでcode golf
リーダブルコード 1.0'
リーダブルコード 1.0'
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
リーダブルコード
リーダブルコード
続・SECDマシン
続・SECDマシン
ROS Tutorial 02 - CIT
ROS Tutorial 02 - CIT
シェルスクリプトを極める
シェルスクリプトを極める
リーダブルコード勉強会
リーダブルコード勉強会
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
PostgreSQLとpython
PostgreSQLとpython
How to debug a perl script using gdb
How to debug a perl script using gdb
Similar to Racc でおてがる構文解析
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
emasaka
セマンテックウェブとRDFDB
セマンテックウェブとRDFDB
Hirosuke Asano
メタメタプログラミングRuby
メタメタプログラミングRuby
emasaka
Lisp batton - Common LISP
Lisp batton - Common LISP
Masaomi CHIBA
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
Koichi Sakata
JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介
Yusuke Hirao
デザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリング
kei takakuda
Php5.4
Php5.4
ke-m kamekoopa
ATN No.2 Scala事始め
ATN No.2 Scala事始め
AdvancedTechNight
Programming camp code reading
Programming camp code reading
Hiro Yoshioka
php7's ast
php7's ast
do_aki
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
Goh Matsumoto
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
Minero Aoki
[第2版]Python機械学習プログラミング 第8章
[第2版]Python機械学習プログラミング 第8章
Haruki Eguchi
20141017 introduce razor
20141017 introduce razor
do_aki
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
弘毅 露崎
Ruby Extended Library
Ruby Extended Library
Akio Tajima
演習:プログラミング言語処理をやってみよう
演習:プログラミング言語処理をやってみよう
Takashi Ishio
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Tomoharu ASAMI
Similar to Racc でおてがる構文解析
(20)
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
セマンテックウェブとRDFDB
セマンテックウェブとRDFDB
メタメタプログラミングRuby
メタメタプログラミングRuby
Lisp batton - Common LISP
Lisp batton - Common LISP
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介
デザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリング
Php5.4
Php5.4
ATN No.2 Scala事始め
ATN No.2 Scala事始め
Programming camp code reading
Programming camp code reading
php7's ast
php7's ast
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
[第2版]Python機械学習プログラミング 第8章
[第2版]Python機械学習プログラミング 第8章
20141017 introduce razor
20141017 introduce razor
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
Ruby Extended Library
Ruby Extended Library
演習:プログラミング言語処理をやってみよう
演習:プログラミング言語処理をやってみよう
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Racc でおてがる構文解析
1.
Racc でおてがる構文解析 まき
2.
3.
id:morphine57(もるひねと読みます)
4.
5.
6.
字句解析
7.
8.
構文ルール書き方
9.
10.
11.
コンパイラの仕事の一部
12.
13.
14.
15.
予約語やカッコに意味値はない hoge=(hoge+1)/2 =
( ) + hoge / 2 - - - - 識別子 - 整数 1 整数 ひとつの トークン 下段が意味値 hoge 識別子
16.
17.
構文解析(狭義)(2) 1 +
hoge ÷ 2 右式 左式 演算式 演算子 演算子 右式 左式 = ( ) + hoge / 2 - - - - 識別子 - 整数 1 整数 hoge 識別子 演算式 代入式 右式 hoge 終端子 非終端子 (ノード)
18.
ここまでまとめ 字句解析 構文解析
((huge+1)÷2)×3 ( ( ) 1 + huge ÷ 2 3 × ) 右式 演算式 演算子 左式 代入式 右式 hoge
19.
20.
RAA
21.
svn
22.
23.
「---- header」で require
など
24.
「---- inner」でクラスの中身、字句解析処理など
25.
「---- footer」で後処理 j_parser.y
class JapaneseParser rule end ---- header require 'node' ---- inner def parse ・・・ do_parse end ---- footer ・・・・ 文法 (後ほど解説 )
26.
27.
指定した名前(上記例だとj_parser.rb)のRubyソースファイルができる(中身はmodule_evalの嵐)
28.
29.
30.
31.
valにマッチした配列が渡される
32.
resultにセットしたオブジェクトが上位の木からvalで参照できる 非終端子 :
文法の並び { アクション } | 上とは別の書き方がある場合同じように記述
33.
文法ルール書き方(2) (例) program
: {result = []} | program stmt { result ||= [] result << val[1]} stmt : assign EOL {result = StmtNode.new(val[0])} assign : IDENT '=' expr {result = AssignNode.new(val[0],val[2])} expr : IDENT {result = VariableNode.new(val[0])} | expr '+' expr {result = ArithmeticNode.new(val[0],val[2])} ・・・・・・
34.
文法ルール書き方(3) hoge=hoge+1 StmtNode
AssignNode hoge ArithmeticNode hoge + 1
35.
36.
おてがるです
37.
38.
Rubyを256倍使うための本 無道編
39.
40.
私はソフトウェアのマイグレーションに使いました
Download now