1

ラスカルでは、構文定義内の非分割領域とどのように一致させることができますか?私は分析しようとしているコードの中にいくつかを見つけて、レイアウトとして認識したいと思っています。ラスカルの非分割領域に一致

しかし、キャラクターをRascalファイルに貼り付けるだけでは(エスケープの有無にかかわらず、バックスラッシュで接頭辞を付けることはできません)、 "\ uc2a0" "\ uC2A0"、 "c2a0"私が読んでいるファイルにコード化されています(Sublime Text 3のHex Viewerプラグインによる)。

答えて

1

これはファイル内で見ているUTF8エンコーディングです。これはユニコードのコードポイントではありません。私たちは24ビットのUnicodeの表に、この文字のUTF8エンコーディングを解釈する場合は、"슠"を得る:

rascal>"\uc2a0" 
str: "슠" 

改行なしスペースでのUnicodeラスカルエスケープスタイルがある:\u00A0

私は、コンソールを起動して見つけたと引用符の間にコンソールに崇高から文字を貼り付け/コピー:

rascal>/\u00a0/ := " " 
bool: true 

rascal>" " 
str: "\u00a0" 

は、それはそう、正規表現を使用してのように行うことができますマッチング

しかし、文字通り空白文字を使用することもできます。

rascal>/ / := " " 
bool: true 

またはusin構文定義:

rascal>lexical WS = [\u00a0]; 
ok 
rascal>parse(#WS, " ") 
WS: (WS) ` ` 
+0

ありがとうございます。ユニコードのコードポイントとエンコードの違いは、値が最も一般的に使用される文字と同じであるためです。それが常に正しいとは限りません。 –

+0

はい、それは啓示でもありました – jurgenv

関連する問題