TemplateSubstitutionTail , InputElementTemplateTail alternatif sözcüksel hedefi tarafından kullanılır.
# 12.9.6.1 Statik Anlambilim: TV
Sözdizimi yönelimli işlem TV hiçbir argüman almaz ve bir String veya undefined döndürür. Bir şablon değişmezi bileşeni, TV tarafından String türü bir değer olarak yorumlanır. TV, bir şablon nesnesinin indisli bileşenlerini (halk dilinde, şablon değerleri) oluşturmak için kullanılır. TV'de, kaçış dizileri, kaçış dizisi tarafından temsil edilen Unicode kod noktasının UTF-16 kod birim(ler)i ile değiştirilir.
-
NoSubstitutionTemplate NoSubstitutionTemplate :: ** **
üretiminin TV'si boş String'dir.
-
TemplateHead TemplateHead :: ` ${
üretiminin TV'si boş String'dir.
-
TemplateMiddle TemplateMiddle :: } ${
üretiminin TV'si boş String'dir.
-
TemplateTail TemplateTail :: } `
üretiminin TV'si boş String'dir.
-
TemplateCharacters TemplateCharacters :: TemplateCharacter TemplateCharacters
üretiminin TV'si, TemplateCharacter 'ın TV'si undefined ise veya TemplateCharacters 'in TV'si undefined ise undefined'dır. Aksi takdirde, TemplateCharacter 'ın TV'si ile TemplateCharacters 'in TV'sinin dizgi birleştirmesidir .
-
TemplateCharacter TemplateCharacter :: SourceCharacter but not one of ` or **** or $ or LineTerminator
üretiminin TV'si, SourceCharacter tarafından eşleşen kod noktası üzerinde UTF16EncodeCodePoint gerçekleştirmenin sonucudur.
-
TemplateCharacter TemplateCharacter :: $
üretiminin TV'si, 0x0024 (DOLLAR SIGN) kod biriminden oluşan String değeridir.
-
TemplateCharacter TemplateCharacter :: **** TemplateEscapeSequence
üretiminin TV'si, TemplateEscapeSequence 'in SV 'sidir.
-
TemplateCharacter TemplateCharacter :: **** NotEscapeSequence
üretiminin TV'si undefined'dır.
-
TemplateCharacter TemplateCharacter :: LineTerminatorSequence
üretiminin TV'si, LineTerminatorSequence 'in TRV 'sidir.
-
LineContinuation LineContinuation :: **** LineTerminatorSequence
üretiminin TV'si boş String'dir.
# 12.9.6.2 Statik Anlambilim: TRV
Sözdizimi yönelimli işlem TRV hiçbir argüman almaz ve bir String döndürür. Bir şablon değişmezi bileşeni, TRV tarafından String türü bir değer olarak yorumlanır. TRV, bir şablon nesnesinin ham bileşenlerini (halk dilinde, şablon ham değerleri) oluşturmak için kullanılır. TRV, TV 'ye benzer, farkı TRV'de kaçış dizilerinin değişmezde göründükleri gibi yorumlanmasıdır.
-
NoSubstitutionTemplate NoSubstitutionTemplate :: ** **
üretiminin TRV'si boş String'dir.
-
TemplateHead TemplateHead :: ` ${
üretiminin TRV'si boş String'dir.
-
TemplateMiddle TemplateMiddle :: } ${
üretiminin TRV'si boş String'dir.
-
TemplateTail TemplateTail :: } `
üretiminin TRV'si boş String'dir.
-
TemplateCharacters TemplateCharacters :: TemplateCharacter TemplateCharacters
üretiminin TRV'si, TemplateCharacter 'ın TRV'si ile TemplateCharacters 'in TRV'sinin dizgi birleştirmesidir .
-
TemplateCharacter TemplateCharacter :: SourceCharacter but not one of ` or **** or $ or LineTerminator
üretiminin TRV'si, SourceCharacter tarafından eşleşen kod noktası üzerinde UTF16EncodeCodePoint gerçekleştirmenin sonucudur.
-
TemplateCharacter TemplateCharacter :: $
üretiminin TRV'si, 0x0024 (DOLLAR SIGN) kod biriminden oluşan String değeridir.
-
TemplateCharacter TemplateCharacter :: **** TemplateEscapeSequence
üretiminin TRV'si, 0x005C (REVERSE SOLIDUS) kod birimi ile TemplateEscapeSequence 'in TRV'sinin dizgi birleştirmesidir .
-
TemplateCharacter TemplateCharacter :: **** NotEscapeSequence
üretiminin TRV'si, 0x005C (REVERSE SOLIDUS) kod birimi ile NotEscapeSequence 'in TRV'sinin dizgi birleştirmesidir .
-
TemplateEscapeSequence TemplateEscapeSequence :: 0
üretiminin TRV'si, 0x0030 (DIGIT ZERO) kod biriminden oluşan String değeridir.
-
NotEscapeSequence NotEscapeSequence :: 0 DecimalDigit
üretiminin TRV'si, 0x0030 (DIGIT ZERO) kod birimi ile DecimalDigit 'in TRV'sinin dizgi birleştirmesidir .
-
NotEscapeSequence NotEscapeSequence :: x [lookahead ∉ HexDigit ]
üretiminin TRV'si, 0x0078 (LATIN SMALL LETTER X) kod biriminden oluşan String değeridir.
-
NotEscapeSequence NotEscapeSequence :: x HexDigit [lookahead ∉ HexDigit ]
üretiminin TRV'si, 0x0078 (LATIN SMALL LETTER X) kod birimi ile HexDigit 'in TRV'sinin dizgi birleştirmesidir .
-
NotEscapeSequence NotEscapeSequence :: u [lookahead ∉ HexDigit ] [lookahead ≠ { ]
üretiminin TRV'si, 0x0075 (LATIN SMALL LETTER U) kod biriminden oluşan String değeridir.
-
NotEscapeSequence NotEscapeSequence :: u HexDigit [lookahead ∉ HexDigit ]
üretiminin TRV'si, 0x0075 (LATIN SMALL LETTER U) kod birimi ile HexDigit 'in TRV'sinin dizgi birleştirmesidir .
-
NotEscapeSequence NotEscapeSequence :: u HexDigit HexDigit [lookahead ∉ HexDigit ]
üretiminin TRV'si, 0x0075 (LATIN SMALL LETTER U) kod birimi, birinci HexDigit 'in TRV'si ve ikinci HexDigit 'in TRV'sinin dizgi birleştirmesidir .
-
NotEscapeSequence NotEscapeSequence :: u HexDigit HexDigit HexDigit [lookahead ∉ HexDigit ]
üretiminin TRV'si, 0x0075 (LATIN SMALL LETTER U) kod birimi, birinci HexDigit 'in TRV'si, ikinci HexDigit 'in TRV'si ve üçüncü HexDigit 'in TRV'sinin dizgi birleştirmesidir .
-
NotEscapeSequence NotEscapeSequence :: u { [lookahead ∉ HexDigit ]
üretiminin TRV'si, 0x0075 (LATIN SMALL LETTER U) kod birimi ile 0x007B (LEFT CURLY BRACKET) kod biriminin dizgi birleştirmesidir .
-
NotEscapeSequence NotEscapeSequence :: u { NotCodePoint [lookahead ∉ HexDigit ]
üretiminin TRV'si, 0x0075 (LATIN SMALL LETTER U) kod birimi, 0x007B (LEFT CURLY BRACKET) kod birimi ve NotCodePoint 'ın TRV'sinin dizgi birleştirmesidir .
-
NotEscapeSequence NotEscapeSequence :: u { CodePoint [lookahead ∉ HexDigit ] [lookahead ≠ } ]
üretiminin TRV'si, 0x0075 (LATIN SMALL LETTER U) kod birimi, 0x007B (LEFT CURLY BRACKET) kod birimi ve CodePoint 'ın TRV'sinin dizgi birleştirmesidir .
-
DecimalDigit DecimalDigit :: one of 0 1 2 3 4 5 6 7 8 9
üretiminin TRV'si, bu üretim tarafından eşleşen tek kod noktası üzerinde UTF16EncodeCodePoint gerçekleştirmenin sonucudur.
-
CharacterEscapeSequence CharacterEscapeSequence :: NonEscapeCharacter
üretiminin TRV'si, NonEscapeCharacter 'ın SV 'sidir.
-
SingleEscapeCharacter SingleEscapeCharacter :: one of ' " **** b f n r t v
üretiminin TRV'si, bu üretim tarafından eşleşen tek kod noktası üzerinde UTF16EncodeCodePoint gerçekleştirmenin sonucudur.
-
HexEscapeSequence HexEscapeSequence :: x HexDigit HexDigit
üretiminin TRV'si, 0x0078 (LATIN SMALL LETTER X) kod birimi, birinci HexDigit 'in TRV'si ve ikinci HexDigit 'in TRV'sinin dizgi birleştirmesidir .
-
UnicodeEscapeSequence UnicodeEscapeSequence :: u Hex4Digits
üretiminin TRV'si, 0x0075 (LATIN SMALL LETTER U) kod birimi ile Hex4Digits 'in TRV'sinin dizgi birleştirmesidir .
-
UnicodeEscapeSequence UnicodeEscapeSequence :: u{ CodePoint }
üretiminin TRV'si, 0x0075 (LATIN SMALL LETTER U) kod birimi, 0x007B (LEFT CURLY BRACKET) kod birimi, CodePoint 'ın TRV'si ve 0x007D (RIGHT CURLY BRACKET) kod biriminin dizgi birleştirmesidir .
-
Hex4Digits Hex4Digits :: HexDigit HexDigit HexDigit HexDigit
üretiminin TRV'si, birinci HexDigit 'in TRV'si, ikinci HexDigit 'in TRV'si, üçüncü HexDigit 'in TRV'si ve dördüncü HexDigit 'in TRV'sinin dizgi birleştirmesidir .
-
HexDigits HexDigits :: HexDigits HexDigit
üretiminin TRV'si, HexDigits 'in TRV'si ile HexDigit 'in TRV'sinin dizgi birleştirmesidir .
-
HexDigit HexDigit :: one of 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
üretiminin TRV'si, bu üretim tarafından eşleşen tek kod noktası üzerinde UTF16EncodeCodePoint gerçekleştirmenin sonucudur.
-
LineContinuation LineContinuation :: **** LineTerminatorSequence
üretiminin TRV'si, 0x005C (REVERSE SOLIDUS) kod birimi ile LineTerminatorSequence 'in TRV'sinin dizgi birleştirmesidir .
-
LineTerminatorSequence LineTerminatorSequence ::
üretiminin TRV'si, 0x000A (LINE FEED) kod biriminden oluşan String değeridir.
-
LineTerminatorSequence LineTerminatorSequence ::
üretiminin TRV'si, 0x000A (LINE FEED) kod biriminden oluşan String değeridir.
-
LineTerminatorSequence LineTerminatorSequence ::
üretiminin TRV'si, 0x2028 (LINE SEPARATOR) kod biriminden oluşan String değeridir.
-
LineTerminatorSequence LineTerminatorSequence ::
üretiminin TRV'si, 0x2029 (PARAGRAPH SEPARATOR) kod biriminden oluşan String değeridir.
-
LineTerminatorSequence LineTerminatorSequence ::
üretiminin TRV'si, 0x000A (LINE FEED) kod biriminden oluşan String değeridir.
NOT
TV , LineContinuation 'ın kod birimlerini hariç tutarken TRV bunları dahil eder. ve LineTerminatorSequence 'leri, hem TV hem de TRV için olarak normalize edilir. Bir veya dizisini dahil etmek için açık bir TemplateEscapeSequence gereklidir.
# 12.10 Otomatik Noktalı Virgül Ekleme
Çoğu ECMAScript deyimi ve bildirimi bir noktalı virgülle sonlandırılmalıdır. Bu tür noktalı virgüller her zaman kaynak metinde açıkça görünebilir. Ancak, kolaylık sağlamak için, bu tür noktalı virgüller belirli durumlarda kaynak metinden çıkarılabilir. Bu durumlar, bu durumlarda kaynak kod belirteci akışına noktalı virgüllerin otomatik olarak eklendiği söylenerek açıklanır.
# 12.10.1 Otomatik Noktalı Virgül Ekleme Kuralları
Aşağıdaki kurallarda, "belirteç", madde 12 'de açıklandığı gibi geçerli sözcüksel hedef sembolü kullanılarak belirlenen gerçek tanınan sözcüksel belirteç anlamına gelir.
Noktalı virgül eklemenin üç temel kuralı vardır:
Kaynak metin soldan sağa ayrıştırılırken, dilbilgisinin herhangi bir üretimi tarafından izin verilmeyen bir belirteçle (sorunlu belirteç olarak adlandırılır) karşılaşıldığında, aşağıdaki koşullardan bir veya daha fazlası doğruysa, sorunlu belirteçten önce otomatik olarak bir noktalı virgül eklenir:
Sorunlu belirteç, önceki belirteçten en az bir LineTerminator ile ayrılmıştır.
Sorunlu belirteç }'dir.
Önceki belirteç )'dir ve eklenen noktalı virgül daha sonra bir do-while deyiminin (14.7.2 ) sonlandırıcı noktalı virgülü olarak ayrıştırılacaktır.
Kaynak metin soldan sağa ayrıştırılırken, belirteç girdi akışının sonuna gelindiğinde ve ayrıştırıcı girdi belirteci akışını hedef uçolmayanın tek bir örneği olarak ayrıştıramadığında, girdi akışının sonuna otomatik olarak bir noktalı virgül eklenir.
Kaynak metin soldan sağa ayrıştırılırken, dilbilgisinin bazı üretimleri tarafından izin verilen bir belirteçle karşılaşıldığında, ancak üretim bir kısıtlanmış üretim ise ve belirteç, kısıtlanmış üretim içindeki "[no LineTerminator here]" açıklamasının hemen ardından gelen bir uç veya uçolmayan için ilk belirteç olacaksa (ve bu nedenle böyle bir belirtece kısıtlanmış belirteç denir) ve kısıtlanmış belirteç, önceki belirteçten en az bir LineTerminator ile ayrılmışsa, kısıtlanmış belirteçten önce otomatik olarak bir noktalı virgül eklenir.
Bununla birlikte, önceki kurallar üzerinde ek bir geçersiz kılma koşulu vardır: Eklenecek noktalı virgül daha sonra boş bir deyim olarak ayrıştırılacaksa veya bu noktalı virgül bir for deyiminin başlığındaki iki noktalı virgülden biri olacaksa, asla otomatik olarak bir noktalı virgül eklenmez (bkz. 14.7.4 ).
NOT
Dilbilgisindeki yegane kısıtlanmış üretimler şunlardır:
UpdateExpression UpdateExpression [Yield, Await] : LeftHandSideExpression [?Yield, ?Await] [no LineTerminator here] ++ LeftHandSideExpression [?Yield, ?Await] [no LineTerminator here] --
ContinueStatement ContinueStatement [Yield, Await] : continue ; continue [no LineTerminator here] LabelIdentifier [?Yield, ?Await] ;
BreakStatement BreakStatement [Yield, Await] : break ; break [no LineTerminator here] LabelIdentifier [?Yield, ?Await] ;
ReturnStatement ReturnStatement [Yield, Await] : return ; return [no LineTerminator here] Expression [+In, ?Yield, ?Await] ;
ThrowStatement ThrowStatement [Yield, Await] : throw [no LineTerminator here] Expression [+In, ?Yield, ?Await] ;
YieldExpression YieldExpression [In, Await] : yield yield [no LineTerminator here] AssignmentExpression [?In, +Yield, ?Await] yield [no LineTerminator here] ***** AssignmentExpression [?In, +Yield, ?Await]
ArrowFunction ArrowFunction [In, Yield, Await] : ArrowParameters [?Yield, ?Await] [no LineTerminator here] => ConciseBody [?In]
AsyncFunctionDeclaration AsyncFunctionDeclaration [Yield, Await, Default] : async [no LineTerminator here] function BindingIdentifier [?Yield, ?Await] ( FormalParameters [~Yield, +Await] ) { AsyncFunctionBody } [+Default] async [no LineTerminator here] function ( FormalParameters [~Yield, +Await] ) { AsyncFunctionBody }
AsyncFunctionExpression AsyncFunctionExpression : async [no LineTerminator here] function BindingIdentifier [~Yield, +Await]opt ( FormalParameters [~Yield, +Await] ) { AsyncFunctionBody }
AsyncMethod AsyncMethod [Yield, Await] : async [no LineTerminator here] ClassElementName [?Yield, ?Await] ( UniqueFormalParameters [~Yield, +Await] ) { AsyncFunctionBody }
AsyncGeneratorDeclaration AsyncGeneratorDeclaration [Yield, Await, Default] : async [no LineTerminator here] function ***** BindingIdentifier [?Yield, ?Await] ( FormalParameters [+Yield, +Await] ) { AsyncGeneratorBody } [+Default] async [no LineTerminator here] function ***** ( FormalParameters [+Yield, +Await] ) { AsyncGeneratorBody }
AsyncGeneratorExpression AsyncGeneratorExpression : async [no LineTerminator here] function ***** BindingIdentifier [+Yield, +Await]opt ( FormalParameters [+Yield, +Await] ) { AsyncGeneratorBody }
AsyncGeneratorMethod AsyncGeneratorMethod [Yield, Await] : async [no LineTerminator here] ***** ClassElementName [?Yield, ?Await] ( UniqueFormalParameters [+Yield, +Await] ) { AsyncGeneratorBody }
AsyncArrowFunction AsyncArrowFunction [In, Yield, Await] : async [no LineTerminator here] AsyncArrowBindingIdentifier [?Yield] [no LineTerminator here] => AsyncConciseBody [?In] CoverCallExpressionAndAsyncArrowHead [?Yield, ?Await] [no LineTerminator here] => AsyncConciseBody [?In]
AsyncArrowHead AsyncArrowHead : async [no LineTerminator here] ArrowFormalParameters [~Yield, +Await]
Bu kısıtlanmış üretimlerin pratik etkisi aşağıdaki gibidir:
Bir ++ veya -- belirteciyle, ayrıştırıcının bunu bir sonek işleci olarak ele alacağı bir yerde karşılaşıldığında ve önceki belirteç ile ++ veya -- belirteci arasında en az bir LineTerminator meydana geldiğinde, ++ veya -- belirtecinden önce otomatik olarak bir noktalı virgül eklenir.
Bir continue, break, return, throw veya yield belirteciyle karşılaşıldığında ve bir sonraki belirteçten önce bir LineTerminator ile karşılaşıldığında, continue, break, return, throw veya yield belirtecinden sonra otomatik olarak bir noktalı virgül eklenir.
Ok işlevi parametre(ler)i bir => belirtecinden önce bir LineTerminator tarafından takip edildiğinde, otomatik olarak bir noktalı virgül eklenir ve noktalama işareti bir sözdizimi hatasına neden olur.
Bir async belirteci, bir function veya IdentifierName veya ( belirtecinden önce bir LineTerminator tarafından takip edildiğinde, otomatik olarak bir noktalı virgül eklenir ve async belirteci sonraki belirteçlerle aynı ifadenin veya sınıf öğesinin bir parçası olarak ele alınmaz.
Bir async belirteci, bir * belirtecinden önce bir LineTerminator tarafından takip edildiğinde, otomatik olarak bir noktalı virgül eklenir ve noktalama işareti bir sözdizimi hatasına neden olur.
ECMAScript programcıları için ortaya çıkan pratik tavsiye şudur:
Bir sonek ++ veya -- işleci, işleneniyle aynı satırda olmalıdır.
Bir return veya throw deyimindeki bir Expression veya bir yield ifadesindeki bir AssignmentExpression , return, throw veya yield belirteciyle aynı satırda başlamalıdır.
Bir break veya continue deyimindeki bir LabelIdentifier , break veya continue belirteciyle aynı satırda olmalıdır.
Bir ok işlevinin parametre(ler)inin sonu ile onun =>'ı aynı satırda olmalıdır.
Bir eşzamansız işlev veya yöntemden önce gelen async belirteci, hemen sonraki belirteçle aynı satırda olmalıdır.
# 12.10.2 Otomatik Noktalı Virgül Ekleme Örnekleri
Bu bölüm normatif değildir.
Kaynak
{ 1 2 } 3
otomatik noktalı virgül ekleme kurallarıyla bile ECMAScript dilbilgisinde geçerli bir tümce değildir. Buna karşılık, kaynak
{ 1 2 } 3
da geçerli bir ECMAScript tümcesi değildir, ancak otomatik noktalı virgül ekleme ile aşağıdaki şekle dönüştürülür:
{ 1
;2 ;} 3;
ki bu geçerli bir ECMAScript tümcesidir.
Kaynak
for (a; b
)
geçerli bir ECMAScript tümcesi değildir ve otomatik noktalı virgül ekleme ile değiştirilmez, çünkü noktalı virgül bir for deyiminin başlığı için gereklidir. Otomatik noktalı virgül ekleme, bir for deyiminin başlığındaki iki noktalı virgülden birini asla eklemez.
Kaynak
return
a + b
otomatik noktalı virgül ekleme ile aşağıdaki şekle dönüştürülür:
return;
a + b;
NOT
a + b ifadesi, return deyimi tarafından döndürülecek bir değer olarak ele alınmaz, çünkü bir LineTerminator onu return belirtecinden ayırır.
Kaynak
a = b
++c
otomatik noktalı virgül ekleme ile aşağıdaki şekle dönüştürülür:
a = b;
++c;
NOT
++ belirteci, b değişkenine uygulanan bir sonek işleci olarak ele alınmaz, çünkü b ile ++ arasında bir LineTerminator meydana gelir.
Kaynak
if (a > b)
else c = d
geçerli bir ECMAScript tümcesi değildir ve else belirtecinden önce otomatik noktalı virgül ekleme ile değiştirilmez, çünkü dilbilgisinin hiçbir üretimi bu noktada uygulanmasa bile, otomatik olarak eklenen bir noktalı virgül daha sonra boş bir deyim olarak ayrıştırılırdı.
Kaynak
a = b + c
(d + e).print()
otomatik noktalı virgül ekleme ile dönüştürülmez, çünkü ikinci satırı başlatan parantezli ifade, bir işlev çağrısı için argüman listesi olarak yorumlanabilir:
a = b + c(d + e).print()
Bir atama deyiminin bir sol parantezle başlaması gerektiği durumda, programcının otomatik noktalı virgül eklemeye güvenmek yerine önceki deyimin sonunda açık bir noktalı virgül sağlaması iyi bir fikirdir.
# 12.10.3 Otomatik Noktalı Virgül Eklemenin İlginç Durumları
Bu bölüm normatif değildir.
ECMAScript programları, otomatik noktalı virgül eklemeye güvenerek çok az noktalı virgül içeren bir tarzda yazılabilir. Yukarıda açıklandığı gibi, her yeni satırda noktalı virgül eklenmez ve otomatik noktalı virgül ekleme, satır sonlandırıcılar arasındaki birden fazla belirtece bağlı olabilir.
ECMAScript'e yeni sözdizimsel özellikler eklendikçe, kendilerinden önce gelen otomatik noktalı virgül eklemeye dayanan satırların, ayrıştırıldıklarında dilbilgisi üretimlerini değiştirmesine neden olabilecek ek dilbilgisi üretimleri eklenebilir.
Bu bölümün amaçları bakımından, bir otomatik noktalı virgül ekleme durumu, kendisinden önce gelen kaynak metne bağlı olarak bir noktalı virgülün eklenip eklenmeyebileceği bir yer ise ilginç kabul edilir. Bu bölümün geri kalanı, ECMAScript'in bu sürümündeki bir dizi ilginç otomatik noktalı virgül ekleme durumunu açıklar.
# 12.10.3.1 Deyim Listelerinde Otomatik Noktalı Virgül Eklemenin İlginç Durumları
Bir StatementList içinde, birçok StatementListItem noktalı virgülle biter ve bunlar otomatik noktalı virgül ekleme kullanılarak çıkarılabilir. Yukarıdaki kuralların bir sonucu olarak, bir ifadeyi sonlandıran bir satırın sonunda, aşağıdaki satır aşağıdakilerden herhangi biriyle başlıyorsa bir noktalı virgül gereklidir:
Bir açma parantezi (() . Noktalı virgül olmadan, iki satır birlikte bir CallExpression olarak ele alınır.
Bir açma köşeli parantez ([) . Noktalı virgül olmadan, iki satır birlikte bir ArrayLiteral veya ArrayAssignmentPattern yerine özellik erişimi olarak ele alınır.
Bir şablon değişmezi (```) . Noktalı virgül olmadan, iki satır birlikte, önceki ifade MemberExpression olarak kullanılarak etiketli bir Şablon (13.3.11 ) olarak yorumlanır.
Tek terimli + veya - . Noktalı virgül olmadan, iki satır birlikte karşılık gelen ikili işlecin bir kullanımı olarak yorumlanır.
Bir RegExp değişmezi . Noktalı virgül olmadan, iki satır birlikte, örneğin RegExp'in bayrakları varsa, bunun yerine / MultiplicativeOperator olarak ayrıştırılabilir.
# 12.10.3.2 Otomatik Noktalı Virgül Ekleme ve “[no LineTerminator here]” Durumları
Bu bölüm normatif değildir.
ECMAScript, “[no LineTerminator here]” içeren dilbilgisi üretimleri içerir. Bu üretimler bazen dilbilgisinde isteğe bağlı işlenenlere sahip olmanın bir yoludur. Bu konumlara bir LineTerminator eklemek, isteğe bağlı işleneni olmayan dilbilgisi üretimini kullanarak bir kaynak metnin dilbilgisi üretimini değiştirirdi.
Bu bölümün geri kalanı, ECMAScript'in bu sürümünde “[no LineTerminator here]” kullanan bir dizi üretimi açıklar.
# 12.10.3.2.1 İsteğe Bağlı İşlenenler ve “[no LineTerminator here]” İçeren Dilbilgisi Üretimlerinin Listesi
← önceki 11 ECMAScript Dili: Kaynak Metin
sonraki → 13 ECMAScript Dili: İfadeler