Skip to content
hikalium edited this page Jul 7, 2016 · 7 revisions

NV言語へようこそ!

  • NV言語は,Non-Volatileな変数,つまり永続変数をネイティブにサポートするプログラミング言語です.
  • NV言語は,ほとんどの演算子を仕様で定義しません.
  • 演算子は,ユーザーが自由に作成することができ,非常に柔軟な文法を実現可能です.
  • デフォルトの言語セットは提供されます.
  • 同等のことを目指すほかの実装として,川合秀実氏によるEssenが存在し,現在はEssenの仕様に基づき独自に実装しています.

NV言語の構文解析

  • 入力はまずトークン列に分割されます.トークン列は,各文字のタイプが分かっていれば生成可能です.
  • 最も優先順位の高い演算子をひとつえらび,それを示すトークンを探し出し,それらをすべて演算子オブジェクトに置換します.
  • 結合順(右・左)に基づき,演算子の実行を試みます.
  • 演算子の実行に失敗した場合には,その演算子オブジェクトは未定トークン(Unknown)に戻されます.
  • 演算子の実行に成功した場合は,その結果に応じてトークン列が変更されます.
  • 実行を試みた演算子以下で最大の優先順位をもつ,まだ実行を試みていない演算子をひとつ選び,上記の作業を繰り返します.
  • すべての演算子について上記の処理を終えた後に,それでもまだ未定トークン(Unknown)が残っていれば,エラーとします.
  • エラーでなければ,トークン列の中で最後に存在する値オブジェクトの評価値を,実行結果とします.
  • 実行中にプログラムによる画面への出力が一度も行われていなければ,その実行結果を表示します.
Clone this wiki locally