שתף באמצעות


דקדוק של ביטויים

הערה

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:אחד מתוך
    0123456789

מקוצרת ל:

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

ניתוח מילוני

הפקת היחידות המילוניות מגדירה את הדקדוק המילוני לביטוי של Power Fx. כל ביטוי תקף של Power Fx תואם לדקדוק זה.

  ExpressionUnit:
    ExpressionElementsאופט

  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)

הערות

שתי צורות של הערות נתמכות:

  • הערות בשורה אחת שמתחילות בתווים // ונמשכות עד סוף שורת המקור.
  • הערות מופרדות שמתחילות בתווים /* ומסתיימות בתווים */. הערות מופרדות יכולות להתפרס על גבי מספר שורות.

  תגובה:
    תגובה מופרדת
    SingleLineComment

  SingleLineComment:
    //SingleLineCommentCharactersopt

  SingleLineComment Characters:
    SingleLineCommentCharacter
    SingleLineCommentCharacterSingleLineCommentCharacteropt

  SingleLineComment Character:
    כל תווי Unicode למעט NewLineCharacter

  DelimitedComment:
    /*DelimitedComment Charactersopt*/

  DelimitedComment Characters:
    DelimitedCommentCharactersNoAsteriskDelimitedCommentCharactersopt
    *מופרד הערה לאחר כוכבית תווים

  מופרד הערה לאחר כוכבית תווים:
    DelimitedCommentNoSlashAsteriskCharacterDelimitedCommentCharactersopt
    *מופרד הערה לאחר כוכבית תווים

  מופרד הערה תווים אין כוכבית:
    כל תו של 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:אחד מ
    truefalse

מילולי מספרי

ליטרל מספר משמש לכתיבת ערך מספרי והפקת ערך מספר.

  NumberLiteral:
    DecimalDigitsExponentPartopt
    DecimalDigitsDecimalSeparatorDecimalDigitsoptExponentPartopt
    DecimalSeparatorDecimalDigitsExponentPartopt

  DecimalDigits:
    DecimalDigit
    DecimalDigitsDecimalDigit

  DecimalDigit:אחד מתוך
    0123456789

  ExponentPart:
    ExponentIndicatorSignoptDecimalDigits

  ExponentIndicator:אחד מ
    eE

  חתום:אחד מ
    +-

מילולי טקסט

ליטרל טקסט משמש לכתיבת רצף של תווי Unicode ולהפקת ערך טקסט. ליטרלים של טקסט מוקפים במרכאות כפולות. כדי לכלול מרכאות כפולות בערך הטקסט, חזור על המרכאות הכפולות, כפי שמוצג בדוגמה הבאה:

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

  TextLiteral:
    "TextLiteralCharactersאופט"

  TextLiteralCharacters:
    TextLiteralCharacterTextLiteralCharacteropt

  TextLiteralCharacter:
    TextCharacterNoDoubleQuote
    DoubleQuoteEscapeSequence

  TextCharacterNoDoubleQuote:
    כל נקודת קוד של Unicode למעט מרכאות כפולות

  DoubleQuoteEscapeSequence:
    ""

מזהים

מזהה הוא שם המשמש להתייחסות לערך. מזהים יכולים להיות מזהים רגילים או מזהים בודדים עם מרכאות כפולות.

  מזהה:
    IdentifierNameאבללאמפעילאוContextKeyword

  מזהה שם:
    IdentifierStartCharacterIdentifierContinueCharactersopt
    'SingleQuotedIdentifier'

  IdentifierStartCharacter:
    אותיות אותיות
    _

  IdentifierContinueCharacter:
    IdentifierStartCharacter
    DecimalDigitCharacter
    אופי מחבר
    שילוב אופי
    עיצוב תו

  IdentifierContinueCharacters:
    IdentifierContinueCharacterIdentifierContinueCharactersopt

  LetterCharacter:
    כל תו Unicode של המחלקה אות גדולה (Lu) או אות קטנה (Ll)
    כל תו Unicode של המחלקה אות Titlecase‏ (Lt)
    כל תו Unicode של המחלקה משנה אות (Lm) או אות אחר (Lo)
    כל תו Unicode של המחלקה אות מספר ‏(Nl)

  CombiningCharacter:
    כל תו Unicode של המחלקה סימן שאינו מרווח (Mn) או סימן שילוב מרווח (Mc)

  DecimalDigitCharacter:
    כל תו Unicode של המחלקה ספרה עשרונית (Nd)

  חיבור דמות:
    כל תו Unicode של המחלקה פיסוק מחבר (Pc)

  עיצוב תו:
    כל תו Unicode של המחלקה תבנית (Cf)

מזהים של גרשיים

מזהה מצוטט יחיד יכול להכיל כל רצף של תווי Unicode שישמשו כמזהה, כולל מילות מפתח, רווח לבן, הערות ומפעילים. תווי מרכאות בודדות נתמכים ברצף בריחה של שני מרכאות בודדות.

  SingleQuotedIdentifier:
    SingleQuotedIdentifier Characters

  SingleQuotedIdentifier Characters:
    SingleQuotedIdentifierCharacterSingleQuotedIdentifierCharacteropt

  SingleQuotedIdentifierCharacter:
    TextCharactersNoSingleQuote
    SingleQuoteEscapeSequence

  TextCharactersNoSingleQuote:
    כל תו של Unicode למעט ' (U+0027)

  SingleQuoteEscapeSequence:
    ''

מזהה מובהר

  מזהה disambiguated:
    TableColumnIdentifier
    GlobalIdentifier

  TableColumnIdentifier:
    מזהה[@מזהה]

  GlobalIdentifier:
    [@מזהה]

מילות מפתח בהקשר

  מילת מפתח בהקשר:
    Parent
    Self
    ThisItem
    ThisRecord

תלות ברישיות

המזהים של Power Apps תלויים ברישיות. כלי המחבר ישנה אותם באופן אוטומטי לגודל הנכון בעת כתיבת נוסחה.

מפרידים

  מפריד עשרוני:
    . (נקודה) עבור שפות המשתמשות בנקודה כמפריד למספרים עשרוניים, למשל 1.23
    , (פסיק) עבור שפות המשתמשות בפסיק כמפריד למספרים עשרוניים, למשל 1,23

  מפריד רשימה:
    , (פסיק) if DecimalSeparator הוא . (נקודה)
    ; (נקודה-פסיק) if DecimalSeparator הוא , (פסיק)

  מפריד שרשרת:
    ; (נקודה-פסיק) if מפריד עשרוני הוא . (נקודה)
    ;; (נקודה-פסיק) אם מפריד עשרוני הוא , (פסיק)

אופרטורים

אופרטורים משמשים בנוסחאות לתיאור פעולות הכוללות אופרנד אחד או יותר. למשל הביטוי a + b משתמש באופרטור + כדי להוסיף את שני האופרנדים a ו- b.

  מַפעִיל:
    BinaryOperator
    BinaryOperatorRequiresWhitespace
    PrefixOperator
    PrefixOperatorRequiresWhitespace
    PostfixOperator

  BinaryOperator:אחד מ
    =<<=>>=<>
    +-*/^
    &
    &&||
    inexactin

  BinaryOperatorRequiresWhitespace:
    Andרווח לבן
    Orרווח לבן

  PrefixOperator:
    !

  PrefixOperatorRequiresWhitespace:
    Notרווח לבן

  PostfixOperator:
    %

אופרטור הפניה

  ReferenceOperator:אחד מ
    .!

הפניה לאובייקט

  הַפנָיָה:
    BaseReference
    BaseReferenceReferenceOperatorReferenceRist

  BaseReference:
    מזהה
    מזהה מעורפל
    מילת מפתח בהקשר

  רשימת הפניות:
    מזהה
    מזההReferenceOperatorReferenceRist

רשומה מוטבעת

  InlineRecord:
    {InlineRecordListopt}

  InlineRecord List:
    מזהה:ביטוי
    מזהה:ביטויListSeparatorInlineRecordList

טבלה מוטבעת

  טבלה מוטבעת:
    [InlineTableListאופט]

  InlineTable List:
    הַבָּעָה
    ביטויListSeparatorInlineTableList

Expression

  הַבָּעָה:
    מילולית
    הַפנָיָה
    InlineRecord
    טבלה מוטבעת
    FunctionCall
    (הַבָּעָה)
    PrefixOperatorביטוי
    ExpressionPostfixOperator
    ביטויBinaryOperatorביטוי

ביטויים משורשרים

  ChainedExpression:
    הַבָּעָה
    ExpressionChainingSeparatorChainedExpressionopt

שיחת פונקציה

  FunctionCall:
    FunctionIdentifier(FunctionArgumentsopt)

  FunctionIdentifier:
    מזהה
    מזהה.FunctionIdentifier

  ארגומנטים של פונקציה:
    ChainedExpression
    ChainedExpressionListSeparatorArguments Function