2010-04-01

Raw String Literalは、まだ決定していない

実は、標準化委員会内に沸き上がっている、意見に、Raw String Literal自体が、プリプロセッサの逆変換の対象になるべきだというものがある。

つまり、

R"delimiter( )deli\
miter" )delimiter" ;

は、

" )deli\\\nmiter\" "

となる。現在の文面では、このコードは、ill-formedである。

そもそも、プリプロセッサは、文字列リテラルを、ひとつのトークンとして、認識できなくてはならないので、これは、当然だと思う。

文字列リテラルを、ひとつのトークンとして認識するので、Raw String Literalの中に、Preprocessor Directiveがあっても、問題はない。

2 comments:

  1. raw string literal を認識するタイミングを「バックスラッシュ改行」の除去より前に変える、ということなのでしょうか。

    ReplyDelete
  2. いや、Raw String Literal全体に対して、逆変換がかかるようにするのです。
    つまり、d-char-sequenceに対しても、逆変換がかかります。

    そもそも、プリプロセッサは、string literalを、認識できなければならないのです。
    だから、プリプロセスを始める前に、raw string literalかどうかは、分かるのです。

    そもそも、規格というのは、具体的な実装方法を定義しているのではなくて、意味を定義しているのです。
    規格と同じ結果になれば、どんな実装方法でもいいのです。

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.