ある種類の構文を別の構文の中に埋め込む:それはずるいのか、それとも賢いのか?
-
21-08-2019 - |
質問
背景: 最近、「構造化テキスト エディター」を調べているときに、Python/perl/c++/java などを変更するトリックが使用されていることに気づきました。それぞれの言語のコメントに XML を忍び込ませることで、「構造化された」アウトラインを作成します。
私も Windows のバット ファイル内でこのトリックを一度見たことを思い出しました。Bat ファイルの REM ステートメントは、一部の Perl コードを「隠す」ために使用されていました。
質問: 誰かがプログラミング言語またはマークアップ言語のコメントを使用して、まったく異なる言語の構文を埋め込んだ例を見たことがありますか?「はい」の場合、例へのリンクを提示していただくか、それが何であったかを説明していただけますか?
まだの場合は、次の例をご覧ください。
質問: この種の「トリック」は賢くて便利なアイデアですか?もしそうなら、このトリックを使用した特別な例を列挙できますか?「いいえ」の場合、それが悪いアイデアだと思う理由を説明していただけますか?
解決
あなたが話しているのは ポリグロット, これは、コンピューター プログラミングの非常に魅力的な側面であり、一部のスクリプト/プログラミング言語の曖昧な性質についての素晴らしい演習です。間違いなく興味深い概念ではありますが、新規性の分野以外ではめったに見られません。ただし、プログラマーの立場から言えば、自分の作品をいくつかの大きく異なる環境で機能させるのは、間違いなく偉業です。ただし、ポリグロットは一般的にコメントによるあらゆる種類のハッキングや回避策に依存しているため、これはほとんどの場合、実現可能性の範囲外です。ただし、彼らが何ができるかをまだ見ていない場合は、一見の価値があります。お勧めします これです.
信じられないかもしれませんが、その 1 つのファイルは 15 の異なる言語で適切にコンパイルされます (何らかの方法、形状、または形式)。
- HTML
- バッシュ
- zsh
- C89
- C99
- C++
- メイクファイル
- ルビー
- Tcl
- パール
- ハスケル
- パイソン
- JavaScript
- ブレインファック
- 空白
他のヒント
私はあなたに完全な答えを与えることはできませんが、Netbeanは自分のJavaコードを生成します。
このトリックを使用するのが好き問題は、Javaソースコードはアプリケーションとの間の媒質であるべきです。特定のコメントの意味を追加することで、あなただけのNetbeansに固執することを余儀なくされています。確かに、コメントだけで、他のプログラムによって無視することができますが、これらのコメントは、移動または変更を取得したらどう?私は、NetBeansのそれをやったと私は戻ってNetBeansでファイルをロードしようとしたときに、いくつかのfunkinessが発生しました。私は(コメントで!)構文を修正するための時間を取るために私には見えないようにするとしたことだった。
個人的に、私はそれが1件のコメント以内意味を持っている複数の非ローカルの変更(つまり、その[OK]を必要に応じて既存のファイルに多くの意味を追加したことがないだろうが、このコメントからそのコメントに意味を持ちません)。私は間違いなく、ほとんどの場合、必要なメタデータが含まれて別のファイルを追加することになります。
この恐怖は、CSSのコメントとマークアップ '隠れ' は有効なXHTML、HTMLとプリHTML3.2のtagsoupを介在ます:
<style type="text/css"><!--/*--><![CDATA[/*><!--*/
...
/*]]>*/--></style>
私はそれが実際に使用を見始めたときに私は恥ずかしいでした。これは、唯一のエクササイズとしてのものでした。申し訳ありません。
私は(コメントで何かを隠して)このトリックは、様々なツールのドキュメントマークアップのための、およびモデリングツールで往復作業のためにパン粉を残すために、編集者に折りたたみに使用さ見てきました。
私が見てきた他の使用は、コグに、コードジェネレータです。あなたは、コメント内のpythonを書き、その後、コグは、コードを生成するためのpythonを実行します。全体のポイントは必要ないように/生成されたコードを変更したいされているため、ときに誤って台無し「倍」のコメントを、それは、例えば、あなたが取得困りごとの同じセットに折りたたみエディタを実行しないように、それは、面白いです別のエディタインチ
Visual Studioは、この呼ばれるT4の形態を有します。残念ながら、ドキュメントは一種の大ざっぱです。
はPythonのドキュメントで使用される一つのお気に入りのマークアップは再編テキストです。そのマークダウンまたは繊維のような一般的な簡略化されたマークアップ言語は、が、それは良いドキュメント構造になり、簡単にHTMLやPDFドキュメントを生成するために使用することができます。
ドナルドKnuthのWEBおよびCWEBは、TeX内部パスカル(WEB)とC(CWEB)を埋め込みます。ここでMETAFONTソースコードの例である:
@ The following system-independent code makes the |xord| array contain a
suitable inverse to the information in |xchr|. Note that if |xchr[i]=xchr[j]|
where |i<j<@'177|, the value of |xord[xchr[i]]| will turn out to be
|j| or more; hence, standard ASCII code numbers will be used instead of
codes below @'40 in case there is a coincidence.
@<Set init...@>=
for i:=first_text_char to last_text_char do xord[chr(i)]:=@'177;
for i:=@'200 to @'377 do xord[xchr[i]]:=i;
for i:=0 to @'176 do xord[xchr[i]]:=i;