[00:36:33] *** Quits: skasturi (~srijayk@april-fools/2014/runnerup/skasturi) (Ping timeout: 258 seconds) [00:57:53] *** Joins: skasturi (~srijayk@april-fools/2014/runnerup/skasturi) [02:41:15] *** Quits: skasturi (~srijayk@april-fools/2014/runnerup/skasturi) (Ping timeout: 264 seconds) [02:46:25] *** Joins: skasturi (~srijayk@april-fools/2014/runnerup/skasturi) [07:54:18] *** Quits: wolfcore (~wolfcore@unaffiliated/wolfcore) (Ping timeout: 244 seconds) [08:02:01] *** Joins: wolfcore (~wolfcore@unaffiliated/wolfcore) [13:14:42] *** Joins: majora (~majora@gateway/vpn/privateinternetaccess/majora) [14:44:12] sivoais: what is the benefit of having a lexer/tokenizer when creating a language? for a few parsers i've written, i've just done recursive descent with string matching instead of tokenizing before hand [16:02:37] gsingh93: It is mainly an optimisation thing. Much easier to deal with integer IDs instead of re-scanning the text. [16:03:22] also, since most grammars are not whitespace sensitive, it is an opportunity to drop those sequences [16:07:59] And tokenisation is a solved problem (outside of NLP) while grammar algorithms still have more research topics available. Just builds a DFA. No backtracking necessary. [16:17:15] *** Quits: majora (~majora@gateway/vpn/privateinternetaccess/majora) (Ping timeout: 264 seconds) [16:29:02] sivoais: when you say rescanning text, you mean for something like backtracking? [16:29:28] i usually have a skip_whitespace() function for whitespace [16:29:39] like parser combinators are a good example of what i normally do [16:29:52] where each combinator peeks/consumes info [16:29:57] no tokenization necessary [16:39:37] gsingh93: yeah, backtracking, but done by the parsing algorithm. If your grammar can be parsed without backtracking, that's fine. That's actually the exact space of grammars that PEG parsers cover. [16:40:36] and parser combinators and PEGs go well together. But if you have something more ambiguous that requires backtracking, that might not be the best approach. [16:41:04] i need to review LL/LALR [16:41:10] i think those required backtracking? [16:41:22] You can possible do tokenisation at the same time as parsing or have multiple pass parsers which refine the previous level [16:43:16] those do not use backtracking because they restrict the kind of grammars that can be parsed by limiting the amount of token lookahead [16:43:37] so that's why you have LL(k), where k is the number of tokens of lookahead needed by the grammar [16:48:14] recursive descent is equivalent to LL [16:49:58] LL <- left derivation; LR <- right derivation [17:04:14] oh, by what I said about limiting token lookahead, that is what is used in practice to avoid backtracking. If you didn't have that you'd need backtracking. The parsing tools specifically search for cases that would lead to needing backtracking and warn about that. [17:05:43] is anyone here a git wizard? :) [17:30:50] http://git.gd/ might be of help [17:30:50] Title: Git Good [17:30:53] :) [17:31:22] :\ [17:31:28] I'm trying to undo whitespace-only changes [17:32:05] undo as in revert, or as in rewrite the commit log to remove them? [17:32:15] they aren't committed yet [17:32:52] so I thought I'd just do git diff -w > /tmp/patch && git stash && git apply /tmp/patch [17:32:58] and it just fails when applying it [17:40:02] you can just `git reset` if it hasn't been comitted [17:40:31] that's not the point [17:40:39] I want to undo *only* the whitespace in the change [17:40:43] ah [17:40:44] there is still some stuff I want to keep [17:45:03] "Hunk #1 FAILED at 4 (different line endings)." [17:45:05] I just want to cry [17:58:18] whatever [17:58:25] i did it in binary mode and it worked [17:58:35] and then I just fixed up manually the two that failed [18:40:58] ugh, that feeling when you see a TODO in your code but don't remember what you were supposed to do... [18:42:19] TODO: complete this TODO [18:42:34] exactly [20:55:15] gsingh93, clinth: this is what I was talking about making with the iframes earlier [20:55:16] Title: HX Public Group | Facebook [20:57:49] gsingh93: you're supposed to write "TODO: Thing I want to do" [22:23:30] haha, gsingh93, that actualvim project is hilarious. I'll have to read the code some time [23:42:43] sivoais: yea, that guy is brilliant too [23:42:47] he's on my CTF team [23:42:59] wrote a really cool binary patching framework [23:43:29] i'm curious how you're actually doing your project? i'd love to edit stuff in my browser with emacs [23:44:34] lol i'll have to watch this later I guess [23:45:05] I just had my intern farewell dinner and I'm seriously so sad it's over [23:47:16] it's significantly tougher with an intern class of like....11? than 250 haha [23:57:17] gsingh93: there's a new feature in Vim that lets you send and receive messages over a socket. All I do is have a server that reads on that socket [23:58:18] I store that and also have a web server in the same code that sets up a Web Socket using the socket.io JS library. [23:59:15] Basically render the content based on the filetype and pass that on. I'd like to make the cursor tracking code more robust by using a diff-ing algorithm. [23:59:45] Right now it uses sentinel markers that I *hope* don't get mangled by the converting to HTML :-P