Aracılığıyla paylaş


İ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
    0123456789

ş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
    truefalse

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
    0123456789

   Üs Bölümü:
     Üs GöstergesiİşaretioptDecimalDigits

   ExponentIndicator:biri
    eE

   İşaret: biri
    +-

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
    =<<=>>=<>
    +-*/^
    &
    &&||
    inexactin

   BinaryOperatorRequiresWhitespace:
     And Boşluk
     Or Boşluk

   PrefixOperator:
    !

   PrefixOperatorRequiresWhitespace:
     Not Boşluk

   PostfixOperator:
    %

Başvuru işleci

   ReferenceOperator:biri
    .!

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