extern def A(...) -> T(无 ': pass')解析完返回时 cur 停在 NewLine token, 模块级/类体语句循环只 _skip_nl(Nl)不跳 NewLine,下一轮把 NewLine 当 表达式解析(_parse_atom error_count++)→ parse_tokens 返回 None → Phase1a-pre 报 7 个文件扫描失败(w32 7 个 extern 文件全挂的根因)。
144 lines
7.6 KiB
Plaintext
144 lines
7.6 KiB
Plaintext
import t
|
|
from stdint import *
|
|
from w32.win32base import *
|
|
|
|
GENERIC_READ: t.CDefine = 0x80000000
|
|
GENERIC_WRITE: t.CDefine = 0x40000000
|
|
GENERIC_EXECUTE: t.CDefine = 0x20000000
|
|
GENERIC_ALL: t.CDefine = 0x10000000
|
|
|
|
FILE_SHARE_READ: t.CDefine = 0x00000001
|
|
FILE_SHARE_WRITE: t.CDefine = 0x00000002
|
|
FILE_SHARE_DELETE: t.CDefine = 0x00000004
|
|
|
|
CREATE_NEW: t.CDefine = 1
|
|
CREATE_ALWAYS: t.CDefine = 2
|
|
OPEN_EXISTING: t.CDefine = 3
|
|
OPEN_ALWAYS: t.CDefine = 4
|
|
TRUNCATE_EXISTING: t.CDefine = 5
|
|
|
|
FILE_ATTRIBUTE_READONLY: t.CDefine = 0x00000001
|
|
FILE_ATTRIBUTE_HIDDEN: t.CDefine = 0x00000002
|
|
FILE_ATTRIBUTE_SYSTEM: t.CDefine = 0x00000004
|
|
FILE_ATTRIBUTE_DIRECTORY: t.CDefine = 0x00000010
|
|
FILE_ATTRIBUTE_ARCHIVE: t.CDefine = 0x00000020
|
|
FILE_ATTRIBUTE_NORMAL: t.CDefine = 0x00000080
|
|
FILE_ATTRIBUTE_TEMPORARY: t.CDefine = 0x00000100
|
|
FILE_ATTRIBUTE_COMPRESSED: t.CDefine = 0x00000800
|
|
FILE_ATTRIBUTE_OFFLINE: t.CDefine = 0x00001000
|
|
FILE_ATTRIBUTE_ENCRYPTED: t.CDefine = 0x00004000
|
|
|
|
FILE_FLAG_WRITE_THROUGH: t.CDefine = 0x80000000
|
|
FILE_FLAG_OVERLAPPED: t.CDefine = 0x40000000
|
|
FILE_FLAG_NO_BUFFERING: t.CDefine = 0x20000000
|
|
FILE_FLAG_RANDOM_ACCESS: t.CDefine = 0x10000000
|
|
FILE_FLAG_SEQUENTIAL_SCAN: t.CDefine = 0x08000000
|
|
FILE_FLAG_DELETE_ON_CLOSE: t.CDefine = 0x04000000
|
|
FILE_FLAG_BACKUP_SEMANTICS: t.CDefine = 0x02000000
|
|
FILE_FLAG_POSIX_SEMANTICS: t.CDefine = 0x01000000
|
|
|
|
FILE_BEGIN: t.CDefine = 0
|
|
FILE_CURRENT: t.CDefine = 1
|
|
FILE_END: t.CDefine = 2
|
|
|
|
STD_INPUT_HANDLE: t.CDefine = t.CUnsignedLong(-10)
|
|
STD_OUTPUT_HANDLE: t.CDefine = t.CUnsignedLong(-11)
|
|
STD_ERROR_HANDLE: t.CDefine = t.CUnsignedLong(-12)
|
|
|
|
MOVEFILE_REPLACE_EXISTING: t.CDefine = 0x00000001
|
|
MOVEFILE_COPY_ALLOWED: t.CDefine = 0x00000002
|
|
MOVEFILE_WRITE_THROUGH: t.CDefine = 0x00000008
|
|
|
|
class BY_HANDLE_FILE_INFORMATION():
|
|
dwFileAttributes: DWORD
|
|
ftCreationTime: FILETIME
|
|
ftLastAccessTime: FILETIME
|
|
ftLastWriteTime: FILETIME
|
|
dwVolumeSerialNumber: DWORD
|
|
nFileSizeHigh: DWORD
|
|
nFileSizeLow: DWORD
|
|
nNumberOfLinks: DWORD
|
|
nFileIndexHigh: DWORD
|
|
nFileIndexLow: DWORD
|
|
|
|
class WIN32_FIND_DATAA():
|
|
dwFileAttributes: DWORD
|
|
ftCreationTime: FILETIME
|
|
ftLastAccessTime: FILETIME
|
|
ftLastWriteTime: FILETIME
|
|
nFileSizeHigh: DWORD
|
|
nFileSizeLow: DWORD
|
|
dwReserved0: DWORD
|
|
dwReserved1: DWORD
|
|
cFileName: t.CArray[t.CChar, 260]
|
|
cAlternateFileName: t.CArray[t.CChar, 14]
|
|
|
|
class WIN32_FIND_DATAW():
|
|
dwFileAttributes: DWORD
|
|
ftCreationTime: FILETIME
|
|
ftLastAccessTime: FILETIME
|
|
ftLastWriteTime: FILETIME
|
|
nFileSizeHigh: DWORD
|
|
nFileSizeLow: DWORD
|
|
dwReserved0: DWORD
|
|
dwReserved1: DWORD
|
|
cFileName: t.CArray[t.CUInt16T, 260]
|
|
cAlternateFileName: t.CArray[t.CUInt16T, 14]
|
|
|
|
extern def CreateFileA(lpFileName: LPCSTR, dwDesiredAccess: ULONG, dwShareMode: ULONG, lpSecurityAttributes: SECURITY_ATTRIBUTES | t.CPtr, dwCreationDisposition: ULONG, dwFlagsAndAttributes: ULONG, hTemplateFile: HANDLE) -> HANDLE
|
|
extern def CreateFileW(lpFileName: LPCWSTR, dwDesiredAccess: ULONG, dwShareMode: ULONG, lpSecurityAttributes: SECURITY_ATTRIBUTES | t.CPtr, dwCreationDisposition: ULONG, dwFlagsAndAttributes: ULONG, hTemplateFile: HANDLE) -> HANDLE
|
|
extern def ReadFile(hFile: HANDLE, lpBuffer: VOIDPTR, nNumberOfBytesToRead: ULONG, lpNumberOfBytesRead: ULONG | t.CPtr, lpOverlapped: OVERLAPPED | t.CPtr) -> BOOL
|
|
extern def WriteFile(hFile: HANDLE, lpBuffer: t.CConst | VOIDPTR, nNumberOfBytesToWrite: ULONG, lpNumberOfBytesWritten: ULONG | t.CPtr, lpOverlapped: OVERLAPPED | t.CPtr) -> BOOL
|
|
extern def SetFilePointer(hFile: HANDLE, lDistanceToMove: LONG, lpDistanceToMoveHigh: LONG | t.CPtr, dwMoveMethod: ULONG) -> LONG
|
|
extern def SetFilePointerEx(hFile: HANDLE, liDistanceToMove: LARGE_INTEGER | t.CPtr, lpNewFilePointer: LARGE_INTEGER | t.CPtr, dwMoveMethod: ULONG) -> BOOL
|
|
extern def GetFileSize(hFile: HANDLE, lpFileSizeHigh: ULONG | t.CPtr) -> ULONG
|
|
extern def GetFileSizeEx(hFile: HANDLE, lpFileSize: LARGE_INTEGER | t.CPtr) -> BOOL
|
|
extern def SetEndOfFile(hFile: HANDLE) -> BOOL
|
|
extern def FlushFileBuffers(hFile: HANDLE) -> BOOL
|
|
extern def GetFileType(hFile: HANDLE) -> ULONG
|
|
extern def GetFileAttributesA(lpFileName: LPCSTR) -> ULONG
|
|
extern def GetFileAttributesW(lpFileName: LPCWSTR) -> ULONG
|
|
extern def SetFileAttributesA(lpFileName: LPCSTR, dwFileAttributes: ULONG) -> BOOL
|
|
extern def SetFileAttributesW(lpFileName: LPCWSTR, dwFileAttributes: ULONG) -> BOOL
|
|
extern def DeleteFileA(lpFileName: LPCSTR) -> BOOL
|
|
extern def DeleteFileW(lpFileName: LPCWSTR) -> BOOL
|
|
extern def MoveFileA(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR) -> BOOL
|
|
extern def MoveFileW(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR) -> BOOL
|
|
extern def MoveFileExA(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, dwFlags: ULONG) -> BOOL
|
|
extern def MoveFileExW(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, dwFlags: ULONG) -> BOOL
|
|
extern def CopyFileA(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, bFailIfExists: BOOL) -> BOOL
|
|
extern def CopyFileW(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, bFailIfExists: BOOL) -> BOOL
|
|
extern def CreateDirectoryA(lpPathName: LPCSTR, lpSecurityAttributes: SECURITY_ATTRIBUTES | t.CPtr) -> BOOL
|
|
extern def CreateDirectoryW(lpPathName: LPCWSTR, lpSecurityAttributes: SECURITY_ATTRIBUTES | t.CPtr) -> BOOL
|
|
extern def RemoveDirectoryA(lpPathName: LPCSTR) -> BOOL
|
|
extern def RemoveDirectoryW(lpPathName: LPCWSTR) -> BOOL
|
|
extern def FindFirstFileA(lpFileName: LPCSTR, lpFindFileData: WIN32_FIND_DATAA | t.CPtr) -> HANDLE
|
|
extern def FindFirstFileW(lpFileName: LPCWSTR, lpFindFileData: WIN32_FIND_DATAW | t.CPtr) -> HANDLE
|
|
extern def FindNextFileA(hFindFile: HANDLE, lpFindFileData: WIN32_FIND_DATAA | t.CPtr) -> BOOL
|
|
extern def FindNextFileW(hFindFile: HANDLE, lpFindFileData: WIN32_FIND_DATAW | t.CPtr) -> BOOL
|
|
extern def FindClose(hFindFile: HANDLE) -> BOOL
|
|
extern def GetStdHandle(nStdHandle: ULONG) -> HANDLE
|
|
extern def SetStdHandle(nStdHandle: ULONG, hHandle: HANDLE) -> BOOL
|
|
extern def GetFileInformationByHandle(hFile: HANDLE, lpFileInformation: BY_HANDLE_FILE_INFORMATION | t.CPtr) -> BOOL
|
|
extern def LockFile(hFile: HANDLE, dwFileOffsetLow: ULONG, dwFileOffsetHigh: ULONG, nNumberOfBytesToLockLow: ULONG, nNumberOfBytesToLockHigh: ULONG) -> BOOL
|
|
extern def UnlockFile(hFile: HANDLE, dwFileOffsetLow: ULONG, dwFileOffsetHigh: ULONG, nNumberOfBytesToUnlockLow: ULONG, nNumberOfBytesToUnlockHigh: ULONG) -> BOOL
|
|
extern def GetTempPathA(nBufferLength: ULONG, lpBuffer: CHARPTR) -> ULONG
|
|
extern def GetTempPathW(nBufferLength: ULONG, lpBuffer: WCHARPTR) -> ULONG
|
|
extern def GetTempFileNameA(lpPathName: LPCSTR, lpPrefixString: LPCSTR, uUnique: UINT, lpTempFileName: CHARPTR) -> UINT
|
|
extern def GetTempFileNameW(lpPathName: LPCWSTR, lpPrefixString: LPCWSTR, uUnique: UINT, lpTempFileName: WCHARPTR) -> UINT
|
|
extern def GetCurrentDirectoryA(nBufferLength: ULONG, lpBuffer: CHARPTR) -> ULONG
|
|
extern def GetCurrentDirectoryW(nBufferLength: ULONG, lpBuffer: WCHARPTR) -> ULONG
|
|
extern def SetCurrentDirectoryA(lpPathName: LPCSTR) -> BOOL
|
|
extern def SetCurrentDirectoryW(lpPathName: LPCWSTR) -> BOOL
|
|
extern def GetModuleFileNameA(hModule: HANDLE, lpFilename: CHARPTR, nSize: ULONG) -> ULONG
|
|
extern def GetModuleFileNameW(hModule: HANDLE, lpFilename: WCHARPTR, nSize: ULONG) -> ULONG
|
|
|
|
HANDLE_FLAG_INHERIT: t.CDefine = 0x00000001
|
|
HANDLE_FLAG_PROTECT_FROM_CLOSE: t.CDefine = 0x00000002
|
|
|
|
extern def CreatePipe(hReadPipe: HANDLE | t.CPtr, hWritePipe: HANDLE | t.CPtr, lpPipeAttributes: SECURITY_ATTRIBUTES | t.CPtr, nSize: ULONG) -> BOOL
|
|
extern def SetHandleInformation(hObject: HANDLE, dwMask: ULONG, dwFlags: ULONG) -> BOOL
|
|
extern def DuplicateHandle(hSourceProcessHandle: HANDLE, hSourceHandle: HANDLE, hTargetProcessHandle: HANDLE, lpTargetHandle: HANDLE | t.CPtr, dwDesiredAccess: ULONG, bInheritHandle: BOOL, dwOptions: ULONG) -> BOOL
|
|
|
|
DUPLICATE_SAME_ACCESS: t.CDefine = 0x00000002
|