Megosztás a következőn keresztül:


Kifejezések nyelvtana

Feljegyzés

A Microsoft Power Fx a vászonalapú alkalmazások képletnyelvének új neve. Ezek a cikkek még nem véglegesek; miközben kinyerjük a vászonalapú alkalmazás nyelvét, integráljuk más Microsoft Power Platform-termékekkel, és nyílt forráskódúként elérhetővé tesszük. A nyelv megismeréséhez először olvassa el A Microsoft Power Fx áttekintése című cikket.

A Microsoft Power Fx képleteken alapul, amelyek egy nevet egy kifejezéshez kötik. Ahogy az Excel-munkalapok esetén is, ahogy a kifejezés bejövő függőségei változnak a rendszer újraszámoltja a kifejezést, és a név értéke megváltozik, esetleg más képletekbe kaszkádolva.

Ez a nyelvtan a képlet kifejezési részét foglalja magában. A névhez kötés egy függvény létrehozásához a Power Fx integrációjának módjától függ. A munkalapok kötésszintaxisa nem látható, az a hely határozza meg, ahol a kifejezést megírják (például =B1 beírása az A1 cellába). Bizonyos esetekben egyáltalán nem kötelező kötelező kötést használni, és a Power Fx egy kifejezés-kiértékelőként van használva, például az adatbázistáblák számított oszlopainak támogatásakor. A Power Apps esetében a kötés vélelmezett, a Power Apps Studio alkalmazással végzett munka esetén egy YAML-alapú szerializálási formátummal a Power Apps Studio alkalmazáson kívül.

Nyelvtani konvenciók

A lexikális és szintaktikai nyelvtanok nyelvtani levezetésekkel vannak előállítva. Minden nyelvtani levezetés definiál egy nemterminális szimbólumot, valamint a lehetséges módokat ennek a nemterminális szimbólumnak a nemterminális vagy terminális szimbólumok sorozatává való átalakítására. A nyelvtani levezetésekben a nemterminális szimbólumok dőlt betűvel, a terminális szimbólumok rögzített szélességű betűtípussal vannak feltüntetve.

Egy nyelvtani levezetés első sora a definiált nemterminális szimbólum neve, kettősponttal lezárva. Az ezt követő egyes behúzott sorok a nemterminális szimbólum lehetséges kibontásait tartalmazzák nemterminális és terminális szimbólumok sorozataként. Például az alábbi levezetés:

  GlobalIdentifier:
    [@Azonosító]

meghatározza, hogy egy GlobalIdentifier egy lexikális elemből áll [@, amelyet egy Azonosító követ, majd a lexikális elem ].

Ha egy nemterminális szimbólum többféleképpen is kibontható, a lehetőségek külön sorokban vannak feltüntetve. A választható szimbólumokat alsó indexbe írt „opt” utótag jelöli. Például az alábbi levezetés:

  Függvényhívás:
    FunctionIdentifier(FunctionArgumentsválasszon)

rövidített formája a következőnek:

  Függvényhívás:
    FunctionIdentifier()
    FunctionIdentifier(FunctionArguments)

A választási lehetőségek általában külön sorokban vannak feltüntetve, de „a következők egyike” szavak után a kiterjesztések sorozata egy sorban is megadható. Ez csupán egy rövidebb írásmód a lehetőségek külön sorokban való felsorolása helyett.

Például az alábbi levezetés:

  Tizedesjegy:az egyik
    0123456789

rövidített formája a következőnek:

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

Lexikális elemzés

A lexikális egységek levezetése definiálja a Power Fx kifejezés lexikális nyelvtanát. Minden érvényes Power Fx kifejezés megfelel ennek a nyelvtannak.

  ExpressionUnit:
    Az ExpressionElementsválasztása

  ExpressionElements:
    ExpressionElement
    ExpressionElementExpressionElementsválasztás

  ExpressionElement:
    Szóköz
    Megjegyzés

Lexikális szinten a Power Fx kifejezéseket Térköz, Megjegyzés és Token elemek folyama alkotja. Ezeket a levezetéseket a későbbi szakaszok ismertetik. A szintaktikai nyelvtanban csak a Token elem játszik szerepet.

Térközkarakter

A térközök szerepe a Power Apps-dokumentumokban a megjegyzések és a tokenek elválasztása.

  Szóköz:
    bármely Unicode Szóköz-elválasztó (Zs osztály)
    bármely Unicode Sorelválasztó (Zl osztály)
    bármely Unicode bekezdéselválasztó (Zp osztály)
    Vízszintes tabulátor karakter (U+0009)
    Soremelés karakter (U+000A)
    Függőleges tabulátor karakter (U+000B)
    Lapdobás karakter (U+000C)
    Kocsivissza karakter (U+000D)
    Következő sor karakter (U+0085)

Hozzászólások

A megjegyzések két formája támogatott:

  • Az egysoros megjegyzések a // karakterekkel kezdődnek, és a forrássor végéig tartanak.
  • A tagolt megjegyzések a /* karakterekkel kezdődnek és a */ karakterekkel végződnek. A tagolt megjegyzések többsorosak is lehetnek.

  Megjegyzés:
    ElhatároltMegjegyzés
    EgysorMegjegyzés

  SingleLineMegjegyzés:
    //SingleLineCommentCharactersválassza a

  SingleLineCommentKarakterek:
    SingleLineCommentCharacter
    SingleLineCommentCharacterSingleLineCommentCharactersválassza a

  SingleLineCommentKarakter:
    bármely Unicode karakter a NewLineCharacter kivételével

  DelimitedMegjegyzés:
    /*DelimitedCommentCharactersválassza a*/

  DelimitedCommentKarakterek:
    DelimitedCommentCharacters NoAsteriskDelimitedCommentCharactersválaszt
    *ElhatároltCommentAfterAsteriskKarakterek

  TagCommentAfterAsteriskKarakterek:
    DelimitedCommentNoSlashAsteriskCharacterDelimitedCommentCharactersselect
    *ElhatároltCommentAfterAsteriskKarakterek

  DelimitedCommentKarakterekNoAsterisk:
    Bármely Unicode-karakter a * (csillag) kivételével

  DelimitedCommentNoSlashAsteriskKarakter:
    Bármely Unicode-karakter a / (perjel) vagy a * (csillag) kivételével

A megjegyzések nincsenek beágyazva. A /* és a */ karaktersorozatnak nincs speciális jelentése az egysoros megjegyzésekben, a // és a /* karaktersorozatnak pedig nincs speciális jelentése a tagolt megjegyzésekben.

A megjegyzések nincsenek feldolgozva a szöveges konstanst tartalmazó sztringekben.

Az alábbi példa két tagolt megjegyzést tartalmaz:

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

Az alábbi példák három egysoros megjegyzést tartalmaznak:

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

Konstansértékek

A konstansok az értékek forráskódbeli ábrázolásai.

  Szó szerint:
    LogikaiLiterál
    NumberLiteral
    TextLiteral

Logikai konstansértékek

A logikai konstansértékek a igaz és a hamis értékek leírására használatosak, és logikai értéket állítanak elő.

  LogicalLiteral:az egyik
    truefalse

Szám-konstansértékek

A szám-konstansértékek numerikus értékek leírására használatosak, és számértéket állítanak elő.

  NumberLiteral:
    DecimalDigitsExponentPartválasztás
    DecimálisSzámjegyekTizedeselválasztóTizedesszámjegyekválassza azExponentPartlehetőséget
    DecimalSeparatorDecimalDigitsExponentPartopt

  Tizedesjegyek:
    Tizedesjegy
    Tizedesjegyek: Tizedesjegyek: Tizedesjegy

  Tizedesjegy:az egyik
    0123456789

  ExponentPart:
    ExponentIndicatorSignoptDecimalDigits

  ExponentIndicator:az egyik
    eE

  Jel:az egyik
    +-

Szöveg-konstansértékek

A szöveges konstansértékek Unicode-karakterek sorozatának leírására használatosak, és szöveges értéket állítanak elő. A szöveges konstansértékeket idézőjelek közé kell tenni. Ha a szöveges értékbe dupla idézőjel foglalásához ismételje meg az idézőjelet az alábbi példában látható módon:

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

  TextLiteral:
    "A TextLiteralCharacterslehetőséget választja"

  TextLiteralCharacters karakterek:
    TextLiteralCharacterTextLiteralCharactersválassza a

  TextLiteralCharacter:
    TextCharacterNoDoubleQuote
    DoubleQuoteEscapeSequence

  TextCharacterNoDoubleQuote:
    bármely Unicode kódpont a kettős idézőjel kivételével

  DoubleQuoteEscapeSequence:
    ""

Identifiers

Az azonosító az értékekre való hivatkozáshoz használt nevek. Az azonosítók lehetnek normál azonosítók vagy szimpla idézőjeles azonosítók.

  Azonosító:
    IdentifierName,denemOperatorvagyContextKeyword

  Azonosítónév:
    IdentifierStartCharacterIdentifierContinueCharactersválassza a
    'SingleQuotedIdentifier'

  IdentifierStartCharacter:
    LetterCharacter
    _

  IdentifierContinueCharacter:
    IdentifierStartCharacter
    DecimálisSzámjegyKarakter
    ConnectingCharacter
    CombiningCharacter
    FormattingCharacter

  IdentifierContinueCharacters karakterek:
    IdentifierContinueCharacterIdentifierContinueCharactersválassza a lehetőséget

  LetterCharacter:
    bármely Unicode-karakter a Nagybetű (Lu) vagy a Kisbetű (Ll) osztályokból
    a Szókezdő nagybetű (Lt) osztály bármely Unicode-karaktere
    bármely Unicode-karakter a Betűmódosító (Lm) vagy az Egyéb módosító (Lo) osztályokból
    a Szám betű (Nl) osztály bármely Unicode karaktere

  CombiningCharacter:
    bármely Unicode karakter a Szóközt nem növelő jel (Mn) vagy a Szóközt növelő jel (Mc) osztályból

  DecimalDigitCharacter:
    a Decimális szám osztály (Nd) bármely Unicode-karaktere

  ConnectingCharacter:
    az Összekötő-központozása osztály (Pc) bármely Unicode-karaktere

  FormattingCharacter:
    a Formátum osztály (Cf) bármely Unicode-karaktere

Szimpla idézőjeles azonosítók

Egy szimpla idézőjeles azonosító használatával bármilyen nulla vagy több Unicode-karakterből álló sorozat használható azonosítóként, beleértve a kulcsszavakat, térközöket, megjegyzéseket, operátorokat és írásjeleket. Az egyszeres idézőjel karaktereket két egyszeres idézőjel sorozata támogatja.

  SingleQuotedIdentifier:
    SingleQuotedIdentifierCharacters

  SingleQuotedIdentifierCharacters karakterek:
    SingleQuotedIdentifierCharacterSingleQuotedIdentifierCharactersválassza a

  SingleQuotedIdentifierCharacter:
    TextCharactersNoSingleQuote
    SingleQuoteEscapeSequence

  TextCharactersNoSingleQuote:
    Bármely Unicode-karakter a ' (U+0027) kivételével

  SingleQuoteEscapeSequence:
    ''

Megkülönböztetett azonosító

  DisambiguatedIdentifier:
    TableColumnIdentifier
    GlobalIdentifier

  TableColumnIdentifier:
    Azonosító[@azonosító]

  GlobalIdentifier:
    [@Azonosító]

Környezetfüggő kulcsszavak

  ContextKeyword:
    Parent
    Self
    ThisItem
    ThisRecord

Kis- és nagybetűk megkülönböztetése

A Power Apps azonosítókban különbözőnek számítanak a kis- és a nagybetűk. A szerkesztőeszköz automatikusan a megfelelő fajtára módosítja ezeket a képlet írásakor.

Elválasztók

  Tizedeselválasztó:
    . (pont) olyan nyelvek esetében, amelyek pontot használnak decimális számok elválasztójaként, például 1.23
    , (vessző) olyan nyelvek esetében, amelyek vesszőt használnak decimális számok elválasztójaként, például 1,23

  Listaelválasztó:
    , (vessző), ha a Tizedeselválasztó az . (pont)
    ; (pontosvessző), ha a Tizedeselválasztó , (vessző)

  ChainingSeparátor:
    ; (pontosvessző), ha a Tizedeselválasztó az . (pont)
    ;; (dupla pontosvessző), ha a Tizedeselválasztó , (vessző)

Operátorok

Az operátorok egy vagy több operandussal elvégzendő műveletek leírására használatosak a képletekben. Az a + b kifejezés például a + operátort használja két operandus, a és b összeadására.

  Operátor:
    BinaryOperator
    BinaryOperatorRequiresWhitespace
    PrefixOperator
    PrefixOperatorRequiresWhitespace
    PostfixOperátor

  BinaryOperator:az egyik
    =<<=>>=<>
    +-*/^
    &
    &&||
    inexactin

  BinaryOperatorRequiresWhitespace:
    AndSzóköz
    OrSzóköz

  PrefixOperátor:
    !

  PrefixOperatorRequiresWhitespace:
    NotSzóköz

  PostfixOperátor:
    %

Referenciaoperátor

  ReferenceOperator:az egyik
    .!

Objektumhivatkozás

  Utalás:
    Alaphivatkozás
    BaseReferenceReferenceOperatorreferencialista

  Alaphivatkozás:
    Azonosító
    DisambiguatedIdentifier
    ContextKeyword

  Referencialista:
    Azonosító
    AzonosítóhivatkozásOperátorreferencialista

Beágyazott rekord

  InlineRecord:
    {InlineRecordListválasztás}

  InlineRecordList:
    Azonosító:kifejezés
    Azonosító-kifejezés:...listaelválasztójaInlineRecordList

Beágyazott táblázat

  InlineTable:
    [InlineTableListválasztás]

  InlineTableList:
    Kifejezés
    KifejezéslistaElválasztó...InlineTableList

Expression

  Kifejezés:
    Betű szerinti
    Utalás
    InlineRecord
    InlineTable
    Függvényhívás
    (Kifejezés)
    PrefixOperatorkifejezés
    PostfixOperator kifejezés...
    KifejezésBinaryOperatorkifejezés

Összeláncolt kifejezések

  ChainedExpression:
    Kifejezés
    KifejezésChainingSeparatorChainedExpressionopt

Függvényhívás

  Függvényhívás:
    FunctionIdentifier(FunctionArgumentsválasszon)

  FunctionIdentifier:
    Azonosító
    Azonosító.FunctionIdentifier

  FunctionArguments:
    Láncolt kifejezés
    ChainedExpressionListSeparatorFunctionArguments