diff --git a/pervognsen/bitwise/bitwise/bitwise005.hmml b/pervognsen/bitwise/bitwise/bitwise005.hmml index 5844eb3..d3b0b8c 100644 --- a/pervognsen/bitwise/bitwise/bitwise005.hmml +++ b/pervognsen/bitwise/bitwise/bitwise005.hmml @@ -1,2 +1,39 @@ -[video member=pervognsen stream_platform=twitch project=bitwise title="Ion Parser/AST Code Review" vod_platform=youtube id=YvoyKQYNy20 annotator=] -[/video] \ No newline at end of file +[video member=pervognsen stream_platform=twitch project=bitwise medium=research title="Ion Parser/AST Code Review" vod_platform=youtube id=YvoyKQYNy20 annotator=Miblo] +[0:08][Recap and set the stage for the day][:speech] +[3:17][Review the work done in Day 4 Extra[ref + site=Bitwise + page="Ion Grammar & AST (Extra)" + url=https://bitwise.handmade.network/episode/bitwise/bitwise004_2/] with an explanation of tagged and discriminated unions][:"data structure"] +[16:06][Review the AST printing][:"data structure"] +[20:02][:Run the program to see our AST printout][:"data structure"] +[23:14][Review the work on the EBNF grammar][:language :parsing] +[34:06][Note that parse_expr_base() parses function calls and arrays similarly to a left-associativity binary operator][:parsing] +[38:12][Note how Ion distinguishes between expressions and type-specifiers][:language :parsing] +[42:25][Describe types in Ion][:language :parsing] +[46:08][Review statement :parsing, with a description of the linear :memory arena usage] +[54:49][Review changes to the existing code, including the introduction of is_keyword_str()][:parsing] +[57:31][Review changes to the string interning][:parsing] +[58:34][Describe the :memory arenas and alignment macros in detail] +[1:05:39][Q&A][:speech] +[1:06:37][@nothings2][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)][:memory] +[1:06:58][A few words on doing small-scale allocations with malloc(), structuring your code such that later replacement of the :memory allocator will be easy][:speech] +[1:10:22][@jakejscott][@pervognsen What is ast_dup?][:"data structure" :memory] +[1:10:59][@nothings2][@pervognsen Does your parser / grammar actually handle the sizeof(\:type) case? If I'm not mistaken you're requiring compound literal "{ ... }" after seeing (\:type)][:parsing] +[1:11:12][Implement support for sizeof][:parsing :programming] +[1:17:10][:Run it to see that that worked][:parsing] +[1:17:16][Add another sizeof test in parse_test()][:parsing] +[1:17:44][:Run it to see that that works too][:parsing] +[1:18:04][@croepha][@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?][:memory] +[1:20:00][Commit "Code from stream day 5"][:admin] +[1:20:52][@iain][There's an occasional audio glitch that you can fix by updating OBS to 21.1] +[1:21:02][@captainkraft][@pervognsen Did you learn this from books and experimenting on your own?] +[1:24:20][@captainkraft][@pervognsen Is there something that you feel you've become exceptional at in the realm of programming?] +[1:25:32][@zjbxiii][Have you ever developed an operating system?] +[1:27:23][@cr88192][I think I saw designated initializers used; so MSVC / VS supports them now?][:language] +[1:28:29][@twicetimes][Only thing it's lacking now from C99 is VLAs, I think][:language] +[1:29:14][@captainkraft][Does Clang have any issues with C99?][:language] +[1:30:26][@faranwath_][@pervognsen I think the value of MUL_ASSIGN is the same as ADD_ASSIGN in the array you showed before][:parsing] +[1:30:37][Fix the TOKEN_MUL_ASSIGN in token_kind_names\[\]][:parsing :programming] +[1:30:49][@captainkraft][Thanks Per. This project has been a blast so far] +[1:32:00][Stop streaming][:speech] +[/video]