 Alright, this is why being exploration into XS and the new keyword API primarily, so I spend some respect for macros and other goodness from the influence. Fun. Next. So, this is my exploration into creating the next generation of QW. What? The next generation of QW. Because every so often, like I do online, and every so often the question comes up, why doesn't QW interpolate? Why can't you stick in QW full dollar bar? Well, this is the answer to this. The code is up on your account, under dark white account. It's not white working yet. But the idea is that we have Q and QQ. The moment and moment operators. And QW. Well, why don't we have a QQW? No other reason. We will after this is finished. The idea being, not to be possible to switch, but to be able to interpolate last and first names into your QW list. Of course, this is redundant. You can always use dollar first, comma dollar last, comma quote, goth, et cetera. And if dollar last contains spaces, it will mean a single entry in that name? If dollar last contains, yes, the QW, or rather, the element of the variable has spaces. If the variable means, sorry, the variable kind of has spaces. But it doesn't remind you. And for those of you that don't know how a deep parse works or how to actually look at what the code does, this is how QW works on, this is how, rather, this is how curl internally gives your spring after it's gone through the first layer of lexing. So the phrase, dollar name equal Q parent, Q parent. Yes, I'm going to translate back into the still books. Likewise, with QQ, the same after curves. See what goes on both sides. If you are not aware, ordinarily, you do need to do one thing to get the output to work correctly. That's past the dash Q flag into the first. So you'll probably reveal the quotes here, which is how curl does this internally. How long do you get this, how long, it looks like the same. You know, one of my darned people, Q parent, in your deep parse output. So that's a small, pretty good. And the same thing inside, the same way inside, Q parent acts in like this is more big, bigger, small, so maybe you can increase. That's not the Rx. Right. Because I wish we would leave these, do something else with them. Otherwise since you, I didn't know we would run out of the edge. So I'm sure, it's not quite, not quite one to one recitation there. And I apologize, but just kind of room for the slide. So that's Q and QQ. So looking at QW and QQW, here's how it will work. Here's how QW, right now operates. You need the dash P in order to see the parentheses when you look at your deep parse output. And then the dash Q to see the sealed quotes around the uterus. Otherwise we'll get back what Q has in the flow. Likewise, what I expect to see after using the QQW operator is, I know I'm going to do this with the quotes moved. It's going to be the most acceptable saying as if you were doing normal list manipulations. And it will work with map. It will work with rep. It will work passing into functions. It will work as a LW. It will work as a race slice. There'd be it being two. I just have to evaluate how the QW operator works. Question. Yeah. What are some of the other delimiters, like instead of parentheses? Well, you asked that. In fact, I have a test week coming up that shows how it behaves. Next slide. Again, a little bit of a review here before we get into the really good stuff. And how operating on a race and in the QQ flags needed for the parents and her from today. And this time, the list and list are the same name. Does everyone have a good feel for how it will actually behave? Just for everybody who likes the offices, the QQW operator will work. So this is how it works on the inside. This heavy relies on a very stripped down version of functioned local parameters, which is going to last a year. What functioned local parameters does is, let's see what has part of the subroutine declare a seasonal prototype. So you say some full parent $xcode $y, close parent, it have $x and $y be directly allocated to code. And this uses the keyword API as does this code. The last scene, not a space, should probably include new lines and depths. It does, actually. The actual code does, I eliminate things for code. There are, in fact, there are, in fact, less space couples in between these inputs. So, yes, that's a good catch. The actual source does have these, but I have to eliminate those to fit on what's written. But still, let's still think. So I'm actually working on the code. I have one QQ nuisance, which happens to me all the time, and maybe there's a solution for that. Then you have 10 words, which don't have any spaces, and you use QW, QW nuisance. And then you get an 11th, and that brings it all. And then you rewrite it, maybe in the middle. So if you could put quotes around one in the middle, just to preserve the space, that would be very much. And then there will be QQ, QW. That's going to do QQ slash E, that extra layer is going down. And who's next next? Try that, put it in C. No, it doesn't. I just tried it. Interesting. That's a good point. Okay, so now we're going to do the actual education of this. How does this work? For those of you that aren't familiar too much with the license process, it's more like an event of respiration. You walk most regularly, find the content that you want, and there's work happening. Which is what this code here does. We assume that the code has already, that the code has already eaten up the QQW. And we do some magic, which we'll talk about later on, to find three of these start rates. So this is all eaten up, already back to rule, consumed by that as part of the callback feature. The function called the keyword API callback essentially impasses a keyword such as QQW in our case. Or fun, or in the case of first breakers. And the QQW API will work like you were in the spring. And at that point, it will jump out into your code. And let you handle all other parts of it. And let's see. And then when you're done with that, you return the spring work, sorry. You return the work. To go along with your code, return to its processing. So to reiterate, we've already gone through the QQW keyword. And code previous to this has parsed out the open brain and parsed out that white space. As mentioned. And we are sitting here at the keyword, at the first load of F. Where we start our own parsing. The first thing to note is that internally, characters, obviously, we are now in the Unicode world, thankfully. And internally, Unicode letters are of course great work. Thanks to, say, Chinese, and Japanese, and Moe, and Thai. With their tenth of thousands of books. So we have to represent those as 32-bit entries. And that is one of the type I32 key differences. I32 or the integer for each of its. And then C, shorthand for character. Fortunes such as Lexpeak integer and SVCAP could be in these all-curl intervals. All part of the back-hole layer. So we're sitting out into a C-curl. So we have left-curl at high and now sitting into the C-curl. The zero here lets us peak to the next character. Because one thing that you cannot do is you cannot push characters back on the center. IE. Once you have read past the F, you cannot tell the whole to go backwards. Well, it may be L2, but I haven't found the IE yet. And I haven't had VTS yet. So the answer is instead of reading head, then it's going away. The answer is to peak one character head. Or two characters head. In the case of zero, one. So repeat, turn them into the screen. And then the slide. Two, we can't look, we're not here. So that's how we get around some of the positive issues of having to retain a stack. First, if we peak down to, if we read down too far and can't go back. So you have to maintain a stack and you have to maintain any internal state. So now we are trying. So at this point we are at the first and high scan until the end of the week. What you cannot see as code is we have already found this opening parent. And through, and RC code says that for opening parents, the match of the limiter will be a closing parent. This handles some of the annoying, some of the not annoying. It's quite interesting in cases that you run into with QQ and Q and simple. And yes, my test suite does handle those cases. So we search for either the end of the screen, which is the last one. Or the end of the limiter. I'm sorry. I haven't read this for a while. If we do not have our end of the limiter, and no, this is not a handle on nest of limiter that's coming up. Or a white space to just get across the screen. Then we take them, then we start by, then we read our F. And then attach the, then attach F, which is, here I'm going to speak to F. On to an existing, on an existing scale of value. So we're building up a scale of value of the screen, screen F. And then next pass we keep getting in at the screen to move to the next stage. And pass to the loop until we get to a white space. At which point we leave a loop. And the test suite here, I can't tell if I lose people yet or not. That's my hope. So now, part of the front part of this is taking the test suite that we have built up into the right. And adding those, adding those to the, to the offering. Which, if you're not, I can't believe with current internals. And I'm not. I just managed to have run a total of works. The outrageous free is a, is a, sorry, is a base worker that probably used internally. What's happening within the company. It's a different workstation. And it's how it internally compiles. So what we have to do is instead of giving, instead of giving it a. The liberal text gives you the, we have to turn that into a program. As an opportunity. And there are some issues with this. There's actually one issue with the cameras, but I'll take care of that later on. Don't know if you have time. Why do you make a copy of the SD instead of pushing the SD and creating a new SD for the next one? I think I do that right. I think the code does that. I've been, what is on GitHub is playing the sense of late. And this is an over copy. I may have done that. I find out that there is a push SP. I think what I did was start out with creating an SP and then pushing on to the SP, creating the SD list off and then pushing on to the SD list off. Leader who got this piece. Give them a sense. Both is possible. Possible. Okay. So my part may not be something. Minor nitpick. This is probably okay in the code, but you're breaking your TFA to there. You're not passing the proper flag. Okay. Because you're passing just the content of the scalar, but you're not passing whether it's smart, the CFA or not. That's why I asked. The scalar won't be upstack. Wait. Easy. I follow it. Okay. Might as we had the example code. All right. I don't. The test we doesn't get it covers UTFV. You know, I read that public when I do. And at that point, I'm missing that. So your word rates to care of. Let's see right at the end. Yeah. We'll be the SVP class. Yeah. I knew it was something. Actually, this is why I come in promises to give people for that. You can find your books. Absolutely. Thank you. Right. That's why did that and then later on call me. So does that make more sense? Recreate and then again later on as well. So of course. But since I have people that know more about this, why do they leave? I can't even work. I do. Okay. Two way of this that we free. Of the break. Also got first and last. We're trying to get the purpose, the way we're spreading last onto the end of the SVP. The list to. Pass this off three back to. We don't get it to first. And like, zero. Problems with. Which the shame is when they talk to me. Oops. Let's. Right. Right. That's why the word is necessary because if I can't. That makes sense. And I don't have a fancy diagram for this, but this essentially taking. Our original. The original operation, which we have here. And packing on to the end of that as a. Classic. List of people. We have the first SVP. We have the first SV over here that we created. Representing the first. The word first, you know, this. And down. This. And pass through here. We have the next. SVP on top. On to the end of that. Moving on like, moving on myself. See more again. This. Right. Right. I can't make super team calls. No. There. Oh. Actually. Again. I'm. Again. We. I. Also. What to do with the. I. Once. I. Do it. So we don't have to be. We just don't know. We just don't know. We just don't know. We just don't know. How we're gonna do. That. That. That. All of the ideas. All of the ideas. So. You know, it's very pretty. By any means, this is actually a mental slide, just to have you here. Again, we'll write you here, here, to this slide, where you put the end of the video. That's great. There's text beyond the beginning slide here. But this is like a $40 sign. And I have, I believe I take care of this slide, to get help. Again, this is the code's a little bit outdated. But this is how, the only way that I found, at least we can get the current code source, how it does the actual scalar variable that's supposed to be a scalar screen, or a, or a S line. I have, I think right now, the code does something just with $1 sign, because I haven't yet to the slide, how, I mean, it deals with the S line, in terms of the internals. Because I really can't think, I really can't think of a use case for wanting to add, in turn, wait, a percent hash variable. But I'm sure some of you are, yeah, so, by leaving that out, I'm sure someone will come up with it, with the general values for that. So I think what I will do, I think I will let someone else come up with a use case, and then fill that back in when I have the rest of them. And here also is the read space. It's not just waiting for a single space, which also was a bug in the slide, because it shouldn't work for, because the test should be not for white space, but for actual white space, as it has new lines in white space. And not great white space, and new kind of white space, and thin white space, and if I get that near the last space, if I get that far? White space, yeah, but what? Only, only two eighths plus white space. Yeah, all those white space. So are you supposed to do that? No. Yeah, all those one was higher than round one. FFT is zero. Okay, that way. It's embarrassing to actually build a code point. But for those of you that were wondering about the difference, here are the cases that I held right now. The CQW bang bang, these two paths, open race, close race, close race, close parent, close parent. While you're doing cases. This is not quite done, but we'll be after that person. This fun one, it actually works with the CQW, you have to say CQW space, W, W, if we'll use W as the new case. Yeah, if you use the space and any character, the next character is a little mature. Yeah. So it had no nulls, QQW and null character. Just to make your life a little more hell. Because that works with QQ. No, no, no, no, no, no, no, no, no, no, no, no, no. You're co-working yourself. Yeah, what do you want to do with that? You have to have a new line. Oh, yeah, ooh, nasty. What I do want to do with that, in keeping with my best part on Unicode list, I do want to add the ability to use Guillemot, the French devil now. Add that, and in the interest of completeness, what's the rest of the Unicode character set? At least for Unicode 5. I find those balance characters use those as well, just for completeness. Yeah, fine. I thought we should talk later. Yeah. Yeah, especially back then. Yeah, it's not a point. It's not a point. At the right place, the gentleman needs left hand and right hand, what the question works. At the right place, those. Right pointy finger, that's pointy finger. Thank you. Here we go. Thank you. For Unicode middle finger. So, but here at least. Yes, now Unicode 6. I do want that, you do too. Ooh. Yeah, true. But here at least regularly, that you don't have backwards compatibility, so you have your future backwards compatibility problem. Good point. Yes, I can think very well that you can percent w. I'm sorry, percent w, they can use to determine at the front just versions or I'm asking you, I'm asking you a percentage of our picture. I know one of those was just a four days and check for versions, but I wouldn't have future Unicode sprays. Yeah, right, a long time because I don't have people brought up right first, I think you're in silence to tell. It also handles these one piece. One, it's a baseball wide arm sport because that's what your new character. I go through the entire, I go through the entire ASCII regime, we set the course of joint and control characters to make sure those work in the test weeks. And you can use any wide space that you like inside there and just to make sure that it works inside a joint operator for proper turns, like proper turns for the white ball three. The test week also runs joint on that playlist. I'm sure there are many other ways to pick this. I like to come up with options and some of the more fun alternatives later on because I have yet to do an escapee. And yes, stop, that's a calendar by the way. Give us handle tabs or rather well, I think I have a code. So have and then nine for the winner and decide their escapee nine. How long do you see the other side, else I work for you? You can also make the test case more fun to read by using code for it in the right part. Oh, I have one test case that I wrote that's using QQW space, QQ, Q slide, Q backslash Q, backslash QQ. Now, inside the square brackets on the right. Oh, can you hear it? No, on the right, on the right, it is deeply. No, down, down, down, down, down, down, down, down. There, you're out of words, you said of codes. Mm, good point. Just to make it more fun. Right, let me show you, wait, wait, wait, wait, wait. I don't know, my chair is in the right side. No, it's from the internal, that's so, yeah. Yeah, well, as long as there's, if there's a code, then the test case. Yeah, yeah. It has come through a little bit. Yeah, but what they, in doing this, I found the one test case that will probably make me a rewrite, I think you'll see probably a separate space. Now that is QQW code. The way the keyword parser works, if you have QQW colon, colon, i.e., colon, in all-string, colon, the keyword parser thinks that this is a pack instead of the QQW operator. So I need to use apparently the 5, 14. There's an advanced version of this in five, that's the evil one, because in that case, the quote should mean the same as the double colon. Right. Right, and if you say QQW colon, then the keyword parser is not covered that correctly. In terms of as a package data called by a colon. But, because I expect it has same behavior on QQW, sorry, on QQW put, because of the data package that we have, but it doesn't use the same thing. And I think it's gonna find what to give me a step and it will be what give this three back to QQ, and that's just how these go. I am amazed by what we're so trying to do. If we have questions and concerns, this is all my GitHub under the name Dart4DRFORR on the tag. And this gives there was a lot, so I think I'll take questions. I'm trying to load the code on GitHub, but in the meanwhile, you say the keyword API. Which one? Which one? Yeah. Whatever is used by functional code parameters. What I did with the code, and this may help on a normal level, is I took the original code, we're giving these sortings, that double over rows for doing these subs and stripped out everything I could find that wasn't directly related to the keyword. What you might find useful is a double call parser on Cepen, which is likely what's going to be in 5.22. Right. And it's working all the way back to 5.8, and it's so much easier to use than this. My name. Very, very useful. You know, I have plenty of time here, so if anyone wants to, if anyone wants to take a break from the talk that's cool.