#token MapTitle("maptitle") "maptitle"\r
#token MapGuid("mapguid") "mapguid"\r
#token Subtitle("subtitle") "subtitle"\r
+#token EndSubtitle("endsubtitle") "endsubtitle"\r
#token Help("help") "help"\r
#token Text("text") "text"\r
#token Option("option") "option"\r
<<\r
EFI_GUID Guid;\r
CIfrVarStoreNameValue VSNVObj;\r
- EFI_VARSTORE_ID VarStoreId;\r
+ EFI_VARSTORE_ID VarStoreId = EFI_VARSTORE_ID_INVALID;\r
+ BOOLEAN Created = FALSE;\r
>>\r
L:NameValueVarStore << VSNVObj.SetLineNo(L->getLine()); >>\r
- SN:StringIdentifier "," << _PCATCH(mCVfrDataStorage.DeclareNameVarStoreBegin (SN->getText()), SN); >>\r
+ SN:StringIdentifier ","\r
+ {\r
+ VarId "=" ID:Number "," <<\r
+ _PCATCH(\r
+ (INTN)(VarStoreId = _STOU16(ID->getText())) != 0,\r
+ (INTN)TRUE,\r
+ ID,\r
+ "varid 0 is not allowed."\r
+ );\r
+ >>\r
+ }\r
(\r
- Name "=" "STRING_TOKEN" "\(" N:Number "\)" "," << _PCATCH(mCVfrDataStorage.NameTableAddItem (_STOSID(N->getText())), SN); >>\r
+ Name "=" "STRING_TOKEN" "\(" N:Number "\)" "," << \r
+ if (!Created) {\r
+ _PCATCH(mCVfrDataStorage.DeclareNameVarStoreBegin (SN->getText(), VarStoreId), SN);\r
+ Created = TRUE;\r
+ }\r
+ _PCATCH(mCVfrDataStorage.NameTableAddItem (_STOSID(N->getText())), SN); \r
+ >>\r
)+\r
Uuid "=" guidDefinition[Guid] << _PCATCH(mCVfrDataStorage.DeclareNameVarStoreEnd (&Guid), SN); >>\r
<<\r
{\r
"," FLAGS "=" vfrSubtitleFlags[SObj]\r
}\r
- { vfrStatementStatTagList "," }\r
- E:";" << CRT_END_OP (E); >>\r
+ (\r
+ {vfrStatementStatTagList "," }\r
+ E:";" << CRT_END_OP (E); >>\r
+ |\r
+ { "," vfrStatementStatTagList}\r
+ { "," (vfrStatementStat | vfrStatementQuestions)*}\r
+ E: EndSubtitle ";" << CRT_END_OP (E); >>\r
+ )\r
;\r
\r
vfrSubtitleFlags [CIfrSubtitle & SObj] :\r