Add handling of binary numbers 0b1001
This commit is contained in:
13
lexing.cpp
13
lexing.cpp
@@ -509,6 +509,19 @@ lex__stream(Lexer *lexer){
|
|||||||
lex_parse_u64(lexer, &t, 16);
|
lex_parse_u64(lexer, &t, 16);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else if(lexc(s) == 'b'){
|
||||||
|
lex_advance(s);
|
||||||
|
while(lexc(s) == '0' || lexc(s) == '1')
|
||||||
|
lex_advance(s);
|
||||||
|
lex_set_len(s, &t);
|
||||||
|
t.str += 2;
|
||||||
|
t.len -= 2;
|
||||||
|
if(t.len == 0)
|
||||||
|
token_error(&t, "Hex constant doesn't have value"_s);
|
||||||
|
else
|
||||||
|
lex_parse_u64(lexer, &t, 2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
case '1':case '2':case '3':case '4':
|
case '1':case '2':case '3':case '4':
|
||||||
|
|||||||
@@ -2,6 +2,24 @@
|
|||||||
#load "gdi32.kl"
|
#load "gdi32.kl"
|
||||||
#load "user32.kl"
|
#load "user32.kl"
|
||||||
|
|
||||||
|
String16 :: struct;; str: *U16; len: S64
|
||||||
|
String32 :: struct;; str: *U32; len: S64
|
||||||
|
UTF32_Result :: struct
|
||||||
|
out_str: U32
|
||||||
|
advance: S64
|
||||||
|
error : Bool
|
||||||
|
UTF16_Result :: struct
|
||||||
|
out_str: [2]U16
|
||||||
|
len : S32
|
||||||
|
error : Bool
|
||||||
|
|
||||||
|
BINARY :: 0b1001
|
||||||
|
|
||||||
|
utf8_to_utf32 :: (c: *U8, max_advance: S64): UTF32_Result
|
||||||
|
result: UTF32_Result
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
Vec2I :: struct;; x: S32; y: S32
|
Vec2I :: struct;; x: S32; y: S32
|
||||||
Vec2 :: struct;; x: F32; y: F32
|
Vec2 :: struct;; x: F32; y: F32
|
||||||
|
|
||||||
@@ -37,13 +55,11 @@ create_bitmap :: (size: Vec2I, bottom_up: Bool = true): Windows_Bitmap
|
|||||||
|
|
||||||
window_procedure :: (hwnd: HWND, msg: UINT, wparam: WPARAM, lparam: LPARAM): LRESULT
|
window_procedure :: (hwnd: HWND, msg: UINT, wparam: WPARAM, lparam: LPARAM): LRESULT
|
||||||
if msg == WM_DESTROY
|
if msg == WM_DESTROY
|
||||||
pass
|
PostQuitMessage(0)
|
||||||
|
return 0
|
||||||
|
else;; return DefWindowProc(hwnd, msg, wparam, lparam)
|
||||||
|
|
||||||
main :: (argc: int, argv: **char): int
|
main :: (argc: int, argv: **char): int
|
||||||
bitmap := create_bitmap({1280, 720})
|
bitmap := create_bitmap({1280, 720})
|
||||||
WNDCLASS
|
|
||||||
// memory := os.reserve(size = 10000)
|
|
||||||
// os.commit(&memory, 1000)
|
|
||||||
// os.release(&memory)
|
|
||||||
// os.print("Hello world")
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,6 @@ GetDC :: #foreign (hWnd: HWND): HDC
|
|||||||
CreateWindowA :: #foreign (dwExStyle: DWORD, lpClassName: *char, lpWindowName: *char, dwStyle: DWORD, X: int, Y: int, nWidth: int, nHeight: int, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: *void): HWND
|
CreateWindowA :: #foreign (dwExStyle: DWORD, lpClassName: *char, lpWindowName: *char, dwStyle: DWORD, X: int, Y: int, nWidth: int, nHeight: int, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: *void): HWND
|
||||||
CreateWindowExW :: #foreign (dwExStyle: DWORD, lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD, X: int, Y: int, nWidth: int, nHeight: int, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpPara: LPVOID): HWND
|
CreateWindowExW :: #foreign (dwExStyle: DWORD, lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD, X: int, Y: int, nWidth: int, nHeight: int, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpPara: LPVOID): HWND
|
||||||
|
|
||||||
WM_NULL :: 0x0000;; WM_CREATE :: 0x0001; WM_DESTROY :: 0x0002; WM_MOVE :: 0x0003; WM_SIZE :: 0x0005
|
WM_NULL :: 0x0000; WM_CREATE :: 0x0001; WM_DESTROY :: 0x0002; WM_MOVE :: 0x0003; WM_SIZE :: 0x0005
|
||||||
WM_ACTIVATE :: 0x0006;; WA_INACTIVE :: 0; WA_ACTIVE :: 1; WA_CLICKACTIVE :: 2
|
WM_ACTIVATE :: 0x0006; WA_INACTIVE :: 0; WA_ACTIVE :: 1; WA_CLICKACTIVE :: 2
|
||||||
WM_SETFOCUS :: 0x0007;; WM_KILLFOCUS :: 0x0008; WM_ENABLE :: 0x000A; WM_SETREDRAW :: 0x000B; WM_SETTEXT :: 0x000C; WM_GETTEXT :: 0x000D; WM_GETTEXTLENGTH :: 0x000E; WM_PAINT :: 0x000F; WM_CLOSE :: 0x0010
|
WM_SETFOCUS :: 0x0007; WM_KILLFOCUS :: 0x0008; WM_ENABLE :: 0x000A; WM_SETREDRAW :: 0x000B; WM_SETTEXT :: 0x000C; WM_GETTEXT :: 0x000D; WM_GETTEXTLENGTH :: 0x000E; WM_PAINT :: 0x000F; WM_CLOSE :: 0x0010
|
||||||
Reference in New Issue
Block a user