タグ

あとで読むとlanguageに関するuokadaのブックマーク (4)

  • LL(1)言語を作るのは難しい、しかしLL(1)言語は素晴らしい

    言語実装 Advent Calendar 2022の6日目です。 記事ではLL(1)の素晴らしさと難しさについてDesk言語の開発の体験から語ります。 LL(1)とは LL(1)についてご存知でしょうか。 「LL(1)言語」「LL(1)文法」「LL(1)パーサ」でそれぞれ定義がありますが、一番分かりやすい「LL(1)パーサ」をざっくりいうと、ソースコードの頭から順番にトークン(ifや1や{など)を見ていきながらASTを構築するための情報を集める[1]パーサのうち、現在見ているトークンの種類を確認するだけで(それ以上の先読みなしに)ASTのノードの種類(IfやIntegerLiteralやBlock)を決定できるもののことです。 そしてLL(1)パーサでパースできるのがLL(1)文法であり、LL(1)言語であるというのがざっくりした説明です[2]。 次は、LL(1)パーサ(言語)のメリット

    LL(1)言語を作るのは難しい、しかしLL(1)言語は素晴らしい
  • シェルスクリプトを書くのをやめる - blog.8-p.info

    今年から、できるだけシェルスクリプトを書くのをやめようとしている。私が毎日 zsh に打ち込んでいるのも広義のシェルスクリプトだし、自分用の雑なスクリプトを書くことはあるけれど、チームの他の人も将来に使ったり改変したりするようなものは、なるだけ他の言語を使っている。 シェルスクリプトを書くのは難しいし、その難しさは、学ぶに値しないといったら言い過ぎかもしれないけれど、2021年に初心者が取り組むべき問題とは言い難いと思う。 シェルは悪いプログラミング言語である Bash Strict Mode とかを使ってみても、シェルスクリプトには落とし穴が多すぎる。自分で書いたものを自分で使っている分には大丈夫なのだけど、スクリプトがチーム内で使われるようになると、考慮していなかったところ、例えばファイル名に空白文字が含まれるとか、そういうレベルの微妙なところで、ちゃんと書かれていないスクリプトは壊れ

  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

  • Succinctness is Power

    簡潔さは力なり---Succinctness is Power--- Paul Graham, May 2002. Copyright 2002 by Paul Graham. これは、Paul Graham:Succinctness is Power を、原著者の許可を得て翻訳・公開するものです。 プロジェクト杉田玄白正式参加テキスト。 <版権表示> 和訳テキストの複製、変更、再配布は、この版権表示を残す限り、自由に行って結構です。 (「この版権表示」には上の文も含まれます。すなわち、再配布を禁止してはいけません)。 Copyright 2002 by Paul Graham 原文: http://www.paulgraham.com/power.html語訳:Shiro Kawai (shiro @ acm.org) <版権表示終り> Paul Graham氏のエッセイをまとめ

    Succinctness is Power
  • 1