İfade dil bilgisi
Not
Microsoft Power Fx, tuval uygulamaları için formül dilinin yeni adıdır. Dili tuval uygulamalarından ayırdığımız, Microsoft Power Platform ürünlerine entegre ettiğimiz ve açık kaynak olarak sunduğumuz bu süreçte bu makaleler geliştirilmeye devam eder. Dilin tanıtımı için Microsoft Power Fx genel bakış makalesiyle başlayın.
Microsoft Power Fx, bir adı ifadeye bağlayan formüllere dayalıdır. Excel çalışma sayfalarında olduğu gibi, ifadenin gelen bağımlılıkları değiştikçe ifade yeniden hesaplanır ve adın değeri değişir. Bu durum, yeniden hesaplamanın diğer formüllere basamaklanmasına neden olabilir.
Bu dil bilgisi, formülün ifade bölümünü kapsar. Formül oluşturmak için ada bağlama, Power Fx'in nasıl tümleştirildiğine bağlıdır. Çalışma sayfalarında, bağlama söz dizimi gösterilmediği için ifadenin yazıldığı konum ile belirtilir (ör. A1 hücresine =B1
ifadesinin girilmesi). Bazı durumda, bir veritabanı tablosunun hesaplanan sütunlarını desteklemek gibi işlemlerde hiçbir bağlama gerekmez ve Power Fx, ifade değerlendiricisi olarak kullanılır. Power Apps için bağlama, Power Apps Studio'da çalışırken Power Apps Studio dışında kullanım için YAML temelli serileştirme biçimi ile belirtilir.
Dil bilgisi kuralları
Sözcük temelli ve söz dizimsel dil bilgisi, dil bilgisi üretimlerinin kullanılmasıyla sunulur. Her bir dil bilgisi üretimi, terminal dışı bir sembolü ve bu terminal dışı sembolün olası genişletmelerini, terminal dışı veya terminal semboller dizisi olarak tanımlar. Dil bilgisi üretimlerinde, terminal dışı semboller italik yazıyla, terminal sembolleri ise sabit genişlikli yazı tipinde gösterilir.
Bir dil bilgisi üretiminin ilk satırı, tanımlanmakta olan terminal dışı sembolün adıdır ve sonuna iki nokta eklenir. Birbirini izleyen her girintili satır, terminal dışı sembolün terminal dışı veya terminal sembolleri dizisi olarak verilen olası bir genişletmesini içerir. Örneğin, şu üretim:
Genel Tanımlayıcı:
[@
Tanımlayıcı]
[@
belirtecinden oluşan, ardından Tanımlayıcı gelen, ardından ]
belirteci gelen bir GlobalIdentifier öğesini ifade eder.
Terminal dışı bir sembolün birden fazla olası genişletmesi olduğunda, alternatifler ayrı satırlarda listelenir. İsteğe bağlı bir sembol göstermek için "ist" alt simgesi kullanılır. Örneğin, şu üretim:
İşlev Çağrısı:
FunctionIdentifier(
FunctionArgumentstercihi)
şunun kısaltmasıdır:
İşlev Çağrısı:
FunctionIdentifier (İşlev Tanımlayıcı)(
)
FunctionIdentifier(
FunctionArguments)
Alternatifler normalde ayrı satırlarda listelenir, ancak birçok alternatifin olduğu durumlarda, "şunlardan biri" tümceciği tek bir satırda verilen genişletme listesinden önce gelebilir. Bu, her bir alternatifi ayrı satırlarda listelemenin kısayoludur.
Örneğin, şu üretim:
DecimalDigit:biri
0
1
2
3
4
5
6
7
8
9
şunun kısaltmasıdır:
Ondalık Basamak:
0
1
2
3
4
5
6
7
8
9
Sözcük temelli analiz
Sözcük temelli birim üretimi, Power Fx ifadesinin sözcük temelli dil bilgisini tanımlar. Her geçerli Power Fx ifadesi bu dil bilgisine uyar.
İfade Birimi:
ExpressionElementstercihi
İfade Öğeleri:
İfade Öğesi
ExpressionElementExpressionElementstercihi
ExpressionElement:
Boşluk
Yorum
Sözcük temelli düzeyde bir Power Fx ifadesi, Boşluk, Açıklama ve Belirteç öğeleri akışından oluşur. Bu üretimlerin her biri aşağıdaki bölümlerde ele alınmıştır. Söz dizimi dil bilgisinde yalnızca Belirteç öğeleri önemlidir.
Boşluk
Boşluk, bir Power Apps belgesi içindeki açıklamaları ve belirteçleri ayırmak için kullanılır.
Boşluk:
herhangi bir Unicode Alan ayırıcısı (Zs sınıfı)
herhangi bir Unicode Satır ayırıcısı (Zs sınıfı)
herhangi bir Unicode Paragraf ayırıcısı (Zp sınıfı)
Yatay sekme karakteri (U+0009)
Satır besleme karakteri (U+000A)
Dikey sekme karakteri (U+000B)
Sonraki sayfaya geçme karakteri (U+000C)
Satır başı karakteri (U+000D)
Yeni satır karakteri (U+0085)
Açıklamalar
İki açıklama biçimi desteklenmektedir:
//
karakterleriyle başlayıp kaynak satırın sonuna kadar giden tek satırlı açıklamalar./*
karakterleriyle başlayıp*/
karakterleriyle biten sınırlandırılmış açıklamalar. Sınırlandırılmış açıklamalar birden çok satıra yayılabilir.
Yorum:
Sınırlandırılmış Yorum
SingleLineComment (Tek Satırlı Yorum)
SingleLineComment:
//
SingleLineCommentCharactersseçeneği
SingleLineCommentKarakterleri:
SingleLineCommentCharacter
SingleLineCommentCharacterSingleLineCommentCharactersopt
SingleLineCommentCharacter:
NewLineCharacter haricindeki herhangi bir Unicode karakter
Sınırlandırılmış Yorum:
/*
DelimitedCommentCharacterstercihi*/
DelimitedCommentCharacters:
DelimitedCommentCharactersNoAsteriskDelimitedCommentCharactersopt
*
DelimitedCommentAfterAsteriskCharacters
DelimitedCommentAfterAsteriskCharacters:
DelimitedCommentNoSlashAsteriskCharacterDelimitedCommentCharactersopt
*
DelimitedCommentAfterAsteriskCharacters
DelimitedCommentCharactersNoAsterisk:
* (yıldız) dışındaki herhangi bir Unicode karakteri
DelimitedCommentNoSlashAsteriskCharacter:
/ (eğik çizgi) veya * (yıldız) dışındaki herhangi bir Unicode karakteri
Açıklamalar iç içe değildir. /*
ile */
karakter dizilerinin tek satırlı bir açıklama içinde ve //
ile /*
karakter dizilerinin de sınırlandırılmış bir açıklama içinde özel bir anlamı yoktur.
Metin değişmez dizeleri içindeki yorumlar işlenmez.
Aşağıdaki örnekte iki adet sınırlandırılmış açıklama vardır:
/* Hello, world
*/
"Hello, world" /* This is an example of a text literal */
Aşağıdaki örneklerde üç adet tek satırlı açıklama vardır:
// Hello, world
//
"Hello, world" // This is an example of a text literal
Değişmez Değerler
Değişmez değer, bir değerin kaynak kodu gösterimidir.
Gerçek:
Mantıksal Değişmez
Sayı Değişmez
Metin Değişmez
Mantıksal değişmez değerler
Mantıksal değişmez değer, true ve false değerlerini yazmak için kullanılır ve mantıksal bir değer üretir.
LogicalLiteral:biri
true
false
Sayı değişmez değerleri
Sayı değişmez değeri, sayısal bir değer yazmak için kullanılır ve bir sayı değeri üretir.
Sayı Değişmezi:
DecimalDigitsÜs Parçasıtercihi
DecimalDigitsDecimalSeparatorDecimalDigitsoptÜs Parçasıopt
DecimalSeparatorDecimalDigitsÜs Parçasıopt
Ondalık Basamaklar:
Ondalık Basamak
Ondalık BasamaklarOndalık Basamak
DecimalDigit:biri
0
1
2
3
4
5
6
7
8
9
Üs Bölümü:
Üs GöstergesiİşaretioptDecimalDigits
Metin değişmez değerleri
Metin değişmez değeri, bir Unicode karakter dizisi yazmak için kullanılır ve bir metin değeri üretir. Metin değişmez değerleri çift tırnak işareti içine alınır. Metin değerine çift tırnak işareti eklemek için aşağıdaki örnekte gösterildiği gibi çift tırnak işaretlerini tekrarlayın:
"The ""quoted"" text" // The "quoted" text
Metin Değeri:
"
TextLiteralCharacterstercihi"
TextLiteralKarakterler:
TextLiteralCharacterTextLiteralCharactersopt
TextLiteralCharacter:
MetinKarakterNoDoubleQuote
DoubleQuoteEscapeSequence
TextCharacterNoDoubleQuote:
çift tırnak haricinde herhangi bir Unicode kod noktası
DoubleQuoteEscapeSequence:
"
"
Tanımlayıcılar
Tanımlayıcı, bir değere başvurmak için kullanılan addır. Tanımlayıcılar, normal tanımlayıcılar veya tek tırnak işaretli tanımlayıcılar olabilir.
Tanımlayıcı:
IdentifierNameancakOperatorveyaContextKeyword değil...
Tanımlayıcı Adı:
IdentifierStartCharacterIdentifierContinueCharacterstercihi
'
SingleQuotedIdentifier'
IdentifierStartCharacter:
Harf Karakteri
_
IdentifierContinueCharacter:
IdentifierStartCharacter
OndalıkDigitCharacter
Bağlanıyor Karakteri
Birleştirici Karakter
FormattingCharacter
IdentifierContinueCharacters:
IdentifierContinueCharacterIdentifierContinueCharactersopt
Mektup Karakteri:
Büyük harf (Lu) veya Küçük harf (Ll) sınıfında herhangi bir Unicode karakteri
Başlık harfi (Lt) sınıfında herhangi bir Unicode karakteri
Harf değiştiricisi (Lm) veya Diğer harf (Lo) sınıfında herhangi bir Unicode karakteri
Sayı harfi (Nl) sınıfından herhangi bir Unicode karakteri
Birleştirici Karakter:
Aralıksız işareti (Mn) veya Aralık birleştirme işareti (Mc) sınıfından herhangi bir Unicode karakteri
Ondalık Basamak Karakteri:
Ondalık hanesi (Nd) sınıfından herhangi bir Unicode karakteri
Bağlantı Karakteri:
Bağlayıcı noktalama işareti (Pc) sınıfından herhangi bir Unicode karakteri
Biçimlendirme Karakteri:
Biçim (Cf) sınıfından herhangi bir Unicode karakteri
Tek tırnaklı tanımlayıcılar
Tek tırnak işaretli tanımlayıcı; anahtar sözcükler, boşluk, yorumlar ve işleçler dahil olmak üzere tanımlayıcı olarak kullanılacak bir Unicode karakterlerden dizisi içerebilir. Tek tırnak işareti karakterleri, iki tek tırnak işareti kaçış dizisiyle desteklenir.
SingleQuotedIdentifier:
SingleQuotedIdentifierCharacters
SingleQuotedIdentifierCharacters:
SingleQuotedIdentifierCharacterSingleQuotedIdentifierCharactersopt
SingleQuotedIdentifierCharacter:
MetinKarakterlerNoSingleQuote
SingleQuoteEscapeSequence
Metin KarakterleriNoSingleQuote:
' dışındaki herhangi bir Unicode karakteri (U+0027)
SingleQuoteEscapeSequence:
'
'
Netleştirilmiş tanımlayıcı
DisambiguatedIdentifier:
TableColumnIdentifier
Genel Tanımlayıcı
TableColumnIdentifier:
Tanımlayıcı[@
Tanımlayıcı]
Genel Tanımlayıcı:
[@
Tanımlayıcı]
Bağlam anahtar sözcükleri
ContextKeyword:
Parent
Self
ThisItem
ThisRecord
Büyük/küçük harfe duyarlı
Power Apps tanımlayıcıları büyük/küçük harfe duyarlıdır. Formül yazılırken yazma aracı, bunları otomatik olarak doğru büyük/küçük harf biçimine dönüştürür.
Ayırıcılar
Ondalık Ayırıcı:
.
(nokta) ondalık sayılar için ayırıcı olarak nokta kullanan diller için, örneğin 1.23
,
(virgül) ondalık sayılar için ayırıcı olarak virgül kullanan diller için, örneğin 1,23
Liste Ayırıcı:
,
(virgül) DecimalSeparator ise ( .
nokta)
;
(noktalı virgül) OndalıkAyırıcı ise ,
(virgül)
Zincirleme Ayırıcı:
;
(noktalı virgül) DecimalSeparator ise ( .
nokta)
;;
(çift noktalı virgül) eğer DecimalSeparator ise ,
(virgül)
İşleçler
İşleçler, bir veya daha fazla işlenen içeren işlemleri betimleyen formüllerde kullanılır. Örneğin a + b
ifadesi, iki işleneni (a
ve b
) toplamak için +
işlecini kullanır.
Operatör:
İkili Operatör
BinaryOperatorRequiresWhitespace
PrefixOperator
PrefixOperatorRequiresWhitespace
PostfixOperator
BinaryOperator:biri
=
<
<=
>
>=
<>
+
-
*
/
^
&
&&
||
in
exactin
BinaryOperatorRequiresWhitespace:
And
Boşluk
Or
Boşluk
PrefixOperatorRequiresWhitespace:
Not
Boşluk
Başvuru işleci
Nesne başvurusu
Referans:
Temel Başvuru
BaseReferenceReferenceOperator ReferenceList...
Temel Referans:
Tanımlayıcı
DisambiguatedIdentifier
ContextKeyword (BağlamAnahtar Kelime)
Referans Listesi:
Tanımlayıcı
TanımlayıcıReferenceOperatorReferenceList
Satır içi kaydı
Satır İçi Kayıt:
{
InlineRecordListtercihi}
InlineRecordList:
Tanımlayıcı:
İfade
Tanımlayıcı:
İfadeListSeparatorInlineRecordList
Satır içi tablo
InlineTable:
[
InlineTableListtercihi]
InlineTableList:
İfade
İfadeListesiAyırıcıInlineTableList
Expression
İfade:
Literal
Referans
Satır İçi Kayıt
Satır İçi Tablo
İşlev Çağrısı
(
İfade)
PrefixOperatorİfadesi
İfade PostfixOperator...
İfadeBinaryOperatorİfadesi
Zincir ifadeler
Zincirleme İfade:
İfade
İfadeChainingSeparatorChainedExpressionopt
İşlev çağrısı
İşlev Çağrısı:
FunctionIdentifier(
FunctionArgumentstercihi)
İşlev Tanımlayıcısı:
Tanımlayıcı
Tanımlayıcı.
: FunctionIdentifier
İşlev Argümanları:
Zincirleme İfade
ChainedExpressionListSeparatorFunctionArguments