Slovnica izrazov

opomba,

Microsoft Power Fx je novo ime za jezik formule za aplikacije s platnom. Ti članki so delo v teku, saj izvlečemo jezik iz aplikacij s platnom, ga integriramo z drugimi izdelki Microsoft Power Platform in damo na voljo odprtokodno. Začnite s člankom Pregled storitve Microsoft Power Fx za uvod v jezik.

Microsoft Power Fx temelji na formulah, ki vežejo ime na izraz. Tako kot pri delovnih listih Excel se s spreminjanjem vhodnih odvisnosti izraz znova izračuna in vrednost imena spremeni, z možnostjo kaskade ponovnega izračuna v druge formule.

Ta slovnica zajema izrazni del formule. Vezanje na ime pri ustvarjanju formule je odvisno od načina integracije jezika Power Fx. V delovnih listih sintaksa vezanja ni izražena; implicira jo lokacija, kjer je izraz zapisan – na primer vnos =B1 v celico A1. V nekaterih primerih vezava sploh ni potrebna, Power Fx pa se uporablja kot ocenjevalnik izrazov, na primer pri podpori izračunanih stolpcev tabele zbirke podatkov. Za Power Apps je vezanje implicirano pri delu v storitvi Power Apps Studio s formatom serializacije, ki temelji na YAML, za uporabo zunaj storitve Power Apps Studio.

Slovnične konvencije

Leksikalna in sintaktična slovnica sta predstavljeni z uporabo slovničnih produkcij. Vsaka slovnična produkcija določi nekončni simbol in možne razširitve tega nekončnega simbola v zaporedja nekončnih ali končnih simbolov. V slovničnih produkcijah so nekončni simboli prikazani v ležečem tisku, končni simboli pa v pisavi s fiksno širino.

Prva vrstica slovnične produkcije vsebuje ime nekončnega simbola, za katerega poteka določitev, in dvopičje. Vsaka zaporedna zamaknjena vrstica vsebuje možno razširitev neterminalnega simbola, podanega kot zaporedje neterminalnih ali terminalnih simbolov. Na primer naslednja produkcija:

   GlobalIdentifier:
     [@ Identifikator]

opredeljuje GlobalIdentifier, ki je sestavljen iz žetona [@ in nato Identifikatorja, ki mu sledi žeton ].

Če obstaja več kot ena možna razširitev nekončnega simbola, so možnosti navedene v ločenih vrsticah. Podpisano besedilo »opt« je uporabljeno, da označuje izbirni simbol. Na primer naslednja produkcija:

   FunctionCall:
     Identifikator funkcije(Argumenti funkcijeopt)

je okrajšava za:

   FunctionCall:
     Identifikator funkcije()
     Identifikator funkcije(Argumenti funkcije)

Alternative so običajno navedene v ločenih vrsticah, čeprav je lahko v primerih, ko je alternativ veliko, pred seznamom razširitev, danih za eno vrstico, vključena fraza »eno od«. To je enostavno okrajšava za navajanje vsake od alternativ v ločeni vrstici.

Na primer naslednja produkcija:

   DecimalDigit:eden od
    0123456789

je okrajšava za:

   DecimalDigit:
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9

Leksikalna analiza

Produkcija leksikalnih enot določa leksikalno slovnico za izraz v jeziku Power Fx. Vsak veljaven izraz Power Fx je zapisan v skladu s to slovnico.

   Izrazna enota:
     ExpressionElementsopt

   Izrazni elementi:
     ExpressionElement
     ExpressionElementExpressionElementsopt

   Izraznaelement:
     Presledek
     Komentiraj

Na leksikalni ravni je izraz Power Fx sestavljen iz toka elementov Whitespace, Comment in Token. Vsaka posamezna produkcija je zajeta v naslednjih razdelkih. Samo elementi Žeton so pomembni v skladenjski slovnici.

Presledek

Presledek se uporablja za ločevanje komentarjev in žetonov znotraj dokumenta aplikacije Power Apps.

   Presledek:
    katero koli ločilo Unicode za presledek (razred Zs)
    katero koli ločilo Unicode za vrstico (razred Zl)
    katero koli ločilo Unicode za odstavek (razred Zp)
    Znak za vodoravno tabulatorko (U + 0009)
    Znak za novo vrstico (U + 000A)
    Znak za navpično tabulatorko (U + 000B)
    Znak za prelom strani (U + 000C)
    Znak za vračanje na začetek vrstice (U + 000D)
    Znak za naslednjo vrstico (U + 0085)

Pripombe

Podprti sta dve obliki komentarjev:

  • Enovrstični komentarji, ki se začnejo z znakoma // in segajo do konca izvorne vrstice.
  • Ločeni komentarji, ki se začnejo z znakoma /* in končajo z znakoma */. Ločeni komentarji se lahko raztezajo čez več vrstic.

   Komentar:
     RazmejenKomentar
     SingleLineComment

   SingleLineComment:
     // SingleLineCommentCharactersopt

   SingleLineCommentCharacters:
     SingleLineCommentCharacter
     SingleLineCommentCharacterSingleLineCommentCharactersopt

   SingleLineCommentCharacter:
    vsi znaki Unicode razen NewLineCharacter

   Razmejen komentar:
     /* LočiloCommentCharacters opt*/

   LočiloCommentCharacters:
     DelimitedCommentCharactersNoAsteriskDelimitedCommentCharactersopt
     * LočenoCommentAfterAsteriskCharacters

   LočenoCommentAfterAsteriskCharacters:
     DelimitedCommentNoSlashAsteriskCharacterDelimitedCommentCharactersopt
     * LočenoCommentAfterAsteriskCharacters

   LočenoCommentCharactersNoAsterisk:
    kateri koli znak Unicode razen * (zvezdica)

   RazmejenKomentarBrez PoševniceAsteriskCharacter:
    kateri koli znak Unicode razen / (poševnica) ali * (zvezdica)

Komentarji niso ugnezdeni. Zaporedja znakov /* in */ nimajo nobenega posebnega pomena znotraj enovrstičnega komentarja, zaporedja znakov // in /* pa nimajo posebnega pomena znotraj omejenega komentarja.

Komentarji niso obdelani v besedilnih nizih.

Naslednji primer vključuje dva ločena komentarja:

/* Hello, world
*/
"Hello, world"    /* This is an example of a text literal */

Naslednji primeri vključujejo tri enovrstične komentarje:

// Hello, world
//
"Hello, world"    // This is an example of a text literal

Nizi

Niz je predstavitev vrednosti v obliki izvorne kode.

   Dobesedno:
     LogičniLiteral
     NumberLiteral
     TextLiteral

Logični nizi

Logični niz se uporablja za zapisovanje vrednosti true in false in proizvodnjo logične vrednosti.

   Logični dobesedni:eden od
    truefalse

Številčni nizi

Številčni niz se uporablja za zapisovanje številčne vrednosti in izdelavo številčne vrednosti.

   Številski literal:
     DecimalDigitsExponentPartopt
     DecimalDigitsDecimalSeparatorDecimalDigitsoptExponentPartopt
     DecimalSeparatorDecimalDigitsExponentPartopt

   Decimalne števke:
     DecimalDigit
     DecimalDigitDecimalDigit

   DecimalDigit:eden od
    0123456789

   Eksponentni del:
     Indikator eksponentaZnakoptDecimalne števke

   Indikator eksponenta:eden od
    eE

   Znak:eden od
    +-

Besedilni nizi

Besedilni niz se uporablja za zapisovanje zaporedja znakov Unicode in izdelavo besedilne vrednosti. Besedilni nizi so zaobjeti z dvojnimi narekovaji. Če želite vključiti dvojne narekovaje v vrednost besedila, dvojne narekovaje ponovite, kot je prikazano v naslednjem primeru:

"The ""quoted"" text" // The "quoted" text

   TextLiteral (Besedilo):
     " TextLiteralCharactersopt"

   BesedilniLiteralCharacters:
     TextLiteralCharacterTextLiteralCharactersopt

   TextLiteralCharacter:
     TextCharacterNoDoubleQuote
     DoubleQuoteEscapeSequence

   TextCharacterNoDoubleQuote:
    katero koli kodno točko Unicode razen dvojnih narekovajev

   DoubleQuoteEscapeSequence:
    ""

Identifikatorji

Identifikator je ime, ki se uporablja za sklicevanje na vrednost. Identifikatorji so lahko običajni identifikatorji ali identifikatorji z enim narekovajem.

   Identifikator:
     IdentifikatorNamevendarneOperatoraliKontekstKeyword

   IdentifikatorName:
     IdentifierStartCharacterIdentifierContinueCharactersopt
     ' SingleQuotedIdentifier'

   IdentifikatorStartCharacter:
     LetterCharacter
    _

   IdentifierContinueCharacter:
     IdentifierStartCharacter
     DecimalDigitCharacter
     ConnectingCharacter
     CombiningCharacter
     FormattingCharacter

   IdentifierContinueCharacters:
     IdentifierContinueCharacterIdentifierContinueCharactersopt

   LetterCharacter:
    kateri koli znak Unicode razreda Velike črke (Lu) ali Male črke (Ll)
    kateri koli znak Unicode razreda Naslovne črke (Lt)
    kateri koli znak Unicode razreda Modifikatorske črke (Lm) ali Druge črke (Lo)
    kateri koli znak Unicode razreda Številka, črka (Nl)

   CombiningCharacter:
    kateri koli znak Unicode razreda Nepresledkovna oznaka (Mn) ali Presledkovno združevalna oznaka (Mc)

   DecimalDigitCharacter:
    kateri koli znak Unicode razreda Decimalno število (Nd)

   Povezovalnicharacter:
    kateri koli znak Unicode razreda Povezovalno ločilo (Pc)

   Polnilo oblikovanja:
    kateri koli znak Unicode razreda Oblika (Cf)

Identifikatorji z enojnimi narekovaji

En navedeni identifikator lahko vsebuje katero koli zaporedje znakov Unicode za uporabo kot identifikator, vključno ključne besede, presledek, komentarje in operatorje. Znaki za enojni narekovaj so podprti z ubežnim zaporedjem dveh enojnih narekovajev.

   SingleQuotedIdentifier:
     SingleQuotedIdentifierCharacters

   SingleQuotedIdentifierCharacters:
     SingleQuotedIdentifierCharacterSingleQuotedIdentifierCharactersopt

   SingleQuotedIdentifierCharacter:
     TextCharactersNoSingleQuote
     SingleQuoteEscapeSequence

   TextCharactersNoSingleQuote:
    kateri koli znak Unicode razen ' (U+0027)

   SingleQuoteEscapeSequence:
    ''

Jasen identifikator

   DvoumniIdentifier:
     TabelaColumnIdentifier
     GlobalIdentifier

   TableColumnIdentifier:
     Identifikator[@Identifikator]

   Globalni identifikator:
     [@ Identifikator]

Ključne besede konteksta

   KontekstNaključna beseda:
    Parent
    Self
    ThisItem
    ThisRecord

Razlikovanje velikih/malih črk

Identifikatorji Power Apps razlikujejo med velikimi in malimi črkami. Orodje za ustvarjanje jih bo samodejno spremenilo v pravilen primer, ko se formula zapisuje.

Ločila

   Decimalno ločilo:
     . (pika) za jezike, ki uporabljajo piko kot ločilo za decimalna števila, na primer 1.23
     , (vejica) za jezike, ki na primer uporabljajo vejico kot ločilo za decimalna števila 1,23

   ListSeparator:
     , (vejica) if DecimalSeparator is . (pika)
     ; (podpičje) if DecimalSeparator is , (vejica)

   VerižnikaKalnik:
     ; (podpičje) if DecimalSeparator is . (pika)
     ;; (dvojno podpičje) if DecimalSeparator is , (vejica)

Operatorji

Operatorji se v formulah uporabljajo za opis operacij, ki vključujejo enega ali več operandov. Izraz a + b na primer uporablja + za dodajanje dveh operandov a in b.

   Operater:
     BinaryOperator
     BinaryOperatorRequiresWhitespace
     PrefixOperator
     PrefixOperatorRequiresWhitespace
     PostfixOperator

   Binarnioperator:eden od
    =<<=>>=<>
    +-*/^
    &
    &&||
    inexactin

   BinaryOperatorRequiresWhitespace:
     And Presledek
     Or Presledek

   PredponaOperator:
    !

   PrefixOperatorRequiresWhitespace:
     Not Presledek

   PostfixOperator:
    %

Referenčni operator

   ReferenceOperator:eden od
    .!

Referenca predmeta

   Referenca:
     BaseReference
     BaseReferenceReferenceOperatorReferenceList

   Sklic na osnovo:
     Identifikator
     DisambiguatedIdentifier
     ContextKeyword

   Referenčni seznam:
     Identifikator
     IdentifikatorReferenčni operaterReferenčni seznam

Vstavljeni zapis

   V vrsticiZapis:
     { Opt InlineRecordList}

   Seznam v vrsticiZapis:
     Identifikator:Izraz
     Identifikator:IzrazListSeparatorInlineRecordList

Vstavljena tabela

   Tabela v vrstici:
     [ Privolitev v seznam tabel vvrstici]

   Seznam tabel v vrstici:
     Izraz
     IzrazListSeparatorInlineTableList

Expression

   Izraz:
     Dobesedno
     Referenca
     InlineRecord
     InlineTable
     FunctionCall
     ( Izraz)
     PrefixOperatorIzraz
     IzrazPostfixOperator
     IzrazBinarni operatorIzraz

Verižni izrazi

   Verižnaexpression:
     Izraz
     IzrazChainingSeparatorChainedExpressionopt

Funkcijski klic

   FunkcijaCall:
     Identifikator funkcije(Argumenti funkcijeopt)

   Identifikator funkcije:
     Identifikator
     Identifikator.Identifikator funkcije

   Argumenti funkcije:
     ChainedExpression
     ChainedExpressionListSeparatorFunctionArguments