דקדוק של ביטויים
הערה
Microsoft Power Fx הוא השם החדש של שפת הנוסחה של יישומי בד ציור. מאמרים אלה ימשיכו להתעדכן בזמן שאנו מזקקים את השפה מיישומי בד ציור, משלבים אותה עם מוצרי Microsoft Power Platform האחרים, והופכים אותם לזמינים כמוצר קוד פתוח. התחל עם מבט כולל על Microsoft Power Fx כדי לערוך היכרות עם השפה.
Microsoft Power Fx מבוסס על נוסחאות שמאגדות שם לביטוי. בדיוק כמו בגליונות עבודה של Excel, כאשר התלות הנכנסת לביטוי משתנה, הביטוי מחושב מחדש והערך של השם משתנה, ואולי מעביר את החישוב מחדש במפל לנוסחאות אחרות.
דקדוק זה מכסה את חלק הביטוי של הנוסחה. האיגוד לשם ליצירת נוסחה תלוי באופן שבו Power Fx משולב. בגליונות העבודה תחביר הקשירה לא נחשף, אלא נרמז על ידי המיקום בו נכתב הביטוי – לדוגמה, הזנת הערך =B1
בתא A1. במקרים מסוימים, אין צורך כלל באיגוד ו- Power Fx משמש כמעריך ביטוי, למשל בתמיכה בעמודות מחושבות של טבלת מסד נתונים. עבור Power Apps, האיגוד מרומז בעבודה בתוך Power Apps Studio עם פורמט סדרתי המבוסס על YAML לשימוש מחוץ ל-Power Apps Studio.
מוסכמות דקדוק
הדקדוקים המילוניים והתחביריים מוצגים באמצעות הפקות דקדוק. כל הפקת דקדוק מגדירה סמל שאינו סופני וההרחבות האפשריות של אותו סמל לא סופני לרצפים של סמלים לא סופניים או סופניים. בהפקות דקדוק, סמלים לא סופניים מוצגים באותיות נטויות וסמלים סופניים מוצגים בגופן ברוחב קבוע.
השורה הראשונה של הפקת דקדוק היא שם הסמל הלא סופני המוגדר, ואחריו נקודתיים. כל שורה מדורגת ברציפות מכילה הרחבה אפשרית של הסמל הלא סופני הניתן כרצף של סמלים לא סופניים או סופניים. לדוגמה, ההפקה:
GlobalIdentifier:
[@
מזהה]
מגדיר GlobalIdentifier שיכיל את האסימון [@
, שאחריו בא מזהה, ואחריו האסימון ]
.
כשיש הרחבה אפשרית אחת של סמל שאינו סופני, החלופות מפורטות בשורות נפרדות. הכתב התחתי "opt" משמש לציון סמל אופציונלי. לדוגמה, ההפקה:
FunctionCall:
FunctionIdentifier(
FunctionArgumentsopt)
מקוצרת ל:
FunctionCall:
FunctionIdentifier(
)
FunctionIdentifier(
FunctionArguments)
החלופות רשומות בדרך כלל בשורות נפרדות, אם כי במקרים שבהם ישנן חלופות רבות, הביטוי "אחת מ-" (one of) עשוי להקדים את רשימת ההרחבות הניתנות בשורה אחת. זה פשוט סגנון קצרני לרישום של כל אחת מהחלופות בשורות נפרדות.
לדוגמה, ההפקה:
DecimalDigit:אחת מ-
0
1
2
3
4
5
6
7
8
9
מקוצרת ל:
DecimalDigit:
0
1
2
3
4
5
6
7
8
9
ניתוח מילוני
הפקת היחידות המילוניות מגדירה את הדקדוק המילוני לביטוי של Power Fx. כל ביטוי תקף של Power Fx תואם לדקדוק זה.
ExpressionUnit:
ExpressionElementsopt
ExpressionElements:
ExpressionElement
ExpressionElementExpressionElementsopt
ExpressionElement:
רווח לבן
הערה
ברמה המילונית, ביטוי של Power Fx מורכב מזרם של רכיבי רווח לבן, הערה ואסימוֹן. כל אחת מההפקות הללו מכוסה בסעיפים הבאים. רק רכיבי האסימוֹן משמעותיים בדקדוק התחבירי.
רווח לבן
רווח לבן משמש להפרדת הערות ואסימונים בתוך מסמך Power Apps.
רווח לבן:
כל מפריד שטח של Unicode (מחלקה Zs)
כל מפריד שטח של Unicode (מחלקה Zl)
כל מפריד פסקאות של Unicode (מחלקה Zp)
תו טאב אופקי (U + 0009)
תו הזנת קו (U + 000A)
תו טאב אנכי (U+000B)
תו הזנת טופס (U + 000C)
תו החזרת גררה (U + 000D)
תו השורה הבאה (U+0085)
הערות
שתי צורות של הערות נתמכות:
- הערות בשורה אחת שמתחילות בתווים
//
ונמשכות עד סוף שורת המקור. - הערות מופרדות שמתחילות בתווים
/*
ומסתיימות בתווים*/
. הערות מופרדות יכולות להתפרס על גבי מספר שורות.
הערה:
DelimitedComment
SingleLineComment
SingleLineComment:
//
SingleLineCommentCharactersopt
SingleLineCommentCharacters:
SingleLineCommentCharacter
SingleLineCommentCharacterSingleLineCommentCharactersopt
SingleLineCommentCharacter:
כל תווי Unicode למעט NewLineCharacter
DelimitedComment:
/*
DelimitedCommentCharactersopt*/
DelimitedCommentCharacters:
DelimitedCommentCharactersNoAsteriskDelimitedCommentCharactersopt
*
DelimitedCommentAfterAsteriskCharacters
DelimitedCommentAfterAsteriskCharacters:
DelimitedCommentNoSlashAsteriskCharacterDelimitedCommentCharactersopt
*
DelimitedCommentAfterAsteriskCharacters
DelimitedCommentCharactersNoAsterisk:
כל תו של Unicode למעט * (כוכבית)
DelimitedCommentNoSlashAsteriskCharacter:
כל תו של Unicode למעט / (קו נטוי) או * (כוכבית)
הערות אינן מקוננות. לרצפי התווים /*
ו-*/
אין משמעות מיוחדת בתוך הערה-בשורה-אחת, ולרצפי התווים //
ו-/*
אין משמעות מיוחדת בתוך הערה-מופרדת.
הערות לא מעובדות במחרוזות טקסט-ליטרל.
הדוגמה הבאה כוללת שתי הערות מופרדות:
/* Hello, world
*/
"Hello, world" /* This is an example of a text literal */
הדוגמאות הבאות כוללות שלוש הערות בשורה אחת:
// Hello, world
//
"Hello, world" // This is an example of a text literal
מילוליות
ליטרל הוא ייצוג קוד המקור של ערך.
ליטרל:
LogicalLiteral
NumberLiteral
TextLiteral
מילולי לוגי
ליטרל לוגי משמש לכתיבת הערכים 'נכון' ו'לא נכון', והפקת ערך לוגי.
LogicalLiteral:אחת מ-
true
false
מילולי מספרי
ליטרל מספר משמש לכתיבת ערך מספרי והפקת ערך מספר.
NumberLiteral:
DecimalDigitsExponentPartopt
DecimalDigitsDecimalSeparatorDecimalDigitsoptExponentPartopt
DecimalSeparatorDecimalDigitsExponentPartopt
DecimalDigits:
DecimalDigit
DecimalDigitsDecimalDigit
DecimalDigit:אחת מ-
0
1
2
3
4
5
6
7
8
9
ExponentPart:
ExponentIndicatorחתימהoptDecimalDigits
מילולי טקסט
ליטרל טקסט משמש לכתיבת רצף של תווי Unicode ולהפקת ערך טקסט. ליטרלים של טקסט מוקפים במרכאות כפולות. כדי לכלול מרכאות כפולות בערך הטקסט, חזור על המרכאות הכפולות, כפי שמוצג בדוגמה הבאה:
"The ""quoted"" text" // The "quoted" text
TextLiteral:
"
TextLiteralCharactersopt"
TextLiteralCharacters:
TextLiteralCharacterTextLiteralCharactersopt
TextLiteralCharacter:
TextCharacterNoDoubleQuote
DoubleQuoteEscapeSequence
TextCharacterNoDoubleQuote:
כל נקודת קוד של Unicode למעט מרכאות כפולות
DoubleQuoteEscapeSequence:
"
"
מזהים
מזהה הוא שם המשמש להתייחסות לערך. מזהים יכולים להיות מזהים רגילים או מזהים בודדים עם מרכאות כפולות.
מזהה:
IdentifierNameאךלאאופרטוראוContextKeyword
IdentifierName:
IdentifierStartCharacterIdentifierContinueCharactersopt
'
SingleQuotedIdentifier'
IdentifierStartCharacter:
LetterCharacter
_
IdentifierContinueCharacter:
IdentifierStartCharacter
DecimalDigitCharacter
ConnectingCharacter
CombiningCharacter
FormattingCharacter
IdentifierContinueCharacters:
IdentifierContinueCharacterIdentifierContinueCharactersopt
LetterCharacter:
כל תו Unicode של המחלקה אות גדולה (Lu) או אות קטנה (Ll)
כל תו Unicode של המחלקה אות Titlecase (Lt)
כל תו Unicode של המחלקה משנה אות (Lm) או אות אחר (Lo)
כל תו Unicode של המחלקה אות מספר (Nl)
CombiningCharacter:
כל תו Unicode של המחלקה סימן שאינו מרווח (Mn) או סימן שילוב מרווח (Mc)
DecimalDigitCharacter:
כל תו Unicode של המחלקה ספרה עשרונית (Nd)
ConnectingCharacter:
כל תו Unicode של המחלקה פיסוק מחבר (Pc)
FormattingCharacter:
כל תו Unicode של המחלקה תבנית (Cf)
מזהים של גרשיים
מזהה מצוטט יחיד יכול להכיל כל רצף של תווי Unicode שישמשו כמזהה, כולל מילות מפתח, רווח לבן, הערות ומפעילים. תווי מרכאות בודדות נתמכים ברצף בריחה של שני מרכאות בודדות.
SingleQuotedIdentifier:
SingleQuotedIdentifierCharacters
SingleQuotedIdentifierCharacters:
SingleQuotedIdentifierCharacterSingleQuotedIdentifierCharactersopt
SingleQuotedIdentifierCharacter:
TextCharactersNoSingleQuote
SingleQuoteEscapeSequence
TextCharactersNoSingleQuote:
כל תו של Unicode למעט ' (U+0027)
SingleQuoteEscapeSequence:
'
'
מזהה מובהר
DisambiguatedIdentifier:
TableColumnIdentifier
GlobalIdentifier
TableColumnIdentifier:
מזהה[@
מזהה]
GlobalIdentifier:
[@
מזהה]
מילות מפתח בהקשר
ContextKeyword:
Parent
Self
ThisItem
ThisRecord
תלות ברישיות
המזהים של Power Apps תלויים ברישיות. כלי המחבר ישנה אותם באופן אוטומטי לגודל הנכון בעת כתיבת נוסחה.
מפרידים
DecimalSeparator:
.
(נקודה) עבור שפות המשתמשות בנקודה להפידה של מספרים עשרוניים, למשל 1.23
,
(פסיק) עבור שפות המשתמשות בפסיק כמפריד למספרים עשרוניים, למשל 1,23
ListSeparator:
,
(פסיק) אם DecimalSeparator הוא .
(נקודה)
;
(נקודה-פסיק) אם DecimalSeparator הוא ,
(פסיק)
ChainingSeparator:
;
(נקודה-פסיק) אם DecimalSeparator הוא .
(נקודה)
;;
(נקודה-פסיק כפול) אם DecimalSeparator הוא ,
(פסיק)
אופרטורים
אופרטורים משמשים בנוסחאות לתיאור פעולות הכוללות אופרנד אחד או יותר. למשל הביטוי a + b
משתמש באופרטור +
כדי להוסיף את שני האופרנדים a
ו- b
.
אופרטור:
BinaryOperator
BinaryOperatorRequiresWhitespace
PrefixOperator
PrefixOperatorRequiresWhitespace
PostfixOperator
BinaryOperator:אחת מ-
=
<
<=
>
>=
<>
+
-
*
/
^
&
&&
||
in
exactin
BinaryOperatorRequiresWhitespace:
And
רווח לבן
Or
רווח לבן
PrefixOperatorRequiresWhitespace:
Not
רווח לבן
אופרטור הפניה
הפניה לאובייקט
הפניה:
BaseReference
BaseReferenceReferenceOperatorReferenceList
BaseReference:
מזהה
DisambiguatedIdentifier
ContextKeyword
ReferenceList:
מזהה
מזההReferenceOperatorReferenceList
רשומה מוטבעת
InlineRecord:
{
InlineRecordListopt}
InlineRecordList:
מזהה:
ביטוי
מזהה:
ביטויListSeparatorInlineRecordList
טבלה מוטבעת
InlineTable:
[
InlineTableListopt]
InlineTableList:
ביטוי
ביטויListSeparatorInlineTableList
Expression
ביטוי:
ליטרל
הפניה
InlineRecord
InlineTable
FunctionCall
(
ביטוי)
PrefixOperatorביטוי
ביטויPostfixOperator
ביטויBinaryOperatorביטוי
ביטויים משורשרים
ChainedExpression:
ביטוי
ביטויChainingSeparatorChainedExpressionopt
שיחת פונקציה
FunctionCall:
FunctionIdentifier(
FunctionArgumentsopt)
FunctionIdentifier:
מזהה
מזהה.
FunctionIdentifier
FunctionArguments:
ChainedExpression
ChainedExpressionListSeparatorFunctionArguments