nasm/asm/pptok.dat
H. Peter Anvin (Intel) e91f5cc132 preproc: fix %undef of macro aliases, and add %ifdefalias
Macro aliases can legitimately point to nonexistent
macros. Furthermore, %undef should remove the pointed-at macro, not
the alias. This led to an infinite loop in the existing code; fix
that.

Add an %ifdefalias directive to test for the existence of an alias.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2019-10-23 12:59:06 -07:00

103 lines
2.4 KiB
Plaintext

## --------------------------------------------------------------------------
##
## Copyright 1996-2019 The NASM Authors - All Rights Reserved
## See the file AUTHORS included with the NASM distribution for
## the specific copyright holders.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following
## conditions are met:
##
## * Redistributions of source code must retain the above copyright
## notice, this list of conditions and the following disclaimer.
## * Redistributions in binary form must reproduce the above
## copyright notice, this list of conditions and the following
## disclaimer in the documentation and/or other materials provided
## with the distribution.
##
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
## CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
## DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
## OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
## EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
##
## --------------------------------------------------------------------------
#
# A * at the end indicates a condition; the list of conditions are
# on lines starting with *; the negatives are auto-generated
#
# Condition stems. %if MUST BE FIRST in this list.
%if*
%elif*
# Condition tests
*
*ctx
*def
*defalias
*empty
*env
*id
*idn
*idni
*macro
*num
*str
*token
*usable
*using
# Directives with -i- versions for case insensitive
%!assign
%!defalias
%!define
%!defstr
%!deftok
%!macro
%!pathsearch
%!rmacro
%!strcat
%!strlen
%!substr
%!xdefine
%un!macro
# Other directives
%aliases
%arg
%clear
%depend
%else
%endif
%endm
%endmacro
%endrep
%error
%exitmacro
%exitrep
%fatal
%include
%line
%local
%pop
%pragma
%push
%rep
%repl
%rotate
%stacksize
%undef
%undefalias
%use
%warning