問題タブ [gforth]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
forth - Forth / Gforth API はどこにありますか?
私は数日前からForthを学び始めました。最初のプログラムをコーディングした後、Java API のようなものや、既に実装されているすべてのメソッドの包括的なマニュアルがあるのではないかと考えていました。
Forth / Gforth API を勧めてもらえますか?
definition - Forth 定義内で単語を作成する方法
私はGforthを使用しており、定義に単語を作成したいと考えています。Gforth の cmd 行で、次のように入力できます。
より具体的には、スタック上のサイズを想定し、その配列へのアドレスを持つワードを作成する配列関数を定義しました。
したがって、入力10 array foo
すると、後で使用できますfoo
。
しかし、10 array foo
別の定義内に記述すると、コンパイル エラーが発生します。コンパイルする foo を置き換えてみましs" foo"
たが、実行時に次のように爆発します。
長さゼロの文字列を名前として使用しようとしています
これを行う方法はありますか?
emacs - Forth モード emacs gforth.el 使用時のエラー
要するに、gforth.el を使用して .fs ファイルを開こうとすると、 Emacsから次のエラー メッセージが表示されるということです。
エラー: nil をコンパイルする方法がわかりません
私の.emacs ファイルには、次の行だけが含まれています。
gforth.el が含まれているディレクトリは、ロード パスにあります。
Emacs バージョン: 24.3.1
ファイルをバイト コンパイルしようとすると、エラー/警告が表示されます。
forth - Forth での累乗の実装
Gforthを使用して累乗を実装しようとしています。理論的には、スタックベースの言語がどのように動作するかを理解しています。ただし、Gforth での実装に問題があります。
これが私が今持っているものです:
ただし、実行すると、次のようなスタック アンダーフローが表示されます。
Gforth のループ構造は、ループ時にスタックを操作していますか?
私がオンラインで見たほとんどのループの例はかなり複雑で、Forth を初めて使用する人を混乱させるため、Forth がどのように機能するかについてはわかりません。
実装の何が問題になっていますか?
forth - Gforth のダブルスへの変換における不規則性
Forth でs>d
and関数がどのように機能するかについて、かなり混乱しています。d>s
私が読んだことから、入力16.0
するとスタックに置か160 0
れ(2つのセルを占めるため)、d.
表示され160
ます。
ここで、入力すると、スタックが前の例のようになり、表示16 s>d
されることが期待されます。ただし、スタックはとです。160 0
d.
160
16 0
d.
16
ダブルスの入力を間違えていませんか? 「単一セルの値を二重セルの値に変換するほど単純ではありませんか?s>d
この不規則性の理由はありますか?手がかりは大歓迎です.
c++ - Homebrew を使用して OS X Mavericks (10.9) に Gforth をインストールする際のエラー
MacBook Air (OS X Mavericks (10.9) を実行) にGforthをインストールしようとしていますが、次のエラーが発生します。brew install gforth
問題が何であるかはわかっていますが (libffi は C++ 標準ライブラリの古いバージョンでビルドされていました)、この問題をHomebrewで修正する方法がわかりません。libffi をアンインストールして、Homebrew 経由で libc++ を使用して再インストールできますか?それとも、より抜本的な対策を講じる必要がありますか?
string - Gforth を使用した複数の文字列連結でのスタック アンダーフロー
Rosetta コードから、Forth で文字列を連結する方法として以下を使用しています。
このコードを使用して、複数の文字列を連結できるようにしたいと考えています。ただし、Gforth では次のように失敗します。
私の基本的な Forth エクスポージャーから、スタックに 3 つの文字列を置き、スタックの一番上の文字列をその下の文字列に追加し、スタックの新しい文字列を一番下の文字列に再度追加するというコードが見えます。
このコードが最後の +place でアンダーフローするのはなぜですか? これを回避する方法はありますか?
forth - 単語または変数から文字列を追加するときのエラー
gforth で 2 つの文字列を追加しようとしていますが、恐ろしいエラー メッセージが表示されます。
正常にs" foo" s" bar" append type cr
動作しますが、変数に文字列を格納したり、単語から文字列を作成したりするとすぐにエラーが発生します。例えば:
実行すると、次のエラーが発生します。
私は C に精通しているので、Forth の使い方が間違っていることは明らかです。Fore でのメモリ管理について、非常に基本的なことを学ぶ必要があると思います。
ここで何が問題なのか、どうすればよいのか、誰か説明してもらえますか?
変数に格納されている文字列を追加しようとすると、問題が発生します。
これは、私が壊さなければならないループで終わります:
参考までに、私は Mac OS X で gforth 0.7.2 を使用しています。
アップデート
の定義を見ることができますappend
:
では、Forth で自分でメモリを管理する必要があるように見えますか? もしそうなら、どのように?
解決
Andreas Bombe が以下の手がかりを提供します。動作する最終的なプログラムは次のようになります
出力は
serial-port - Gforth でシリアルポートの設定を変更する
シリアル ポート (上の Arduino デバイス) と通信しようとしてい/dev/ttyUSB0
ます。データを正しく読み書きするには、速度やパリティなどのさまざまなパラメーターを設定する必要があるため、問題が発生しています。
すでにこれを行う Gforth ライブラリはありますか?
C関数を通過して呼び出してtermiosパラメーターを直接設定するこのリンクを見つけました-http ://www.forth.org/svfig/kk/TestSerial.f.txtですが、Gforthに付属するものを使用することをお勧めします自体。