※ 「のです」調になっています。ご注意を。 ※ このアプリは未完成で放置されているのです。
Friends 言語をもっといろいろな環境で実行させたかったのです。
文法はほとんどオリジナル版と同じなのです。
違う(と思われる)ところは以下の通りなのです。
-
すごーい!
たーのしー!
のー
は全角ハイフン (U+ff0d) も許して やるのです。 -
すごーい!
たーのしー!
なんだね!
なんだっけ?
の!
?
は半角でも許してやるのです。 -
すこ゛ーい!
のように゛
が分離してしまっていても許してやるので す(普通に入力しているはずなのにデータ上ではこのようになってしまう環 境があるらしいのです)。ただし、アトムでは異なるものとして扱うのです (例:サーバル
とサーハ゛ル
は別物)。 -
単語間のスペースは、半角スペース、全角スペースの他にも
,
、
(半角全角問わず)を許してやるのです。 -
なら
で
を普通の助詞に使えるのです。(例:すごーい! あなた が ヒトの フレンズ で、かのじょ が サーバルの フレンズ なら、あなた と かのじょ で ○○できる フレンズ なんだね!
) -
変数の頭につける
_
は全角でも許してやるのです。 -
予約されている名前に
_
をつけた変数(例:_あなた
)と予約されて いる名前(この例の場合は、あなた
)を区別しないのです。 -
あなた
きみ
かれ
かのじょ
だれ
なに
あれ
これ
これ ら
それ
それら
の他にここ
そこ
あそこ
どこ
どれ
を予 約済み変数名にしているのです。 -
予約済み変数名の
゛
が分離してしまっていても変数として扱うのです。 ただし、かのじょ
とかのし゛ょ
は別の変数として扱うのです。 -
つぎ
つき゛
は次
と同じアトムとして扱うのです。 -
変数として扱われる名前は、フレンズの名前にすることはできないのです (例:×
かばんちゃん は なに フレンズ なんだっけ?
)。ちなみにか ばんちゃん は 何の フレンズ なんだっけ?
は文法上は誤りでは無いけど 「何の」に当てはまるものを検索することは無いのです。 -
自然数のアトムは、全角で書かれていても許してやるのです。 (例:
すごーい! 0 は 自然数の フレンズ なんだね!
) -
アトムと変数の名前には、コントロール文字(U+0000〜U+001F と U+FFF0〜 U+FFFF)を含まない文字列ならなんでも使えるのです。ただし、区切りにな る文字(スペース、カンマとカッコなど)を含めたり、キーワードと同じ文 字列を使いたければ()か、『』でくくるのです。同じ記号での入れ子はで きないのです。()は半角でも良いのです。(例:
だれ が 『たーの しー!』って 言った フレンズ なんだっけ?
)
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
Shift_JIS オプションを付けて起動するか、chcp
コマンドを使って UTF-8
モードに変えるのです。
> .\fe\friends
> chcp 65001
> .\fe\friends
ちなみに、chcp 65001
を実行すると、次にコマンドプロンプトを立ち上げ
た時も chcp 65001
を実行された状態になっているので、
> chcp 932
を実行するともとに戻るのです。
ビルドには、
が必要なのです。
C の標準ライブラリさえ使えればわりとどんなところでも実行できるのです。 ただし、日本語を表示したり入力したりできる環境は必要なのです。
- libedit 3.1 以降
があると、プログラムを少しだけ書きやすくなるのと思うのです。でも、必須 では無いのです。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
われわれは、親切なので、一応書いておくのです。re2c のビルドには、C++ のコンパイラが必要なのです。Windows でビルドする場合は、MSYS2 の環境を 用意するのです。
$ ./configure --prefix=[インストール先]
$ make
$ make install
MSYS2 の環境を使う時は以下のコマンドで、必要なものをまとめてインストー ルできるのです。
$ pacman -Sy gcc g++ make cmake
こちらはコンパイルは簡単なのです。
$ gcc -o lemon lemon.c