From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.126; helo=mga18.intel.com; envelope-from=yonghong.zhu@intel.com; receiver=edk2-devel@lists.01.org Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 17E00221660C6 for ; Wed, 7 Feb 2018 04:30:20 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Feb 2018 04:36:03 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,473,1511856000"; d="scan'208";a="28111861" Received: from shwdeopenpsi168.ccr.corp.intel.com ([10.239.158.129]) by fmsmga004.fm.intel.com with ESMTP; 07 Feb 2018 04:36:03 -0800 From: Yonghong Zhu To: edk2-devel@lists.01.org Cc: Liming Gao , Michael Kinney , Kevin W Shaw Date: Wed, 7 Feb 2018 20:35:55 +0800 Message-Id: <1518006956-2284-4-git-send-email-yonghong.zhu@intel.com> X-Mailer: git-send-email 2.6.1.windows.1 In-Reply-To: <1518006956-2284-1-git-send-email-yonghong.zhu@intel.com> References: <1518006956-2284-1-git-send-email-yonghong.zhu@intel.com> Subject: [Patch V2] Expression spec: update format to support flexible Pcd format X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Feb 2018 12:30:20 -0000 V2: update EBNF for Array format. Cc: Liming Gao Cc: Michael Kinney Cc: Kevin W Shaw Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yonghong Zhu --- 2_expression_overview.md | 3 +++ 3_expression_format.md | 50 +++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/2_expression_overview.md b/2_expression_overview.md index 34ceb97..c29a632 100644 --- a/2_expression_overview.md +++ b/2_expression_overview.md @@ -100,5 +100,8 @@ directives section do not apply. 12. Logical operators require operands that are type scalar. 13. For the Conditional Operator, the first operand must be scalar, while the second and third operands must have the same type (i.e., both being scalar, both being integers, or both being string literals). + +14. Array format like "{0x10, 0x20}" can't be a operand of any operator except + Relational and equality operators. diff --git a/3_expression_format.md b/3_expression_format.md index 50b94c4..1f90fc9 100644 --- a/3_expression_format.md +++ b/3_expression_format.md @@ -93,10 +93,21 @@ GRACEFULLY._ ::= ::= []+ ::= (a-fA-F0-9) ::= {"0x"} {"0X"} ::= {} {} + ::= (\x0 - \xFF) + ::= (\x0 - \xFFFF) + ::= (\x0 - \xFFFFFFFF) + ::= (\x0 - \xFFFFFFFFFFFFFFFF) + ::= (0-255) + ::= (0-65535) + ::= (0-4294967295) + ::= (0-18446744073709551615) + ::= "GUID(" ")" + ::= { } + {} {} Rhex2 ::= [] Rhex4 ::= [] [] Rhex2 Rhex8 ::= [] [] [] [] Rhex4 ::= Rghex8 "-" Rghex4 "-" Rghex4 "-" Rghex4 "-" Rghex12 Rghex2 ::= @@ -111,19 +122,42 @@ Rghex12 ::= Rghex8 ::= "{" []* ::= "{" []* ::= ::= ::= []* "}" []* "}" - ::= {} {} + ::= {} {} ::= "{" * "}" - ::= "{" * [ ]* "}" + ::= "{" * [] + [ [] ]* "}" + ::= {} {} {} + ::= "DEVICE_PATH(" ")" + ::= A double quoted string that follow the device path + as string format defined in UEFI Specification 2.6 + Section 9.6 + ::= "LABEL(" ")" + ::= "OFFSET_OF(" ")" ::= {} {"L" } + {} {"L" } ::= 0x22 + ::= 0x27 ::= []* + ::= []* ::= {} {} - ::= {0x20} {0x21} {(0x23 - 0x5B)} {(0x5D - 0x7E)} - ::= "\" {"n"} {"r"} {"t"} {"f"} {"b"} {"0"} {"\"} {} + ::= {0x21} {(0x23 - 0x26)} {(0x28 - 0x5B)} + {(0x5D - 0x7E)} {} + ::= "\" {"n"} {"r"} {"t"} {"f"} {"b"} {"0"} {"\"} + {} {} + ::= {} {} {} {} + ::= {} {} {} + ::= {} {} {} + ::= {} {} {} + ::= {} {} {} + ::= {} {} {} {} + ::= "UINT8(" ")" + ::= "UINT16(" ")" + ::= "UINT32(" ")" + ::= "UINT64(" ")" ::= {} {} ::= "." ::= {} { } ::= {} {} ::= {"+"} {"-"} {"~"} @@ -187,13 +221,19 @@ gUefiCpuPkgTokenSpaceGuid.PcdCpuLocalApicBaseAddress | !gCrownBayTokenSpaceGuid. This is the value of the MACRO assigned in a DEFINE statement. **Expressions** -If the "|" character is used in an expression, the expression must be +If the "|" or "||"character is used in an expression, the expression must be encapsulated by parenthesis. +**OFFSET_OF()** + +LABEL() macro in byte arrays to tag the byte offset of a location in a byte +array. OFFSET_OF() macro in byte arrays that returns the byte offset of a +LABEL() declared in a byte array. + ## 3.2 Conditional Directive Expressions Conditional directive statements are defined in the EDK II Platform Description (DSC) File and Flash Definition (FDF) File. The following EBNF describes the format for expressions used in conditional directives. The format is based on -- 2.6.1.windows.1