İ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:
GlobalIdentifier :
[@ 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:
FunctionCall :
FunctionIdentifier ( FunctionArgumentsist )
şunun kısaltmasıdır:
FunctionCall :
FunctionIdentifier ( )
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 : şunlardan biri
0 1 2 3 4 5 6 7 8 9
şunun kısaltmasıdır:
DecimalDigit :
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.
ExpressionUnit :
ExpressionElementsist
ExpressionElements :
ExpressionElement
ExpressionElement ExpressionElementsist
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.
Açıklama :
DelimitedComment
SingleLineComment
SingleLineComment :
// SingleLineCommentCharactersist
SingleLineCommentCharacters :
SingleLineCommentCharacter
SingleLineCommentCharacter SingleLineCommentCharactersist
SingleLineCommentCharacter :
NewLineCharacter haricindeki herhangi bir Unicode karakter
DelimitedComment :
/* DelimitedCommentCharactersist */
DelimitedCommentCharacters :
DelimitedCommentCharactersNoAsterisk DelimitedCommentCharactersist
* DelimitedCommentAfterAsteriskCharacters
DelimitedCommentAfterAsteriskCharacters :
DelimitedCommentNoSlashAsteriskCharacter DelimitedCommentCharactersist
* 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.
Değişmez Değer :
LogicalLiteral
NumberLiteral
TextLiteral
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 : şunlardan 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.
NumberLiteral :
DecimalDigits ExponentPartist
DecimalDigits DecimalSeparator DecimalDigitsist ExponentPartist
DecimalSeparator DecimalDigits ExponentPartist
DecimalDigits :
DecimalDigit
DecimalDigits DecimalDigit
DecimalDigit : şunlardan biri
0 1 2 3 4 5 6 7 8 9
ExponentPart :
ExponentIndicator Signist DecimalDigits
ExponentIndicator : şunlardan biri
e E
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
TextLiteral :
" TextLiteralCharactersist "
TextLiteralCharacters :
TextLiteralCharacter TextLiteralCharactersist
TextLiteralCharacter :
TextCharacterNoDoubleQuote
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.
Identifier :
IdentifierName ancak şunlar değil: Operator veya ContextKeyword
IdentifierName :
IdentifierStartCharacter IdentifierContinueCharactersist
' SingleQuotedIdentifier '
IdentifierStartCharacter :
LetterCharacter
_
IdentifierContinueCharacter :
IdentifierStartCharacter
DecimalDigitCharacter
ConnectingCharacter
CombiningCharacter
FormattingCharacter
IdentifierContinueCharacters :
IdentifierContinueCharacter IdentifierContinueCharactersist
LetterCharacter :
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
CombiningCharacter :
Aralıksız işareti (Mn) veya Aralık birleştirme işareti (Mc) sınıfından herhangi bir Unicode karakteri
DecimalDigitCharacter :
Ondalık hanesi (Nd) sınıfından herhangi bir Unicode karakteri
ConnectingCharacter :
Bağlayıcı noktalama işareti (Pc) sınıfından herhangi bir Unicode karakteri
FormattingCharacter :
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 :
SingleQuotedIdentifierCharacter SingleQuotedIdentifierCharactersist
SingleQuotedIdentifierCharacter :
TextCharactersNoSingleQuote
SingleQuoteEscapeSequence
TextCharactersNoSingleQuote :
' dışındaki herhangi bir Unicode karakteri (U+0027)
SingleQuoteEscapeSequence :
' '
Netleştirilmiş tanımlayıcı
DisambiguatedIdentifier:
TableColumnIdentifier
GlobalIdentifier
TableColumnIdentifier :
Identifier [@ Identifier ]
GlobalIdentifier:
[@ 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
DecimalSeparator:
. Ondalık sayılar için noktayı ayırıcı olarak kullanan dillerde (nokta); ör. 1.23
, (virgül) ondalık sayılarda ayırıcı olarak virgül kullanılan diller için; örneğin: 1,23
ListSeparator:
, (virgül) DecimalSeparator . (nokta) ise
; (noktalı virgül) DecimalSeparator , (virgül) ise
ChainingSeparator:
; (noktalı virgül) DecimalSeparator . (nokta) ise
;; (çift noktalı virgül) DecimalSeparator , (virgül) ise
İş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.
İşleç:
BinaryOperator
BinaryOperatorRequiresWhitespace
PrefixOperator
PrefixOperatorRequiresWhitespace
PostfixOperator
BinaryOperator: şunlardan biri
= < <= > >= <>
+ - * / ^
&
&& ||
in exactin
BinaryOperatorRequiresWhitespace:
And Boşluk
Or Boşluk
PrefixOperatorRequiresWhitespace:
Not Boşluk
Başvuru işleci
ReferenceOperator: şunlardan biri
. !
Nesne başvurusu
Reference:
BaseReference
BaseReference ReferenceOperator ReferenceList
BaseReference:
Tanımlayıcı
DisambiguatedIdentifier
ContextKeyword
ReferenceList:
Tanımlayıcı
Identifier ReferenceOperator ReferenceList
Satır içi kaydı
InlineRecord:
{ InlineRecordListist }
InlineRecordList:
Identifier : Expression
Identifier : Expression ListSeparator InlineRecordList
Satır içi tablo
InlineTable:
[ InlineTableListist ]
InlineTableList:
Expression
Expression ListSeparator InlineTableList
Expression
Expression:
Literal
Başvuru
InlineRecord
InlineTable
FunctionCall
( Expression )
PrefixOperator Expression
Expression PostfixOperator
Expression BinaryOperator Expression
Zincir ifadeler
ChainedExpression:
Expression
Expression ChainingSeparator ChainedExpressionist
İşlev çağrısı
FunctionCall:
FunctionIdentifier ( FunctionArgumentsist )
FunctionIdentifier:
Tanımlayıcı
Identifier . FunctionIdentifier
FunctionArguments:
ChainedExpression
ChainedExpression ListSeparator FunctionArguments