問題タブ [metalanguage]
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.
c++ - C++ コードを生成するビット単位の構造体定義言語
質問する前に: 私は実際のハードウェアを扱っています。
エンディアンに関して、フィールドのビット長が異なる (1、3、24、または 48 ビットなどのフィールドを含む) データ構造の内容を指定できるメタ言語を探しており、アクセスする C++ コードを生成します。データ。
質問があいまいすぎるために保留になったので、できるだけ明確にしようとします。
次の言語を探しています。
- 単純な構造記述を受け入れ、有用な C++ コードを生成します。
- データ(通常は文字列)とともに、1ビットから複数(最大8)バイトまでの範囲の整数を正確に指定できます。
- エンディアンを変換する必要がなくなり、
- オーバーヘッドを伴わない正確で予測可能な出力を生成します (プロトコル バッファのように)
ASN.1 は目的にはほぼ適しているように聞こえますが、独自のオーバーヘッドが追加されます (つまり、2 バイトが 4 つのニブルに分割された単純な構造を作成することはできません)。私が探しているのは、構造。
たとえば、これを抽象化したいと思います。
上記は、バイトを運ぶ構造体に正確にパックする必要があり8 + record_count * 11
、すべて正確に形成され、追加のデータや追加のビットまたはバイトセットはありません。
上記は一例です。しばしば何百ものフィールドを持つ実際の構造でサイトを詰まらせないように、シンプルに作られています。単純化されていますが、私が楽しみにしている機能の多くを示しています (残りの 2 つの機能は、48 ビットまたは 64 ビットの整数とプレーン データ (bytes[])) です。
この質問がまだ曖昧すぎる場合は、コメントに追加する必要があることを説明してください。ありがとう!
javascript - 同期コードを非同期コードにプログラムで変換する
ブラウザーで実行されるメタ言語用のパーサーを作成しています。メタ言語はブロッキングですが、javascript の制限により、インタプリタでノンブロッキングに変換する必要があります。
たとえば、メタ言語コードは次のようになります。
JavaScriptで実装された関数を次のように使用します
ステートメントがなければgoto
、これは javascript にコンパイルしてからeval
. ただし、sを実装する方法がわかりませんgoto
。どんな助けでも大歓迎です。
ios - SceneKit の Metal を介したシルエット アウトライン シェーダー モディファイヤ
シェーダー修飾子には複数のエントリ ポイントがあります。これに続いて: http://wiki.unity3d.com/index.php?title=Silhouette-Outlined_DiffuseSCNShaderModifierEntryPointSurface
頂点シェーダー ( ) とフラグ シェーダー ( ) の後に 1 つずつ、2 つのエントリ ポイントが必要SCNShaderModifierEntryPointFragment
です。これらは正しいエントリーポイントですか?
また、メタル シェーダー コードの記述に関するヒントがあれば、大歓迎です。それを glsl シェーダーから変換する方法に関するいくつかの一般的な注意事項は驚くべきものです。正直なところ、これまでコードを読むのに苦労したことはありませんでしたが、これは私にとって日本語のようなものです。
racket - Racket のモジュール メタ言語
私は Racket にモジュール meta-language を書き込もうとしてmylang
います。これは、次のように、変更された本体を渡す第 2 言語を受け入れます。
次と同等です。
もちろん、そのtyped/racket
部分は他のモジュール言語に置き換えることができます。
本体はそのままの簡易版にしてみました。コマンドラインでは問題なく動作しますが、DrRacket で実行すると次のエラーが発生します。
コード全体は次のとおりです。
要件(つまり、避けたいソリューション):
(require (only-in typed/racket))
モジュール内にa を追加するとこの作業が行われますが、 at alについて知る必要がないmylang
一般的な解決策に興味があります(つまり、誰かが新しい言語を追加した場合、箱から出してそれを使用する必要があります)。mylang
typed/racket
foo
mylang
また、ここで行われているように、サブモジュールを宣言してすぐ
require
に再実行するトリックには興味がありません。これは、実際のモジュールへのパスが変更されるためです (たとえば、特別な動作が失われるため) 。provide
main
test
サブモジュールがより多くの回数アクセスおよび/またはインスタンス化されるため、コンパイル時も遅くなります(これは を書くことで確認でき
(begin-for-syntax (displayln 'here))
、大規模なプログラムに顕著な影響を与えtyped/racket
ます.DrRacket の矢印が委譲先言語によって提供されるビルトインで機能する場合、
ann
ボーナスポイント。+
Number
typed/racket/base
macos - OSX - GLSL 'InOut' を Metal に変換
GLSL
以下の関数を変換しようとしています:
で使用するMetal
次に、それを使用します。
エラーが発生しました:
非 cont 参照はベクトル要素にバインドできません
- この問題を解決するにはどうすればよいですか?
InOut
inに相当する修飾子は何Metal
ですか?
ios - XCode8 Swift 2.2 では MTLPixelFormatInvalid
3D オブジェクトを表示するための簡単な金属コードを作成しました。これで、私の Mac でコードが正常に動作するようになりました。
同じxcode 8がインストールされた別の同一のMacマシンに移動すると、次のエラーが表示されます
そして、次の地域でエラーを示しています:
彼は最後の行でこのエラーが発生しています。誰でも助けることができますか?
metal - フラグメント関数は適切に記述されているようですが、Metal は文句を言います
TL;DR: メタルは、頂点シェーダーが返すものを検出していないようです
MSL で記述された次の 2 つの関数があります。
このコードを使用して、それらでレンダー パイプラインの状態を作成しようとすると、次のようになります。
パイプライン状態の作成時にエラーがあります:
致命的なエラー: 「試してください!」式で予期せずエラーが発生しました: エラー Domain=CompilerError Code=1 "Link failed: fragment input vPos was not found in vertex shader outputs " [...]
コードを確認して再確認しましたが、何が問題なのか理解できません。
何か案は?ありがとうございました!