We are currently in the process of converting the website to the new design. Some pages, like this one, are still broken. We appreciate your patience.
Bitwise»Episode Guide
Ion Parser/AST Code Review
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:08Recap and set the stage for the day
🗩
0:08Recap and set the stage for the day
🗩
0:08Recap and set the stage for the day
🗩
3:17Review the work done in Day 4 Extra1 with an explanation of tagged and discriminated unions
3:17Review the work done in Day 4 Extra1 with an explanation of tagged and discriminated unions
3:17Review the work done in Day 4 Extra1 with an explanation of tagged and discriminated unions
16:06Review the AST printing
16:06Review the AST printing
16:06Review the AST printing
20:02Run the program to see our AST printout
🏃
20:02Run the program to see our AST printout
🏃
20:02Run the program to see our AST printout
🏃
23:14Review the work on the EBNF grammar
23:14Review the work on the EBNF grammar
23:14Review the work on the EBNF grammar
34:06Note that parse_expr_base() parses function calls and arrays similarly to a left-associativity binary operator
34:06Note that parse_expr_base() parses function calls and arrays similarly to a left-associativity binary operator
34:06Note that parse_expr_base() parses function calls and arrays similarly to a left-associativity binary operator
38:12Note how Ion distinguishes between expressions and type-specifiers
38:12Note how Ion distinguishes between expressions and type-specifiers
38:12Note how Ion distinguishes between expressions and type-specifiers
42:25Describe types in Ion
42:25Describe types in Ion
42:25Describe types in Ion
46:08Review statement parsing, with a description of the linear memory arena usage
46:08Review statement parsing, with a description of the linear memory arena usage
46:08Review statement parsing, with a description of the linear memory arena usage
54:49Review changes to the existing code, including the introduction of is_keyword_str()
54:49Review changes to the existing code, including the introduction of is_keyword_str()
54:49Review changes to the existing code, including the introduction of is_keyword_str()
57:31Review changes to the string interning
57:31Review changes to the string interning
57:31Review changes to the string interning
58:34Describe the memory arenas and alignment macros in detail
58:34Describe the memory arenas and alignment macros in detail
58:34Describe the memory arenas and alignment macros in detail
1:05:39Q&A
🗩
1:05:39Q&A
🗩
1:05:39Q&A
🗩
1:06:37nothings2 Arenas also make frees fast because it doesn't have to free each individual allocation (which also means you don't have to keep track of them and worry about leaks)
🗪
1:06:37nothings2 Arenas also make frees fast because it doesn't have to free each individual allocation (which also means you don't have to keep track of them and worry about leaks)
🗪
1:06:37nothings2 Arenas also make frees fast because it doesn't have to free each individual allocation (which also means you don't have to keep track of them and worry about leaks)
🗪
1:06:58A few words on doing small-scale allocations with malloc(), structuring your code such that later replacement of the memory allocator will be easy
🗩
1:06:58A few words on doing small-scale allocations with malloc(), structuring your code such that later replacement of the memory allocator will be easy
🗩
1:06:58A few words on doing small-scale allocations with malloc(), structuring your code such that later replacement of the memory allocator will be easy
🗩
1:10:22jakejscott pervognsen What is ast_dup?
🗪
1:10:22jakejscott pervognsen What is ast_dup?
🗪
1:10:22jakejscott pervognsen What is ast_dup?
🗪
1:10:59nothings2 pervognsen Does your parser / grammar actually handle the sizeof(:type) case? If I'm not mistaken you're requiring compound literal "{ ... }" after seeing (:type)
🗪
1:10:59nothings2 pervognsen Does your parser / grammar actually handle the sizeof(:type) case? If I'm not mistaken you're requiring compound literal "{ ... }" after seeing (:type)
🗪
1:10:59nothings2 pervognsen Does your parser / grammar actually handle the sizeof(:type) case? If I'm not mistaken you're requiring compound literal "{ ... }" after seeing (:type)
🗪
1:11:12Implement support for sizeof
🖮
1:11:12Implement support for sizeof
🖮
1:11:12Implement support for sizeof
🖮
1:17:10Run it to see that that worked
🏃
1:17:10Run it to see that that worked
🏃
1:17:10Run it to see that that worked
🏃
1:17:16Add another sizeof test in parse_test()
1:17:16Add another sizeof test in parse_test()
1:17:16Add another sizeof test in parse_test()
1:17:44Run it to see that that works too
🏃
1:17:44Run it to see that that works too
🏃
1:17:44Run it to see that that works too
🏃
1:18:04croepha pervognsen For the trick that you are using to tell if the string is a keyword by range-testing the pointer value, are you relying on them being in the same arena block? If you were doing something a bit bigger would there be danger of the other block not having a greater pointer value?
🗪
1:18:04croepha pervognsen For the trick that you are using to tell if the string is a keyword by range-testing the pointer value, are you relying on them being in the same arena block? If you were doing something a bit bigger would there be danger of the other block not having a greater pointer value?
🗪
1:18:04croepha pervognsen For the trick that you are using to tell if the string is a keyword by range-testing the pointer value, are you relying on them being in the same arena block? If you were doing something a bit bigger would there be danger of the other block not having a greater pointer value?
🗪
1:20:00Commit "Code from stream day 5"
🗹
1:20:00Commit "Code from stream day 5"
🗹
1:20:00Commit "Code from stream day 5"
🗹
1:20:52iain There's an occasional audio glitch that you can fix by updating OBS to 21.1
🗪
1:20:52iain There's an occasional audio glitch that you can fix by updating OBS to 21.1
🗪
1:20:52iain There's an occasional audio glitch that you can fix by updating OBS to 21.1
🗪
1:21:02captainkraft pervognsen Did you learn this from books and experimenting on your own?
🗪
1:21:02captainkraft pervognsen Did you learn this from books and experimenting on your own?
🗪
1:21:02captainkraft pervognsen Did you learn this from books and experimenting on your own?
🗪
1:24:20captainkraft pervognsen Is there something that you feel you've become exceptional at in the realm of programming?
🗪
1:24:20captainkraft pervognsen Is there something that you feel you've become exceptional at in the realm of programming?
🗪
1:24:20captainkraft pervognsen Is there something that you feel you've become exceptional at in the realm of programming?
🗪
1:25:32zjbxiii Have you ever developed an operating system?
🗪
1:25:32zjbxiii Have you ever developed an operating system?
🗪
1:25:32zjbxiii Have you ever developed an operating system?
🗪
1:27:23cr88192 I think I saw designated initializers used; so MSVC / VS supports them now?
🗪
1:27:23cr88192 I think I saw designated initializers used; so MSVC / VS supports them now?
🗪
1:27:23cr88192 I think I saw designated initializers used; so MSVC / VS supports them now?
🗪
1:28:29twicetimes Only thing it's lacking now from C99 is VLAs, I think
🗪
1:28:29twicetimes Only thing it's lacking now from C99 is VLAs, I think
🗪
1:28:29twicetimes Only thing it's lacking now from C99 is VLAs, I think
🗪
1:29:14captainkraft Does Clang have any issues with C99?
🗪
1:29:14captainkraft Does Clang have any issues with C99?
🗪
1:29:14captainkraft Does Clang have any issues with C99?
🗪
1:30:26faranwath_ pervognsen I think the value of MUL_ASSIGN is the same as ADD_ASSIGN in the array you showed before
🗪
1:30:26faranwath_ pervognsen I think the value of MUL_ASSIGN is the same as ADD_ASSIGN in the array you showed before
🗪
1:30:26faranwath_ pervognsen I think the value of MUL_ASSIGN is the same as ADD_ASSIGN in the array you showed before
🗪
1:30:37Fix the TOKEN_MUL_ASSIGN in token_kind_names[]
🖮
1:30:37Fix the TOKEN_MUL_ASSIGN in token_kind_names[]
🖮
1:30:37Fix the TOKEN_MUL_ASSIGN in token_kind_names[]
🖮
1:30:49captainkraft Thanks Per. This project has been a blast so far
🗪
1:30:49captainkraft Thanks Per. This project has been a blast so far
🗪
1:30:49captainkraft Thanks Per. This project has been a blast so far
🗪
1:32:00Stop streaming
🗩
1:32:00Stop streaming
🗩
1:32:00Stop streaming
🗩