More Related Content Similar to JVM上で動くPython処理系実装のススメ (16) JVM上で動くPython処理系実装のススメ2. お前誰よ
❖ yotchang4s (よっちゃん)
➢ 澁谷 典明 (Yoshiaki Shibutani) https://twitter.com/yotcang4s
❖ Python歴
➢ 6ヵ月くらいの初心者
❖ 所属
➢ 株式会社エフ・コード
ギョームでScala書いてますフゥー
6. 開発の動機
1. PyCon JP 2017にCfPを出そう!
2. Jythonの近況を調査してそれを発表しよう!
3. えっ2015年から更新が止まっている。。。
4. Python 3にも対応していない。。。
5. ならば…
25. 具象構文木を作るには?(3/4)
cafebabepyのGrammarの一部分
file_input : ( NEWLINE | stmt )* EOF;
stmt: simple_stmt | compound_stmt;
simple_stmt
: small_stmt (SEMI_COLON small_stmt)* SEMI_COLON? NEWLINE;
...
スタート
改行とstmt(文)が0個以上ありEOFがある
文とは
simple_stmtかcompoud_stmt
のどちらか1つ
simple_stmtとは
small_stmtの次に「;」とsmall_stmtが0個以上あり、「;」が
0個または1個あり、改行がある
つまり「;」で区切ると1行に複数文を書ける
72. 字句解析器から構文解析器へのストリーム
字句解析器
(Lexer)
if 1 == 1 : <NEWLINE>
<INDENT> print ( "hello" <DEDENT> <NEWLINE>
構文解析器
(Parser)
if 1 == 1:
print("hello")
)
ポイントは論理的な字句である<INDENT>と<DEDENT>。
Pythonでは字句解析でインデントの始まりと終わりを作る。
81. 今後の展望
● Python 3の文法を全て実装
● 速度改善
○ invokedynamic命令を使った高速化
○ リフレクションを極力少なく
● PythonのコードからJavaのコードを実行
● C拡張の実行
○ NumPyとかSciPyがJavaから呼べるとアツい。
○ JRubyで出来ていそうなので参考にできるか?