/friends

Primary LanguageCMIT LicenseMIT

※ 「のです」調になっています。ご注意を。 ※ このアプリは未完成で放置されているのです。

C 版 Friends

Friends 言語をもっといろいろな環境で実行させたかったのです。

文法

文法はほとんどオリジナル版と同じなのです。

違う(と思われる)ところは以下の通りなのです。

  • すごーい! たーのしー! は全角ハイフン (U+ff0d) も許して やるのです。

  • すごーい! たーのしー! なんだね! なんだっけ? は半角でも許してやるのです。

  • すこ゛ーい! のように が分離してしまっていても許してやるので す(普通に入力しているはずなのにデータ上ではこのようになってしまう環 境があるらしいのです)。ただし、アトムでは異なるものとして扱うのです (例: サーバルサーハ゛ル は別物)。

  • 単語間のスペースは、半角スペース、全角スペースの他にも (半角全角問わず)を許してやるのです。

  • なら を普通の助詞に使えるのです。(例: すごーい! あなた が ヒトの フレンズ で、かのじょ が サーバルの フレンズ なら、あなた と かのじょ で ○○できる フレンズ なんだね!

  • 変数の頭につける _ は全角でも許してやるのです。

  • 予約されている名前に _ をつけた変数(例: _あなた)と予約されて いる名前(この例の場合は、あなた)を区別しないのです。

  • あなた きみ かれ かのじょ だれ なに あれ これ これ ら それ それら の他に ここ そこ あそこ どこ どれ を予 約済み変数名にしているのです。

  • 予約済み変数名の が分離してしまっていても変数として扱うのです。 ただし、かのじょかのし゛ょ は別の変数として扱うのです。

  • つぎ つき゛ と同じアトムとして扱うのです。

  • 変数として扱われる名前は、フレンズの名前にすることはできないのです (例:× かばんちゃん は なに フレンズ なんだっけ?)。ちなみに か ばんちゃん は 何の フレンズ なんだっけ? は文法上は誤りでは無いけど 「何の」に当てはまるものを検索することは無いのです。

  • 自然数のアトムは、全角で書かれていても許してやるのです。 (例:すごーい! 0 は 自然数の フレンズ なんだね!

  • アトムと変数の名前には、コントロール文字(U+0000〜U+001F と U+FFF0〜 U+FFFF)を含まない文字列ならなんでも使えるのです。ただし、区切りにな る文字(スペース、カンマとカッコなど)を含めたり、キーワードと同じ文 字列を使いたければ()か、『』でくくるのです。同じ記号での入れ子はで きないのです。()は半角でも良いのです。(例:だれ が 『たーの しー!』って 言った フレンズ なんだっけ?

実行

Linux, macOS, Windows で MSYS/Cygwin を使う場合

LANG 環境変数が正しく設定されているか確かめるのです。

 $ echo $LANG
 
 $ export LANG=ja_JP.UTF-8

Friends 言語以外のプログラム(Friends 言語のエラーメッセージは常に日本 語なのです)のメッセージが日本語になるのが嫌ならば、LANG の代わり に LC_CTYPE を設定すると良いのです。

 $ export LC_CTYPE=ja_JP.UTF-8

端末が EUC-JP の場合は、文字コードを EUC-JP にするのです。

 $ export LC_CTYPE=ja_JP.EUC-JP
 $ ./fe/friends

Windows ネイティブ版の場合

Shift_JIS オプションを付けて起動するか、chcp コマンドを使って UTF-8 モードに変えるのです。

 > .\fe\friends
 > chcp 65001
 > .\fe\friends

ちなみに、chcp 65001 を実行すると、次にコマンドプロンプトを立ち上げ た時も chcp 65001 を実行された状態になっているので、

 > chcp 932

を実行するともとに戻るのです。

ビルド

ビルドには、

が必要なのです。

C の標準ライブラリさえ使えればわりとどんなところでも実行できるのです。 ただし、日本語を表示したり入力したりできる環境は必要なのです。

があると、プログラムを少しだけ書きやすくなるのと思うのです。でも、必須 では無いのです。libedit は UNIX 系の OS で、かつ UTF-8 を使って入出力 する時しか使えないのです。

手元で確認したコンパイル環境は以下の通りなのです。

  • gcc 7.1.1 (Linux)
  • gcc 4.8.5 (Linux)
  • gcc 6.3.0 (Windows, MSYS2)
  • gcc 7.2.1 (Windows, MinGW64)
  • Apple clang 802.0.42 (macOS 10.12)
  • Visual Studio 2017 (Windows)

メモリが足りないと言われた時は、Friends 言語の内部文字コードを UTF-8 にしてビルドするとビルドできると思うのです。UTF-16 にしていると、re2c の処理時にとてもいっぱいメモリを使うのです。

 $ cmake (ソースディレクトリ) -DFRIENDS_USE_UTF8_INTERNAL=ON

コンパイルが遅すぎる時は、使わない文字コードの対応はオフにすれば良いの です。

 $ cmake (ソースディレクトリ) -DFRIENDS_ENABLE_SJIS=OFF
 $ cmake (ソースディレクトリ) -DFRIENDS_ENABLE_EUCJP=OFF

CMake オプション

re2c のビルド

われわれは、親切なので、一応書いておくのです。re2c のビルドには、C++ のコンパイラが必要なのです。Windows でビルドする場合は、MSYS2 の環境を 用意するのです。

 $ ./configure --prefix=[インストール先]
 $ make
 $ make install

MSYS2 の環境を使う時は以下のコマンドで、必要なものをまとめてインストー ルできるのです。

 $ pacman -Sy gcc g++ make cmake

lemon のコンパイル

こちらはコンパイルは簡単なのです。

 $ gcc -o lemon lemon.c