タグ

yaccに関するtaka222のブックマーク (4)

  • プログラミング言語を作る yaccとlex

    yacc/lexとは Cでプログラミング言語の処理系を実装するのであれば、 多くの場合、yaccとlexというツールを使います。 実のところ、Cとyacc/lexで簡単なプログラミング言語を作る、というのは、 以前、「C言語ヨタ話 」で書いた「 電卓を作ってみよう」 の焼き直しになります。yaccとlexの説明もそちらに簡単に書いたので、 そちらを見てください――と言いたいところですが、 まあここでも軽く説明します。 内容的には重複、というかコピペしている部分もありますが。 プログラミング言語の処理系は、通常、以下のような手順を取ります。 字句解析 ソースプログラムを、「字句(トークン)」の並びに分割する処理です。 構文解析 トークンの並びから、解析木を構築する処理です。 この後、Cなどの機械語を吐くコンパイラや Javaのようなバイトコードを吐くコンパイラなら、 「コード生成」という処理

  • その4 「電卓を作ってみよう」 - C YOTA BANASHI

    電卓が欲しい! PCで文書作成とかしていて、ちょっと電卓が使いたくなることは、 ちょくちょくあります。 Windowsなら、スタートメニューからGUIベースの電卓が起動できますが、 立派なキーボードが付いてるPCで、 マウスで一所懸命ボタンをクリックするのなんて、 冷静に考えるとなんかバカです。 もちろんあの電卓でもキーボードから入力することは出来ますが、 演算子の優先順位は見てくれませんし、括弧を使った計算もできません。 それに、一般に、電卓で何十個もの数値を足す場合などは、 「ああ、入力ミスしてないかなあ」と途中で不安になるものです。 また、途中で入力ミスに気付いた場合、 最後の入力だけクリアして入れ直すことは一応出来るようなんですが、 どこまでどうクリアされてるのかよくわからなくて、 結局最初から入れ直したりしてません? 私は(プログラマの癖に)機械オンチなので、よく最初から入れ直し

  • Racc ユーザマニュアル

    Racc ユーザマニュアル バージョン 1.4 対応 Racc の使い方 racc コマンドリファレンス 規則ファイル文法リファレンス Parser クラスリファレンス パーサのデバッグ リリースノート

  • Super Technique 講座~ungetcってどう使う?

    ungetc ってどう使う? stdio.h には、あまり使わない関数も多いが、特にこの ungetc(3) は、特別なテクニックと共に使われるものなので、知らないプログラマは絶対知らないが、使い方を知っているプログラマにとっては、非常に汎用的に使える関数(というかアイデア)なのである。筆者はインタプリタが得意なので、この ungetc(3) は必須アイテムの一つなのである。というわけで、ungetc(3) の使い方を解説しよう。 とはいえ、この ungetch.htm は結構気合いを入れて書いたにも関わらず、アクセスが少ない! 重要なテクニックなんだけど、一般認知が低いな! これがクヤシイので、ここにBNFのちゃんとした解説を入れることにする。前半もちゃんと読むのだぞ! 字句の先読み 単純な数式処理 自然数式処理 lex と yacc 字句の先読み ungetc(3) は文字列をトークン

  • 1