非専門的シンギュラリティー研究所

無限に動き続けるシステムを表す方法を AI なども使って考えていきます。

自由モノイドのイテレーター(17)

自由モノイドプログラミング言語の作成(MonIter バージョン1.2 仕様(1))

C# 形式のコードを変換する機能は作成できました。

ここで、この言語を改造してモノイド的論理プログラミング言語(MonoLog)、モノイド的クロージャー調査用言語(MonoClosure)を作る計画なので、各クラスを説明しておきます。

構文要素に対応するインターフェースとクラス

階層はインターフェースの下はそのインターフェースを実装するクラス、その下はそのクラスを構成するクラスを表します。

  • interface CodeGeneratable
  • class Prog
  • interface Statement : CodeGeneratable
    • class Definition : Statement
      • class ParameterName : CodeGeneratable
    • class ExpressionStatement : Statement
      • class Expression : CodeGeneratable
  • interface Term : CodeGeneratable
    • class Function : Term
    • class DomainFunction : Term
    • class DomainUnit : Term
  • interface DomainExpression : CodeGeneratable
    • class DomainOperation : DomainExpression
    • class Identifier : DomainExpression
    • class Number : DomainExpression

評価時に引数の値を記憶するためのクラス

  • class Env<T> : IEnumerable<EnvNode<T>>
  • class EnvNode<T>
  • class FreeMonoidUnion

無限版自由モノイドのクラス

  • class FreeMonoid<T> : IEnumerable<T>

構文解析のためのクラス

  • class MonParser
  • static class ParserExtension