1

私は、この質問が答えられないか、答えるのが非常に難しいかもしれないことを認めます.

また、この読者はスクリプト言語などのエスケープ シーケンスに精通していると思いますが、明確にするために、この記事の後半でその概念を確認します。

「エスケープされた」とは、たとえば、「次の文字を通常どおり使用しないでください。別のコンテキストで解釈してください」と解釈される印刷可能な文字を意味します。このコンテキストには、コードとして解釈されるのではなく、リテラルの印刷された文字として解釈されることを意図した文字、または逆に、コードとしてではなく解釈したいリテラル文字として通常解釈される可能性のある文字が含まれます。私の例 (より紛らわしいことに、私は今気づきました) は後者のケースを使用しています。

具体例: 'nix sed で使用される正規表現。sed 用にエスケープされていない場合は、次のようになります。

([^0-9]*)(20[0-9]{2})([^0-9]{1,2})([0-9]{1,2})

しかし、sed が文字をリテラル文字としてではなく正規表現コードとして解釈することを知っているように、シェルが正規表現を sed に渡すためにエスケープされると、文字列全体がはるかに醜くなります (そして人間が読める可能性ははるかに低くなります):

\([^0-9]*\)\(20[0-9]\{2\}\)\([^0-9]\{1,2\}\)\([0-9]\{1,2}\)

エスケープ文字 (またはシーケンス) は、プログラミングの悩みの種の 1 つです。これは特に、長い文字列 (またはコード行) に当てはまります。このような場合は、細心の注意を払うか、エスケープ シーケンスを作成および削除するツールを使用することが実際的です。

私は周りを見回しましたが、私が提案するような解決策に遭遇しませんでしたが、これが存在する場合に名前が付けられる可能性があることを知らず、専門家ではないため、検索は無駄でした.

「コード ページの割り当てを制御する」などと言う場合、説明したように、コンピューターがテキストのレンダリングとレイアウトの制御に使用する、印刷可能な (および印刷不可能な) 文字のテーブルの意味でのコード ページについて話している。「コードページ」に関するウィキペディアの記事。必要に応じて、これらを (大まかに) 「コンピューター アルファベット」と呼ぶことができます。「コード ページの割り当て」とは、レンダリングされたグリフ (印刷可能な文字) または印刷されていない制御コード (印刷不可能な文字) として解釈されるコンピューターの「アルファベット」のエントリを意味します。

アイデアは、特定の印刷されていない制御コード ページの割り当てを指定して、「次の文字をエスケープされたものとして解釈する」ことを意味し、テキスト レンダラーがそれを「読み取って」、エスケープされた文字の色や明るさなどを変更することでプログラマーに示すことができるようにすることです。制御コードに続きます。および/または制御コード ページの割り当ては、印刷可能なグリフである可能性があります。たとえば、ローマ字に関連するアルファベットの他のアクセントと競合しない、標準化された邪魔にならないアクセント グリフです。

この印刷されていないコード ページの割り当ても、同様にインタプリタとコンパイラによって読み取られます。

私が上で与えたものよりも長い正規表現のレンダリングされたバージョンを考えてみましょう:

エスケープされていない、醜い正規表現

「次の文字がエスケープされる」ことを意味する印刷されていないコードページ割り当てがある場合、エスケープされた文字は、エスケープされていることを示すために、たとえば単純に明るくレンダリングできます。

制御コードの見苦しさを軽減 正規表現をエスケープ

これは、代わりにエスケープシーケンスに印刷された文字を使用する次のものよりも、人間が解釈するのがはるかに簡単です (ただし、これを正規表現として開始するのは困難です)。

ここに画像の説明を入力

私がこれを書いているとき、普遍的ではないにしても支配的な状況は、印刷されていないコードページの割り当てではなく、エスケープシーケンスで印刷された文字を使用することです。

提案されたソリューションに付随する問題は、プログラマーが使用する非常に多くのツールによるエスケープされたコード ページの割り当てへの準拠を保証することです。また、プログラマーは、エスケープされたコード ページの割り当てをサポートするユーティリティとサポートしないユーティリティを把握する必要があります。また、そのようなコード ページの割り当てを採用するツールは、下位互換性があるかどうか (エスケープ シーケンスに印刷された文字と印刷されていないコード ページの割り当ての両方を使用できるかどうか) を明示することが最善です。

エスケープ制御コード ページの割り当て以外の方法でこれを実現するプログラミング言語やツールは好みませんそれでも、これを行うツールについては非常に興味があります。

結局のところ、私の質問は、これを行うプログラミング言語が存在するか、またはこれを行うコードページ割り当てが既に存在するかということです。

4

2 に答える 2

1
  • 私の知る限り、ほとんどすべてのプログラミング言語は印刷可能な ASCII 文字に固執しています*。
  • 当然のことながら、Escape または ESC (Escキーとの類似性は偶然ではありません)、コード 27 または 0x1B と呼ばれる、ASCII の特別なエスケープ制御文字が既に存在します。しかし、この文字は実際にはこのように使用されなくなりました。
  • 構文の強調表示だけで、必要なものにかなり近づくことができると思います。
  • \編集中のファイル内のバイトと画面に表示される文字との間の直接的な対応を壊したい場合は、エスケープ文字のままでよいと思います。十分に構成可能なエディターを見つけて、必要な方法で構成するだけです。

* 私が考えることができる 2 つの主な例外は、ここでは興味深いものではありません: APLは独自のシンボル セットを持ち、識別子で Unicode をサポートする言語です。

于 2016-02-07T22:33:31.663 に答える