タグ

parserに関するfubar_fooのブックマーク (7)

  • えっ!? 1時間でオリジナルのプログラミング言語の開発を構文解析から!? - Qiita

    出来らあ! 1時間で構文解析から評価器まで書けるって言ったんだよ! プログラミング言語を作る。1時間で。 上のエントリは、Lispの『S式』みたいな式で構成されたプログラムを実行するインタプリタを作るというお話です。ストックやブックマークが結構たくさんついていて、みんな自分のオリジナルなプログラミング言語とか作ることに興味があるんだなあって思いました。 元ネタのorelangは、式をJSONのサブセットにすることでJSONパーサを流用し構文解析の手間を省いているところがキモだと思いますが、実は構文解析は案外簡単で、わざわざ避けて通るほどのものではなかったりします。また、S式の範囲に収めるとそれ以上構文の工夫は望めないので、『自分のプログラミング言語を作る』ということの面白みが薄れてしまう気もします。他にも、JSONのパーサを流用すると、構文エラーであるはずのコードまで受理されてしまうという

    えっ!? 1時間でオリジナルのプログラミング言語の開発を構文解析から!? - Qiita
  • antlr4/doc/index.md at master · antlr/antlr4

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    antlr4/doc/index.md at master · antlr/antlr4
  • Confluence Mobile - Confluence

  • ANTLRのお勉強 | threecourse's memo

    DSLを作りたいので、ANTLRのお勉強をしています。 ANTLRのサイトではどのドキュメントから読んでいけば良いのかわかりにくい部分があるので、整理してみました。 使いこなしているわけではないので、誤り等はご容赦下さい。 ANTLR 概要 ANTLRとは? ANTLRはパーサジェネレータと呼ばれるもので、「言語設計者が定義した文法から、言語の文法に従って記述されたコードを解析するパーサを生成する」ツールです。 DSL(ドメイン特化言語=特定の目的のためのミニ言語)を作成するための重要なツールになります。 Javaをメインの言語として開発されています。 ANTLRでは、以下を行うことができます。 字句解析・構文解析の文法ファイルからの字句解析器・構文解析器の生成 文法ファイルを記述すると、そこから字句解析器・構文解析器クラスを生成してくれます。 木文法からの抽象構文木の走査器の生成 木文法

  • ANTLRのお勉強 - programming_wiki

    ANTLRのお勉強 提供:programming_wiki 移動: 案内, 検索 「http://threeprogramming.lolipop.jp/mediawiki/index.php?title=ANTLR%E3%81%AE%E3%81%8A%E5%8B%89%E5%BC%B7&oldid=129」から取得 個人用ツール ログイン 名前空間 ページ 議論 変種 表示 閲覧 ソースを表示 履歴表示 操作 検索 案内 メインページ コミュニティ・ポータル 最近の出来事 最近の更新 おまかせ表示 ヘルプ ツールボックス リンク元 関連ページの更新状況 特別ページ 印刷用バージョン この版への固定リンク このページが最後に更新されたのは 2013年7月15日 (月) 10:38 です。 プライバシー ポリシー programming_wikiについて 免責事項

  • bison & flexメモ その6 - hakeの日記

    C言語でbisonとflexを使う方法のメモ 式の構文木を作ってみる。 mainからyyparse()を呼んで入力した式の構文木を作成してそのポインタを返す。そのポインタからeval_tree()で式を評価、free_tree()で構文木の為に確保したメモリの解放を行う。構文木はNode型の構造体を定義して、それを積み重ねていくことで作成している。 よくわからないのが、構文木のトップのポインタをmain側へ渡す方法。yyparse()で渡せないので、とりあえずnode.c内にstaticなポインタを作成してbison側でset_tree()を呼び、main側でget_tree()を呼ぶことで、これを介して渡しているけれども正しい方法なのか不明。 expr.y %{ #include <stdio.h> #include "node.h" /* デバッグ用 */ /*#define YYDE

    bison & flexメモ その6 - hakeの日記
  • プログラミング言語を作る yaccとlex

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

  • 1