Mercurial > hg > Papers > 2019 > anatofuz-thesis
changeset 17:9d5db297d154
use listings for chapter2.tex
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 08 Feb 2019 15:32:41 +0900 |
parents | 6be34793a3e2 |
children | b2978e820356 |
files | paper/chapter2.tex paper/main.pdf |
diffstat | 2 files changed, 6 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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のバイトコードを生成する。