Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Microsoft Power Fx to nowa nazwa języka formuł dla aplikacji kanw. Te artykuły są pracą w toku, gdyż stale wyodrębniamy język z aplikacji kanw, integrujemy go z innymi produktami Microsoft Power Platform i udostępniamy jako rozwiązanie open source. Zacznij od przeglądu Microsoft Power Fx, aby znaleźć wprowadzenie do języka.
Microsoft Power Fx jest oparte na formułach, które łączą nazwę z wyrażeniem. Podobnie jak w arkuszach programu Excel, jak zależności przychodzące od zmiany wyrażenia, wyrażenie jest ponownie przeliczane, a wartość nazwy zmienia się, a następnie kaskadowo przeliczana jest na inne formuły.
Ta gramatyka odpowiedzialna jest za wyrażenie w formule. Powiązanie z nazwą, aby utworzyć formułę, zależy od tego, jak zintegrowane jest Power Fx. W arkuszach składnia połączenia nie jest wyeksponowana, ale jest ona zapisywana przez lokalizację, w której zostało zapisane wyrażenie — na przykład przez wprowadzenie wyrażenia =B1 w komórce A1. W niektórych przypadkach nie jest w ogóle wymagane powiązanie, a Power Fx używane jest jako narzędzie do oceny wyrażeń. Np. ma to miejsce w przypadku obsługi kolumn obliczanych w tabeli bazy danych. W przypadku Power Apps, powiązanie jest niejawne podczas pracy w Power Apps Studio za pomocą formatu seryjnego opartego na YAML do użycia poza Power Apps Studio.
Konwencje dotyczące gramatyki
Gramatyki leksykalne i składniowe są prezentowane przy użyciu produkcji gramatyki. Każda produkcja gramatyki definiuje symbol niekońcowy i możliwe rozszerzenia tego symbolu na sekwencje symboli niekońcowych i końcowych. W przypadku produkcji gramatyki symbole niekońcowe są pisane kursywą, a symbole końcowe są pisane czcionką o stałej szerokości.
Pierwszy wiersz produkcji gramatyki jest nazwą zdefiniowanego symbolu niekońcowego, po którym następuje dwukropek. Każdy kolejny wiersz z wcięciem zawiera możliwe rozszerzenie niekońcowe podane jako sekwencja symboli niekońcowych lub końcowych. Na przykład produkcja:
Identyfikator globalny:
[@
Identyfikator]
Definiuje element GlobalIdentifier, który ma składać się z tokenu [@, po nim identyfikatora, a po nim tokenu ].
Jeśli istnieje więcej niż jedno możliwe rozszerzenie symbolu niekońcowego, alternatywy są wyświetlane w oddzielnych wierszach. Ten sufiks jako indeks dolny „opcjonalnie” jest używany do wskazania opcjonalnego symbolu. Na przykład produkcja:
Wywołanie funkcji:
FunctionIdentifier(FunkcjaArguments— optyz)
to skrócona forma produkcji:
Wywołanie funkcji:
Identyfikator funkcji()
FunctionIdentifier(Argumenty funkcji)
Alternatywy są zwykle wyświetlane w oddzielnych wierszach, chociaż w przypadkach, gdy istnieje wiele alternatyw, fraza „jedno z następujących” może poprzedzać listę rozszerzeń podaną w jednym wierszu. Jest to po prostu skrócony sposób wyświetlania każdej z alternatyw w osobnych wierszach.
Na przykład produkcja:
Cyfra dziesiętna:jedna z
0 1 2 3 4 5 6 7 8 9
to skrócona forma produkcji:
Cyfra dziesiętna:
0
1
2
3
4
5
6
7
8
9
Analiza leksykalna
Produkcja jednostek alfabetycznych definiuje leksykę gramatyczną wyrażenia Power Fx. Każde prawidłowe wyrażenie Power Fx jest zgodne z tą gramatyką.
Jednostka wyrażenia:
Opcja ExpressionElements
Elementy wyrażenia:
Element wyrażenia
ExpressionElementExpressionElementsopcjonalnie
Element wyrażenia:
Odstępu
Komentarz
Na poziomie leksykalnym wyrażenie Power Fx składa się ze strumienia elementów Whitespace, Comment i Token. Każda z tych produkcji została omówiona w poniższych sekcjach. Tylko elementy token są istotne w gramatyce składniowej.
Znak odstępu
Białe znaki są używane do oddzielania komentarzy i tokenów w dokumencie Power Apps.
Białe znaki:
dowolny separator spacji Unicode (klasa Zs)
dowolny separator linii Unicode (klasa Zl)
dowolny separator akapitu Unicode (klasa Zp)
Znak tabulacji poziomej (U+0009)
Znak wysuwu wiersza (U+000A)
Znak tabulacji pionowej (U+000B)
Znak wysuwu strony (U+000C)
Znak powrotu karetki (U+000D)
Znak następnego wiersza (U+0085)
Komentarze
Obsługiwane są dwa typy komentarzy:
- Komentarze jednowierszowe zaczynają się od znaków
//i przechodzą do końca wiersza źródłowego. - Komentarze z ogranicznikami rozpoczynają się od znaków
/*i kończą się znakami*/. Komentarze z ogranicznikami mogą obejmować wiele wierszy.
Komentarz:
Rozdzielany komentarz
Komentarz jednowierszowy
Komentarz jednowierszowy:
//
Opcja SingleLineCommentCharacters
SingleLineCommentCharacters:
SingleLineCommentCharacter
SingleLineCommentCharacterSingleLineCommentCharactersopt
SingleLineCommentCharacter:
wszelkie znaki Unicode poza znakiem NewLineCharacter
Ograniczony komentarz:
/*
DelimitedCommentCharactersopt*/
RozdzielaneCommentCharacters:
DelimitedCommentCharactersNoAsteriskDelimitedCommentCharactersopt
*
DelimitedCommentAfterAsteriskCharacters
DelimitedCommentAfterAsteriskCharacters:
OgraniczonaKomentarzNoSlashGwiazdkaZnakOgraniczonyKomentarzZnakiopt
*
DelimitedCommentAfterAsteriskCharacters
DelimitedComactersNoAsterisk:
Dowolny znak Unicode z wyjątkiem gwiazdki (*)
OgraniczonaKomentarzNoSlashGwiazdkaPostać:
Dowolny znak Unicode z wyjątkiem ukośnika (/) oraz gwiazdki (*)
Komentarze nie są zagnieżdżone. Sekwencje znaków /* i */ nie mają specjalnego znaczenia w komentarzu jednowierszowym, a sekwencje znaków // i /* nie mają specjalnego znaczenia w komentarzu z ogranicznikami.
Komentarze nie są przetwarzane w literałach tekstowych.
W następującym przykładzie przedstawiono dwa komentarze z ogranicznikami:
/* Hello, world
*/
"Hello, world" /* This is an example of a text literal */
W poniższych przykładach przedstawiono trzy jednowierszowe komentarze:
// Hello, world
//
"Hello, world" // This is an example of a text literal
Literały
Element literał jest reprezentacją wartości w kodzie źródłowym.
Dosłownie:
Literał logiczny
Literał liczbowy
Literał tekstowy
Literały logiczne
Literał logiczny jest używany do zapisywania wartości true i false i produkuje wartość logiczną.
LogicalLiteral:jeden z
true false
Literały liczbowe
Literał liczbowy jest używany do zapisywania wartości liczbowej i produkuje wartość liczbową.
Literał liczbowy:
Cyfry dziesiętne Wykładnik...części opcjonalnej
Cyfrydziesiętne SeparatorCyfrydziesiętne wybierzWykładnikCzęśćopt
SeparatordziesiętnyCyfrydziesiętne WykładnikCzęśćopt
Cyfry dziesiętne:
Cyfra dziesiętna
Cyfry dziesiętne Cyfradziesiętna
Cyfra dziesiętna:jedna z
0 1 2 3 4 5 6 7 8 9
Część wykładnicza:
ZnakwykładnikaoptDecimalDigits
Literały tekstowe
Literał tekstowy jest używany do zapisania sekwencji znaków Unicode i produkuje wartość tekstową. Literały tekstowe są zamknięte w cudzysłów. Aby uwzględnić w wartości tekstowej cudzysłowy, powtórz te cudzysłowy, jak pokazano w następującym przykładzie:
"The ""quoted"" text" // The "quoted" text
Literał tekstowy:
"
TextLiteralCharacterswybiera opcję"
TextLiteralCharacters:
TextLiteralCharacterTextLiteralCharacterswybierz opcję
TextLiteralCharacter:
TextCharacterNoDoubleQuote (TekstPostaćNiepodwójnyCytat)
DoubleQuoteEscapeSequence (Sekwencja ucieczki DoubleQuote)
TextCharacterNoDoubleQuote:
dowolny znak punktowy Unicode z wyjątkiem podwójnego cudzysłowu
DoubleQuoteEscapeSequence:
" "
Identyfikatory
Element identyfikator to nazwa używana do odwoływania się do wartości. Identyfikatory mogą być zwykłymi identyfikatorami lub identyfikatorami w cudzysłowie pojedynczym.
Identyfikator:
IdentifierName,alenieOperatorlubContextKeyword
IdentyfikatorNazwa:
IdentifierStartCharacterIdentifierContinueCharactersopt
'
SingleQuotedIdentifier (Identyfikator pojedynczego cytatu)'
IdentifierStartCharacter:
LiteraZnak
_
IdentifierContinueCharacter:
IdentifierStartCharacter (IdentyfikatorZnakPoczątkowy)
Cyfra dziesiętna
ŁącznikPostać
CombiningCharacter (ŁączeniePostaci)
FormattingCharacter (FormattCharacter)
IdentifierContinueCharacters:
IdentifierContinueCharacterIdentifierContinueCharactersopt
LiteraZnak:
dowolny znak Unicode klasy Wielkie litery (Lu) lub Małe litery (Ll)
dowolny znak Unicode z klasy Jak nazwy własne (Lt)
dowolny znak Unicode klasy Modyfikator litery (Lm) lub Inne litery (Lo)
dowolny znak Unicode z klasy Liczba litera (Nl)
ŁączeniePostać:
dowolny znak Unicode klasy Znak bez odstępów (Mn) lub Znak łączący odstępy (Mc)
Cyfra dziesiętna:
dowolny znak Unicode klasy Liczba dziesiętna (Nd)
ŁącznikPostać:
dowolny znak Unicode klasy Łącznik interpunkcji (Pc)
Formatowanie znaku:
dowolny znak Unicode klasy Format (Cf)
Identyfikatory w formie cudzysłowów pojedynczych
Element identyfikator-w-pojedynczym-cudzysłowie może służyć do zezwalania na użycie jako identyfikator dowolnej sekwencji zawierającej zero lub więcej znaków Unicode, co obejmuje słowa kluczowe, białe znaki, komentarze i operatory. Pojedyncze znaki cudzysłowu są obsługiwane z sekwencją dwóch cudzysłowów.
SingleQuotedIdentifier:
SingleQuotedIdentifierCharacters (SingleQuotedIdentifierCharacters)
SingleQuotedIdentifierCharacters:
SingleQuotedIdentifierCharacterSingleQuotedIdentifierCharactersopcjonalnie
SingleQuotedIdentifierCharacter:
TextCharactersNoSingleQuote
SingleQuoteEscapeSequence (Sekwencja ucieczki)
TextCharactersNoSingleQuote:
Dowolny znak Unicode z wyjątkiem ' (U+0027)
SingleQuoteEscapeSequence:
' '
Jednoznaczny identyfikator
NiejednoznacznyIdentifier:
Identyfikator kolumny tabeli
Identyfikator globalny
Identyfikator kolumny tabeli:
Identyfikator[@Identyfikator]
Identyfikator globalny:
[@
Identyfikator]
Słowa kluczowe w kontekście
KontekstSłowo kluczowe:
Parent
Self
ThisItem
ThisRecord
Uwzględnij wielkość liter
Power Apps rozróżnia wielkość liter w identyfikatorach. Narzędzie do tworzenia automatycznie zamieni je na odpowiedni rozmiar w trakcie pisania formuły.
Separatory
Separator dziesiętny:
. (kropka) dla języków, w których kropka jest separatorem liczb dziesiętnych, na przykład 1.23
, (przecinek) w przypadku języków, w których przecinek służy jako separator liczb dziesiętnych, na przykład 1,23
ListSeparator:
, (przecinek) jeśli separator dziesiętny to . (kropka)
; (średnik), jeśli separator dziesiętny to , (przecinek)
Separator łańcuchowy:
; (średnik), jeśli separator dziesiętny ma wartość . (kropka)
;; (podwójny średnik), jeśli DecimalSeparator to , (przecinek)
Operatory
Operatory są używane w formułach w celu opisywania operacji obejmujących co najmniej jeden operand. Na przykład wyrażenie a + b używa operatora +, aby dodać dwa operandy a i b.
Operator:
BinaryOperator
BinaryOperatorRequiresWhitespace
PrefixOperator (Operator prefiksu)
PrefixOperatorRequiresWhitespace
Operator przyrostka
BinaryOperator:jeden z
= < <= > >= <>
+ - * / ^
&
&& ||
in exactin
BinaryOperatorRequiresWhitespace:
And
Odstępu
Or
Odstępu
PrefixOperatorRequiresWhitespace:
Not
Odstępu
Operator odnośnika
Odwołanie do obiektu
Odniesienie:
Odniesienie podstawowe
BaseReferenceReferenceOperatorReferenceList
Odniesienie podstawowe:
Identyfikator
DisambiguatedIdentifier (Identyfikator ujednoznaczniony)
Słowo kluczowe kontekstu
Lista referencji:
Identyfikator
IdentyfikatorReferenceOperatorReferenceList
Rekord inline
Rekord w linii:
{
Opcja InlineRecordList}
InlineRecordList:
Wyrażenie identyfikatora:...
Identyfikator:ListSeparatorwyrażeńInlineRecordList
Tabela inline
Tabela wbudowana:
[
Opcja InlineTableList]
InlineTableList:
Wyrażenie
WyrażenieListSeparatorInlineTableList
Expression
Wyrażenie:
Dosłowny
Odniesienie
Rekord w tekście
Tabela wbudowana
Wywołanie funkcji
(
Wyrażenie)
Wyrażenie PrefixOperator...
WyrażeniePostfixOperator
WyrażenieBinaryOperatorExpression
Wyrażenia łączone
ChainedExpression:
Wyrażenie
WyrażenieChainingSeparatorChainedExpressionopt
Wywoływanie funkcji
Wywołanie funkcji:
FunctionIdentifier(FunkcjaArguments— optyz)
Identyfikator funkcji:
Identyfikator
Identyfikator.FunctionIdentifier
Argumenty funkcji:
ChainedExpression (Wyrażenie łańcuchowe)
ChainedExpressionListSeparatorFunctionArguments