Synopsis 2言う:Perl 6の識別子には何が許可されていますか?
識別子は、英数字の任意のシーケンスが続くアルファベットで構成されています。アルファベットと数字の定義には、適切なUnicode文字が含まれています。アンダースコアは常にアルファベットとみなされます。次の文字がアルファベットである場合、識別子には分離されたアポストロフィまたはハイフンも含まれます。 Perl 6のドキュメントで
Syntax言う:
識別子は、いくつかの場所で発生する文法的ビルディングブロックです。識別子はプリミティブ名で、アルファベット文字(またはアンダースコア)、0個以上の単語文字(アルファベット、アンダースコア、または数字)で始まる必要があります。また、中央にダッシュ(または一重引用符)を埋め込むことはできますが、2行には埋め込むことはできません。
「適切なUnicode文字」という用語は、適切なものがわかっているという質問に答えるものです。
ASCII文字を超えて選択するとあまりにも漠然としていることがわかります。私はPerl6の::文法ではこの生産ではなく、<.ident>
の定義見つける:
token identifier {
<.ident> [ <.apostrophe> <.ident> ]*
}
をしかし、これはまた、あなたが識別子が識別子を定義することが何であるかを知っている必要があります質問を頼みます。だから、<.ident>
はどこですか?
raiphが指摘しているのは<.ident>
での方法はQRegex::Cursor
ですが、それはnqp::const::CCLASS_WORD
で定義されています。今私はそれを追跡する必要があります。
は、私は高価な正方形の操作の結果を中心に渡したい、とちょっと、Perl 6のは、これを許可することになっているので、U + 00B2(SUPERSCRIPT TWO)(一般的なカテゴリがありません、Other_Number)を使用してみました:
my $a² = $a**2;
しかし、²は他の上付き文字と共に演算子であることがわかります。それは大丈夫ですが、²などはlisted as an operatorまたはInt
や行動Int
継承ではありません。
$ perl6 -e 'my $Δ² = 6; say $*PERL; say $Δ²'
Use of uninitialized value of type Any in numeric context in block <unit> at -e line 1
Cannot modify an immutable Int
in block <unit> at -e line 1
$ perl6 -e 'my $Δ = 6; say $*PERL; say $Δ²'
Perl 6 (6.c)
36
$ perl6 -e 'my $Δ = 6; say $*PERL; say $Δ³'
Perl 6 (6.c)
216
$ perl6 -e 'my $Δ = 6; say $*PERL; say $Δ⁹'
Perl 6 (6.c)
10077696
しかし、私はノーの1/2 U + 00BD(VULGAR FRACTION ONE HALF)(一般的なカテゴリを使用することはできませんし、 Other_Number):
$ perl6 -e 'my $Δ½ = 6; say $*PERL; say $Δ½'
===SORRY!=== Error while compiling -e
Bogus postfix
at -e:1
------> my $Δ⏏½ = 6; say $*PERL; say $Δ½
expecting any of:
constraint
infix
infix stopper
postfix
statement end
statement modifier
statement modifier loop
しかし、私は$Δ
に数値を入れていない場合は?ブロック内
$ perl6 -e 'my $Δ = "foo"; say $*PERL; say $Δ²'
Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏)
-eラインでブロック内
Actually thrown at:
-e行で1
私は後置演算子を定義し、誰かが言葉を破ることができることを心配していたが、これはいるようです仕事:
$ perl6 -e 'multi sub postfix:<Δ>(Int $n) { 137 }; say 6Δ;'
137
$ perl6 -e 'multi sub postfix:<Δ>(Int $n) { 137 }; my $ΔΔ = 6; say $ΔΔ;'
6
$ perl6 -e 'multi sub postfix:<Δ>(Int $n) { 137 }; my $Δ = 6; say $ΔΔ;'===SORRY!=== Error while compiling -e
Variable '$ΔΔ' is not declared
at -e:1
------> fix:<Δ>(Int $n) { 137 }; my $Δ = 6; say ⏏$ΔΔ;
ここでは何が起こっていますか?
上付き文字がで事業として記載されていますオンラインの識別子セクション:[Identifiers](https://docs.perl6.org/language/syntax#Identifiers)。 – callyalater
上付き文字は今掲載されていますが、私はこの質問をしたときではありませんでした。削除された回答は、それを記した問題としてhttps://github.com/perl6/doc/issues/1098を参照しています。 –