42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync# Check for markers (typically in comments).
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync/ASM-INC/basm-inc
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync/ASM-NOINC/basm-noinc
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
444f91a8285333437cdc9da6bf750121b52f208dvboxsync# Newline escapes.
444f91a8285333437cdc9da6bf750121b52f208dvboxsync:check-newline-escape
444f91a8285333437cdc9da6bf750121b52f208dvboxsync/\\$/!bno-more-newline-escapes
444f91a8285333437cdc9da6bf750121b52f208dvboxsyncN
444f91a8285333437cdc9da6bf750121b52f208dvboxsyncb check-newline-escape
444f91a8285333437cdc9da6bf750121b52f208dvboxsync:no-more-newline-escapes
444f91a8285333437cdc9da6bf750121b52f208dvboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync# Strip comments and trailing space.
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/[[:space:]][[:space:]]*\/\*.*$//g
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/[[:space:]][[:space:]]*\/\/.*$//g
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/[[:space:]][[:space:]]*$//g
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync# Try identify the statement.
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync/#[[:space:]]*define[[:space:]]/bdefine
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync/#[[:space:]]*ifdef[[:space:]]/bifdef
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync/#[[:space:]]*ifndef[[:space:]]/bifndef
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync/#[[:space:]]*if[[:space:]]/bif
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync/#[[:space:]]*elif[[:space:]]/belif
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync/#[[:space:]]*else$/belse
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync/#[[:space:]]*endif$/bendif
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync# Not recognized, drop it.
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync:asm-noinc
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncd
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncb end
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync#
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync# Defines needs some extra massaging to work in yasm.
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync# Things like trailing type indicators ('U', 'ULL' ++) does not go down well.
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync#
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync:define
c78c220c07cd5aeca89a4173255f1ea71355766bvboxsync/\$/d
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/#\([[:space:]]*\)define/\1%define/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/\([[:space:]]0[xX][0-9a-fA-F][0-9a-fA-F]*\)U$/\1/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/\([[:space:]]0[xX][0-9a-fA-F][0-9a-fA-F]*\)U\([[:space:]]*\))$/\1\2)/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/\([[:space:]][0-9][0-9]*\)U[[:space:]]*$/\1/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/\([[:space:]][0-9][0-9]*\)U\([[:space:]]*\))$/\1\2)/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/\([[:space:]]0[xX][0-9a-fA-F][0-9a-fA-F]*\)UL$/\1/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/\([[:space:]]0[xX][0-9a-fA-F][0-9a-fA-F]*\)UL\([[:space:]]*\))$/\1\2)/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/\([[:space:]][0-9][0-9]*\)UL[[:space:]]*$/\1/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/\([[:space:]][0-9][0-9]*\)UL\([[:space:]]*\))$/\1\2)/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/\([[:space:]]0[xX][0-9a-fA-F][0-9a-fA-F]*\)ULL$/\1/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/\([[:space:]]0[xX][0-9a-fA-F][0-9a-fA-F]*\)ULL\([[:space:]]*\))$/\1\2)/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/\([[:space:]][0-9][0-9]*\)ULL[[:space:]]*$/\1/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/\([[:space:]][0-9][0-9]*\)ULL\([[:space:]]*\))$/\1\2)/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
019e36b4a316b175952af540cea42e80b78c232fvboxsyncs/UINT64_C([[:space:]]*\(0[xX][0-9a-fA-F][0-9a-fA-F]*\)[[:space:]]*)/\1/
019e36b4a316b175952af540cea42e80b78c232fvboxsyncs/UINT64_C([[:space:]]*\([0-9][0-9]*\)[[:space:]]*)/\1/
c36d095531b5355dba93be3b9b862bac18148109vboxsyncs/UINT32_C([[:space:]]*\(0[xX][0-9a-fA-F][0-9a-fA-F]*\)[[:space:]]*)/\1/
c36d095531b5355dba93be3b9b862bac18148109vboxsyncs/UINT32_C([[:space:]]*\([0-9][0-9]*\)[[:space:]]*)/\1/
866306ba031a2f258907507dd4abb3b84b6983e7vboxsyncs/UINT16_C([[:space:]]*\(0[xX][0-9a-fA-F][0-9a-fA-F]*\)[[:space:]]*)/\1/
866306ba031a2f258907507dd4abb3b84b6983e7vboxsyncs/UINT16_C([[:space:]]*\([0-9][0-9]*\)[[:space:]]*)/\1/
866306ba031a2f258907507dd4abb3b84b6983e7vboxsyncs/UINT8_C([[:space:]]*\(0[xX][0-9a-fA-F][0-9a-fA-F]*\)[[:space:]]*)/\1/
866306ba031a2f258907507dd4abb3b84b6983e7vboxsyncs/UINT8_C([[:space:]]*\([0-9][0-9]*\)[[:space:]]*)/\1/
c36d095531b5355dba93be3b9b862bac18148109vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncb end
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync#
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync# Conditional statements, 1:1.
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync#
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync:ifdef
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/#\([[:space:]]*\)ifdef/\1%ifdef/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncb end
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync:ifndef
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/#\([[:space:]]*\)ifndef/\1%ifndef/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncb end
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync:if
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/#\([[:space:]]*\)if/\1%if/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncb end
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync:elif
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/#\([[:space:]]*\)elif/\1%elif/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncb end
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync:else
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/#\([[:space:]]*\)else.*$/\1%else/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncb end
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync:endif
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncs/#\([[:space:]]*\)endif.*$/\1%endif/
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncb end
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync#
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync# Assembly statement... may need adjusting when used.
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync#
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync:asm-inc
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsyncb end
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync
42943cbfb6c28abee5a36cc4573b5c7547b65ad0vboxsync:end
c78c220c07cd5aeca89a4173255f1ea71355766bvboxsync