« first day (1906 days earlier)      last day (2929 days later) » 

12:00 AM
@You he would but he's too busy killing people
 
You
And he can do this now!
 
I see link shortner, I think rickroll
 
@ANerd-I Here's what I've found so far: fluid -> squeeze, fluid -> color -> squeeze, pain -> observation, pain -> laser -> observation, pain -> massage -> healthy -> observation, battery -> defibrillate, hunt -> patient still here, hunt -> ... -> discharge......I think that's all of them. 8 loops.
 
@El'endiaStarman That matches my list
 
You
I found some news. :)
 
12:02 AM
@You I see youtube I think rickroll
 
You
Look at this!
 
@You Paste the link by itself to get a one-boxed Youtube link.
 
You
I know.
 
@QPaysTaxes Thhh...anks?
 
he's probably trying to trick us into thinking it's a rickroll link and then not clickinng it
 
You
12:05 AM
@Downgoat Yep. :P
 
should you be able to add numbers and strings together in Cheddar?
 
or should it throw an error?
@El'endiaStarman ok, that's a rickroll for sure
 
@Downgoat Pytek will have + for addition and << for concatenation.
 
Hm :/
 
You
12:05 AM
@Downgoat You don't add strings. You knot them. :)
 
Solves like all of the problems with number/string addition/concatenation.
 
I can see how adding a string and an integer could cause bugs but it does make sense...
 
PLUS, you can do stuff like 5 << 5 to get 55!
 
sounds good for code golf
but it looks an auful lot like c++
 
@Downgoat Biggest issue is that you might want to do something like 5 + \input(), or "5" + \input(), and there's a pretty good chance you'll get unexpected behavior somewhere.
 
You
12:07 AM
C people think bit shifting and go like, "What da fudge?"
 
that is true, I am planing on using >> and << for bit shitting but I can always use >>> and `<<<~
 
Oh, there will be a significant number of things about Pytek that people will go "What da fudge?" at. :P
@Downgoat ...orrrr just make them built-in functions. How often are bit shifts used outside of C code?
 
@El'endiaStarman any specific reason for the TeX-like syntax, or is it just like the style of the language?
@El'endiaStarman code golf
 
@Downgoat More the latter. The \ in front of functions makes it easy to immediately identify them.
 
also, how could the overload syntax be?
 
You
12:09 AM
I keep popping from empty lists. :( Why can't popping be as simple as popping popcorn or bubblewrap? :)
 
@Downgoat Overloading functions?
 
@QPaysTaxes that's not the first type I did that...
@El'endiaStarman operator overloading
@QPaysTaxes but to me that seems really.. eck. I feel there should be more dedicated syntax
 
@Downgoat Ah. At the moment, I'm planning on going the way of Python and implementing the operator in the class for the type.
 
@El'endiaStarman how does Pythond o it?
 
@You Check whether the list is empty before attempting to pop from it
 
12:11 AM
class Foo {
    overload + (arg1, arg2) arg1 + arg2
}
hows that?
 
You
@AlexA. I'm suppose to have items in it. :| My code is off a lot. :(
 
OIC
 
@You if (list.length) list.pop(); else cry();
 
>>> class foo:
	def __init__(self, L):
		self.L = L
	def __add__(self, other):
		L2 = [a+b for a,b in zip(self.L, other.L)]
		return foo(L2)


>>> x = foo([1,2,3])
>>> y = foo([4,5,6])
>>> z = x + y
>>> z.L
[5, 7, 9]
 
You
if len(list) is not 0:
    list.pop()
else: cryALot()
 
12:13 AM
@El'endiaStarman oh... that's... interesting....
 
@Downgoat There's, analogously, __mul__, __eq__, etc., and __radd__ too for when your foo is the right operand.
 
if juic in avocad > 0:
    juic()
else:
    triForThirteeMinut()
@El'endiaStarman I can't do that for Cheddar though because there will be user-defined operators
 
@El'endiaStarman Tabs? ∏o∏
 
^
 
@AlexA. Blame IDLE, not me. :P
 
12:15 AM
wth is ∏o∏
piopi?
 
@El'endiaStarman The default setting in IDLE is 4 spaces.
 
@Downgoat Well, you could probably do something similar.
 
You
@Downgoat π * o * π
 
@El'endiaStarman -1 for not using vim
 
@AlexA. Correction: IDLE shell.
 
12:15 AM
@Downgoat Two crying eyes with an open mouth
 
ohhh, now I see it
 
@Downgoat vim isn't a REPL for Python. :P
 
@El'endiaStarman you can use it as a Python REPL
 
Too much effort.
 
You
I use PyCharm. And it's HORRIBLE!!!
 
12:17 AM
PyCharm is like driving a tank
 
should sqrt <boolean> throw an error?
PyCharm is not PyCharming
 
@Downgoat Depends on if you do type casting elsewhere.
 
@Downgoat Probably.
I've never used PyCharm. What's it like?
 
okay, and should true + true => 2?
 
In R it works because TRUE == 1 and FALSE == 0
 
12:17 AM
@QPaysTaxes no, duck
 
@El'endiaStarman Have you ever used IntelliJ IDEA for Java?
 
ok ok
you can always use logical and
 
@QPaysTaxes I know. I'm just saying it works.
R plays it fast and loose when it comes to types...
 
@AlexA. Hmm, nope.
 
S plays it slow and tight when it comes to types?
 
12:19 AM
No, S is like R
R started as GNU S
 
oh damn, there's actually a programming languages named S
Programmers are one creative bunch
naming languages after letters
 
@Downgoat Pytek will do true + true => true. @quartata had this idea when I asked the same question a couple months ago.
 
Painter: This is a nice valley... I'll name it Q
 
@El'endiaStarman Ah, okay. Well basically PyCharm is a huge, heavy IDE with an incredible number of bells and whistles. Incidentally, I haven't figured out how to run code in it, though I know it's possible...
 
@Downgoat Isn't that hilarious? Creative in developing languages, but not naming them.
 
12:20 AM
@El'endiaStarman so and-ing?
 
You
I'll name my language ∏_∏. :)
 
@Downgoat Well, actually, or-ing. true + false => true, but true * false => false.
 
@You because it makes you ∏_∏?
 
You
Because it always returns an error in Python. :(
@Downgoat Essentially, yes.
 
@El'endiaStarman oh, yeah
 
12:21 AM
If adding/multiplying/comparing/etc with integers though, true == 1 and false == 0.
 
so true > false?
 
@El'endiaStarman I really think the whole 'deductive' thing of pytek is going to fail though
@Downgoat yes
 
@Downgoat ....I suppose it would have to be.
@orlp It's basically the same as Python though.
 
@El'endiaStarman I'm talking about the magical things you've talked about
 
would it be confusing to have true and false be boolean literals, but TRUE and FALSE to be aliases for 1 and 0?
 
12:22 AM
e.g. x = 3*y will cause y to get a value if x has
@Downgoat boolean is just an unsigned integer type
with a width of 1 bit
nothing complicated or special about it
 
@orlp so true + true overflows to 0?
 
@Downgoat Python 2.something implements booleans as a subclass of int. In large part because there was already a lot of older code that used them that way.
 
@Downgoat hrm, didn't consider that part
 
You
Woah.
 
no, true + true would still be 2
the question is
bool(true + true)
but that must obviously be true
so it must have saturating arithmetic
so I guess there is something special about it
 
12:25 AM
oh shit
the way I wrote the grammars for cheddar, they infinite loop if it's invalid
 
:29080321 very...
 
if anyone knows how to fix, here's the grammar:
E -> O E α
     ( E ) α
     B α
     P α
     L α

α -> O E α
     O α
     ε
O B P L are all terminals
 
@Downgoat That is diferent problem, maybe fix Thatcher first?
 
@EasterlyIrk Thatcher?
 
okai wtf is Wong with this iPad
 
12:27 AM
Margaret Thatcher?
 
i meandrele that
 
turn off autocorrect ಠ_ಠ
 
wtf
meant
@Downgoat how
 
open settings > general > keyboard, look there
 
@Downgoat I can help you
if you tell me what cheddar is
 
You
12:28 AM
@Downgoat You are clearly enlightened if you can turn off autocorrect. :)
 
@Downgoat also, what parser are you targetting?
 
@orlp Cheddar is A. a cheese B. a programming language I'm developing
 
well duh
 
@orlp what do you mean by that?
 
but what does the language look like
@Downgoat because some parsers want left-recursion, others want right-recursion
e.g. left-recursion is an infinite loop for LL(1) parsers
 
12:29 AM
How do i get to iPad safari settings
 
that grammar parses expressions (infix operators, postfix operators, prefix operators) and parenthesis
 
but preferred for LR(1)
 
@orlp oh, mine uses right-recursion
 
@Downgoat you wrote your own parser generator?
 
yeah
 
12:30 AM
Gtg bai
 
link?
 
it's pretty basic
 
You
Bye, @EasterlyIrk
 
oh then you're probably doing it wrong :(
 
pretty shitty code though, won't blame you if you can't read it
 
You
12:31 AM
@orlp Occam's Razor. :(
You broke it.
 
@Downgoat pretty unreadable :(
but I don't see where you take in the grammar?
 
what is alpha?
O E B P L
what are those?
 
E is the expression itself. Alpha is a derivation, to make the grammar right-recursive. everything else is a terminal
 
derivation?
 
12:35 AM
@orlp BE OrLP
 
@orlp am I confusing my terminology? lemme check wikipedia
 
oh wait I see you have alpha down there
but can you explain what O B P L are?
so I can get the right behavior
I have no clue what you're trying to do
I can't check your grammar if you don't describe it to me
 
O is an operator. B is a boolean literal, P is a property name, L is a number/string
 
@mac/linux users - in a multi screen setup will the taskbar clock show up on all monitors? (or is there an easy option to enable that?)
 
it supposed to parse expresssions with infix operators, prefix operators, postfix operators, and also work with parenthesis
 
12:38 AM
then why do you allow BOOOB?
 
where?
oh
 
false+++false ?
 
also, obligatory ( ͡° ͜ʖ ͡°)
 
also why are you using one-letter variablenames?
 
I orginally wrote the grammar with one-letter variable names so I did that so it's easier to code
 
12:39 AM
@Downgoat do you have precedence?
 
yes
but that is handled later
 
0
Q: password cracking brute force fewest lines

HenryI have written the following code to brute force 'crack' the passwords stored in a text file and print out the passwords if finds, as well as the amount of time it takes to crack. import string, time, itertools text = " " + file('words.txt').read().replace("\n", " ") +" " t = time.time() for val...

 
that's impossible
precedence is in the grammar
you may have to arbitrarily change the tree afterwards
defeating the point of the grammar
 
do you mean operator precedence or a difference precedence? (I assumed you mean operator precedence)
 
operator precedence
 
12:42 AM
I use the grammar to tokenize the input and I use shunting-yard to get an RPN stack.
 
!?
tokenizing has nothing to do with grammars
a parsing grammar takes a list of tokens, and returns a tree
 
@orlp yeah, I get a tree but I separately handle operators precedence
currently 2 + 2 + 2 outputs something like: { {2, + 2}, 2 }
E -> E O E  // infix operator
     O E    // prefix operator
     E O    // postfix operator
     P E    // match properties e.g. `foo.bar()`
     L E    // match numbers / strings e.g. `"Hello"`
     B E    // match booleans e.g. `false`
     ε      // match empty
^ the original thing I wrote (but uses evil left-recursion)
 
You
Bye.
 
bye!
 
12:45 AM
you really need to have different tokens for prefix/postfix operators
 
why?
 
to spot errors
 
that happens at run-time though
 
allright
so an expression can be parenthesized
E -> '(' E ')'
 
yeah, that too. I didn't write it in the above though :/
 
12:47 AM
an expression can be a prefix followed by an expression
E -> O E
an expression can be a number, property or boolean
E -> P
E -> L
E -> B
 
yup
 
note that I'm not writing E -> L E
5 5 is not an expression
 
oh, I see
 
wait
can you properly explain property?
 
@HelkaHomba I don't think it shows up on each by default. I can check in a little while.
 
12:49 AM
a property is a variable/function. So all of the following are matched my property: foo, foo.bar, foo(), foo.baz()
 
If it helps in any way I remember that when I wrote a parser for a language design class, implementing an Earley parser was very important.
 
@Downgoat I would call those identifiers
@Downgoat and keep function calls separate
 
okay
 
@AlexA. It's impossible in native Windows 10, if one-upping Microsoft is important to you
 
12:53 AM
@QPaysTaxes rickroll...
oh wow, it'snot
 
@Downgoat allright
 
@QPaysTaxes Oh yeah, definitely beautiful.
 
@HelkaHomba Nice. I just confirmed with my girlfriend (the Mac expert) and she says that it's configurable but by default it didn't do it on older Mac versions but it does it by default in the newest.
 
I split your expression up in a prefix and a suffix
 
We need an Aurora simulation challenge
 
12:54 AM
expr -> preexpr postexpr
preexpr -> '(' expr ')'  // parenthesis
preexpr -> number        // number
preexpr -> bool          // boolean
preexpr -> identifier    // identifier
preexpr -> prefix expr   // prefix
postexpr ->              // nothing after preexpr
postexpr -> postfix      // postfix
postexpr -> infix expr   // infix
this way everything terminates and is right-recursive
 
hmm... okay
 
@HelkaHomba I expect this within the hour
 
@QPaysTaxes Without third party programs? Do tell
 
I have the taskbar on both monitors in Windows 10 by default. The secondary one doesn't have the clock though, or the other icons on the right.
 
^ right
You can move the "main" taskbar to a different screen, but then the clock is no longer on the original screen
 
12:58 AM
I dunno why Microsoft chose to have the clock on only one screen. Seems like an odd thing to not have, though it makes sense if all the right-side icons are bundled together in some way.
Maybe there's a reason to have those icons on only one screen.
 
The icons I kinda get. They have notifications that would be weird to appear everywhere. But a clock is just handy
 
@Downgoat adding function calls
expr -> pre-expr post-expr
pre-expr -> '(' expr ')'         // parenthesis
pre-expr -> number               // number
pre-expr -> bool                 // boolean
pre-expr -> identifier           // identifier
pre-expr -> prefix expr          // prefix
post-expr ->                     // nothing after pre-expr
post-expr -> postfix             // postfix
post-expr -> infix expr          // infix
post-expr -> '(' expr-list ')'   // function call
expr-list ->                     // empty list
expr-list -> expr rest-list      // element
@QPaysTaxes a grammar
 
Cheddar.
 
a language
 

« first day (1906 days earlier)      last day (2929 days later) »