Jagamisviis:


Avaldise grammatika

Märkus.

Microsoft Power Fx on lõuendirakenduste valemikeele uus nimi. Need artiklid on pooleli töö, kuna ekstraktime keele lõuendirakendustest, integreerime selle teiste Microsoft Power Platform toodetega ja teeme selle kättesaadavaks avatud allikana. Alustage Microsoft Power Fx ülevaatega sissejuhatuseks keelde.

Microsoft Power Fx põhineb valemitel, mis lisavad avaldisele nime. Nagu Ka Exceli töölehed, muutub ka avaldise sissetulev sõltuvus, nii et väljend arvutatakse ümber ja nime väärtus muutub, võib-olla kaskadeeritakse ümberarvutamine teistesse valemitesse.

See grammatika hõlmab valemi avaldise osa. Nime sidumine valemi loomiseks sõltub sellest, kuidas Power Fx on integreeritud. Töölehel ei näidata süntaksit, sellele vihjab asukoht, kus avaldis on kirjutatud – näiteks sisestades A1 lahtrisse koodi =B1. Mõnel juhul pole sidumist üldse vaja ja Power Fx-i kasutatakse avaldise hindajana, näiteks andmebaasitabeli arvutatud veergude toetamisel. Rakenduse Power Appsi puhul eeldatakse vaikimisi sidumist, et töötatakse Power Apps Studio koos serialiseerimisvormingus YAMLi kasutamiseks väljapool Power Apps Studio.

Grammatikareeglid

Leksikaalsed ja süntaktilised grammatikad esitatakse grammatikaprogrammide abil. Iga grammatikareegel määratleb mitteterminaalse sümboli ja selle mitteterminaalse sümboli võimalikud laiendused mitteterminaalsete või terminaalsete sümbolite järjestustesse. Grammatikareeglites kuvatakse mitteterminaalsed sümbolid kursiivkirjas ja terminaalsed sümbolid fikseeritud laiusega fondis.

Grammatikareegli esimene rida on määratletava mitteterminaalse sümboli nimi, millele järgneb koolon. Iga järjestikune taandatud rida sisaldab mitteterminaalse sümboli võimalikku laiendamist, mis on antud mitteterminaalsete või terminaliliste sümbolite jadana. Näiteks reegel:

   GlobalIdentifier:
     [@ Identifikaator]

määratleb Globaalidentifikaatorit, mis koosneb sõnest [@, millele järgneb identifikaator, millele omakorda järgneb sõne ].

Kui mitteterminaalse sümboli laiendamiseks on rohkem kui üks võimalus, on alternatiivid loetletud eraldi ridadel. Valikuliste sümbolite tähistamiseks kasutatakse alamskripti "opt". Näiteks reegel:

   FunctionCall:
     FunctionIdentifier(FunctionArguments opt)

on lühendatud versioon järgmisest:

   FunctionCall:
     Funktsiooni identifikaator()
     FunctionIdentifier(FunctionArguments)

Alternatiivid lisatakse tavaliselt eraldi ridadele, ehkki juhtudel, kui on palju alternatiive, võib fraas "üks" eelistada ühel real toodud laienduste loendit. See on lihtsalt lühidalt, kui soovite iga alternatiivi eraldi ridadeks loetleda.

Näiteks reegel:

   DecimalDigit:üks järgmistest
    0123456789

on lühendatud versioon järgmisest:

   KümnendkohtDigit:
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9

Leksikaalne analüüs

Leksikaalse ühiku reegel määratleb Power Fx-i avaldise leksika. Kõik kehtivad Power Fx-i avaldised vastavad sellele.

   ExpressionUnit:
     ExpressionElementsopt

   Avaldise elemendid:
     ExpressionElement
     ExpressionElementExpressionElementsopt

   ExpressionElement:
     Tühik
     Kommentaar

Leksikaalsel tasandil koosneb Power Fx-i avaldis elementidest tühik, kommentaar ja tõend. Kõik need reeglid kehtivad järgmiste jaotiste korral. Süntaksi korral on olulised ainult sõne elemendid.

Tühi ruum

Tühikut kasutatakse kommentaaride ja märkide eraldamiseks Power Appsi dokumendis.

   Tühik:
    mis tahes Unicode'i tühikeraldaja (klass Zs)
    mis tahes Unicode'i jooneraldaja (klass ZI)
    mis tahes Unicode'i lõigueraldaja (klass Zp)
    Horisontaalne tabeldusmärk (U+0009)
    Reavahetusmärk (U+000A)
    Vertikaalne tabeldusmärk (U+000B)
    Lehevahetusmärk (U+000C)
    Tagasijooksumärk (U+000D)
    Järgmine reavahetusmärk (U+0085)

Kommentaarid

Toetatakse kahte kommentaarivormi.

  • Üherealised kommentaarid, mis algavad märkidega // ja pole pikemad kui allikarida.
  • Eraldatud kommentaarid, mis algavad märkidega /* ja lõpevad märkidega */. Eraldajatega kommentaarid võivad hõlmata mitut rida.

   Kommentaar:
     PiiritletudKommentaar
     SingleLineComment

   SingleLineComment:
     // SingleLineCommentCharactersvalib

   SingleLineCommentCharacters:
     SingleLineCommentCharacter
     SingleLineCommentCharacterSingleLineCommentCharactersopt

   SingleLineCommentCharacter:
    mis tahes Unicode'i märgid, v.a NewLineCharacter

   PiiritletudKommentaar:
     /* DelimitedCommentCharactersopt*/

   DeboundCommentCharacters:
     DelimitedCommentCharactersNoAsteriskDelimitedCommentCharactersopt
     * DelimitedCommentAfterAsteriskCharacters

   DelimitedCommentAfterAsteriskCharacters:
     DelimitedCommentNoSlashAsteriskCharacterDelimitedCommentCharactersopt
     * DelimitedCommentAfterAsteriskCharacters

   DelimitedCommentCharactersNoAsterisk:
    mis tahes Unicode'i märk, v.a * (tärn)

   DelimitedCommentNoSlashAsteriskCharacter:
    mis tahes Unicode'i märk, v.a / (kaldkriips) või * (tärn)

Kommentaare ei pesastata. Märgijadadel /* ja */ pole üherealises kommentaaris erilist tähendust ning märgijadadel // ja /* ei ole eraldatud kommentaaris erilist tähendust.

Kommentaare ei töödelda tekstiliteraalide stringides.

Järgmine näide sisaldab kahte eraldatud kommentaari.

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

Järgmised näited sisaldavad kolme üherealist kommentaari.

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

Literaalid

Literaal on väärtuse esitus lähtekoodina.

   Sõnasõnaline:
     LoogilineLiteraalne
     NumberLiteral
     TextLiteral

Loogilised literaalid

Loogikaliteraali abil kirjutatakse väärtused tõesed ja väärad ning need annavad loogikaväärtuse.

   LoogilineLiteraalne:üks järgmistest
    truefalse

Arvliteraal

Numbriliteraali kirjutamiseks ja numbriväärtuse kirjutamiseks ja arvuväärtuse toomiseks.

   NumberLiteral:
     DecimalDigitsExponentPartopt
     DecimalDigitsDecimalSeparatorDecimalDigitsoptExponentPartopt
     DecimalSeparatorDecimalDigitsExponentPartopt

   Kümnendkohad:
     KümnendkohtDigit
     DecimalDigitsDecimalDigit

   DecimalDigit:üks järgmistest
    0123456789

   Eksponentosa:
     ExponentIndicatorSignoptDecimalDigits

   ExponentIndicator:üks järgmistest
    eE

   Märk:üks järgmistest
    +-

Tekstliteraalid

Tekstiliteraalid kasutatakse Unicode'i märkide jada kirjutamiseks ning tekstiväärtuse andmiseks. Tekstiliteraalid on lisasõnad kahekordsetes jutumärkides. Kahekordsete jutumärkide kaasamiseks tekstiväärtusse korrake kahekordseid jutumärke, nagu on näidatud järgmises näites:

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

   Tekstiliteral:
     " TextLiteralCharactersopt"

   TextLiteralCharacters:
     TextLiteralCharacterTextLiteralCharactersopt

   TextLiteralCharacter:
     TextCharacterNoDoubleQuote
     DoubleQuoteEscapeSequence

   TextCharacterNoDoubleQuote:
    mis tahes Unicode'i koodipunkt, v.a kahekordsed jutumärgid

   DoubleQuoteEscapeSequence:
    ""

Identifikaatorid

Identifikaator on nimi, mida kasutatakse väärtusele viitamiseks. Identifikaatorid võivad olla kas tavalised identifikaatorid või üksikjutumärkidega ümbritsetud identifikaatorid.

   Identifikaator:
     Identifikaatori nimi,kuidmittetehtemärkegakontekstimärksõna

   Identifikaatori nimi:
     IdentifierStartCharacterIdentifierContinueCharactersopt
     ' SingleQuotedIdentifier'

   IdentifikaatorStartCharacter:
     LetterCharacter
    _

   IdentifierContinueCharacter:
     IdentifierStartCharacter
     DecimalDigitCharacter
     ÜhendamineCharacter
     CombiningCharacter
     FormattingCharacter

   IdentifierContinueCharacters:
     IdentifierContinueCharacterIdentifierContinueCharactersopt

   LetterCharacter:
    mis tahes Unicode'i tähistus klassist Suurtäht (Lu) või Väiketäht (Ll)
    mis tahes Unicode'i tähistus klassist Suurtäht (Lt)
    mis tahes Unicode'i tähistus klassist Tähe muutja (Lm) või Teine täht (Lo)
    mis tahes Unicode'i tähistus klassist Numbri märk (Nl)

   CombiningCharacter:
    mis tahes Unicode'i tähistus klassist Vaheta märk (Mn) või Vahede kombineerimismärk (Mc)

   DecimalDigitCharacter:
    mis tahes Unicode'i tähistus klassist Kümnendkoht (Nd)

   ÜhendamineCharacter:
    mis tahes Unicode'i tähistus klassist Ühendav kirjavahemärk (Pc)

   FormattingCharacter:
    mis tahes Unicode'i tähistus klassist Vorming (Cf)

Üksikjutumärkidega ümbritsetud identifikaatorid

Üks tsiteeritud identifikaator võib sisaldada identifikaatorina mis tahes märksõnu sealgulgas tühikuid, kommentaare ja tehtemärke. Ühekordseid jutumärke toetatakse kahest ühekordsest jutumärgist koosneva järjestusega.

   SingleQuotedIdentifier:
     SingleQuotedIdentifierCharacters

   SingleQuotedIdentifierCharacters:
     SingleQuotedIdentifierCharacterSingleQuotedIdentifierCharactersopt

   SingleQuotedIdentifierCharacter:
     TextCharactersNoSingleQuote
     SingleQuoteEscapeSequence

   TextCharactersNoSingleQuote:
    mis tahes Unicode'i märk, v.a ' (U+0027)

   SingleQuoteEscapeSequence:
    ''

Ühestamise identifikaator

   Ebaselgeidentifikaator:
     TableColumnIdentifier
     GlobalIdentifier

   TableColumnIdentifier:
     Identifikaatori[@identifikaator]

   GlobalIdentifier:
     [@ Identifikaator]

Kontekstimärksõnad

   ContextKeyword:
    Parent
    Self
    ThisItem
    ThisRecord

Tõstutundlikkus

Power Appsi identifikaatorid on tõstutundlikud. Autorite loomise tööriist muudab need valemi kirjutatud ajal automaatselt õigeks.

Eraldajad

   Kümnendkohtade eraldaja:
     . (punkt) keelte puhul, mis kasutavad punkti kümnendarvude eraldajana, näiteks 1.23
     , (koma) keelte puhul, mis kasutavad kümnendarvude eraldajana koma, näiteks 1,23

   Loendiseparaator:
     , (koma) kui decimalSeparator on . (punkt)
     ; (semikoolon) kui kümnendSeparaator on , (koma)

   ChainingSeparator:
     ; (semikoolon), kui DecimalSeparator on . (punkt)
     ;; (kahekordne semikoolon), kui kümnendSeparaator on , (koma)

Tehtemärgid

Tehtemärke kasutatakse valemites ühe või mitme operandiga seotud toimingute kirjeldamiseks. Näiteks kasutab avaldis a + b tehtemärki + kahe operandi a ja b lisamiseks.

   Operaator:
     Binaarneoperaator
     BinaryOperatorRequiresWhitespace
     PrefixOperator
     PrefixOperatorRequiresWhitespace
     PostfixOperator

   BinaryOperator:üks neist
    =<<=>>=<>
    +-*/^
    &
    &&||
    inexactin

   BinaryOperatorRequiresWhitespace:
     And Tühik
     Or Tühik

   PrefixOperator:
    !

   PrefixOperatorRequiresWhitespace:
     Not Tühik

   PostfixOperator:
    %

Viite tehtemärk

   ReferenceOperator:üks järgmistest
    .!

Objekti viide

   Viide:
     BaseReference
     BaseReferenceReferenceOperator ReferenceList...

   BaseReference:
     Identifikaator
     Ebaselge identifikaator
     ContextKeyword

   Viidete loend:
     Identifikaator
     IdentifikaatorReferenceOperator ReferenceList...

Tekstisisene kirje

   Tekstisisene kirje:
     { InlineRecordListiopt}

   Tekstisisene kirjeloend:
     Identifikaatori:avaldis
     Identifikaatori:avaldiseloendSeparatorInlineRecordList

Tekstisisene tabel

   Tekstisisenetabel:
     [ InlineTableListiopt]

   InlineTableList:
     Avaldis
     AvaldiseloendSeparator...InlineTableList

Avaldis

   Avaldis:
     Sõnasõnaline
     Viide
     InlineRecord
     InlineTable
     FunctionCall
     ( Avaldis)
     PrefixOperatoravaldis
     AvaldisPostfixOperator
     AvaldisBinaryOperatorAvaldis

Ahelavaldised

   Aheldatud väljapressimine:
     Avaldis
     ExpressionChainingSeparatorChainedExpressionopt

Funktsioonikutse

   Funktsioonicall:
     FunctionIdentifier(FunctionArguments opt)

   Funktsiooni identifikaator:
     Identifikaator
     Identifikaatori.funktsiooniidentifikaator

   FunctionArguments:
     ChainedExpression
     ChainedExpressionListSeparatorFunctionArguments