]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/C/VfrCompile/VfrSyntax.g
Sync BaseTool trunk (version r2423) into EDKII BaseTools. The change mainly includes:
[mirror_edk2.git] / BaseTools / Source / C / VfrCompile / VfrSyntax.g
index f27f05b68910a9430379082bcd65992b2e436298..d55a80672be10fac8b3804492d06b81fe848538c 100644 (file)
@@ -1989,6 +1989,7 @@ vfrStatementDate :
       Prompt "=" "STRING_TOKEN" "\(" DP:Number "\)" ","\r
       Help   "=" "STRING_TOKEN" "\(" DH:Number "\)" ","\r
       minMaxDateStepDefault[Val.date, 2]\r
+      { G:FLAGS "=" vfrDateFlags[DObj, G->getLine()] "," }\r
                                                        <<\r
                                                           mCVfrQuestionDB.RegisterOldDateQuestion (VarIdStr[0], VarIdStr[1], VarIdStr[2], QId);\r
                                                           DObj.SetQuestionId (QId);\r
@@ -2449,6 +2450,7 @@ vfrStatementTime :
       Prompt "=" "STRING_TOKEN" "\(" SP:Number "\)" ","\r
       Help   "=" "STRING_TOKEN" "\(" SH:Number "\)" ","\r
       minMaxTimeStepDefault[Val.time, 2]\r
+      { G:FLAGS "=" vfrTimeFlags[TObj, G->getLine()] "," }\r
                                                        <<\r
                                                           mCVfrQuestionDB.RegisterOldTimeQuestion (VarIdStr[0], VarIdStr[1], VarIdStr[2], QId);\r
                                                           TObj.SetQuestionId (QId);\r
@@ -3216,7 +3218,7 @@ vfrExpressionBuildInFunction [UINT32 & RootLevel, UINT32 & ExpOpCount] :
   | ideqvalExp[$RootLevel, $ExpOpCount]\r
   | ideqidExp[$RootLevel, $ExpOpCount]\r
   | ideqvallistExp[$RootLevel, $ExpOpCount]\r
-  | questionref13Exp[$RootLevel, $ExpOpCount]\r
+  | questionref1Exp[$RootLevel, $ExpOpCount]\r
   | rulerefExp[$RootLevel, $ExpOpCount]\r
   | stringref1Exp[$RootLevel, $ExpOpCount]\r
   | pushthisExp[$RootLevel, $ExpOpCount]\r
@@ -3451,50 +3453,26 @@ ideqvallistExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
                                                         >>\r
   ;\r
 \r
-questionref13Exp[UINT32 & RootLevel, UINT32 & ExpOpCount] :\r
+questionref1Exp[UINT32 & RootLevel, UINT32 & ExpOpCount] :\r
   <<\r
-     UINT8           Type = 0x1;\r
-     EFI_STRING_ID   DevPath = EFI_STRING_ID_INVALID;\r
-     EFI_GUID        Guid = {0,};\r
      EFI_QUESTION_ID QId = EFI_QUESTION_ID_INVALID;\r
      UINT32          BitMask;\r
      CHAR8           *QName = NULL;\r
      UINT32          LineNo = 0;\r
   >>\r
   L:QuestionRef\r
-  (\r
-    (\r
-                                                       << Type = 0x3; >>\r
-      {\r
-        Path "=" "STRING_TOKEN" "\(" S:Number "\)"     << Type = 0x4; DevPath = _STOSID(S->getText()); >>\r
-      }\r
-      {\r
-        Uuid "=" guidDefinition[Guid]                  << Type = 0x5; >>\r
-      }\r
-    )\r
-    |\r
-    (\r
-      "\("\r
-    (\r
+  "\("\r
+      (\r
           QN:StringIdentifier                          <<\r
                                                           QName  = QN->getText();\r
-                              LineNo = QN->getLine();\r
+                                                          LineNo = QN->getLine();\r
                                                           mCVfrQuestionDB.GetQuestionId (QN->getText(), NULL, QId, BitMask);\r
                                                        >>\r
         | ID:Number                                    << QId = _STOQID(ID->getText()); >>\r
       )\r
-      "\)"\r
-    )\r
-  )\r
+  "\)"\r
                                                        <<\r
-                                                          switch (Type) {\r
-                                                          case 0x1: {CIfrQuestionRef1 QR1Obj(L->getLine()); _SAVE_OPHDR_COND (QR1Obj, ($ExpOpCount == 0), L->getLine()); QR1Obj.SetQuestionId (QId, QName, LineNo); break;}\r
-                                                          case 0x3: {CIfrQuestionRef3 QR3Obj(L->getLine()); _SAVE_OPHDR_COND (QR3Obj, ($ExpOpCount == 0), L->getLine()); break;}\r
-                                                          case 0x4: {CIfrQuestionRef3_2 QR3_2Obj(L->getLine()); _SAVE_OPHDR_COND (QR3_2Obj, ($ExpOpCount == 0), L->getLine()); QR3_2Obj.SetDevicePath (DevPath); break;}\r
-                                                          case 0x5: {CIfrQuestionRef3_3 QR3_3Obj(L->getLine()); _SAVE_OPHDR_COND (QR3_3Obj, ($ExpOpCount == 0), L->getLine()); QR3_3Obj.SetDevicePath (DevPath); QR3_3Obj.SetGuid (&Guid); break;}\r
-                                                          }\r
-                                                          $ExpOpCount++;\r
-                                                       >>\r
+                                                          { CIfrQuestionRef1 QR1Obj(L->getLine()); _SAVE_OPHDR_COND (QR1Obj, ($ExpOpCount == 0), L->getLine()); QR1Obj.SetQuestionId (QId, QName, LineNo); } $ExpOpCount++; >>\r
   ;\r
 \r
 rulerefExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :\r
@@ -3626,7 +3604,7 @@ vfrExpressionConstant[UINT32 & RootLevel, UINT32 & ExpOpCount] :
 vfrExpressionUnaryOp[UINT32 & RootLevel, UINT32 & ExpOpCount] :\r
     lengthExp[$RootLevel, $ExpOpCount]\r
   | bitwisenotExp[$RootLevel, $ExpOpCount]\r
-  | question2refExp[$RootLevel, $ExpOpCount]\r
+  | question23refExp[$RootLevel, $ExpOpCount]\r
   | stringref2Exp[$RootLevel, $ExpOpCount]\r
   | toboolExp[$RootLevel, $ExpOpCount]\r
   | tostringExp[$RootLevel, $ExpOpCount]\r
@@ -3648,10 +3626,30 @@ bitwisenotExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
                                                        << { CIfrBitWiseNot BWNObj(L->getLine()); $ExpOpCount++; } >>\r
   ;\r
 \r
-question2refExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :\r
+question23refExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :\r
+  <<\r
+     UINT8           Type = 0x1;\r
+     EFI_STRING_ID   DevPath = EFI_STRING_ID_INVALID;\r
+     EFI_GUID        Guid = {0,};\r
+  >>\r
   L:QuestionRefVal\r
-  "\(" vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] "\)"\r
-                                                       << { CIfrQuestionRef2 QR2Obj(L->getLine()); $ExpOpCount++; } >>\r
+  "\("\r
+      {\r
+        DevicePath "=" "STRING_TOKEN" "\(" S:Number "\)" ","    << Type = 0x2; DevPath = _STOSID(S->getText()); >>\r
+      }\r
+      {\r
+        Uuid "=" guidDefinition[Guid] ","                       << Type = 0x3; >>\r
+      }\r
+      vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] \r
+  "\)"\r
+                                                       <<\r
+                                                          switch (Type) {\r
+                                                          case 0x1: {CIfrQuestionRef2 QR2Obj(L->getLine()); _SAVE_OPHDR_COND (QR2Obj, ($ExpOpCount == 0), L->getLine()); break;}\r
+                                                          case 0x2: {CIfrQuestionRef3_2 QR3_2Obj(L->getLine()); _SAVE_OPHDR_COND (QR3_2Obj, ($ExpOpCount == 0), L->getLine()); QR3_2Obj.SetDevicePath (DevPath); break;}\r
+                                                          case 0x3: {CIfrQuestionRef3_3 QR3_3Obj(L->getLine()); _SAVE_OPHDR_COND (QR3_3Obj, ($ExpOpCount == 0), L->getLine()); QR3_3Obj.SetDevicePath (DevPath); QR3_3Obj.SetGuid (&Guid); break;}\r
+                                                          }\r
+                                                          $ExpOpCount++;\r
+                                                       >>\r
   ;\r
 \r
 stringref2Exp[UINT32 & RootLevel, UINT32 & ExpOpCount] :\r