Kopīgot, izmantojot


Izteiksmes gramatika

Piezīmes

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:
    AndBaltstarpu
    OrBaltstarpu

  PrefikssOperators:
    !

  PrefixOperatorRequiresWhitespace:
    NotBaltstarpu

  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