------------------------------------------------------------
This is the second part of a two part file.
This is a list of changes to pccts 1.33 prior to MR13
For more recent information see CHANGES_FROM_133.txt
------------------------------------------------------------
DISCLAIMER
The software and these notes are provided "as is". They may include
typographical or technical errors and their authors disclaims all
liability of any kind or nature for damages due to error, fault,
defect, or deficiency regardless of cause. All warranties of any
kind, either express or implied, including, but not limited to, the
implied warranties of merchantability and fitness for a particular
purpose are disclaimed.
#153. (Changed in MR12b) Bug in computation of -mrhoist suppression set
Consider the following grammar with k=1 and "-mrhoist on":
r1 : (A)? => ((p>>? x /* l1 */
| r2 /* l2 */
;
r2 : A /* l4 */
| (B)? => <<q>>? y /* l5 */
;
In earlier versions the mrhoist routine would see that both l1 and
l2 contained predicates and would assume that this prevented either
from acting to suppress the other predicate. In the example above
it didn't realize the A at line l4 is capable of suppressing the
predicate at l1 even though alt l2 contains (indirectly) a predicate.
This is fixed in MR12b.
Reported by Reinier van den Born (reinier@vnet.ibm.com)
#153. (Changed in MR12a) Bug in computation of -mrhoist suppression set
An oversight similar to that described in Item #152 appeared in
the computation of the set that "covered" a predicate. If a
predicate expression included a term such as p=AND(q,r) the context
of p was taken to be context(q) & context(r), when it should have
been context(q) | context(r). This is fixed in MR12a.
#152. (Changed in MR12) Bug in generation of predicate expressions
The primary purpose for MR12 is to make quite clear that MR11 is
obsolete and to fix the bug related to predicate expressions.
In MR10 code was added to optimize the code generated for
predicate expression tests. Unfortunately, there was a
significant oversight in the code which resulted in a bug in
the generation of code for predicate expression tests which
contained predicates combined using AND:
r0 : (r1)* "@" ;
r1 : (AAA)? => <<p LATEXT(1)>>? r2 ;
r2 : (BBB)? => <<q LATEXT(1)>>? Q
| (BBB)? => <<r LATEXT(1)>>? Q
;
In MR11 (and MR10 when using "-mrhoist on") the code generated
for r0 to predict r1 would be equivalent to:
if ( LA(1)==Q &&
(LA(1)==AAA && LA(1)==BBB) &&
( p && ( q || r )) ) {
This is incorrect because it expresses the idea that LA(1)
*must* be AAA in order to attempt r1, and *must* be BBB to
attempt r2. The result was that r1 became unreachable since
both condition can not be simultaneously true.
The general philosophy of code generation for predicates
can be summarized as follows:
a. If the context is true don't enter an alt
for which the corresponding predicate is false.
If the context is false then it is okay to enter
the alt without evaluating the predicate at all.
b. A predicate created by ORing of predicates has
context which is the OR of their individual contexts.
c. A predicate created by ANDing of predicates has
(surprise) context which is the OR of their individual
contexts.
d. Apply these rules recursively.
e. Remember rule (a)
The correct code should express the idea that *if* LA(1) is
AAA then p must be true to attempt r1, but if LA(1) is *not*
AAA then it is okay to attempt r1, provided that *if* LA(1) is
BBB then one of q or r must be true.
if ( LA(1)==Q &&
( !(LA(1)==AAA || LA(1)==BBB) ||
( ! LA(1) == AAA || p) &&
( ! LA(1) == BBB || q || r ) ) ) {
I believe this is fixed in MR12.
Reported by Reinier van den Born (reinier@vnet.ibm.com)
#151a. (Changed in MR12) ANTLRParser::getLexer()
As a result of several requests, I have added public methods to
get a pointer to the lexer belonging to a parser.
ANTLRTokenStream *ANTLRParser::getLexer() const
Returns a pointer to the lexer being used by the
parser. ANTLRTokenStream is the base class of
DLGLexer
ANTLRTokenStream *ANTLRTokenBuffer::getLexer() const
Returns a pointer to the lexer being used by the
ANTLRTokenBuffer. ANTLRTokenStream is the base
class of DLGLexer
You must manually cast the ANTLRTokenStream to your program's
lexer class. Because the name of the lexer's class is not fixed.
Thus it is impossible to incorporate it into the DLGLexerBase
class.
#151b.(Changed in MR12) ParserBlackBox member getLexer()
The template class ParserBlackBox now has a member getLexer()
which returns a pointer to the lexer.
#150. (Changed in MR12) syntaxErrCount and lexErrCount now public
See Item #127 for more information.
#149. (Changed in MR12) antlr option -info o (letter o for orphan)
If there is more than one rule which is not referenced by any
other rule then all such rules are listed. This is useful for
alerting one to rules which are not used, but which can still
contribute to ambiguity. For example:
start : a Z ;
unused: a A ;
a : (A)+ ;
will cause an ambiguity report for rule "a" which will be
difficult to understand if the user forgets about rule "unused"
simply because it is not used in the grammar.
#148. (Changed in MR11) #token names appearing in zztokens,token_tbl
In a #token statement like the following:
#token Plus "\+"
the string "Plus" appears in the zztokens array (C mode) and
token_tbl (C++ mode). This string is used in most error
messages. In MR11 one has the option of using some other string,
(e.g. "+") in those tables.
In MR11 one can write:
#token Plus ("+") "\+"
#token RP ("(") "\("
#token COM ("comment begin") "/\*"
A #token statement is allowed to appear in more than one #lexclass
with different regular expressions. However, the token name appears
only once in the zztokens/token_tbl array. This means that only
one substitute can be specified for a given #token name. The second
attempt to define a substitute name (different from the first) will
result in an error message.
#147. (Changed in MR11) Bug in follow set computation
There is a bug in 1.33 vanilla and all maintenance releases
prior to MR11 in the computation of the follow set. The bug is
different than that described in Item #82 and probably more
common. It was discovered in the ansi.g grammar while testing
the "ambiguity aid" (Item #119). The search for a bug started
when the ambiguity aid was unable to discover the actual source
of an ambiguity reported by antlr.
The problem appears when an optimization of the follow set
computation is used inappropriately. The result is that the
follow set used i
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
以下是包内所有内容,包含了AppPkg、StdLib等所有包 edk2 - Revision 14204: /trunk/edk2 .. AppPkg/ ArmPkg/ ArmPlatformPkg/ BaseTools/ BeagleBoardPkg/ BuildNotes2.txt Conf/ CryptoPkg/ DuetPkg/ EdkCompatibilityPkg/ EdkShellBinPkg/ EdkShellPkg/ EmbeddedPkg/ EmulatorPkg/ FatBinPkg/ IntelFrameworkModulePkg/ IntelFrameworkPkg/ MdeModulePkg/ MdePkg/ NetworkPkg/ Nt32Pkg/ Omap35xxPkg/ OptionRomPkg/ OvmfPkg/ PcAtChipsetPkg/ PerformancePkg/ SecurityPkg/ ShellBinPkg/ ShellPkg/ SourceLevelDebugPkg/ StdLib/ StdLibPrivateInternalFiles/ UefiCpuPkg/ UnixPkg/ edksetup.bat edksetup.sh
资源推荐
资源详情
资源评论
收起资源包目录
EDK2所有源代码 2012年 (11190个子文件)
antlr.1 10KB
dlg.1 3KB
cfgparser.1 23B
2to3 101B
zlib.3 5KB
gcc4.4-ld-script 690B
ACKS 118B
Sine-1000Hz-300ms.aif 60KB
ms.app 998B
Python.asdl 4KB
Dsdt.asl 26KB
Tpm.asl 9KB
Ssdt.asl 728B
Madt.aslc 5KB
Facp.aslc 5KB
Facs.aslc 2KB
st32_64.asm 41KB
start64.asm 41KB
st16_64.asm 40KB
start32.asm 35KB
start.asm 34KB
start16.asm 34KB
AsmFuncs.asm 21KB
efi64.asm 20KB
AsmFuncs.asm 18KB
efi32.asm 17KB
bs32.asm 13KB
ArmV7Support.asm 13KB
Gpt.asm 13KB
bootsect.asm 13KB
bs16.asm 12KB
Thunk16.asm 12KB
Thunk16.asm 12KB
ExceptionHandlerAsm.asm 11KB
ExceptionSupport.asm 11KB
Thunk16.asm 11KB
DebugAgentException.asm 11KB
Mbr.asm 10KB
ExceptionHandlerAsm.asm 10KB
ExceptionSupport.ARMv6.asm 9KB
Thunk16.asm 9KB
Thunk16.asm 9KB
CpuAsm.asm 9KB
AsmFuncs.asm 9KB
AsmFuncs.asm 8KB
CpuAsm.asm 8KB
MpFuncs.asm 8KB
uldiv.asm 7KB
Thunk16.asm 7KB
Thunk16.asm 6KB
MpFuncs.asm 6KB
Cpu.asm 6KB
ProcessorAsms.Asm 6KB
ProcessorAsms.Asm 6KB
EfiCopyMem.asm 6KB
EbcLowLevel.asm 6KB
EbcLowLevel.asm 5KB
SearchForSecEntry.asm 5KB
AsmDispatchExecute.asm 5KB
CTA9x4Boot.asm 5KB
ModuleEntryPoint.asm 5KB
ExceptionSupport.asm 5KB
Arm9Support.asm 5KB
ArmLibSupport.asm 5KB
Arm11Support.asm 4KB
CopyMem.asm 4KB
SecEntryPoint.asm 4KB
IoFifo.asm 4KB
CpuIA32.asm 4KB
div.asm 4KB
IoFifo.asm 4KB
EfiZeroMem.asm 4KB
Real16ToFlat32.asm 4KB
DisablePaging64.asm 4KB
DisablePaging64.asm 4KB
ArmV7ArchTimerSupport.asm 4KB
EfiSetMem.asm 4KB
S3Asm.asm 4KB
SerialDebug.asm 3KB
DivU64x64Remainder.asm 3KB
DivU64x64Remainder.asm 3KB
JumpToKernel.asm 3KB
ModuleEntryPoint.asm 3KB
Helper.asm 3KB
SwitchRam.asm 3KB
Stack.asm 3KB
SwitchRam.asm 3KB
DivU64x32.asm 3KB
PrePeiCoreEntryPoint.asm 3KB
EfiCopyMemSSE2.asm 3KB
memcpySSE2.asm 3KB
ArmPlatformStackLib.asm 3KB
CopyMem.asm 3KB
CopyMem.asm 3KB
CopyMem.asm 3KB
CopyMem.asm 3KB
memcpySSE2.asm 3KB
EnablePaging64.asm 3KB
Exception.asm 3KB
EfiCopyMem.asm 3KB
共 11190 条
- 1
- 2
- 3
- 4
- 5
- 6
- 112
资源评论
- f_k_y2014-07-27算是比较齐全了~
- Jim2232015-05-15有很多适用UEFI开发的包。
- bearabby2015-08-04不知道什么原因下载了解压失败,去git clone了最新的代码,其实官网资源就够了,没必要什么都做伸手党
- Huaining03202014-02-08Package算是比较全的
- bisking2015-06-10已经解压完,有128M,13140个项目,可能是全的。
芽儿C
- 粉丝: 7
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功