タグ

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

  • CL-YACC

    CL-Yacc is a LALR(1) parser generator for Common Lisp, somewhat like Yacc, GNU Bison, Zebu, lalr.cl or lalr.scm. CL-Yacc は提供するシンボルを `yacc` パッケージからエクスポートしています. (use-package 'yacc) パーサーは字句解析器 (lexer) の出力を消費してゆきます.字句解析器は終端 記号のストリームを出力します. CL-Yacc は字句解析器が二つのシンボルを返 す,引数を取らない関数である事を仮定しており,字句解析された結果を構文 規則から導かれたアクションへと渡します.字句解析器は入力情報がなくなっ たら,単に `nil` を返さなければなりません. 非常に単純な,リストからトークンを取りだしてゆく字句解析器を示します. (defu

    mhrs
    mhrs 2006/05/03
    「The CL-Yacc Manual 翻訳」
  • LispUser.net : 最高にキモい Lisp コードを書いてみよう with 100 行リーダーマクロ

    LISPUSERLISPMEMOLisp is like a ball of mud - you can throw anything you want into it, and it's still Lisp. -- Anonymous Ruby 方面でみかけたネタに触発されました.Lisp はプログラマブルな言語な のでリーダーもプログラマブルです.そこでリーダーをいじって let や defun などの構文を括弧じゃなくて end にでもしてみましょうか. 100 行程度を目標にトライしました.使ったライブラリは CL-Yacc のみです. できあがったのがこちら. #@suck-lisp defun fib (n) if (< n 0) (error "oops") elif (= n 0) 0 elif (= n 1) 1 else let x <- (fib (- n 1))

    mhrs
    mhrs 2006/05/03
    “CL-Yacc 入門”
  • PLY (Python Lex-Yacc)

    原文 Documentation version: $Header: /cvs/projects/PLY/doc/ply.html,v 1.3 2004/05/27 17:30:56 beazley Exp $ PLY Version: 1.5 目次 Introduction PLY概要 Lexの例 Lex実装ノート 基的なパージング yaccの例 文法規則関数の結合 空生成規則 曖昧文法を扱う parser.out ファイルについて 構文エラーの処理 行番号の追跡 ASTの構築 Yacc 実装ノート パーサとLexer State Management Pythonの最適化モードを使用する 次にすべきこと Introduction PLYはポピュラーなコンパイラ構築ツールであるlexとyaccのピュアPython実装である。この実装は、先人の

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

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

  • 1