2026年1月25日日曜日

🌐SLR/C LR/LALR 入門:LL 法との違いと特長まとめ

 構文解析にはトップダウン型(LL法)とボトムアップ型(LR法)があります。本記事では SLRLALRCLR といった代表的な LR パーサーの特徴を、LL 法との違いも含めて分かりやすく比較します。初心者でも理解しやすい図解付きで、各手法の利点と欠点も整理しています。

LL、LR、SLR、LALR、CLR はパーサー(構文解析器)の種類です。パーサーは、コンパイラの一部として使用され、ソースコードを抽象構文木(AST)に変換します。これらの略語は、各パーサーがどのように構文解析を行うかを表しています。

まずはボトムアップ(LR)、トップダウン(LL)の差を知ろう

ボトムアップ(LR)

ボトムアップ構文解析では、まずテキストの最下層の細部を認識し、次に中層の構造を認識し、最上層の全体構造を最後に認識します。
ボトムアップ解析では、左下端からツリーを検出して処理し、徐々に上方および右方向に作業を進めます。パーサーは、実際のデータ ツリーを作成せずに、構造階層の低レベル、中間レベル、および最上レベルに対処することができます。ボトムアップ構文解析は、ある構成要素のすべての部分をスキャンして解析するまで辛抱強く待ち、結合された構成要素が何であるかを確定させます。

トップダウン(LL)

この逆がトップダウン パーシングで、入力の全体的な構造を最初に決定(または推測)してから、中間レベルの部分を処理し、すべての最下位レベルの詳細の完成を最後に残すというものである。トップダウン パーサーは、階層ツリーを発見し、上から順に処理し、まず下へ、次に右へと漸進的に作業を進めます。トップダウン パーサーは、構成要素の左端の記号をスキャンしただけで、その構成要素のどの部分もまだ解析していないときに、その構成要素が何であるかをかなり早い段階で熱心に決定します。左隅解析は、各サブツリーの左端に沿ったボトムアップと、解析ツリーの残りの部分に対するトップダウンの両方式を実行するハイブリッド手法です。


トップダウン・パーサーには、デバッグが簡単であること、文法内の任意の非終端まで解析できること、解析中に解析木の上下に値(属性)を渡すことができることなど、(より一般的な文法以外にも)多くの利点があります。

大きくLR(ボトムアップ)とLL(トップダウン)があって、LRの種類がたいへん多い

ボトムアップ構文解析はバックトラックによって行われることもあります。しかし、より一般的には、ボトムアップ パーシングは LALR パーサーなどのシフト リダクション パーサーによって行われます。


構文木についても知る

コンピュータサイエンスの分野では、プログラミング言語で書かれたソースコードの抽象的な構文構造を木で表現したものを抽象構文木(AST)と呼んでいる。

LR


コンピュータサイエンスでは、LR パーサーは決定論的文脈自由言語を線形時間で解析するボトムアップ パーサーの一種である

LR パーサーは決定論的であり、推測やバックトラックを行わず、線形時間内に正しい構文を 1 つだけ生成します。これはコンピュータ言語には理想的ですが、LR パーサーは人間の言語には適しておらず、より柔軟な方法が必要ですが、必然的に時間がかかることになります。

LR パーサーは先行パーサーやトップダウン LL 構文解析よりも広範囲の言語と文法を処理できます。 これは LR パーサーが見つけたものに専念する前に、ある文法パターンのインスタンスの全体を見るまで待っているからです[3]。LLパーサーは、そのパターンの左端の入力記号を見ただけで、何を見たかをもっと早く決定したり推測したりする必要があります。

LL

LL文法、特にLL(1)文法はパーサーの構築が容易であり、多くのコンピュータ言語がLL(1)に設計されているため、実用上非常に興味深い[8]。また、LL文法は再帰的降下パーサーによって解析することができる

LLパーサー(Left-to-right, leftmost derivation)は制限付き文脈自由言語用のトップダウンパーサーである。

画像
https://amzn.to/3BIJ0XP

構文解析は、トークン列から文法規則に従った文の解析を行うための手法です。その中でも、LL、LR、SLR、LALR、CLRなどのアルゴリズムがあります。

  • LL: 左から右に読み進め、最も左の導出を採用する再帰下降パーサーを生成する手法です。左再帰に弱いという欠点がありますが、単純な文法に対して高速な処理ができるというメリットがあります。

  • LR: 左から右に読み進め、最も右の導出を採用するシフト-リデュースパーサーを生成する手法です。スタックを用いた構文解析手法で、強力な文法にも対応できるというメリットがありますが、パーステーブルの生成が複雑であるというデメリットがあります。

  • SLR: LRの一種で、ステート数を削減することで、パーステーブルのサイズを小さくすることができる手法です。しかし、LRに比べて強力な文法に対応できないというデメリットがあります。

  • LALR: LRの一種で、パーステーブルのサイズを小さくすることができる手法です。ステート数を削減することで、SLRに比べて強力な文法に対応できるというメリットがありますが、正確性が劣る場合があります。

  • CLR: LRの一種で、LRよりも強力な文法に対応できる手法です。パーステーブルのサイズが最小であるため、正確性が高いというメリットがありますが、パーステーブルの生成が非常に複雑であるというデメリットがあります。

LALRパーサーは、標準的なLRパーサーを簡略化したものです。

https://en.wikipedia.org/wiki/LALR_parser

文法が左再帰とはどういう事を言いますか?


具体的なプログラミング言語における左再帰文法の例を挙げると、C言語やその派生言語(例えばC++、Java)が良い例です。これらの言語では、特に式の解析に左再帰文法がよく用いられています

文法が左再帰であるとは、その文法の生成規則の中に、ある非終端記号が自身を含む導出規則を持ち、その再帰が左側(導出規則の始めの部分)にある状態を指します。これは構文解析時に特に注意が必要な点で、特にLLパーサーのようなトップダウン構文解析法では問題を引き起こすことがあります。

左再帰は、無限ループに陥る可能性があるため、特にトップダウン構文解析では問題となります。トップダウンパーサーは非終端記号から始めて導出を行うため、左再帰があるとパーサーが無限にその非終端記号の導出を繰り返してしまう可能性があります。

この問題を解決する一つの方法は、

左再帰の除去です。左再帰のある文法を書き換えて、同等の非左再帰的文法に変換することができます。これにより、トップダウンパーサーでも無限ループに陥ることなく、文法を解析することが可能になります。

左再帰の除去の一般的な方法は、左再帰的な規則を右再帰的な規則に書き換えることです。

LL LR SLR LALR CLRなど、コンパイル手法を操作できるツールライブラリはありますか?

コンパイラ構築で使用されるLL、LR、SLR、LALR、CLRなどのパーサ生成アルゴリズムを操作できるツールやライブラリはいくつかあります。これらは、言語の文法を定義し、その文法に基づいてソースコードを解析するパーサを自動生成するために使用されます。以下はそのようなツールやライブラリの例です:

  1. ANTLR (ANother Tool for Language Recognition): LL(*)パーサを生成するための強力なツールです。複数の言語への出力をサポートしており、様々なプログラミング言語で使用することができます。

  2. Bison: GNUプロジェクトの一部として開発されたBisonは、LALRパーサを生成するためのツールです。Yaccの互換性を持つため、多くのUNIXシステムで広く使用されています。

  3. Yacc (Yet Another Compiler Compiler): 伝統的なLRパーサジェネレータであり、多くのUNIXシステムに標準で含まれています。BisonはYaccの代替品として開発されました。

  4. Flex: レキシカルアナライザジェネレータで、BisonやYaccと組み合わせて使用されることが多いです。Flex自体はパーサを生成するものではありませんが、パーサと連携して使用されます。

  5. Gold Parsing System: LR、LALR、およびLLパーシングアルゴリズムをサポートするパーサジェネレータです。柔軟な文法定義と複数のプログラミング言語への出力をサポートしています。

  6. Menhir: OCamlで書かれたLR(1)パーサジェネレータで、OCamlプログラマーにとっての選択肢です。

2026年1月24日土曜日

構成主義と構造主義の違いを教えてください ラップで

 

Yo、考える方法、知覚の全て、
構成主義は経験を信じるセット。
知識は静的じゃない、動的なフロー、
経験から築く、それがこの主義の魅力所。

一方、構造を探るのは別の流れ、
構造主義はそのシステムを探る旅。
関係性、パターン、その裏側、
構造がキー、それがこの主義の楽しさと奥深さ。

だから、知識を築き上げるとき、
それが構成主義するんだ、分かるかい?
しかし、もっと深く見て分析したいとき、
構造を見つける、それが構造主義、明確に。

語尾を上げて言うなら、
「経験から学ぶのが構成主義」
そして構造を探るなら、

「それが構造主義だ」と言えるだろう。


構成主義 (Constructivism):

  1. 基本的な考え: 構成主義は、知識や意味は個人や社会集団によって「構築」されるという考え方を中心に据えています。現実は主観的に解釈され、経験や相互作用を通じて形成されると考えられます。

  2. 応用領域: 教育学や心理学では、学習者が新しい情報を既存の知識と結びつける過程を重視する教育手法や理論として構成主義が用いられます。

  3. 代表的な人物ジャン・ピアジェ (Jean Piaget) レフ・ヴィゴツキー (Lev Vygotsky) は、構成主義の心理学的アプローチの中心的な人物として知られています。

構造主義 (Structuralism):

  1. 基本的な考え: 構造主義は、さまざまな文化的・社会的現象の背後にある「構造」を解明しようとするアプローチです。この構造は、表面的な現象や内容よりも、その背後に潜む関係性やパターンに焦点を当てます。

  2. 応用領域: 言語学、文化人類学、文学批評など、多くの学問分野で構造主義の方法論が用いられています。

  3. 代表的な人物フェルディナン・ド・ソシュール (Ferdinand de Saussure) は、言語学における構造主義の基礎を築いたとされ、クロード・レヴィ=ストロース (Claude Lévi-Strauss) は、文化人類学における構造主義の代表的な人物として知られています。

まとめ:

  • 構成主義は「知識や現実の構築」に重点を置き、主観性や相互作用を強調します。

  • 構造主義は「背後にある構造」を明らかにしようとするアプローチで、関係性やパターンの解明に焦点を当てます。

2026年1月18日日曜日

深沢七郎自伝 「生まれてくるのは屁みたいなもの」世代を超えた価値観の奇跡カップリング 正宗白鳥の死

深沢七郎自伝 「生まれてくるのは屁みたいなもの」世代を超えた価値観の奇跡カップリング 正宗白鳥の死

深沢七郎自伝 「生まれてくるのは屁みたいなもの」世代を超えた価値観の奇跡カップリング 正宗白鳥の死

#小説#読書の秋2020#三島由紀夫#文筆業#深沢七郎#正宗白鳥

或る年の秋の、或る日曜日の午後で、雨がシトシト降っていた。私は或る駅の人ゴミの中で、偶然、知人に出会ったのである。

或る年の秋の、或る日曜日の午後で、雨がシトシト降っていた。私は或る駅の人ゴミの中で、偶然、知人に出会ったのである。
「正宗白鳥が死んだよ」
と私はその人に言った。昨日まで「正宗先生」と言っていたのだが、「センセイ」とか「サマ」などという敬称は、いらないのだ。 ーーー「白鳥の死」 深沢七郎 1963

かっこいい。場面文体と完全にピントが合っている。何食ったらこんなにいい描写が書けるのか。思想もかっちょいい、生きてるうちは先生としたっていたものも、死んだら敬称は不要だという。ほとんど宗教観でもと呼べるものが深沢七郎の文章の根底にある。

正宗白鳥が文筆業を始めたのは明治末期で、深沢七郎はまだ生まれていなかった。世代で考えても何週か前で、レジェンドというよりも、誰あんたという気持ちだったろう。しかしどういうわけかこの二人は気があったみたいだった。

参考: 深沢七郎 / 正宗白鳥

小林秀雄と正宗白鳥が世代違いの論争をしていたのが、深沢七郎がデビューする20年も前で、その10年後に三島由紀がデビューするが、世代的には三島由紀夫と深沢七郎は同じで、しかしながら方々でギター弾いて渡り歩いていて、なんか気が向いたのか小説を書き始めたんだったか、もうちょいなんか子供の時に色々読んでたみたいな話も何処かで読んだ記憶がある。

深沢七郎のコンセプトはおそらく般若心経だと思うが、これにプレスリー、ビートルズと、比較的ポップな音楽が続く。そしてフラメンコ。道楽オシャレすぎる。

今が2020年だから20年前にビルゲイツとジョブスが喧嘩したり仲直りしたりして、10年前にiPhoneが出てきた、VRはその頃からコンセプトはあったが、年を経てビルゲイツがVRに投資し始めるみたいなもんか。実際はビルゲイツはアフリカで便所を作っているらしい。

生まれてくるのは屁みたいなもの

深沢七郎にとって、文筆業は屁のこきあいであって、なんとなくそういう価値観が何週か回って正宗白鳥とシンクロしたに違いない。白鳥も良くそれがわかっていた

2000年以降のチョコ“新世代”ブランド例(創業年つき)

 2000年以降(おおむね2000年代半ば以降)は、Bean to Bar(カカオ豆から自社で製造)シングルオリジン倫理調達を前面に出す“新世代ブランド”が一気に増えました。そこで「2000年以降に立ち上がった(または2000年代に実質的にブランド化した)チョコ」から、押さえどころを挙げます。


倫理・ミッション型(規模は大きいが2000年代発)

  • Tony’s Chocolonely(トニーズ・チョコロンリー):2005年創設。児童労働や搾取問題への抗議から始まったブランド。

  • Original Beans(オリジナルビーンズ):2008年から活動(公式に“Since 2008”)。森林保全・再生型を強く打ち出す。

Bean to Barで“クラフト”を象徴する系(2006-2013あたりが山)

  • Theo Chocolate(セオ):2006年設立。米国のオーガニック/フェアトレード系の象徴格として語られがち。

  • Askinosie Chocolate(アスキノージー):2007年創業。ダイレクトトレードの語りと相性が良い。

  • Mast Brothers(マスト・ブラザーズ):2007年創業。クラフト潮流の“象徴”として言及されやすい一方、当初の製法主張をめぐる論争も有名。

  • Fruition Chocolate Works(フルイション):クラフト系の代表格として流通でよく見かけます(創業年は公式ページだけだと取りにくく、年表ソースを追加確認した方が安全です)。

  • Dandelion Chocolate(ダンデライオン):2010年創業(日本公式でも明記)。シングルオリジンの“分かりやすい現代形”。

  • Raaka(ラーカ):2010年に“作り始めた”年表が公式にあり、NYクラフト文脈で強い。

  • Ritual Chocolate(リチュアル):2010年共同創業の記載あり。USクラフトの重要銘柄として扱いやすい。

  • Dick Taylor Craft Chocolate(ディック・テイラー):2010年に製造開始、創業年として扱われることが多い。

  • Omnom(オムノム):2013年にレイキャビクで設立。北欧的デザインとフレーバーで現代感が出ます。

“超高級・体験化”路線(2000年以降っぽさが強い)

  • To’ak(トアック):2013年設立。ヴィンテージ酒のように「熟成」「希少品種」「体験」を前面に。

本を2000年以降版に更新するなら、章立ての軸(最短)

  • Bean to Bar化(製造工程を語れるブランドが増える)

  • シングルオリジン化(産地の“ワイン化”)

  • 倫理とトレーサビリティ(Tony’sやOriginal Beansのように、味以外の価値が中心へ)

  • 高級化の方法が変わった(箱ではなく、ストーリーと体験で高級にする。To’ak型)