¬<><∪∪ Version 1.0.0beta

¬<><∪∪は次の特徴を持ったコンパイラ・コンパイラです。

具象構文木は、終端記号のインスタンスを葉とし、非終端記号のインスタンスを葉以外のノードとする木だと考えることができます。¬<><∪∪における抽象構文木とは、具象構文木から一部のノードを取り除いたものです。取り除かれたノードの子供は、取り除かれたノードの親のノードの子供になります。¬<><∪∪では、ノードを取り除くかどうかは、インスタンスごとにではなく、非終端記号ごとに選択されます。¬<><∪∪では、BNFのプロダクション LHS ::= RHS に相当する表記は LHS { RHS }LHS = RHS; の2種類があり、後者で定義される非終端記号のインスタンスを構文木から取り除きます。具体的には、次の¬<><∪∪コード(部分)

                  expression = Addition | Subtraction | term ;
      Addition -> Expression { operand1:expression "+" operand2:term }
   Subtraction -> Expression { operand1:expression "-" operand2:term }
                        term = Multiplication | Division | factor ;
Multiplication -> Expression { operand1:term "*" operand2:factor }
      Division -> Expression { operand1:term "/" operand2:factor }
                      factor = "(" $label:expression ")" | $label:Number ;
        Number -> Expression { value:INTEGER }

に基づき作られる 1 * (2 + 3) の具象構文木は次のようになり、LHS = RHS;の形式で定義される非終端記号(破線の矩形で表されています)を取り除くことで、前述の抽象構文木が得られます。

具象構文木

Contents

docs/
ドキュメント
bin/
起動スクリプト
lib/
プログラムとリソース
examples/
サンプル