שתף באמצעות


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

הערה

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:
    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:אחת מ-
    truefalse

מילולי מספרי

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

  NumberLiteral:
    DecimalDigitsExponentPartopt
    DecimalDigitsDecimalSeparatorDecimalDigitsoptExponentPartopt
    DecimalSeparatorDecimalDigitsExponentPartopt

  DecimalDigits:
    DecimalDigit
    DecimalDigitsDecimalDigit

  DecimalDigit:אחת מ-
    0123456789

  ExponentPart:
    ExponentIndicatorחתימהoptDecimalDigits

  ExponentIndicator:אחת מ-
    eE

  חתימה:אחת מ-
    +-

מילולי טקסט

ליטרל טקסט משמש לכתיבת רצף של תווי 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:אחת מ-
    =<<=>>=<>
    +-*/^
    &
    &&||
    inexactin

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

  PrefixOperator:
    !

  PrefixOperatorRequiresWhitespace:
    Notרווח לבן

  PostfixOperator:
    %

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

  ReferenceOperator:אחת מ-
    .!

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

  הפניה:
    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