タグ

プログラミング言語と--に関するsh19910711のブックマーク (6)

  • Lox (Crafting Interpreters)にdefer文を追加する - 井山梃子歴史館

    Crafting InterpretersはRobert Nystromによるインタプリタ方式のプログラミング言語処理系の作り方の解説である。 ハードカバー・電子書籍が発売されているほか、著者のページでWeb版が無料公開されており、自作言語界隈では人気を博している。 Crafting Interpretersでは著者が考案したLox言語のインタプリタを実装していくこととなる。の前半部分ではAST評価器を扱い、後半部分ではバイトコードVMを用いたインタプリタを実装する。 Lox言語はシンプルとはいえ、クロージャやクラスの継承といった高度な機能も備えたオブジェクト指向スクリプト言語であり、読者は小さなインタプリタからステップ・バイ・ステップでだんだんと完全な処理系を構築していく。 Crafting Interpretersの素晴らしいところには次の点が挙げられるだろう: 平易な文章に加えて

    Lox (Crafting Interpreters)にdefer文を追加する - 井山梃子歴史館
    sh19910711
    sh19910711 2024/05/07
    "Web版が無料公開されており自作言語界隈では人気を博している / 前半部分ではAST評価器 + 後半部分ではバイトコードVMを用いたインタプリタを実装 / GitHubリポジトリで網羅的なテストケースを公開" 2021
  • PEG Parser Generator + Packrat Parserを実装してみた

    詳しい解説はネット上に沢山存在するので割愛しますが、ご覧のようにEBNFの表現の一つに(EBNFはいくつかの表現方法があるようです。例えばこれはW3Cが定義しているものです)似ています。違いは先に述べたようにChoiceの働きが異なるのと、文法上に先読みが存在することです。 このPEGを使って四則演算を受理するシンプルなルールを書くとすると、例えばこのようになります。 # expressionからパースが始まるとする expression <- additive additive <- multitive ("+" multitive / "-" multitive)* multitive <- primary ("*" primary / "/" primary)* primary <- "(" expression ")" / number number <- digit+ digit

    PEG Parser Generator + Packrat Parserを実装してみた
    sh19910711
    sh19910711 2024/05/05
    "PEGを知ったのは5、6年前で、CoffeeScriptとかelmとかTypeScriptとか、AltJSが実用的なものとして認知され始めた時期 / PEG.jsを久しぶりに触っているうちにPEG Parser Generatorそれ自体を実装してみたいという気になって" 2018
  • どうやってPureScriptに慣れたのか - oreshinyaのブログ

    はじめに PureScript Advent Calendar 2017 - Qiitaの1日目の記事が埋まっていなかったので大急ぎで書くことにしました。 元々はRubyJavaScriptなどの動的言語をメインでメシをべているプログラミング的ゆとり世代であった私が、 少なくとも一般論としては学習が大変だと評されているPureScriptを、 (上手いか下手かは別として)普通に書けるようになった要因を記憶の限り辿ってみようと思います。 つまり、この記事は、「最初からPureScriptの勉強のためにやっていた」ということではなく、「たまたまそういう道を通ったけど、 あれがよかったのかもしれない」という回想です。 道のはじまり この道のはじまりはHaskellでした。 特に仕事で使うわけでもなく、関数型言語に興味があったわけでもなく、ただなんとなく暇を持て余していたので暇つぶしとして思い

    どうやってPureScriptに慣れたのか - oreshinyaのブログ
    sh19910711
    sh19910711 2024/04/27
    "Haskell: PureScriptよりも親切なエラーメッセージ + 調査に困らないし、コンパイラが勝手に訓練してくれます / Elm: ブラウザという戦場ではどこでどのように型付けしているのか、という世界観をつかむ" 2017
  • moonbit で json パーサーを書いてみた 感想

    エアプにならないために、実際に moonbit を使ってコードを書いてみた感想を書く。 JSON Parser を書いた パッケージレジストリである https://mooncakes.io を見た限り、使いやすい json parser がなさそうなので、とりあえず自分用のをでっち上げた。 mooncakes.io に publish してあるので、 moon add mizchi/json で使える。品質が良くなくても ネームスペース付きで publish するので別に邪魔にならない気がした。 なんで作ったかというと、公式 example の cloudflare workers の example は単純なフィボナッチを計算するだけで、構造的なデータを返すことができない。 moonbit と js 間の文字列の受け渡しについては、あとで別の記事を書く。 使い方 fn main { l

    moonbit で json パーサーを書いてみた 感想
    sh19910711
    sh19910711 2024/04/21
    "Moonbit: TypeScript を Rust の文法で書いてる感覚 + moon test が十分使いやすい / Copliot: usage.mbt として vscode にピン留め + copilot は補完に開いているファイルをみる + Rust との差分を教えている"
  • クリックだけでプログラムが作れる夢のプログラミング環境作った - ABAの日誌

    ウソです。いやウソではないか……誇張です。 sarad p5.js demo 上のデモ開いて、左クリックでコード生成、右クリックでコード削除。運が良いと何かのグラフィックスを描くプログラムができる。あまりに何も描かないようだったら一旦右下の[Reset]を押して下さい。グラフィックスAPIはp5.js利用。 左クリックで生成されるコードはRecurrentJSを使ったLSTMで作られている。LSTMやRNNをつかった文書生成はいろんなところでやられていて、有名どころだとThe Unreasonable Effectiveness of Recurrent Neural Networksがある。この記事ではLinuxのソースコードをわせてCのプログラムを作る例もある。ただ、自動生成でできる文やプログラムはいわゆるワードサラダで、文には意味が無いし、プログラムはコンパイルできない。 ならワー

    クリックだけでプログラムが作れる夢のプログラミング環境作った - ABAの日誌
    sh19910711
    sh19910711 2024/02/18
    "生成されるコードはRecurrentJSを使ったLSTMで作られている / 自動生成でできる文やプログラムはいわゆるワードサラダ / ならワードサラダなプログラムでも実行できる処理系を作ればいいんではないか" / 2016
  • 正規表現の"正規"とは何か気になったら正規表現の歴史を紐解くことになってしまった話

    正規表現の"正規"って何 ある時ふと思いました。 「正規表現の"正規"って何だろう?」 「何を根拠に"正規"を名乗っているのか?」 と。 「誰かが『これが正規の表現だ』と言ったはず」で、 「それは周りにどうやって"正規"だと認められたのだろう」 ということが気になったので調べてみました。 "正規表現"という名前でなくて、"ジャックさんの表現"とか"記号ごちゃごちゃ表現"だったらこんな疑問も持たなかったのですけど。 数学における"正規"とは 一般に"正規"というと、"正規品"や"正規の手順"といったように"物の(genuine)"や"公式な(official)"といった意味がありますが、数学の"正規"はちょっと違います。 数学で"正規"(および"正則"、英語では"regular"または"non-singular")は、ある概念に強い制限をかけたもの、という意味です。強い制限をかけたものは取

    正規表現の"正規"とは何か気になったら正規表現の歴史を紐解くことになってしまった話
    sh19910711
    sh19910711 2022/01/03
    "正規表現は、1970年ごろケン・トンプソンによってエディタQEDに導入されました。そして、後継のedにも受け継がれました。edからsed(1974年)、grep(1970年代前半)などが派生しました。edの後継としてex(1976年)、vi(1976年)が誕生"
  • 1