以下のエラー・メッセージが Vmgen によって作成されます:
# can only be on the input side
¶【# は入力側にのみ指定できます】 ‘--’ (出力側) の後側で命令ストリーム(instruction-stream)のプレフィックス(通常は ‘#’)を使用しました。 これは前側(入力側)でのみ使用できます。
the prefix for this superinstruction must be defined earlier
¶【このスーパー命令(superinstruction)のプレフィックスは事前に定義する必要があります】 直接プレフィックス(たとえば ab
= a b
)を定義せずにスーパー命令(superinstruction)定義(たとえば abc = a b c
)を行いました。
See Superinstructions
sync line syntax
¶【同期行構文】プリプロセッサ(たとえば m4
)を使用して Vmgen 入力コードを生成している場合は、 #line
(別名 sync lines;同期行)ディレクティブを作成するとよいでしょう。 このエラーは、 そのような行が Vmgen
が期待する構文に無いことを示します(こんなことが起こってはいけません。 問題の行をバグ・レポートで報告してください)。
syntax error, wrong char
¶【構文エラー、 不正な文字】構文エラーです。 エラーの場所がすぐにわからない場合は、 次の点を確認すると役立つ場合があります: C 言語のコードが波かっこ({};braces)で区切られていない VM 命令に空行を入れていませんか? 波かっこで区切られた C 言語のコードを使用した場合、 先頭に空白を入れずに、 行の先頭に区切りの波かっこを置きましたか? 区切りの波かっこを忘れせんでしたか?
too many stacks
¶【スタックの数が多すぎます】Vmgen は現在、3 つのスタック(に加えて命令ストリーム)をサポートしています。 さらに必要な場合は作者にご連絡ください。
unknown prefix
¶【不明のプレフィックスです】スタック項目が定義された型プレフィックスと一致しません(スタック・プレフィックス削除後)。 そのスタック項目に必要な型プレフィックスを宣言するか、 別の型プレフィックスを使用する必要があります
unknown primitive
¶【不明のプリミティブです】最初に単純な VM 命令(simple VM instruction)を定義せずに、 スーパー命令(superinstruction)定義で単純 VM 命令の名前を使用しました。
さらに、 C 言語のコンパイラは、 Vmgen によって生成されたコードが原因でエラーを生成する可能性があり、 たとえば、 あなたは型キャスト関数を定義する必要があるかもしれません。