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
0
1
2
3
4
5
6
7
8
9
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
true
false
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
0
1
2
3
4
5
6
7
8
9
ExponentPart:
ExponentIndicatorSignoptDecimalDigits
ExponentIndicator:az egyik
e
E
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
=
<
<=
>
>=
<>
+
-
*
/
^
&
&&
||
in
exactin
BinaryOperatorRequiresWhitespace:
And
Szóköz
Or
Szóköz
PrefixOperatorRequiresWhitespace:
Not
Szóköz
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