Ok I tried Tree-sitter! Here is what I think about it...

Ғылым және технология

Previous Episodes: • Coogle
Chapters:
- 00:00:00 - Announcement
- 00:00:54 - What is Tree-sitter?
- 00:06:04 - Setting up Tree-Sitter
- 00:26:09 - Using Tree-Sitter from Jai
- 00:55:19 - Setting up C parser
- 01:14:59 - Testing on Real World Source Code
- 01:34:55 - Preliminary Conclusion
- 01:36:08 - Footnote
- 01:55:50 - Final Conclusion
References:
- Tree-sitter - tree-sitter.github.io/tree-si...
- nakst - gf - github.com/nakst/gf
Socials:
- Twitch: / tsoding
- Twitter: / tsoding
Support:
- BTC: bc1qj820dmeazpeq5pjn89mlh9lhws7ghs9v34x9v9
не трясите мой триситтер

Пікірлер: 119

  • @remrevo3944
    @remrevo394411 ай бұрын

    There is also the query API for treesitter, which makes it much easier to deal with treesitter as it provides easy pattern matching. You might want to consider using that to find the declarations.

  • @wherearemypants2213
    @wherearemypants221311 ай бұрын

    Bindings are for using a library from another language. Tree-sitter being a c library, it does not have c bindings. But I can see how misleading not seeing a hyperlink for c can be :)

  • @xhivo97
    @xhivo9711 ай бұрын

    those are language bindings thats why c not listed

  • @HitMan99299
    @HitMan9929911 ай бұрын

    Treesitter is following the naming and node structure based on the grammar rules defined in the C standard (which is pretty archaic). Node type of 'declaration' in that case would also include all variable declarations (globals in a header) but that wont matter if you're parsing a header file alone, except maybe in the case of something like an stb header that has definitions and local variables also as part of the the header file

  • @labsendeyshent
    @labsendeyshent11 ай бұрын

    > не трясите мой триситтер ~ Zozin, 2023

  • @Tawre007
    @Tawre00711 ай бұрын

    It's written in C, so under heading "Language bindings" you will not find it, right? AKA C Programmers trolling C Programmers 😁

  • @templatepack
    @templatepack11 ай бұрын

    i unironically wrote my graduation thesis with tree sitter and stack graph, now i have Vietnam-style memories

  • @____r72
    @____r728 ай бұрын

    I do web dev stuff and just started learning the c family, it’s just so satisfying watching someone acquire gorilla grip on a forrest filled with unknowns and burning qs. So neat knowing what happens when I use the little :TS* commands from neovim , and all the lights magically turn on

  • @____r72

    @____r72

    8 ай бұрын

    the brain is fascinating fr

  • @monsieuralexandergulbu3678
    @monsieuralexandergulbu367811 ай бұрын

    1:01:29 ladies and gentlemen, I am sorry to announce, but tsoding died of ligma

  • @bebre_2288

    @bebre_2288

    11 ай бұрын

    Omg, that is hilarious

  • @ForAeonz

    @ForAeonz

    4 ай бұрын

    who is steve jobs

  • @jamesnewman9547
    @jamesnewman954711 ай бұрын

    Really loved seeing both you and prime both diving into tree-sitter! I've used it for a bit of custom linting, and also loved how easy it was to use and even modify/write the grammar. I used rust bindings btw ;)

  • @allsunday1485

    @allsunday1485

    8 ай бұрын

    When did prime did it?

  • @mehdiboujid8761
    @mehdiboujid876111 ай бұрын

    I would like to see an emacs showcase it s really nice seeing you navigate and edit that fast

  • @nonefvnfvnjnjnjevjenjvonej3384

    @nonefvnfvnjnjnjevjenjvonej3384

    9 ай бұрын

    learn yourself

  • @monsieuralexandergulbu3678
    @monsieuralexandergulbu367811 ай бұрын

    55:07 the obly language tsoding doesn't hate is non-existing one 😂

  • @26xBenny
    @26xBenny11 ай бұрын

    This is an incredible resource, wonderful, thank you so much, !

  • @priyakdey7891
    @priyakdey78914 ай бұрын

    @Tsoding wanted to understand the difference of binding and porting? Are they same or are they different? From the English name, what I would understand is, binding a c lib from jai, end of the day the c code gets executed. When we say port, we literally implement the c code in jai. Is that right ? Thank you .

  • @thecodealchemist7095
    @thecodealchemist709511 ай бұрын

    "People don't appreciate simplicity" - that sooo reall across many aspect of life 🤣

  • @cathalogrady2331
    @cathalogrady233111 ай бұрын

    i think they didn't list C as the C is not 'binding' as that is what the library is written in

  • @flleaf
    @flleaf11 ай бұрын

    finished watching the vid. loved it when he sit all over the trees. truely a moment

  • @drdca8263
    @drdca826311 ай бұрын

    I think “fine” is also a reasonable term in addition to “granular”, I guess “fine-grained” combines both?

  • @meneereenhoorn
    @meneereenhoorn11 ай бұрын

    Great session, thanks! :D

  • @ecosta
    @ecosta11 ай бұрын

    What I love about Tsoding streams is how I don't feel alone and crazy when I realise how programming in 2023 is weird AF. Yes, life could be much simpler without those over-hyped languages/libraries with hundreds of layers of leaky abstractions and vendor locking. I loved how JAI "just worked" with GDB at 47:47 and I wish Java could do the same (since that's the language that is paying my bills).

  • @sharathkumark9692

    @sharathkumark9692

    10 ай бұрын

    Why? I heard java has debugger

  • @ecosta

    @ecosta

    10 ай бұрын

    @@sharathkumark9692 Only IDEs can debug decently on Java. JDB and JPDA are just gimmicks. Since I don't use IDEs, then I can only rely on good old "print debugging".

  • @sharathkumark9692

    @sharathkumark9692

    10 ай бұрын

    @@ecosta Really? I thought it would be like gdb. Is python debugger like that or actually usable

  • @ecosta

    @ecosta

    10 ай бұрын

    ​@@sharathkumark9692 To be honest, I never debugged Python. I imagine it might be decent because Python is more console-friendly than Java.

  • @cariyaputta
    @cariyaputtaАй бұрын

    The screen is so bright I got flashbanged.

  • @0netom
    @0netom11 ай бұрын

    if u just look at the C language grammar.js u should be able to see what are all the possible combinations u might want to handle. and then IF u update the grammar.js version, then u can just see if any of those definition you relied on has changed or not.

  • @djin81
    @djin8111 ай бұрын

    It _is_ C, why would it need bindings to C?

  • @berndeckenfels
    @berndeckenfels10 ай бұрын

    Tree sitter is hyped because neovim and maybe the LSP craze. (Btw look at TS plus Telescope as a generic coocle)

  • @flleaf
    @flleaf11 ай бұрын

    i've just fixed bug i was trying to fix for a while with this video in background :)

  • @TsodingDaily

    @TsodingDaily

    11 ай бұрын

    You are welcome!

  • @drdca8263
    @drdca826311 ай бұрын

    Laughed pretty loudly at the fortnight joke

  • @Heater-v1.0.0
    @Heater-v1.0.011 ай бұрын

    I don't get the "Rust and it's consequences thing". Having used C and C++ on and off since 1983, among a pile of other languages, most of the Rust I write is in the style of C. Maybe the Rust folks would look down on me for not creating "idiomatic Rust" but I don't care, it does what I want and it catches a lot of my stupid mistakes, all is well.

  • @dealloc

    @dealloc

    11 ай бұрын

    Write Rust however you want. That's why it's powerful. You don't need to use impl at all (except if you want to utilize traits). Of course if you build a public API, it's better to be more idiomatic, but for your own things it doesn't matter. Additionally the non-C part would also be having global variables. Alternatively you just pass some struct(s) around by mut ref where needed. If you need thread safety, you can always wrap them in Arc or Mutex.

  • @Heater-v1.0.0

    @Heater-v1.0.0

    11 ай бұрын

    @@dealloc My take on it is that in C, C++ and other such languages it is easy to accidentally write code that will misbehave in unexpected ways. So it's wise to write code in the way that has evolved over time among other users of the language. That is to say be "idiomatic" in your use of the language. That way people immediately recognise what you are doing at is I likely to be OK. Anything "weird" looking will raise suspicions. But Rust won't let you make the vast parity of those mistakes, unless you go out of your way with "unsafe". Therefore I feel there is no need to be "idiomatic" in Rust. The compiler will not let you be "weird". Anything you write that actually compiles is "idiomatic" Rust as far as I'm concerned. Including my C style Rust. I was never much into global variables in C. So I'm not missing the ease of doing that when writing Rust.

  • @monsieuralexandergulbu3678

    @monsieuralexandergulbu3678

    11 ай бұрын

    Industrial revolution and it's consequences: rust

  • @shubhampawar7921
    @shubhampawar792111 ай бұрын

    Cannot wait for Jai to be public.

  • @named4957

    @named4957

    11 ай бұрын

    Are there any infos on when this will happen?

  • @wondays654

    @wondays654

    11 ай бұрын

    Is it better than rust 🤔

  • @binitrupakheti4246

    @binitrupakheti4246

    11 ай бұрын

    Wait for 5 years

  • @Xotchkass

    @Xotchkass

    11 ай бұрын

    @@wondays654 Anything is better than rust

  • @jesusmgw

    @jesusmgw

    11 ай бұрын

    Probably just after the game it is being used for is released.

  • @stokedfool
    @stokedfool11 ай бұрын

    [33:36] - realization that tree-sitter is a _pretty decent_ parser generator.

  • @batlin
    @batlin11 ай бұрын

    Did not know about make -B. Nice.

  • @okabe999
    @okabe99911 ай бұрын

    I like this man's hair

  • @flleaf

    @flleaf

    11 ай бұрын

    i also like that it's probably because he doesn't want to pay for hair cut lol

  • @miko007
    @miko00711 ай бұрын

    so, in the comments of the last video, someone was arguing with me against using regex because of the preprocessor. since you are now using an external preprocessor anyways, you could easily parse your function declarations with a regular expression, couldnt you?

  • @seventhtenth
    @seventhtenth2 ай бұрын

    BASED😂 i am not a bot I just find half-thoughts to have comedic value

  • @flleaf
    @flleaf11 ай бұрын

    you shouldn't be ashamed of simplicity! you shouldn't be ashamed of not having hash maps in the language you use!

  • @xhivo97

    @xhivo97

    11 ай бұрын

    Both are true.

  • @MyShakeweight
    @MyShakeweight11 ай бұрын

    Poggy coding man’s uploaded

  • @liamkearn

    @liamkearn

    11 ай бұрын

    Poggy coding man is crazy 😂 legend.

  • @Rssks
    @Rssks11 ай бұрын

    @2:55 this joke was like 100/100 truth :D

  • @seventhtenth
    @seventhtenth2 ай бұрын

    this is the tree-sitter video of all time

  • @JohnKouts
    @JohnKouts8 ай бұрын

    Man I love your channel

  • @squ34ky
    @squ34ky7 ай бұрын

    19:38 did I hear that correctly...?

  • @chromosundrift
    @chromosundrift11 ай бұрын

    about flashbang sites, the "dark reader" extension is pretty effective at detecting and correcting sites stuck in sunglasses-mode

  • @johnhammer8668
    @johnhammer866811 ай бұрын

    39:20 How did you duplicate the line in emacs?

  • @TsodingDaily

    @TsodingDaily

    11 ай бұрын

    github.com/rexim/dotfiles/blob/25f8ddc6717e56f110e812fd0cec2f1a1dc9d8be/.emacs.rc/misc-rc.el#L120-L132

  • @TECHN01200
    @TECHN0120011 ай бұрын

    Honestly, I have a bone to pick with Treesitter's C parser. I might just try to re-implement it in C from the get go and fix the stupid bug that makes it impossible to work on large macros.

  • @mjkpolo7313

    @mjkpolo7313

    11 ай бұрын

    I know nothing of the implementation, but macros never highlight in my source files in neovim and I believe it uses treesitter... really frustrating

  • @rmntim
    @rmntim11 ай бұрын

    new mic pog?

  • @contempt2012
    @contempt201211 ай бұрын

    How come noone mentioned package.json being there with `build` script? 🤭 I suppose Tsoding hates javascript that much to never had anything to do with it but seeing package.json almost always means there's a build or run script in there, just like you can assume Makefile expects you to run `make`.

  • @leandrotraldiperussi9108
    @leandrotraldiperussi910811 ай бұрын

    beatbox god

  • @pynimp
    @pynimp5 ай бұрын

    we nyeed it 😂, i love your accent bro 🙌🇷🇺

  • @justcat3
    @justcat311 ай бұрын

    parser c raylib pp kek

  • @michaelmueller9635
    @michaelmueller963511 ай бұрын

    1:51:15 xD

  • @antonsimkin
    @antonsimkin11 ай бұрын

    Удается ли тебе пользоваться Чат ГПТ из России?

  • @TsodingDaily

    @TsodingDaily

    11 ай бұрын

    Я его пару раз поюзал через прокси. Прикольно было поначалу. А потом он мне надоел, лол.

  • @Klayperson
    @Klayperson9 ай бұрын

    7.1 GiB is rookie numbers, i got you by almost an order of magnitude my guy

  • @Klayperson

    @Klayperson

    9 ай бұрын

    actually i found a second folder that is almost just as large, so i've got you by over 16x

  • @jordixboy
    @jordixboy11 ай бұрын

    are you using emacs or vim?

  • @myfavouritecolorisgreen

    @myfavouritecolorisgreen

    10 ай бұрын

    emacs

  • @eliseulucenabarros3920
    @eliseulucenabarros392010 ай бұрын

    YEAH, THEY DO NOT DOCUMENT, THEY HAVE SHAME

  • @roger58469
    @roger58469Ай бұрын

    missed opportunity to call it tree-shitter

  • @maxsamukha
    @maxsamukha11 ай бұрын

    Just use D

  • @turun_ambartanen
    @turun_ambartanen11 ай бұрын

    Obviously no one will writing bindings from C for C. Because you don't need bindings for that, you have access to everything already. It's like looking at a list of places you visit from denmark in a day and complaining that it doesn't list denmark. Yes, you can get to denkmark within a day if you are already in denmark, lol

  • @Lklibertad
    @Lklibertad11 ай бұрын

    video ql largo xD

  • @replikvltyoutube3727
    @replikvltyoutube372711 ай бұрын

    What is Jai beta, and why isn't it exposed to public?

  • @drdca8263

    @drdca8263

    11 ай бұрын

    Jon (John? I don’t remember how he spells it. The guy behind “The Witness”) iirc doesn’t want to lose full control of the development until it is done, and feels that making it publicly available before it is done will quickly invite forks and such, which, if there are still major changes he wants to make, may cause substantial incompatibility and community fragmentation , and so he is waiting until it is done to fully release it.

  • @replikvltyoutube3727

    @replikvltyoutube3727

    11 ай бұрын

    @@drdca8263 thx

  • @user-cf8hv9od6v

    @user-cf8hv9od6v

    9 ай бұрын

    @@drdca8263 He doesn't release it because he's still traumatized by The Looker

  • @SlinkyD
    @SlinkyD11 ай бұрын

    comment5

  • @stintaa
    @stintaa11 ай бұрын

    first lol anw LEYSSSS GOOO

  • @wiiznokes2237
    @wiiznokes223711 ай бұрын

    I'm not agree with what you said in Rust. You could code simple things with just fn. And the build system is super simple so it must be why it was so simple to rebuild it why debug symbol.

  • @deadmarshal
    @deadmarshal11 ай бұрын

    Rust is a joke

  • @sinamobasheri

    @sinamobasheri

    11 ай бұрын

    Your mom was serious

  • @vaisakhkm783

    @vaisakhkm783

    11 ай бұрын

    But it rust is used in all platform kernals.... windows, mac, linux, android(which is also linux) and i guess ios also... which is on par with popularity of C.... :) so you have a weird definition of joke...

  • @sinamobasheri

    @sinamobasheri

    11 ай бұрын

    @@vaisakhkm783 PLEASE give reference that rust is heavily used in these oses you mention..

  • @thecodealchemist7095
    @thecodealchemist709511 ай бұрын

    Can you share your discord server?

  • @starshipx1282
    @starshipx128211 ай бұрын

    how do i join your discord

  • @remrevo3944

    @remrevo3944

    11 ай бұрын

    There is a discord invite link in the about section of his twitch channel. (I would link it here, but youtube comments and links don't really work well together.)

  • @starshipx1282

    @starshipx1282

    11 ай бұрын

    @@remrevo3944Thanks. Found it.

  • @antonpodkur3520
    @antonpodkur35208 ай бұрын

    Пасаси

  • @arthurmiller9518
    @arthurmiller95185 ай бұрын

    Pr0n folder: 7.1 Gig 🙂😁.

  • @zamnnnnnn
    @zamnnnnnn10 ай бұрын

    parser.c...

Келесі