# HG changeset patch # User anatofuz # Date 1549607561 -32400 # Node ID 9d5db297d154ff96893090699eedd973f38cf41f # Parent 6be34793a3e2d3e90c720b335e32cc7545d9fe09 use listings for chapter2.tex diff -r 6be34793a3e2 -r 9d5db297d154 paper/chapter2.tex --- a/paper/chapter2.tex Fri Feb 08 15:23:31 2019 +0900 +++ b/paper/chapter2.tex Fri Feb 08 15:32:41 2019 +0900 @@ -11,7 +11,7 @@ RakudoはParrot時代に考案された、 NQP(NotQuitPerl)を用いてPerl6を実装し、 NQPはVMによって評価される。 RakudoのVMはPerl6専用のVMであるMoarVM、 Java実行環境であるJVM、 Javascriptが選択可能である。 JVM、 Javascriptの動作環境はMoarVMと比較して実装されていない処理などが多数あり、 現在はMoarVMが主流なVMとして利用されている。 -MoarVMはC言語で実装されており、 NQPはNQP自身で記述されている。 +MoarVMはC言語で実装されており、 NQPはNQP自身で実装されている。 \section{NQP} @@ -20,10 +20,12 @@ 基本文法などはPerl6に準拠しているが、 変数を束縛で宣言する。インクリメント演算子が一部利用できない。 Perl6に存在する関数などが一部利用できないなどの制約が存在する。 -実際にNQPで記述したコードを に示す。 +NQPのコード例を示す。 +\lstinputlisting[frame=lrbt, label=fib_nqp, caption=フィボナッチ数列を求めるNQPのソースコード]{./codes/fib.nqp} -Perl6はNQPで記述されている為、 Perl6におけるVMはNQPの実行を目標として開発されている。 -NQP自体もNQPで記述されており、 NQPのビルドには予め用意されたMoarVMなどのVMバイトコードによるNQPインタプリタが必要となる。 + +Perl6はNQPで実装されている為、 Perl6におけるVMはNQPの実行を目標として開発されている。 +NQP自体もNQPで実装されており、 NQPのビルドには予め用意されたMoarVMなどのVMバイトコードによるNQPインタプリタが必要となる。 MoarVMを利用する場合、 MoarVMの実行バイナリであるmoarに対して、 ライブラリパスなどを予め用意したNQPインタプリタのバイトコードに設定する。 設定はオプションで与える事が可能であり、 moarを実行することでNQPのインタプリタが起動する。 NQPのビルドには、 このNQPインタプリタをまず利用し、 NQP自体のソースコードを入力して与え、 ターゲットとなるVMのバイトコードを生成する。 diff -r 6be34793a3e2 -r 9d5db297d154 paper/main.pdf Binary file paper/main.pdf has changed