การแสดงไวยากรณ์
หมายเหตุ
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" จะถูกใช้เพื่อระบุสัญลักษณ์ที่ไม่บังคับ ตัวอย่างเช่น การผลิต:
ฟังก์ชันการเรียก:
ตัวระบุฟังก์ชัน(
อาร์กิวเมนต์ฟังก์ชันเลือก)
เป็นแบบย่อสำหรับ:
ฟังก์ชันการเรียก:
ตัวระบุฟังก์ชัน(
)
ตัวระบุฟังก์ชัน(
อาร์กิวเมนต์ฟังก์ชัน)
โดยปกติ รายการตัวเลือกอื่นจะแสดงอยู่บนบรรทัดแบบแยกจากกัน แม้ในกรณีที่มีหลายทางเลือก วลี “หนึ่งใน” อาจนำหน้ารายการส่วนขยายที่ระบุไว้บนบรรทัดเดียว นี่เป็นเพียงแบบย่อสำหรับแสดงรายการทางเลือกแต่ละรายการบนบรรทัดที่แยกต่างหาก
ตัวอย่างเช่น การผลิต:
เลขทศนิยม:หนึ่งใน
0
1
2
3
4
5
6
7
8
9
เป็นแบบย่อสำหรับ:
เลขทศนิยม:
0
1
2
3
4
5
6
7
8
9
การวิเคราะห์เลกซิคัล
การผลิตหน่วยเลกซิคัลจะกำหนดไวยากรณ์เลกซิคัลสำหรับนิพจน์ Power Fx นิพจน์ Power Fx ที่ถูกต้องทั้งหมดสอดคล้องกับไวยากรณ์นี้
หน่วยการแสดงออก:
องค์ประกอบการแสดงออกเลือก
องค์ประกอบการแสดงออก:
องค์ประกอบการแสดงออก
องค์ประกอบการแสดงออกองค์ประกอบการแสดงออกเลือก
องค์ประกอบการแสดงออก:
ช่องว่าง
ความคิดเห็น
ในระดับเลกซิคัล นิพจน์ Power Fx จะประกอบด้วยสตรีมขององค์ประกอบ ช่องว่าง, ข้อคิดเห็น และ โทเค็น การผลิตเหล่านี้แต่ละรายการจะครอบคลุมอยู่ในส่วนต่อไปนี้ เฉพาะองค์ประกอบ โทเค็น เท่านั้นที่มีนัยสำคัญในไวยากรณ์ประโยค
ช่องว่าง
ช่องว่างถูกใช้สำหรับคั่นข้อคิดเห็นและโทเค็นต่างๆ ภายในเอกสาร Power Apps
ช่องว่าง:
ตัวคั่น Unicode Space ใดๆ (คลาส Zs)
ตัวคั่น Unicode Line ใดๆ (คลาส Zl)
ตัวคั่น Unicode Paragraph ใดๆ (คลาส Zp)
อักขระ Horizontal tab (U+0009)
อักขระ Line feed (U+000A)
อักขระ Vertical tab (U+000B)
อักขระ Form feed (U+000C)
อักขระ Carriage return (U+000D)
อักขระ Next line (U+0085)
ความคิดเห็น
รองรับความคิดเห็นสองรูปแบบ:
- ข้อคิดเห็นบรรทัดเดียวที่เริ่มต้นด้วยอักขระ
//
และขยายไปยังจุดสิ้นสุดของบรรทัดต้นทาง - ข้อคิดเห็นแบบมีตัวคั่นที่เริ่มต้นด้วยอักขระ
/*
และสิ้นสุดด้วยอักขระ*/
ข้อคิดเห็นแบบมีตัวคั่นสามารถขยายไปอีกหลายบรรทัด
ความคิดเห็น:
ความคิดเห็นที่ถูกจำกัด
ความคิดเห็นแบบบรรทัดเดียว
ความคิดเห็นแบบบรรทัดเดียว:
//
SingleLineCommentCharactersเลือก
อักขระความคิดเห็นแบบบรรทัดเดียว:
SingleLineCommentอักขระ
SingleLineCommentCharacterSingleLineCommentCharactersเลือก
SingleLineCommentCharacter:
อักขระ Unicode ใดๆ ยกเว้น NewLineCharacter
ความคิดเห็นที่ถูกจำกัด:
/*
อักขระที่คั่นความคิดเห็นเลือก*/
อักขระคำอธิบายแบบแบ่งเขต:
อักขระในความคิดเห็นแบบแบ่งเขตไม่มีเครื่องหมายดอกจันอักขระในความคิดเห็นแบบแบ่งเขตเลือก
*
ความคิดเห็นที่ถูกจำกัดหลังเครื่องหมายดอกจันอักขระ
DelimitedCommentAfterAsteriskCharacters:
ความคิดเห็นแบบแบ่งเขต ไม่มีเครื่องหมายทับ เครื่องหมายดอกจัน อักขระความคิดเห็นแบบแบ่งเขต อักขระเลือก
*
ความคิดเห็นที่ถูกจำกัดหลังเครื่องหมายดอกจันอักขระ
เครื่องหมายคำพูดแบบแบ่งเขตไม่มีเครื่องหมายดอกจัน :
อักขระ Unicode ใดๆ ยกเว้น * (เครื่องหมายดอกจัน)
เครื่องหมายดอกจันที่ถูกจำกัดไว้:
อักขระ 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
สัญพจน์
สัญพจน์ คือการแสดงรหัสต้นทางของค่า
ตามตัวอักษร:
ตรรกะตามตัวอักษร
ตัวเลขตัวอักษร
ข้อความตามตัวอักษร
สัญพจน์ตรรกะ
lสัญพจน์ตรรกะ จะใช้สำหรับเขียนค่า จริง และ เท็จ และจะทำให้เกิดค่าตรรกะ
LogicalLiteral:หนึ่งใน
true
false
สัญพจน์ตัวเลข
สัญพจน์ตัวเลขl จะใช้สำหรับเขียนค่าตัวเลขและทำให้เกิดค่าตัวเลข
ตัวเลขตัวอักษร:
เลขทศนิยมส่วนเลขยกกำลังเลือก
เลขทศนิยมตัวคั่นทศนิยมเลขทศนิยมเลือกส่วนยกกำลังเลือก
ตัวคั่นทศนิยมเลขทศนิยมส่วนยกกำลังเลือก
เลขทศนิยม:
ทศนิยมหลัก
เลขทศนิยมเลขทศนิยม
เลขฐานสิบ:หนึ่งใน
0
1
2
3
4
5
6
7
8
9
ส่วนเลขชี้กำลัง:
ตัวบ่งชี้เลขยกกำลัง เครื่องหมาย เลือก เลขทศนิยม
สัญพจน์ข้อความ
สัญพจน์ข้อความ ใช้สำหรับเขียนลำดับอักขระ Unicode และทำให้เกิดค่าข้อความ สัญพจน์ของข้อความอยู่ในเครื่องหมายคำพูดคู่ หากต้องการรวมเครื่องหมายคำพูดคู่ในค่าข้อความ ให้ทำเครื่องหมายคำพูดซ้ำตามที่แสดงในตัวอย่างต่อไปนี้:
"The ""quoted"" text" // The "quoted" text
ข้อความตัวอักษร:
"
TextLiteralCharactersเลือก"
อักขระข้อความแบบตัวอักษร:
TextLiteralCharacterTextLiteralCharactersเลือก
TextLiteralCharacter:
ข้อความตัวอักษรไม่มีคำพูดคู่
ลำดับการหลบหนีของ DoubleQuote
TextCharacterNoDoubleQuote:
จุดรหัส Unicode ใดๆ ยกเว้นเครื่องหมายคำพูดคู่
Identifiers
ตัวระบุ คือชื่อที่ใช้สำหรับอ้างอิงถึงค่า ตัวระบุอาจเป็นตัวระบุปกติหรือตัวระบุที่ได้รับการอ้างอิงเดียว อย่างใดอย่างหนึ่ง
ตัวระบุ:
IdentifierNameแต่ไม่ใช่ตัวดำเนินการหรือContextKeyword
ชื่อตัวระบุ:
ตัวระบุอักขระเริ่มต้นตัวระบุอักขระต่อเนื่องเลือก
'
ตัวระบุคำพูดเดี่ยว'
ตัวระบุตัวเริ่มต้นอักขระ:
ตัวอักษรตัวละคร
_
ตัวระบุอักขระต่อเนื่อง:
ตัวระบุตัวเริ่มต้นอักขระ
ทศนิยมตัวเลขอักขระ
การเชื่อมต่อตัวละคร
การรวมตัวละคร
การจัดรูปแบบอักขระ
ตัวระบุอักขระต่อเนื่อง:
ตัวระบุอักขระต่อเนื่องตัวระบุอักขระต่อเนื่องเลือก
ตัวอักษรตัวละคร:
อักขระ Unicode ใดๆ ของคลาส อักษรตัวพิมพ์ใหญ่ (Lu) หรือ ตัวอักษรพิมพ์เล็ก (Ll)
อักขระ Unicode ใดๆ ของคลาส Titlecase letter (Lt)
อักขระ Unicode ใดๆ ของคลาส ตัวแก้ไขตัวอักษร (Lm) หรือ Letter other (Lo)
อักขระ Unicode ใดๆ ของคลาส ตัวอักษรตัวเลข (Nl)
การรวมตัวละคร:
อักขระ Unicode ใดๆ ของคลาส เครื่องหมายไม่เว้นวรรค (Mn) หรือ เครื่องหมายรวมระยะห่าง (Mc)
อักขระทศนิยมหลัก:
อักขระ Unicode ใดๆ ของคลาส ตัวเลขทศนิยม (Nd)
การเชื่อมต่อตัวละคร:
อักขระ Unicode ใดๆ ของคลาส เครื่องหมายวรรคตอนตัวเชื่อมต่อ (Pc)
การจัดรูปแบบอักขระ:
อักขระ Unicode ใดๆ ของคลาส รูปแบบ (Cf)
ตัวระบุที่ได้รับการอ้างอิงเดียว
ตัวระบุใบเสนอราคาเดียว สามารถมีลำดับของอักขระ Unicode ศูนย์หรืออื่นๆ ที่ใช้เป็นตัวระบุได้ รวมถึงคำสำคัญ Whitespace ข้อคิดเห็น และตัวดำเนินการอื่นๆ อักขระเครื่องหมายคำพูดเดี่ยวได้รับการสนับสนุนโดยมีลำดับการหลีกเลี่ยงของเครื่องหมายคำพูดเดี่ยวสองตัว
SingleQuotedIdentifier:
ตัวระบุอักขระแบบอ้างเดี่ยว
SingleQuotedIdentifierอักขระ:
SingleQuotedIdentifierCharacterSingleQuotedIdentifierCharactersเลือก
SingleQuotedIdentifierCharacter:
ข้อความตัวอักษรไม่มีคำพูดเดี่ยว
ลำดับการหลบหนีคำพูดเดียว
ข้อความตัวอักษรไม่มีคำพูดเดี่ยว:
อักขระ Unicode ใดๆ ยกเว้น ' (U+0027)
ลำดับการหลบหนีคำพูดเดี่ยว :
'
'
ตัวระบุที่ถูกยกเลิก
ตัวระบุที่ไม่กำกวม:
ตัวระบุคอลัมน์ตาราง
ตัวระบุทั่วโลก
ตัวระบุคอลัมน์ตาราง:
ตัวระบุ[@
ตัวระบุ]
ตัวระบุทั่วโลก:
[@
ตัวระบุ]
คำสำคัญตามบริบท
บริบทคำสำคัญ:
Parent
Self
ThisItem
ThisRecord
การใช้ตัวพิมพ์ใหญ่-เล็ก
ตัวระบุ Power Apps ต้องตรงตามตัวพิมพ์ใหญ่-เล็ก เครื่องมือสร้างจะเปลี่ยนเป็นกรณีที่ถูกต้องโดยอัตโนมัติ เมื่อมีการเขียนสูตร
ตัวคั่น
ตัวคั่นทศนิยม:
.
(จุด) สำหรับภาษาที่ใช้จุดเป็นตัวคั่นตัวเลขทศนิยม เช่น 1.23
,
(เครื่องหมายจุลภาค) สำหรับภาษาที่ใช้เครื่องหมายจุลภาคเป็นตัวคั่นสำหรับตัวเลขทศนิยม เช่น 1,23
ตัวคั่นรายการ:
,
(เครื่องหมายจุลภาค) ถ้า DecimalSeparator เป็น .
(จุด)
;
(เครื่องหมายเซมิโคลอน) ถ้า ตัวคั่นทศนิยม เป็น ,
(เครื่องหมายจุลภาค)
ตัวคั่นโซ่:
;
(เครื่องหมายอัฒภาค) ถ้า DecimalSeparator เป็น .
(จุด)
;;
(เครื่องหมายเซมิโคลอนคู่) ถ้า ตัวคั่นทศนิยม เป็น ,
(เครื่องหมายจุลภาค)
Operators
ตัวดำเนินการจะใช้ในสูตรต่างๆ เพื่ออธิบายการดำเนินการเกี่ยวกับตัวถูกดำเนินการอย่างน้อยหนึ่งตัว ตัวอย่างเช่น นิพจน์ a + b
ใช้ตัวดำเนินการ +
เพื่อเพิ่มตัวถูกดำเนินการสองตัว a
และ b
ผู้ดำเนินการ :
ตัวดำเนินการแบบไบนารี
BinaryOperator ต้องใช้ช่องว่าง
ตัวดำเนินการคำนำหน้า
ตัวดำเนินการ Prefix ต้องใช้ช่องว่าง
ตัวดำเนินการ Postfix
BinaryOperator:หนึ่งใน
=
<
<=
>
>=
<>
+
-
*
/
^
&
&&
||
in
exactin
BinaryOperatorRequiresWhitespace:
And
ช่องว่าง
Or
ช่องว่าง
PrefixOperatorRequiresWhitespace:
Not
ช่องว่าง
ตัวดำเนินการอ้างอิง
การอ้างอิงวัตถุ
อ้างอิง:
อ้างอิงฐาน
BaseReferenceตัวดำเนินการอ้างอิงรายการอ้างอิง
อ้างอิงฐาน:
ตัวระบุ
ตัวระบุที่ไม่กำกวม
บริบทคำสำคัญ
รายการอ้างอิง:
ตัวระบุ
ตัวระบุตัวดำเนินการอ้างอิงรายการอ้างอิง
เรกคอร์ดแบบอินไลน์
การบันทึกแบบอินไลน์:
{
InlineRecordListเลือก}
รายการบันทึกอินไลน์:
ตัวระบุ:
การแสดงออก
ตัวระบุ:
นิพจน์ListSeparatorInlineRecordList
ตารางอินไลน์
ตารางอินไลน์:
[
InlineTableListเลือก]
รายการตารางอินไลน์:
การแสดงออก
นิพจน์ตัวคั่นรายการรายการตารางอินไลน์
Expression
การแสดงออก:
ตามตัวอักษร
อ้างอิง
การบันทึกแบบอินไลน์
ตารางอินไลน์
ฟังก์ชันการเรียก
(
การแสดงออก)
PrefixOperatorนิพจน์
นิพจน์ตัวดำเนินการ Postfix
นิพจน์ตัวดำเนินการไบนารีนิพจน์
นิพจน์แบบต่อเนื่อง
การแสดงออกที่ถูกผูกมัด:
การแสดงออก
นิพจน์ChainingSeparatorChainedExpressionopt
การเรียกฟังก์ชัน
ฟังก์ชันการเรียก:
ตัวระบุฟังก์ชัน(
อาร์กิวเมนต์ฟังก์ชันเลือก)
ตัวระบุฟังก์ชัน:
ตัวระบุ
ตัวระบุ.
ฟังก์ชันตัวระบุ
ฟังก์ชันอาร์กิวเมนต์:
การแสดงออกที่ถูกผูกมัด
ChainedExpressionListSeparatorฟังก์ชันอาร์กิวเมนต์