Index: Source/C/Common/ParseInf.c
===================================================================
--- Source/C/Common/ParseInf.c	(revision 15680)
+++ Source/C/Common/ParseInf.c	(working copy)
@@ -236,6 +236,7 @@
 {
   CHAR8   InputBuffer[_MAX_PATH];
   CHAR8   *CurrentToken;
+  CHAR8   *Delimiter;
   BOOLEAN ParseError;
   BOOLEAN ReadError;
   UINTN   Occurrance;
@@ -283,8 +284,13 @@
       //
       // Get the first non-whitespace string
       //
+      Delimiter = strchr (InputBuffer, '=');
+      if (Delimiter != NULL) {
+        *Delimiter = 0;
+      }
+
       CurrentToken = strtok (InputBuffer, " \t\n");
-      if (CurrentToken == NULL) {
+      if (CurrentToken == NULL || Delimiter == NULL) {
         //
         // Whitespace line found (or comment) so continue
         //
@@ -311,8 +317,8 @@
           //
           // Copy the contents following the =
           //
-          CurrentToken = strtok (NULL, "= \t\n");
-          if (CurrentToken == NULL) {
+          CurrentToken = Delimiter + 1;
+          if (*CurrentToken == 0) {
             //
             // Nothing found, parsing error
             //
@@ -319,9 +325,21 @@
             ParseError = TRUE;
           } else {
             //
+            // Strip leading white space
+            //
+            while (*CurrentToken == ' ' || *CurrentToken == '\t') {
+              CurrentToken++;
+            }
+            //
             // Copy the current token to the output value
             //
             strcpy (Value, CurrentToken);
+            //
+            // Strip trailing white space
+            //
+            while (strlen(Value) > 0 && (*(Value + strlen(Value) - 1) == ' ' || *(Value + strlen(Value) - 1) == '\t')) {
+              *(Value + strlen(Value) - 1) = 0;
+            }
             return EFI_SUCCESS;
           }
         } else {
Index: Source/C/Include/Common/BuildVersion.h
===================================================================
--- Source/C/Include/Common/BuildVersion.h	(revision 15680)
+++ Source/C/Include/Common/BuildVersion.h	(working copy)
@@ -14,4 +14,4 @@
 
 **/
 
-#define __BUILD_VERSION "Build 2670"
+#define __BUILD_VERSION ""
Index: Source/C/VfrCompile/VfrError.cpp
===================================================================
--- Source/C/VfrCompile/VfrError.cpp	(revision 15680)
+++ Source/C/VfrCompile/VfrError.cpp	(working copy)
@@ -52,6 +52,8 @@
 static SVFR_WARNING_HANDLE VFR_WARNING_HANDLE_TABLE [] = {
   { VFR_WARNING_DEFAULT_VALUE_REDEFINED, ": default value re-defined with different value"},
   { VFR_WARNING_STRING_TO_UINT_OVERFLOW, ": String to UINT* Overflow"},
+  { VFR_WARNING_ACTION_WITH_TEXT_TWO, ": Action opcode should not have TextTwo part"},
+  { VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE, ": Not recommend to use obsoleted framework opcode"},
   { VFR_WARNING_CODEUNDEFINED, ": undefined Warning Code" }
 };
 
Index: Source/C/VfrCompile/VfrError.h
===================================================================
--- Source/C/VfrCompile/VfrError.h	(revision 15680)
+++ Source/C/VfrCompile/VfrError.h	(working copy)
@@ -50,6 +50,8 @@
 typedef enum {
   VFR_WARNING_DEFAULT_VALUE_REDEFINED = 0,
   VFR_WARNING_STRING_TO_UINT_OVERFLOW,
+  VFR_WARNING_ACTION_WITH_TEXT_TWO,
+  VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,
   VFR_WARNING_CODEUNDEFINED
 } EFI_VFR_WARNING_CODE;
 
Index: Source/C/VfrCompile/VfrSyntax.g
===================================================================
--- Source/C/VfrCompile/VfrSyntax.g	(revision 15680)
+++ Source/C/VfrCompile/VfrSyntax.g	(working copy)
@@ -505,11 +505,11 @@
   {
     ClassGuid "=" guidDefinition[ClassGuid1]        << ++ClassGuidNum; >>
                   {
-                   "\|" guidDefinition[ClassGuid2]  << ++ClassGuidNum; >>
+                     "\|" guidDefinition[ClassGuid2]  << ++ClassGuidNum; >>
+                     {
+                      "\|" guidDefinition[ClassGuid3]  << ++ClassGuidNum; >>
+                     }
                   }
-                  {
-                   "\|" guidDefinition[ClassGuid3]  << ++ClassGuidNum; >>
-                  }
                   ","
   }
                                                     <<
@@ -1184,9 +1184,35 @@
     ReadOnlyFlag                                    << $Flags |= 0x01; >>
   | InteractiveFlag                                 << $Flags |= 0x04; >>
   | ResetRequiredFlag                               << $Flags |= 0x10; >>
-  | OptionOnlyFlag                                  << $Flags |= 0x80; >>
-  | NVAccessFlag
-  | LateCheckFlag
+  | O:OptionOnlyFlag                                << 
+                                                       if (mCompatibleMode) {
+                                                         $Flags |= 0x80;
+                                                       } else {
+                                                         gCVfrErrorHandle.HandleWarning (
+                                                            VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,
+                                                            O->getLine(),
+                                                            O->getText()
+                                                            );
+                                                       }
+                                                    >>
+  | N:NVAccessFlag                                  << 
+                                                       if (!mCompatibleMode) {
+                                                          gCVfrErrorHandle.HandleWarning (
+                                                            VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,
+                                                            N->getLine(),
+                                                            N->getText()
+                                                            );
+                                                       }
+                                                    >>
+  | L:LateCheckFlag                                 << 
+                                                       if (!mCompatibleMode) {
+                                                          gCVfrErrorHandle.HandleWarning (
+                                                            VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,
+                                                            L->getLine(),
+                                                            L->getText()
+                                                            );
+                                                       }
+                                                    >>
   ;
 
 vfrStorageVarId[EFI_VARSTORE_INFO & Info, CHAR8 *&QuestVarIdStr, BOOLEAN CheckFlag = TRUE] :
@@ -1617,8 +1643,29 @@
   ;
 
 flagsField :
-  Number | InteractiveFlag | ManufacturingFlag | DefaultFlag |
-  NVAccessFlag | ResetRequiredFlag | LateCheckFlag
+  Number 
+  | InteractiveFlag 
+  | ManufacturingFlag 
+  | DefaultFlag 
+  | ResetRequiredFlag 
+  | N:NVAccessFlag                                     << 
+                                                          if (!mCompatibleMode) {
+                                                            gCVfrErrorHandle.HandleWarning (
+                                                              VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,
+                                                              N->getLine(),
+                                                              N->getText()
+                                                              );
+                                                          }
+                                                       >>
+  | L:LateCheckFlag                                    << 
+                                                          if (!mCompatibleMode) {
+                                                            gCVfrErrorHandle.HandleWarning (
+                                                              VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,
+                                                              L->getLine(),
+                                                              L->getText()
+                                                              );
+                                                          }
+                                                       >> 
   ;
 
 vfrStatementValue :
@@ -1652,7 +1699,7 @@
   |
     { "," vfrStatementStatTagList}
     { "," (vfrStatementStat | vfrStatementQuestions)*}
-    E: EndSubtitle ";"                                  << CRT_END_OP (E); >>
+    D: EndSubtitle ";"                                  << CRT_END_OP (D); >>
   )
   ;
 
@@ -1685,6 +1732,13 @@
   }
                                                        <<
                                                           if (Flags & EFI_IFR_FLAG_CALLBACK) {
+                                                            if (TxtTwo != EFI_STRING_ID_INVALID) {
+                                                              gCVfrErrorHandle.HandleWarning (
+                                                                                VFR_WARNING_ACTION_WITH_TEXT_TWO,
+                                                                                S3->getLine(),
+                                                                                S3->getText()
+                                                                                );
+                                                            }
                                                             CIfrAction AObj;
                                                             mCVfrQuestionDB.RegisterQuestion (NULL, NULL, QId);
                                                             AObj.SetLineNo (F->getLine());
@@ -3035,11 +3089,31 @@
   | "OPTION_DEFAULT"                                   << $LFlags |= 0x10; >>
   | "OPTION_DEFAULT_MFG"                               << $LFlags |= 0x20; >>
   | InteractiveFlag                                    << $HFlags |= 0x04; >>
-  | NVAccessFlag                                       << $HFlags |= 0x08; >>
   | ResetRequiredFlag                                  << $HFlags |= 0x10; >>
-  | LateCheckFlag                                      << $HFlags |= 0x20; >>
   | ManufacturingFlag                                  << $LFlags |= 0x20; >>
   | DefaultFlag                                        << $LFlags |= 0x10; >>
+  | A:NVAccessFlag                                     << 
+                                                          if (mCompatibleMode) {
+                                                            $HFlags |= 0x08;
+                                                          } else {
+                                                            gCVfrErrorHandle.HandleWarning (
+                                                              VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,
+                                                              A->getLine(),
+                                                              A->getText()
+                                                              );
+                                                          }
+                                                       >>
+  | L:LateCheckFlag                                    << 
+                                                          if (mCompatibleMode) {
+                                                            $HFlags |= 0x20;
+                                                          } else {
+                                                            gCVfrErrorHandle.HandleWarning (
+                                                              VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,
+                                                              L->getLine(),
+                                                              L->getText()
+                                                              );
+                                                          }
+                                                       >>
   ;
 
 vfrStatementLabel :
Index: Source/Python/Common/BuildVersion.py
===================================================================
--- Source/Python/Common/BuildVersion.py	(revision 15680)
+++ Source/Python/Common/BuildVersion.py	(working copy)
@@ -13,4 +13,4 @@
 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #
 
-gBUILD_VERSION = "Build 2670"
+gBUILD_VERSION = ""
Index: Source/Python/UPT/BuildVersion.py
===================================================================
--- Source/Python/UPT/BuildVersion.py	(revision 15680)
+++ Source/Python/UPT/BuildVersion.py	(working copy)
@@ -17,4 +17,4 @@
 Build version information
 '''
 
-gBUILD_VERSION = "Build 2670"
+gBUILD_VERSION = ""
