Slovnica izrazov
Opomba
Microsoft Power Fx je novo ime za jezik formule za aplikacije s platnom. Ti članki so delo v teku, saj izvlečemo jezik iz aplikacij s platnom, ga integriramo z drugimi izdelki Microsoft Power Platform in damo na voljo odprtokodno. Začnite s člankom Pregled storitve Microsoft Power Fx za uvod v jezik.
Microsoft Power Fx temelji na formulah, ki vežejo ime na izraz. Tako kot pri delovnih listih Excel se s spreminjanjem vhodnih odvisnosti izraz znova izračuna in vrednost imena spremeni, z možnostjo kaskade ponovnega izračuna v druge formule.
Ta slovnica zajema izrazni del formule. Navezava na ime pri ustvarjanju formule je odvisna od načina integracije jezika Power Fx. V delovnih listih sintaksa vezanja ni izražena, implicira jo lokacija, kjer je izraz zapisan – na primer vnos =B1 v celico A1. V nekaterih primerih vezava sploh ni potrebna, Power Fx pa se uporablja kot ocenjevalnik izrazov, na primer pri podpori izračunanih stolpcev tabele zbirke podatkov. Za Power Apps je vezanje implicirano pri delu v storitvi Power Apps Studio s formatom serializacije, ki temelji na YAML, za uporabo zunaj storitve Power Apps Studio.
Slovnične konvencije
Leksikalna in sintaktična slovnica sta predstavljeni z uporabo slovničnih produkcij. Vsaka slovnična produkcija določi nekončni simbol in možne razširitve tega nekončnega simbola v zaporedja nekončnih ali končnih simbolov. V slovničnih produkcijah so nekončni simboli prikazani v ležečem tisku, končni simboli pa v pisavi s fiksno širino.
Prva vrstica slovnične produkcije vsebuje ime nekončnega simbola, za katerega poteka določitev, in dvopičje. Vsaka zaporedna zamaknjena vrstica vsebuje možno razširitev neterminalnega simbola, podanega kot zaporedje neterminalnih ali terminalnih simbolov. Na primer naslednja produkcija:
GlobalIdentifier :
[@ Identifier ]
opredeljuje GlobalIdentifier, ki je sestavljen iz žetona [@ in nato Identifikatorja, ki mu sledi žeton ].
Če obstaja več kot ena možna razširitev nekončnega simbola, so možnosti navedene v ločenih vrsticah. Podpisano besedilo »opt« je uporabljeno, da označuje izbirni simbol. Na primer naslednja produkcija:
FunctionCall :
FunctionIdentifier ( FunctionArgumentsopt )
je okrajšava za:
FunctionCall :
FunctionIdentifier ( )
FunctionIdentifier ( FunctionArguments )
Alternative so običajno navedene v ločenih vrsticah, čeprav je lahko v primerih, ko je alternativ veliko, pred seznamom razširitev, danih za eno vrstico, vključena fraza »eno od«. To je enostavno okrajšava za navajanje vsake od alternativ v ločeni vrstici.
Na primer naslednja produkcija:
DecimalDigit : ena od
0 1 2 3 4 5 6 7 8 9
je okrajšava za:
DecimalDigit :
0
1
2
3
4
5
6
7
8
9
Leksikalna analiza
Produkcija leksikalnih enot določa leksikalno slovnico za izraz v jeziku Power Fx. Vsak veljaven izraz Power Fx je zapisan v skladu s to slovnico.
ExpressionUnit :
ExpressionElementsopt
ExpressionElements :
ExpressionElement
ExpressionElement ExpressionElementsopt
ExpressionElement :
Presledek
Komentiraj
Na leksikalni ravni je izraz Power Fx sestavljen iz toka elementov Presledek, Komentar in Žeton. Vsaka posamezna produkcija je zajeta v naslednjih razdelkih. Samo elementi Žeton so pomembni v skladenjski slovnici.
Presledek
Presledek se uporablja za ločevanje komentarjev in žetonov znotraj dokumenta aplikacije Power Apps.
Presledek :
katero koli ločilo Unicode za presledek (razred Zs)
katero koli ločilo Unicode za vrstico (razred Zl)
katero koli ločilo Unicode za odstavek (razred Zp)
Znak za vodoravno tabulatorko (U + 0009)
Znak za novo vrstico (U + 000A)
Znak za navpično tabulatorko (U + 000B)
Znak za prelom strani (U + 000C)
Znak za vračanje na začetek vrstice (U + 000D)
Znak za naslednjo vrstico (U + 0085)
Pripombe
Podprti sta dve obliki komentarjev:
- Enovrstični komentarji, ki se začnejo z znakoma
//in segajo do konca izvorne vrstice. - Ločeni komentarji, ki se začnejo z znakoma
/*in končajo z znakoma*/. Ločeni komentarji se lahko raztezajo čez več vrstic.
Komentar :
DelimitedComment
SingleLineComment
SingleLineComment :
// SingleLineCommentCharactersopt
SingleLineCommentCharacters :
SingleLineCommentCharacter
SingleLineCommentCharacter SingleLineCommentCharactersopt
SingleLineCommentCharacter :
vsi znaki Unicode razen NewLineCharacter
DelimitedComment :
/* DelimitedCommentCharactersopt */
DelimitedCommentCharacters :
DelimitedCommentCharactersNoAsterisk DelimitedCommentCharactersopt
* DelimitedCommentAfterAsteriskCharacters
DelimitedCommentAfterAsteriskCharacters :
DelimitedCommentNoSlashAsteriskCharacter DelimitedCommentCharactersopt
* DelimitedCommentAfterAsteriskCharacters
DelimitedCommentCharactersNoAsterisk :
kateri koli znak Unicode razen * (zvezdica)
DelimitedCommentNoSlashAsteriskCharacter :
kateri koli znak Unicode razen / (poševnica) ali * (zvezdica)
Komentarji niso ugnezdeni. Zaporedja znakov /* in */ nimajo nobenega posebnega pomena znotraj enovrstičnega komentarja, zaporedja znakov // in /* pa nimajo posebnega pomena znotraj omejenega komentarja.
Komentarji niso obdelani v besedilnih nizih.
Naslednji primer vključuje dva ločena komentarja:
/* Hello, world
*/
"Hello, world" /* This is an example of a text literal */
Naslednji primeri vključujejo tri enovrstične komentarje:
// Hello, world
//
"Hello, world" // This is an example of a text literal
Nizi
Niz je predstavitev vrednosti v obliki izvorne kode.
Niz :
LogicalLiteral
NumberLiteral
TextLiteral
Logični nizi
Logični niz se uporablja za zapisovanje vrednosti true in false in proizvodnjo logične vrednosti.
LogicalLiteral : ena od
true false
Številčni nizi
Številčni niz se uporablja za zapisovanje številčne vrednosti in izdelavo številčne vrednosti.
NumberLiteral :
DecimalDigits ExponentPartopt
DecimalDigits DecimalSeparator DecimalDigitsopt ExponentPartopt
DecimalSeparator DecimalDigits ExponentPartopt
DecimalDigits :
DecimalDigit
DecimalDigits DecimalDigit
DecimalDigit : ena od
0 1 2 3 4 5 6 7 8 9
ExponentPart :
ExponentIndicator Podpisopt DecimalDigits
ExponentIndicator : ena od
e E
Besedilni nizi
Besedilni niz se uporablja za zapisovanje zaporedja znakov Unicode in izdelavo besedilne vrednosti. Besedilni nizi so zaobjeti z dvojnimi narekovaji. Če želite vključiti dvojne narekovaje v vrednost besedila, dvojne narekovaje ponovite, kot je prikazano v naslednjem primeru:
"The ""quoted"" text" // The "quoted" text
TextLiteral :
" TextLiteralCharactersopt "
TextLiteralCharacters :
TextLiteralCharacter TextLiteralCharactersopt
TextLiteralCharacter :
TextCharacterNoDoubleQuote
DoubleQuoteEscapeSequence
TextCharacterNoDoubleQuote :
katero koli kodno točko Unicode razen dvojnih narekovajev
DoubleQuoteEscapeSequence :
" "
Identifikatorji
Identifikator je ime, ki se uporablja za sklicevanje na vrednost. Identifikatorji so lahko običajni identifikatorji ali identifikatorji z enim narekovajem.
Identifikator :
IdentifierName , vendar ne Operator ali ContextKeyword
IdentifierName :
IdentifierStartCharacter IdentifierContinueCharactersopt
' SingleQuotedIdentifier '
IdentifierStartCharacter :
LetterCharacter
_
IdentifierContinueCharacter :
IdentifierStartCharacter
DecimalDigitCharacter
ConnectingCharacter
CombiningCharacter
FormattingCharacter
IdentifierContinueCharacters :
IdentifierContinueCharacter IdentifierContinueCharactersopt
LetterCharacter :
kateri koli znak Unicode razreda Velike črke (Lu) ali Male črke (Ll)
kateri koli znak Unicode razreda Naslovne črke (Lt)
kateri koli znak Unicode razreda Modifikatorske črke (Lm) ali Druge črke (Lo)
kateri koli znak Unicode razreda Številka, črka (Nl)
CombiningCharacter :
kateri koli znak Unicode razreda Nepresledkovna oznaka (Mn) ali Presledkovno združevalna oznaka (Mc)
DecimalDigitCharacter :
kateri koli znak Unicode razreda Decimalno število (Nd)
ConnectingCharacter :
kateri koli znak Unicode razreda Povezovalno ločilo (Pc)
FormattingCharacter :
kateri koli znak Unicode razreda Oblika (Cf)
Identifikatorji z enojnimi narekovaji
En navedeni identifikator lahko vsebuje katero koli zaporedje znakov Unicode za uporabo kot identifikator, vključno ključne besede, presledek, komentarje in operatorje. Znaki za enojni narekovaj so podprti z ubežnim zaporedjem dveh enojnih narekovajev.
SingleQuotedIdentifier :
SingleQuotedIdentifierCharacters
SingleQuotedIdentifierCharacters :
SingleQuotedIdentifierCharacter SingleQuotedIdentifierCharactersopt
SingleQuotedIdentifierCharacter :
TextCharactersNoSingleQuote
SingleQuoteEscapeSequence
TextCharactersNoSingleQuote :
kateri koli znak Unicode razen ' (U+0027)
SingleQuoteEscapeSequence :
' '
Jasen identifikator
DisambiguatedIdentifier:
TableColumnIdentifier
GlobalIdentifier
TableColumnIdentifier :
Identifikator [@ Identifikator ]
GlobalIdentifier:
[@ Identifikator ]
Ključne besede konteksta
ContextKeyword:
Parent
Self
ThisItem
ThisRecord
Razlikovanje velikih/malih črk
Identifikatorji Power Apps razlikujejo med velikimi in malimi črkami. Orodje za ustvarjanje jih bo samodejno spremenilo v pravilen primer, ko se formula zapisuje.
Ločila
DecimalSeparator:
. (pika) za jezike, ki uporabljajo pike kot ločilo za decimalne številke, na primer 1.23
, (vejica) za jezike, ki na primer uporabljajo vejico kot ločilo za decimalna števila 1,23
ListSeparator:
, (vejica), če je DecimalSeparator . (pika)
; (podpičje) če je DecimalSeparator enako , (vejica)
ChainingSeparator:
; (podpičje) če je DecimalSeparator enako . (pika)
;; (dvojno podpičje) če je DecimalSeparator enako , (vejica)
Operatorji
Operatorji se v formulah uporabljajo za opis operacij, ki vključujejo enega ali več operandov. Izraz a + b na primer uporablja + za dodajanje dveh operandov a in b.
Operator:
BinaryOperator
BinaryOperatorRequiresWhitespace
PrefixOperator
PrefixOperatorRequiresWhitespace
PostfixOperator
BinaryOperator: ena od
= < <= > >= <>
+ - * / ^
&
&& ||
in exactin
BinaryOperatorRequiresWhitespace:
And Presledek
Or Presledek
PrefixOperatorRequiresWhitespace:
Not Presledek
Referenčni operator
Referenca predmeta
Referenca:
BaseReference
BaseReference ReferenceOperator ReferenceList
BaseReference:
Identifier
DisambiguatedIdentifier
ContextKeyword
ReferenceList:
Identifier
Identifier ReferenceOperator ReferenceList
Vstavljeni zapis
InlineRecord:
{ InlineRecordListopt }
InlineRecordList:
Identifier : Expression
Identifier : Expression ListSeparator InlineRecordList
Vstavljena tabela
InlineTable:
[ InlineTableListopt ]
InlineTableList:
Expression
Expression ListSeparator InlineTableList
Expression
Expression:
Literal
Referenca
InlineRecord
InlineTable
FunctionCall
( Expression )
PrefixOperator Expression
Expression PostfixOperator
Expression BinaryOperator Expression
Verižni izrazi
ChainedExpression:
Expression
Expression ChainingSeparator ChainedExpressionopt
Funkcijski klic
FunctionCall:
FunctionIdentifier ( FunctionArgumentsopt )
FunctionIdentifier:
Identifier
Identifier . FunctionIdentifier
FunctionArguments:
ChainedExpression
ChainedExpression ListSeparator FunctionArguments