タグ

2019年12月17日のブックマーク (10件)

  • Lisp系自作言語のx86_64コンパイラを作り始めたときの話 - Qiita

    ふと、あなた1は、Lisp風の新しいプログラミング言語と、そのネイティブコンパイラとを作りたい、と思い立ちました。 Common LispやSchemeのネイティブコンパイラは、いったいどのように作られているのか? 既存の実装のソースコードを繙ひもとけばいい話ではある。しかしそこではきっと、クロスプラットフォームにするための非質的なコードが繰り広げられているに違いない。まずは自分のアタマで、Lisp系言語のネイティブコンパイラに求められる質的な要素をゼロから考えてみようじゃないか。 この記事では、ガベコレの仔細やインライン展開などの最適化は扱いません。あくまでLispコードのネイティブコードへのコンパイラを初めて実装したときの備忘録的なものです。アセンブリは少しわかるけどマシンコードを直接読むのは初めてという人向け。 何コンパイル? どのようにネイティブコンパイラを作るかということでい

    Lisp系自作言語のx86_64コンパイラを作り始めたときの話 - Qiita
  • Menhirが便利

    こんにちは、びしょ〜じょです。これはWORD Advent Calendar 2017の記事です。 12月3日といえば冴草きいちゃんの誕生日!!!! みんなで祝いましょう。 と思ったら『NEW GAME!』の遠山りんさんの誕生日でもあるのか!! この日はめでたいなぁ、国民の祝日にしましょう。 WORDとは何か 1. はじめに みなさんOCamlは書いてますか。今年はほとんどOCamlとLaTeXしか書いてません。 OCamlといえばメタランゲージとのことですので、メタランゲージでランゲージを作りたくなります。 syntax.mlみたいなファイルにデータタイプを定義して、そのあとどうしますか。 全部手打ちでしょうか、それとも… 2. パーザージェネレーター 人類は偉い! 人類は偉いのでパーザー自体を書かずともいい雰囲気のものを書くとパーザーを作ってくれるパーザージェネレーターというものがあり

    Menhirが便利
  • Menhir と ocamllex のサンプルコードをいくつか - Qiita

    はじめに プログラムを書いていると、ちょっとした言語処理系を作りたくなることがあります。ちょっとした言語処理系を作ろうとしたとき、OCamlは良い選択肢です。何故良い選択肢なのかはよくわかりませんが、実際書いてみて快適でしたし、えらい人もそう言ってましたし、まあいいや、とにかく良い選択肢です。 しかし、素のOCamlで構文解析器や字句解析器を作るのはしんどいです。手を抜こうと思ったら構文解析器生成器Menhirと字句解析器生成器ocamllexを使うのが常套手段でしょう。 が、普通の人はそう頻繁に新しく言語処理系を作ったりしませんので、 Menhir や ocamllex の使い方を忘れがちです。こうなると困ります。例えば「半年ぶりに言語処理系を作りたい気分になっちゃった」というとき、「あれっ? Menhir ってどう書くんだっけ?」となり、こうなると気分が重くなり、結果「言語処理系つくら

    Menhir と ocamllex のサンプルコードをいくつか - Qiita
  • SML: 入門記事を書きました - type t (* void *)

    この記事はML Advent Calendar 20152日目の記事です。 @eldeshさんたちとSMLの同人誌を書こうという話をしていたのですが、 あえなく冬コミに落ちたので使わなかった記事を公開します(実はもう公開状態なのですが 下のリンクからintro.pdfをダウンロードしてみてください。 github.com 問題点 細かいレイアウトの調整をしていないのでやや見づらい部分がある、はみ出している部分がある 細かいチェックをする前に落ちたことが分かったので記述の内容をそこまで精査してない 目次の日語が化けている ですがまぁかなり詳しくSMLの機能の気持ちをまとめたと思いますので役に立つと思います。 言語オタク向きです。 pullreq, 間違いの指摘大歓迎ですよろしくお願いします。

    SML: 入門記事を書きました - type t (* void *)
    sonota88
    sonota88 2019/12/17
  • リージョンについて | κeenのHappy Hacκing Blog

    このエントリは言語実装Advent Calendar 2015 10日目の記事です κeenです。今日はある程度gcに頼らずメモリを管理する手法、リージョンについて話そうと思います。 リージョン推論とそのアルゴリズムまで話せればよかったのですがサーベイが間に合わず… スタックベースのメモリ管理 gcのない言語、例えばcでも自動で解放される類のメモリがあります。ローカル変数です。 ローカル変数のメモリ確保/解放戦略は単純です。ブロックの開始に確保され、ブロックの終わりに解放されます。 { int x; // <- xが確保される { int y = 2; // <- yが確保される { int z = 3; // <- zが確保される x = y + z; } // <- zが解放される } // <- yが解放される } // <- xが解放される ブロックはネスト構造をとるのでメモリ管理

    リージョンについて | κeenのHappy Hacκing Blog
  • YARVのバイトコードをRubyに変換する話 - Qiita

    RubyのVMとして知られているYARVのバイトコードをRubyに変換するプログラムを昔書いたことがあるのでその話を書きます。YARVについてはYARV Maniacsを見てもらうのが一番だと思います。 なぜそんなものを? 昔、YARV2LLVMなるものを作っていました。YarvのバイトコードをLLVMに変換するというプログラムです。効率を上げるために型推論をやったりとかしているのですが、詳細は今回の話とは関係ないので詳しくは、Ruby会議で発表した資料でも見てください。 YARV2LLVMではRubyが実行時に提供しているメタプログラミングの機能をコンパイル時に提供するためにマクロ機能を実装しました。マクロはたとえば次のように定義します。 YARV2LLVM::define_macro :attr_reader do |arg| arg.each do |argele| name = a

    YARVのバイトコードをRubyに変換する話 - Qiita
  • コンパイラ: JVMバイトコードへのコンパイル - type t (* void *)

    言語処理系 Advent Calender1日目の記事です。 初日なのであまりハードルを上げすにライトなネタを。 趣味でコンパイラを作る際に最終的な出力ファイルを何にするのかは悩みどころです。 手づくりの温かみのあるバックエンドでやるのか、LLVMやC--、COINSを経由するのか、 はたまたJVMバイトコードなどのバイトコードにするのか。 CやJavaScriptに出力するのは相対的に簡単そうで実用的だなぁという感触もあります。 今回はそれなりの言語をちゃちゃっと走らせるための対象プラットフォームとしてJVMを検証するために、 min-camlのサブセットのJVMバックエンドを実装してみました。 サブセットと言っているのはクロージャの対応が終わってないからです。実装の見通しは立ってます。 感想としてはJVMバイトコードへのコンパイルはそれほど難しくないけども JVM特有のつらみがあるとい

    コンパイラ: JVMバイトコードへのコンパイル - type t (* void *)
    sonota88
    sonota88 2019/12/17
  • Ruby on Jam! IchigoJamで動くROM8KBのミニ Ruby VM と、mruby ver2.0対応はじめのいっぽ - mmruby for LPC1114

  • なんとなくで書かないで!HTML5を書く時に気にしてみたいタグごとのお約束 - Qiita

    はじめに この記事は クラウドワークスアドベントカレンダー2019 16日目の記事です。 こんにちは!日25回目の誕生日を迎えたアクセシビリティ向上隊長 みーたです。 昨日は同じチームの@yamanokuさんによる「みんなに知ってもらいたいデザインシステムのこと」でした。 文中で紹介されていた「悲劇的なデザイン」は私もオススメします:) 私は今回、普段みなさんがHTMLを書く時に、よく使うタグごとでちょっと気をつけてみてもらいたい!と思う点をまとめてみました。 初学者ではありますが、正しくHTMLを理解してもらいたいって気持ちがあるので、マサカリは怖くない程度に投げていただいて、みんなで知識を共有していきたいです。 👻 真冬の怪談 突然ですがちょっと怖い話を... 先日、とある画面を改修しようと思って、今どんな感じにスタイル当たってるんだろうと番環境を見てみたんですよ。 カードタイプ

    なんとなくで書かないで!HTML5を書く時に気にしてみたいタグごとのお約束 - Qiita
  • 【数学】NHKから国民を守る党からNHKを守る党からNHKから国民を守る党を守る党 - Qiita

    ググっても見当たらなかったので。 背景 NHKから国民を守る党のツイートを見て、「NHKから国民を守る党からNHKを守る党」というオヤジギャグが浮かんだ。この党はおそらく「NHKから国民を守る党」によるNHKへの抗議活動からNHKを守ることを掲げるのだろう。 さらに、その党に対抗して「NHKから国民を守る党からNHKを守る党からNHKから国民を守る党を守る党」という党も考えられることに気づいた。この党はおそらく「NHKから国民を守る党からNHKを守る党」による「NHKから国民を守る党」への抗議活動から「NHKから国民を守る党」を守ることを掲げるのだろう。 さらに、その党に対抗して「NHKから国民を守る党からNHKを守る党からNHKから国民を守る党を守る党からNHKから国民を守る党からNHKを守る党を守る党」という党も考えられることに気づいた。この党はおそらく「NHKから国民を守る党からNH

    【数学】NHKから国民を守る党からNHKを守る党からNHKから国民を守る党を守る党 - Qiita
    sonota88
    sonota88 2019/12/17