Kopīgot, izmantojot


Izteiksmes gramatika

Note

Microsoft Power Fx ir pamatnes programmu formulas valodas jaunais nosaukums. Šie raksti darbojas, kad izvelk valodu no pamatnes programmām, integrējot to ar citiem Microsoft Power Platform produktiem un padarām to pieejamu kā atvērtu avotu. Sāciet ar Microsoft Power Fx pārskatu par valodas ievadu.

Microsoft Power Fx ir balstīts uz formulām, kas vārdam ļauj izteikties. Tāpat kā Excel darblapās kā ienākošās izteiksmes izmaiņu atkarības, izteiksme tiek pārrēķināta un nosaukuma vērtība tiek mainīta, iespējams, kaskadējot pārrēķinu citās formulās.

Šī gramatika aptver formulas izteiksmes daļu. Saistīšana ar vārdu, lai izveidotu formulu, ir atkarīga no tā, kā Power Fx ir integrēts. Darblapās saistīšanas sintakse netiek atklāta, un to norāda, piemēram, atrašanās vieta, kur šī izteiksme tiek uzrakstīta, piemēram, ievadot =B1 A1 šūnā . Dažos gadījumos ne vienmēr ir nepieciešama saistīšana, bet Power Fx tiek izmantots kā izteiksmes vērtētājs, piemēram, lai atbalstītu aprēķinātās datu bāzes tabulas kolonnas. Attiecībā uz Power Apps, saistība tiek norādīta, strādājot ar Power Apps Studio serializācijas formātu, kura pamatā ir YAML lietošanai ārpus Power Apps Studio.

Gramatikas konvencijas

Leksisko un sintaktisko gramatiku ataino gramatikas veidu izmantošana. Katrs gramatikas likums definē nenoteiktu simbolu un šī nenoteiktā simbola iespējamos paplašinājumus nenoteiktu vai noteiktu simbolu secībās. Gramatikas likumos nenoteiktie simboli tiek rādīti slīprakstā, un noteiktie simboli tiek rādīti fiksēta platuma fontā.

Pirmajā gramatikas likuma rindā ir nenoteiktā simbola nosaukums, kas tiek definēts un aizstāts ar kolu. Katrā rindā ar atkāpēm, ir iespējama simbola paplašināšana bez termināļa, kas norādīta kā ar termināļa vai termināļa nesaistīto simbolu secība. Piemēram, likums:

   GlobalIdentifier:
     [@ Identifikators]

definē GlobalIdentifier, kas sastāv no marķiera [@, kam seko Identifikators, aiz kura norādīts marķieris ].

Ja ir vairāk nekā viena iespējama nenoteikta simbola paplašināšana, alternatīvas tiek uzskaitītas atsevišķās rindās. Apakšraksts "opt" tiek izmantots, lai norādītu neobligātu simbolu. Piemēram, likums:

   FunctionCall:
     FunctionIdentifier(FunctionArgumentsopt)

ir saīsinājums:

   FunctionCall:
     FunkcijasIdentifikators()
     FunctionIdentifier(FunctionArguments)

Alternatīvas parasti tiek uzskaitītas atsevišķas rindās, tomēr gadījumos, kad ir daudzas alternatīvas, tad frāzi "viena no" var ievadīt pirms vienā rindā sniegtā apļa saraksta. Tas ir vienkārši saīsinājums attiecībā uz katru alternatīvu atsevišķas līnijas.

Piemēram, likums:

   DecimalDigit:viens no
    0123456789

ir saīsinājums:

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

Leksikas analīze

Leksiskās vienības likums nosaka Power Fx izteiksmes leksisko gramatiku. Katra derīga Power Fx izteiksme atbilst šai gramatikas vienībai.

   Izteiksmes vienība:
     ExpressionElementsizvēle

   Izteiksmes elementi:
     ExpressionElement
     ExpressionElementExpressionElementsizvēlēties

   IzteiksmeElements:
     Baltstarpu
     Komentārs

Leksikas ziņā Power Fx izteiksme sastāv no Baltstarpas, Komentāra un Marķiera straumes elementiem. Katrs no šiem likumiem ir ietverts nākamajās sadaļās. Sintaktiskajā gramatikā nozīmīgi ir tikai Marķiera elementi.

Baltstarpa

Baltstarpa tiek izmantota, lai Power Apps dokumentā atdalītu komentārus un marķierus.

   Baltā atstarpe:
    jebkurš Unicode atstarpes atdalītājs (klase Zs)
    jebkurš Unicode līnijas atdalītājs (klase ZI)
    jebkurš Unicode rindkopas atdalītājs (klase Zp)
    Horizontāla cilnes rakstzīme (U+0009)
    Rindpadeves rakstzīme (U+000A)
    Vertikāla cilnes rakstzīme (U+000B)
    Formas plūsmas rakstzīme (U+000C)
    Rakstatgriezes rakstzīme (U+000D)
    Nākamās līnijas rakstzīme (U+0085)

Komentāri

Tiek atbalstītas divas komentāru formas:

  • Vienas rindiņas komentāri, kas sākas ar rakstzīmēm // un tiek paplašināti līdz avota rindas beigām.
  • Norobežoti komentāri, kas sākas ar rakstzīmēm /* un beidzas ar rakstzīmēm */. Neierobežoti komentāri var ietvert vairākas rindiņas.

   Komentārs:
     DelimitedComment
     SingleLineComment

   SingleLineComment:
     // SingleLineCommentCharactersizvēlēties

   SingleLineCommentCharacters:
     SingleLineCommentCharacter
     SingleLineCommentCharacterSingleLineCommentCharactersizvēlēties

   SingleLineCommentCharacter:
    jebkura Unicode rakstzīme, izņemot NewLineCharacter

   NorobežotsKomentārs:
     /* DelimitedCommentCharactersizvēlēties*/

   DelimitedCommentCharacters:
     DelimitedCommentCharactersNoAsteriskDelimitedCommentCharactersizvēlēties
     * DelimitedCommentAfterAsteriskCharacters

   DelimitedCommentAfterAsteriskCharacters:
     DelimitedCommentNoSlashAsteriskCharacterDelimitedCommentCharactersizvēlēties
     * DelimitedCommentAfterAsteriskCharacters

   DelimitedCommentCharactersNoAsterisk:
    jebkura Unicode rakstzīme, izņemot * (zvaigznīte)

   DelimitedCommentNoSlashAsteriskCharacter:
    jebkura Unicode rakstzīme, izņemot / (slīpsvītra) vai * (zvaigznīte)

Komentāri nav ligzdoti. Rakstzīmju secībām /* un */ nav īpašas jēgas vienas rindas komentārā, un rakstzīmju secībām // un /* nav īpašas jēgas neierobežoā komentārā.

Komentāri netiek apstrādāti tekstam sādāmās virknes ar tekstu.

Šajā piemērā ir iekļauti divi norobežoti komentāri:

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

Tālāk sniegtajos piemēros ir trīs vienas rindiņas komentāri:

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

Literāļi

Literālis ir vērtības avota koda attēlojums.

   Burtiski:
     LoģiskaisLiterāls
     NumberLiteral
     TextLiteral

Loģiskie literāļi

Loģisks literālis tiek izmantots, lai rakstītu vērtības patiess un nepatiess, un rada loģisku vērtību.

   LoģiskaisLiterāls:viens no
    truefalse

Skaitliski literāļi

Skaitliskais literālis tiek izmantots skaitļa vērtības rakstīsanai un izveidei.

   NumberLiteral:
     DecimalDigitsExponentPartizvēlēties
     DecimalDigitsDecimalSeparatorDecimalDigitsizvēlētiesExponentPartopt
     DecimalSeparatorDecimalDigitsExponentPartopt

   DecimalDigits:
     DecimalDigit
     DecimalDigitsDecimalDigit

   DecimalDigit:viens no
    0123456789

   ExponentPart:
     ExponentIndicatorSignoptDecimalDigits

   ExponentIndicator:viens no
    eE

   Zīme:viens no
    +-

Teksta literāļi

Teksta literālis tiek izmantots, lai rakstītu unikoda rakstzīmju secību un iegūtu teksta vērtību. Teksta literāļi ir ietverti pēdiņās. Lai teksta vērtībā iekļautu pēdiņas, atkārtojiet pēdiņas, kā parādīts šajā piemērā:

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

   TextLiteral:
     " TextLiteralCharactersizvēlēties"

   TextLiteralCharacters:
     TextLiteralCharacterTextLiteralCharactersizvēlēties

   TextLiteralCharacter:
     TextCharacterNoDoubleQuote
     DoubleQuoteEscapeSequence

   TextCharacterNoDoubleQuote:
    jebkuru Unicode koda punktu, izņemot pēdiņas

   DoubleQuoteEscapeSequence:
    ""

Identifikatori

Identifikators ir nosaukums, ko izmanto, lai atsauktos uz kādu vērtību. Identifikatori var būt parastie identifikatori vai atsevišķi citētie identifikatori.

   Identifikators:
     IdentifierName,betneOperatorsvaiContextKeyword

   IdentifikatoraNosaukums:
     IdentifierStartCharacterIdentifierContinueCharactersopt
     ' SingleQuotedIdentifier'

   IdentifierStartCharacter:
     LetterCharacter
    _

   IdentifierContinueCharacter:
     IdentifierStartCharacter
     DecimalDigitCharacter
     ConnectingCharacter
     ApvienošanaRaksturs
     FormattingCharacter

   IdentifierContinueCharacters:
     IdentifierContinueCharacterIdentifierContinueCharactersizvēlēties

   LetterCharacter:
    jebkura unikoda rakstzīme no klases Lielie burti (Lu) vai Mazie burti (LI)
    jebkura Unicode rakstzīme no klases Virsraksta burti (Lt)
    jebkura unikoda rakstzīme no klases Burtu mainītājs (Lm) vai Citi burti (Lo)
    jebkura Unicode rakstzīme no klases Skaitļa burts (NI)

   KombinējotRaksturu:
    jebkura unikoda rakstzīme no klases Ar atstarpēm nesaistītās zīmes (Mn) vai Atstarpes, kas savieno zīmi (Mc)

   DecimalDigitCharacter:
    jebkura unikoda rakstzīme no klases Decimālskaitlis (Nd)

   ConnectingCharacter:
    jebkura unikoda rakstzīme no klases Savienotāju pieturzīmes (Pc)

   FormatējumsRaksturs:
    jebkura unikoda rakstzīme no klases Formāts (Cf)

Atsevišķi citēti identifikatori

Atsevišķam kotētam identifikatoram var būt jebkura unikoda rakstzīmju sērija, kas jāizmanto kā identifikators, tostarp atslēgvārdi, baltstarpa, komentāri un operatori. Vienpēdiņas rakstzīmes tiek atbalstītas ar divu vienpēdiņu secības aizsedzi.

   SingleQuotedIdentifier:
     SingleQuotedIdentifierCharacters

   SingleQuotedIdentifierCharacters:
     SingleQuotedIdentifierCharacterSingleQuotedIdentifierCharactersizvēlēties

   SingleQuotedIdentifierCharacter:
     TextCharactersNoSingleQuote
     SingleQuoteEscapeSequence

   TextCharactersNoSingleQuote:
    jebkura Unicode rakstzīme, izņemot ' (U+0027)

   SingleQuoteEscapeSequence:
    ''

Viennozīmīgs identifikators

   Neskaidrsidentifikators:
     TableColumnIdentifier
     GlobalIdentifier

   TableColumnIdentifier:
     Identifikatora[@identifikators]

   GlobalIdentifier:
     [@ Identifikators]

Konteksta atslēgvārdi

   Konteksta atslēgvārds:
    Parent
    Self
    ThisItem
    ThisRecord

Reģistrjutīgums

Power Apps identifikatori ir reģistrjutīgi. Autorēšanas rīks automātiski mainīs tos uz pareizo pieteikumu, kad tiek rakstīta formula.

Atdalītāji

   Decimāldaļas atdalītājs:
     . (dot) valodām, kurās kā decimālskaitļu atdalītājs tiek izmantots punkts, piemēram, 1.23
     , (komats) valodām, kurās decimālskaitļu atdalītājs tiek izmantots, piemēram, komats 1,23

   ListSeparator:
     , (komats), ja DecimalSeparator ir . (dot)
     ; (semikols), ja DecimalSeparator ir , (komats)

   ChainingSeparator:
     ; (semikols), ja DecimāldaļaSeparators ir . (punkts)
     ;; (dubultais semikols), ja Decimāldaļas atdalītājs ir , (komats)

Operatori

Operatori tiek lietoti formulās, lai aprakstītu darbības, kurās iesaistīts viens vai vairāki operandi. Piemēram, izteiksme a + b izmanto + operatoru, lai pievienotu divus operandus a un b.

   Operatora:
     BinaryOperator
     BinaryOperatorRequiresWhitespace
     PrefikssOperators
     PrefixOperatorRequiresWhitespace
     PostfixOperator

   BinaryOperator:viens no
    =<<=>>=<>
    +-*/^
    &
    &&||
    inexactin

   BinaryOperatorRequiresWhitespace:
     And Baltstarpu
     Or Baltstarpu

   PrefikssOperators:
    !

   PrefixOperatorRequiresWhitespace:
     Not Baltstarpu

   PostfixOperator:
    %

Atsauces operators

   ReferenceOperator:viens no
    .!

Objekta atsauce

   Atsauce:
     BaseReference
     BaseReferenceReferenceOperatorReferenceList

   Bāzes atsauce:
     Identifikators
     NeskaidrsIdentifikators
     Kontekstaatslēgvārds

   Atsauču saraksts:
     Identifikators
     IdentifikatorsReferenceOperatorReferenceList

Iekļauts ieraksts

   InlineRecord:
     { InlineRecordListopt}

   InlineRecordList:
     Identifikatora:izteiksme
     Identifikatora:izteiksmjusarakstsSeparatorInlineRecordList

Iekļauta tabula

   InlineTable:
     [ InlineTableListizvēlēties]

   InlineTableList:
     Izteiksme
     IzteiksmjusarakstsSeparatorInlineTableList

Expression

   Izteiksme:
     Literāļu
     Atsauce
     InlineRecord
     InlineTable
     FunctionCall
     ( Izteiksme)
     PrefiksaOperatoraizteiksme
     IzteiksmePostfixOperator
     IzteiksmeBinaryOperatorizteiksme

Ķēdes izteicieni

   ChainedExpression:
     Izteiksme
     IzteiksmeChainingSeparatorChainedExpressionopt

Funkcijas zvans

   FunctionCall:
     FunctionIdentifier(FunctionArgumentsopt)

   Funkcijas identifikators:
     Identifikators
     Identifikators.FunctionIdentifier

   FunkcijasArgumenti:
     ChainedExpression
     ChainedExpressionListSeparatorFunctionArguments