diff --git a/BaseTools/Source/C/VfrCompile/VfrSyntax.g b/BaseTools/Source/C/VfrCompile/VfrSyntax.g index 433a4e8200..27e8198f78 100644 --- a/BaseTools/Source/C/VfrCompile/VfrSyntax.g +++ b/BaseTools/Source/C/VfrCompile/VfrSyntax.g @@ -267,7 +267,7 @@ vfrProgram > [UINT8 Return] : mConstantOnlyInExpression = FALSE; >> ( - vfrPragmaPackDefinition + vfrPragmaDefinition | vfrDataStructDefinition | vfrDataUnionDefinition )* @@ -308,14 +308,18 @@ pragmaPackNumber : << gCVfrVarDataTypeDB.Pack (LineNum, VFR_PACK_ASSIGN, NULL, PackNumber); >> ; -vfrPragmaPackDefinition : - "\#pragma" "pack" "\(" - { - pragmaPackShowDef - | pragmaPackStackDef - | pragmaPackNumber - } - "\)" +vfrPragmaDefinition : + "\#pragma" + ( + "pack" "\(" + { + pragmaPackShowDef + | pragmaPackStackDef + | pragmaPackNumber + } + "\)" + | "once" // Skip '#pragma once' in preprocessed output + ) ; vfrDataUnionDefinition :