You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
インタプリタ式の言語処理系を書いたことが無かったので一度実装してみようと思って,この手のは Lisp が定番だということで,前々から気になっていた Make a Lisp (mal) に挑戦してみました. Make a Lisp (mal) とは Make a Lisp は色々な言語で mal という Lisp 方言を実装してみようというプロジェクトです. 30以上の言語での mal 処理系実装 11段階のステップに分けられた実装ガイド(全体の構成図付き) 各実装ステップごとのテストケース といったほしい情報が揃っており,言語処理系初心者でも Lisp 実装について簡単に学べる環境が整っています. 11段階の各ステップは以下の様な感じです. The REPL : 実装を始める準備(自分の言語を Makefile に登録して make 一発でテストを走らせられるようにする,関数のスケルトンの
If you're looking for a better understanding of computers or the C language in general, try your hand at writing a virtual machine in C from scratch.Menu Implementing a Virtual Machine in C 07 May 2015 Introduction Here's the GitHub to show what we'll be making, you can also compare your code to this repository in case you have errors. GitHub Repository I thought I would write an article about bu
C to Java Translation Automatic, Complete, Correct; Low Cost + Low Risk We translate C source code to Java source code. The translation is completely automatic, supports the entire C language and creates functionally equivalent Java code - ready to be executed. Here are just a few ways you could benefit from our technology: Do you maintain legacy C code? Upgrade to Java: a modern programming langu
What is Janino? Janino is a super-small, super-fast Java™ compiler. Not only can it compile a set of source files to a set of class files like the JAVAC tool, but also can it compile a Java™ expression, block, class body or source file in memory, load the bytecode and execute it directly in the same JVM. Janino is not intended to be a development tool, but an embedded compiler for run-time compila
前置き:何となく成り行きで何か書かないと心苦しいので、殴り書きレベル & 文才がなくてつまらない & 関数型言語の授業等を受けたことがある方にはものすごく当たり前の教科書的内容ですみませんが、取り急ぎ自分が容易に書けることを書きます。(この記事に直接の関係がある)質問があれば、(すぐに反応できない場合もあると思いますが)なるべく答えます。誤植などの指摘も助かります。 さて、プログラマならば誰しも一度は「オレオレ・オリジナル・プログラミング言語を作りたい」という欲求を抱きますよね。(抱きますよね?) そのとき、文字列レベルの文法(具象構文(concrete syntax)と言います)はわりと誰でも(?)考えられますが、それが木構造レベルでどういう風に表されて(抽象構文(abstract syntax)と言います)、どう動作するのか(操作的意味論(operational semantics)と
Building a modern functional compiler from first principles. Stephen Diehl In 2014 I wrote a short tutorial about building a small imperative language in Haskell that compiled into LLVM. I was extremely happy with the effect the tutorial seemed to have, and the warm response I got from so many people was very encouraging. I've done a great bit of thinking about what the most impactful topic I coul
Anthony Ferraraさん(@ircmaxell)が2012年12月に公開したPHPで記述されたPHP実装「PHPPHP」について、今さらですが調べてみました。 @ircmaxellさんはPHPの内部構造についての解説サイト「PHP Internals Book」の筆者の一人であり、PHP 5.5で導入された新しいパスワードハッシュ関数の提案・実装者でもあります(参照:https://wiki.php.net/rfc/password_hash)。最近発表した「Recki-CT」も興味深いプロダクトです。 そんなわけでジョークレベルではないだろうとは思ってましたが、今回中身を見てみたらガチすぎて恐怖しました。どういうモチベーションでこんなもん作る気になるんだ…。 PHPPHPの挙動はおおよそ次のようなものです。 PHPソースコードを受け取って構文解析して抽象構文木(AST)を作る
@ircmaxellさん作の「Recki-CT」を試してみたので紹介します。作者によるブログ記事「ircmaxell's blog: Introducing Recki-CT」によれば処理によってはHHVMやHippy VMより速いらしいのですが、この記事だけでは詳細がよくわからずモヤモヤしていました。今回ソースコードまで確認してみて、前作のPHPPHPを超える変態作品だとわかりました(参照:「PHPPHPがド変態であることに今さら気づいた」)。 Recki-CTを試してみる Recki-CTの概要を説明すると、既存のPHP関数に型情報のアノテーションを記述して呼び出し方を少し変えることで、その関数をJITコンパイルしてネイティブコードとして実行するPHPライブラリです。JITコンパイルにはlibjitのPHPバインディングであるJIT-Fuを利用しています。 では、さっそく試してみましょ
MLton is a whole-program optimizing compiler for the Standard ML programming language. MLton generates small executables with excellent runtime performance, utilizing untagged and unboxed native integers, reals, and words, unboxed native arrays, fast arbitrary-precision arithmetic based on GMP, and multiple code generation and garbage collection strategies. In addition, MLton provides a feature ri
As part of my 6-month research secondment to Microsoft Research in Cambridge I am taking up the challenge of migrating the current GHC build system based on standard make into a new and (hopefully) better one based on Shake. If you are curious about the project you can find more details on the wiki page. During this week I’ve been trying to wrap my head around the current build system and so far I
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く