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:
    AndBoşluk
    OrBoşluk

  PrefixOperator:
    !

  PrefixOperatorRequiresWhitespace:
    NotBoş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