That's the theme from the Sears Radio Theater. Tonight's story is a comedy with Andy Griffith as your host. Here's a preview. Citizens of your Huppetsville!  Citizens, we are out of oil! Run for your lives! The Sears Radio Theater will begin after this message from your local station. This is Andy Griffith. Your Huppetsville is like most any village, I suppose. Over there on the courthouse is the town clock. I guess that clock has been telling time for as long as anyone can remember around here. Kid does need repairing ever so often. But next to the village hall, there is the mayor's office. I guess the mayor's office is about the second most important building in the whole village. The first most important building is that one, 316 Beanstalk Drive. Just think, 165 stories for the sole purpose of housing one company. Energy Incorporated. I guess Beanstalk Drive is just about the most important street in the whole world. Of course, that's because of one man, Jack, the Village Hero. I guess he's made your Huppetsville what it is today. Coming down the street is Jack's Chief Administrative Assistant, Benny. Looks like he's going into a phone booth over there on Nome Street. Frammer? Hey, let me speak to his honor. Mayor? Hey, this is Benny. Jack wants to see you and me over at the 316 building. He thinks we're all in big trouble. Trouble? Trouble? Big trouble? What are you talking about? Where are you? People will hear you. Don't worry. I'm calling from a payphone. Jack thinks that we're in big trouble and he wants to see me. Right, right. Now I make it snappy. And that's only the beginning of our story. Radio Theatre. A new adventure in radio listening. Five nights of exceptional entertainment every week. Brought to you in Elliott Lewis' production of The Sears Radio Theatre. Our story, Jack and the Energy Crunch by Michael Utvitch and Michael Gelman. Our stars, Les Tremaine, Robert Towers and Jesse White. The Sears Radio Theatre is brought to you by Sears Robot and Company. Here's the Jack. Benny and the Mayor are going to have a little pow-wow over a 316 beam stop drive. Up on the top floor of the Energy Incorporated Tower, Jack is looking pretty upset. Gentlemen, thank you both for coming on such short notice. As you have probably surmised on the recent rioting and various attempts on my life, I think we might be facing a certain amount of distrust among the peasants. Jack, may I interrupt for a moment? You just did, Mayor. Jack, I think the situation is a little more serious than you think. Our popular support has completely eroded away. Of course, the peasants have hated us for years, but we could live with that. After all, they needed Energy Incorporated, but now the media is advocating revolution. We're talking your basic economic collapse here. They want to string us up and let us cook in the heat of the orbs, so to speak. He's right, Jack. At 2, Benny? Jack, instead of evening symphony, Radio Yohuppetsville is going to broadcast a special report on our entire operation. Nothing we can't handle. Jack, my sources indicate that tonight's broadcast documents our whole story just the way it happened. Benny, turn on the set. Good evening, everyone. Tonight it shall come to pass that instead of our usual musical program, Radio Yohuppetsville will present a special report. Jack, the orb, and you. Once upon a time, there was a village called Yohuppetsville. For a long time, peace and tranquility rained in Yohuppetsville. The people lived out their simple lives working the land.  They were content to idle away their spare time with feasting, dancing, and casino gambling. One day, it came to pass that a local tinkerer named Sam the Tinkerer invented a strange and wondrous thing he called the whizbang. Sam took his new invention into the village square and set it out for all to see. The mayor spoke to the people. Citizens of Yohuppetsville, I give you the man of the hour, Sam the Tinkerer. And so, Sam the Tinkerer turned a strange knob on the whizbang, and it suddenly sprained a life whizzing and banging. And the people, food and art. And the mayor proclaimed it a special day. I hereby proclaim this, Sam the Tinkerer Day. Now, Sam here tells me that this is the dawning of the industrial revolution. The whizbang became an instant success. Every person in Yohuppetsville wanted a whizbang of his own. And the village grew prosperous as the people got more whizbangs and more and more still. Soon, nobody in Yohuppetsville could remember what life was like without the whizbangs. But there was this one small catch. The more whizbangs, the more oil was used up. The mayor spoke to the people. Citizens of Yohuppetsville, we have enough oil to last for a while. The people paid no attention to oil. They wanted bigger and better whizbangs. And all seemed copacetic until one day the mayor sorrowfully spoke to the people. Citizens of Yohuppetsville, I have a grave announcement to make.  Citizens, we are out of oil. Run for your lives! As luck would have it, Yohuppetsville had a hero in residence. His name was Jack, so most called him Jack the Giant Killer.  But time is the enemy of youth. And Jack the Giant Killer was no longer able to climb beanstalks or consort with magic demons. So the duties of hero fell upon Jack's son, Jack Jr. Now, Jack Jr. was a nice enough fellow, but he wasn't exactly the hero type, if you know what I mean. Jack Jr. had never served as a hero before. That sort of duty doesn't come along every day. But the mayor felt he had no recourse but to send for Jack Jr. to bail him out of a very sticky jam. And so it came to pass that Jack found himself in the mayor's office. Jack! Oh, good to see you, boy. Thank you, Your Honor, sir. Ah, you know, in the old days, Jack, your father and I were very good friends. Do you have any idea how long it took to get rid of that last giant he killed? It took so long that... But I guess you've heard all the jokes. Yes, Your Honor, many times. Jack, why don't we get right to the point?  You see, I'm really a poet. There was a young hero from Trent who had a most unusual... Jack, like it or not, you are the village hero, and right now the village really needs a hero. Think of your father. Think of me. Think of the reward. The reward? Well, funds are a little low right now, but I'm sure the village council will see their way clear to slipping the village hero a little something. After your return, of course. I will go forth for the villagers, Your Honor, and not for your rewards of gold. Gold? Who said anything about gold? I was thinking maybe a trophy or something. The very next day, Jack and the mayor stood before the villagers. And so, my fellow citizens, before Jack departs on an adventure he may never return from, he wants to say a few words. There aren't many people here, Mayor. Most people had to work, Jack. Even Dad didn't make it. Jack, please say something to the peasants. Time is running out. Very well, Mayor. Ladies and gentlemen, I am going forth to find more energy for our whizbangs. If I don't come back, I would like to leave you with these words. There was a young hero from Trent who had a most unusual... That's great, Jack. I wasn't done yet. I know. And with that, Jack set forth on his amazing journey. Radio Yo-Huppetsville will be back in a moment. And so Jack set out on his quest to find energy for his village. Now, after he had journeyed for some time, he came upon a small brook where he stopped to rest. He had been sitting by the brook for a short time when an old man emerged from the bushes. He had an air of knowledge. He was clothed in white and wore a plastic pencil case in his shirt pocket. Hello, stranger. Hello, Jack. You know my name? Yes, Jack. I know you and I knew your father. You're okay. If you're so wise, old man, what then do I seek? You seek energy for your village. Exactly. And just who are you? I am a wise guy. What's your real name? Jack, you know, a wise guy. The character in Fairy Tales who points the hero towards truth, justice, and the American way. Oh, a wise guy. Well, I have to be going now. Hold on a minute, Jack. I haven't pointed the way yet. Sorry. Your quest for energy is one that will be filled with great danger. You will find what you seek in the far country beyond the high mountains, Jack. You will travel along in perilous roads. You will encounter dangers you have never dreamed of. That sounds scary. It is. You're going to need some kind of magic. Let me look through my bag. Here we go. A magic field. I mean, I got to carry that thing? Maybe you're right. I know. How about a magic stereo component system? I don't know. I'll tell you what I'm going to do, Jack. You can keep the magic stereo system or you can have what's behind the curtain. I'll take the curtain. You made a wise choice, Jack. Juanita, tell him what he's won. There before Jack lay a small, slightly shriveled avocado. That's just a lousy avocado.  It's a lousy magic avocado. And with that, the wise guy disappeared in a cloud of purple smoke. Bizarre. Very bizarre. Jack traveled for several days and just when he thought he could go no further, he beheld an awesome sight. Below him was a village larger than any Jack had ever seen. Monolith towers reached high into the sky, poking through the great orange and brown clouds which swirled around them. Jack began to walk down the mountain toward the great village. Before long, he came upon a magical sign. 25 miles to the city of Ozone, gas food and lodging next exit. It had been a long journey and Jack was tired and hungry. Suddenly, he remembered the avocado the wise guy had given him. Jack sat down in a grove of trees just off the road and as he prepared to peel the avocado with his knife, a voice rang out. Hey, what are you doing? Who said that? Will you put that knife down and stop cutting enemy? I'm going to turn you into a washer-dryer combo. Okay, okay, see, I'm putting the knife down. Yeah, well that's better. My name is Benny. I'm an avocado. Oh, hello. My name is Jack. I'm a hero. Good gravy. I'm talking to an avocado. And I work on a strict commission basis, so just give me a plan and let's get going. Time is money, right? Right. I don't really have a plan. Say what? I don't have a plan. Well, I don't know what I'm doing here. Well, this is the city where Dwell's consortium, the giant keeper of the oil. There isn't any more oil. Sure there is for a price. Come with me, Jack, and we shall enter the city of Ozone. And so it was that Jack and Benny entered the city of Ozone. They traveled through the city for many hours until Jack finally spoke. Benny, are you sure we haven't been by this place before?  Hand me that telephone book. That's a magic book, isn't it, Benny? Sure, that's it. A magic book, yeah. It's a magic guidebook for heroes and avocados and like that, you see. See, look, kid, right here. What did I tell you? Consortium the Giant lives in a monolith tower at 48 and 7. Benny, isn't there an easier way of doing this? Sure, you're right, Jack. After all, I'm on an expensive count. Yeah, hey-oh, hey-hey, count! And Benny found themselves standing at the base of the monolith tower where Dwell's the giant consortium. Benny, I'm scared. Radio Yohuppetsville will be back in a moment. Jack and Benny stood at the base of the monolith tower where Dwell's the giant consortium. Listen, Benny, here's my plan.  What are you nuts? Look, you want a solution to your village's energy problem, right? Right.  He's got oil. I want to negotiate with him? Exactly. All right, Benny, but we'll just climb up this tower and sneak into the giant's lair. You do what you like, kid, but I'm going to take the elevator and make an appointment with his secretary. Now, as luck would have it, consortium, the giant, had just returned from lunch and was busy counting his gold. Nine hundred thousand barrels at one hundred and seventeen dollars and sixty-three cents each equals... What's this? Hmm? If I hope him, I smell avocado dip. Benny! Benny, the avocado. Where are you? Down here on your shoelace. Blow me down. I haven't seen you since Tolkien. Frankly, consortium, I don't think there ever really was a ring.  Hey, what's this? There's a kid outside the building knocking on my window. I hate to admit this, but he's with me.  He could kill himself out there. And so Jack rode into the huge office on the giant's finger. What do you try to do, kid? What was it, kid? Let the kid speak his mind. Thank you. My name is Jack, and I have traveled long and hard, seeking energy for a strong, new, Huppetsville. What's he talking about? His village is out of oil. Oh, well, why didn't you see so in the first place? I've got oil. What do you have, kid?  Benny, get him out of here. Where's my fly? Consortium, wait a minute. Wait a minute. Where Jack comes from, beans are gold. Right, Jack? Right, right. You say beans, you say gold. Well, okay. Listen, giant, we've got a few more allegories to visit, so if you could just give us your cards, we'll be on our way. Sure thing, Benny. Don't be a stranger. We'll have to get together for lunch. You. You've got a great sense of humor. What a kid. Hey, Jack, let's get out of here. When Jack and Benny reached the relative safety of the city streets, the intrepid avocado spoke to Jack. What's the matter with you?  You want for a guy like that a bag of beans? You trying to get us killed or something? Yeah, I'm real sorry, Benny. Crazy kid. There are other powers that be to see. See? So come on. Where are we going? To the park, Jack, to see the witch. Hey, cab! So the plucky pair piled into a cab and made it off of the park. And there, Jack beheld the witch you told me of. She was so beautiful, it was hard to believe she was really a witch. She wore faded denim jeans and hiking boots, offset by a clever heaven-ice-day T-shirt. As Jack and Benny approached, she was chanting a magic spell. Hey, where are you? Where are you? Where are you? There's the witch! Hey, Utopia. Utopia? Come here, come here. I want to talk to you. Benny, where have you been? We need you on the picket lines. Who's your friend? Uh, Utopia. I'd like you to meet Jack the Hero. Jack, meet Utopia. Hiya. Hello. Uh, Utopia, my name is Jack, and I come from the village of U-Huppetsville. I seek energy from my village. They know more, Jack. You've come to the right place. I have? Energy is no problem. Energy is everywhere. I am energy. You have energy. We are all energy. Utopia, that is really heavy stuff. Very deep. Oh, Benny, haven't you heard? I've finally reached my alpha state. What are you two talking about? So look around you, Jack. All that you see is energy. And do you know where that energy comes from? Batteries?  Of course, energy doesn't come from batteries. It comes from mother's son, sister wind, and the ocean. The forces of nature surround us and still we do not see. Nature is the source, Jack. Go back to your village and tell them that their problem is solved. She raised her arms and was about to cast a spell on Jack and Benny when, just in the nick of time, two plain clothes goblins descended on the witch and made a fuss. That was close, Benny. Yeah, yeah.   You're discouraged. Am I correct? Listen, kid, never say die. Another idea. I can hardly wait. You and I are going to visit the Dragon Nucleon. Well, I suppose it won't hurt to fight out about all the possibilities. That's the idea, Jack. He lives on one mile island outside the city. And with that, Jack and Benny journey to the cave of the Dragon Nucleon, keeper of the reactor. The dragon was huge and spewed forth greasy hot fire when he spoke. Benny, my dear little green monster, I hear you're escorting the hero, Jack, around Ozone. So, uh, what else is new, uh, garlic bread? Benny, Benny, Benny. I do enjoy a sense of humor. You would be wise to cultivate one. I realize you have been to the giant and the witch. Yeah, yeah, that's right. No luck, I presume. Well, Jack is, you know, considering all the offers. Of course, Benny. By the by. Where is your young friend? Just then, Jack leaps from the shadows, torch and spear in hand. Hold it right there, Nucleon. Benny? Yeah? What's the lad? What he's doing? Hey, uh, Jack, uh, what are you doing? I'm hitting the dragon tower with fear. Jack. Yes? Do I look like I'm cowering with fear? I was wondering about that. You see, torches are supposed to make dragons cower with fear. Old wise tales, my boy. Relax, Jack. Now, how many people will this reactor have to accommodate? And where is the construction site? I'm from Yo'Huppetsville across the Great Mountains. Very great. The village has a population of 650. 650 what? 1,000 million? It's just people, you dragonhood. People? That's correct. Of course, that doesn't include the outlying farm families. Well, let's make sure I understand you, Jack. You want me, Nucleon, keeper of the reactor, to bother with 650 people? Well, there are a lot of farm families. Hey, Jack, I think we better get out of here. I wouldn't hear of it. In fact, I was just going to have dinner. Hey, Jack, Jack, Jack! He's overheating! Leave the way for him. I'll cover you. We'll put on that spear, you half-baked prodigy. He's going to blow! And so, in the confusion, Jack and Benny made their escape. That was close. You...  It looks like the only person who can help us now is the wizard. Benny, do you mean... Don't say it. We're off to see the wizard? He said it. The wizard's castle stood proudly atop the mountain peak. Its turrets gleaming golden in the evening sun. Hmm, maybe nobody's home. No answer. Maybe we better go... No, no, no way, kid. Push on the door. It's awfully heavy, Benny. Yeah, what I could do if I had arms. You push harder, Jack. Hello? Hey, just keep moving, kid. Let's check out that big gleaming golden door at the end of the hall. Jack put all his strength into pulling the great golden door open and beheld the magic orb for the first time. It looks like pay dirt to me. A glowing orb. That is pure energy, kid. Well, it's not exactly a golden harp, but I think the mayor and the villagers will be pleased with it. Perhaps my...  Jack and the enchanted avocado moved closer to the bright glowing orb drawn by its radiance and power. Jack raised his hands to pick it off the velvet cushion where it lay when suddenly a great voice rang out. Locked in my doorstep. I am Jack from Yo'Huppetsville.  Perhaps you remember my father. I recall that one day... We speed it up, kid. Anyway, my village sent me out into the world to search for energy. You see, we can't run our whiz bangs. No one will have feet. People will be out of work. It's going to be awful. I am the great wizard Infinito, master of the sublime powers of the universe. Sounds like nice work if you can get it. We shall talk again soon. He's gone. Well, Benny, I guess we better do what the man said. Benny? Benny and the mayor are listening to Radio Yo'Huppetsville expose of the energy ink. Sounds like things are about to get pretty serious. Andy Griffith again, and here's the concluding act of Jack and the energy clutch. Down Jack fell truly alone. He wandered about the castle searching for his friend, Benny. Soon he found himself in a room filled with bubbling liquid in storage tubes and electric lights which flashed everywhere. Welcome to my laboratory, Jack. You're the wise guy. I met you at the beginning of my journey. Yes. I'm afraid your journey was a little played to test you. The whole thing? The giant to which the dragon was just a test? Well, yes. You mean you could have just told me to come to your castle, problem solved, that's it? We could have, Jack. We just had to know a little more about you, Jerry. Like what you're made of and like that? It was just a test. Benny, wait a minute. You and the wizard he who pays kids. Oh, I get it.  No, you had to see the world as it really is. Yeah, you mean giants and witches and dragons. In a manner of speaking, yes. If your village wants more energy, you're going to have to deal with creatures like that. Say, what about the glowing orb I saw when I came in here? Come with me, Jack. The wizard led Jack down a secret passageway into the room where the golden orb lay glowing like a great gemstone on its velvet cushion. When I was a young wizard, I decided to try to find the ultimate source of energy for the benefit of mankind, of course. Well, I was young and headstrong and stupid enough so sooner or later, thanks to my N.A. genius and a couple of federal grants, I found it. My orb produces a never-ending supply of energy. It's clean, it's efficient, and it doesn't take a lot of space. What's more, you don't have to tear up national parks trying to find it. Good. Now I'll take it back to my village and be on my way. Oh, I'm afraid I cannot permit that, Jack. This source of energy is too dangerous. You mean you were going to give it to me and now you're not? Jack, if I were to give the orb to mankind, people would find a way to destroy themselves with it.  Well, I'm sorry you feel that way, Jack, but the orb stays here. What about my quest? Go back and make a deal with a witch or the dragon or the giant, the best one you can get. That night, Jack lay awake in his room thinking of nothing but the golden orb. When the moon struck midnight, Jack heard a familiar sound at his door. Hey, Jack, open the door. Benny? Benny, come on in. Close the door. Listen, the wizard's got to give me the orb. With it, all of your Huppetsville's problems are over. Jack, the wizard isn't going to just hand you the orb. It'll steal it. Now you're talking, kid. Wait a minute, Benny. Just whose side are you on? I'm on my side, kid. That wizard is going nowhere. Fast! In the dead of night, Jack and Benny crept slowly down the dark hallways trying to find a way to the room where the golden orb was kept. You got the bag, Jack? Yep. Okay, kid. There's your orb. Jack reached up to the velvet cushion and picked up the orb, which lay like a great golden egg in his hands. Hop that thing into the bag and let's bare moose. The wizard will be far behind. Jack and Benny ran through the castle and down the mountain the golden orb tucked safely under Jack's arm. Run faster, you boy! I'm running, I'm running! But strangely enough, the wizard did not come after them. The air of the evening was cold and there was a strange chill about. When Jack and Benny finally reached the foot of the mountain, they looked up to see the wizard's castle glowing ominously. Without a second thought, they ran very far, very fast. Well, Benny, it looks like my journey is over. I have the orb, the new energy source. The villagers will make me a hero just like my dad and give me a trophy. What? You telling me you're going through all of this just for a measly trophy? Yeah. That's pretty cheap, isn't it? Jack. Jack, my boy. Have you ever played poker? He pulled out a packet of enchanted symbols he called playing cards and taught Jack a magic ritual called putting on the poker face. At sunrise, Jack and the trusty avocado resumed their journey and soon found themselves back at One Mile Island, home of the dread dragon, Nucleon. Now, remember what I told you, kid? Now, push the button. Jack, back so soon? Yeah, Nuc, it's me, Jack. Well, my fine fellow, I knew you'd be back. Can't do anything without me, eh? I have got the exclusive on the wizard's glowing orb. I see. Why play games? I got the secret source that's going to put you out of business. If you're nice to me, I'll give you a pension and call it a deal.  Very well, Jack. I'm sure we can come to some sort of agreement. Yes, I'm sure we can. We'll have to have lunch sometime and discuss it. Then Jack and Benny journey to the park to visit the witch utopia.  Well, listen, witch, this orb in my pocket's got it all. It's clean, it's pure, and it's forever. You dig? And I have the exclusive. Well, Jack, maybe we should have a talk after all. No time now. Call or send an emissary to Energy Incorporated 316 Beanstalk Drive, your Huppets bill. And you'll give me all the energy I want? Well, let's just say we'll begin preliminary price negotiations. Ciao. Finally, Jack and the worldly avocado went to the monolith tower to visit Consortium, the giant. Be careful, thumb. I smell the blood of a Huppets man. That's right, blubberbrain. I just happen to have an exclusive on the wizard's magic orb. Old smorb. Want to see it, Mr. Giant Consortium?  Well, if I refuse... See that mountain over there? Yeah. What the whole mountain? It works. After he had finished with the three powers, Jack took Benny on the road back to your Huppets bill. They journeyed until they came to the spot by the brook where Jack had first encountered the wise guy. Jack took Benny out of his knapsack and laid him on a rock. Well, Benny, looks like we've come to a parting of the ways. I'll take the orb back to my world and you can go back to yours. Jack, I thought you everything you know. You can't do this to me. I got one crazy wizard ready to turn me into Mexican Ardors. I risk my life for you. Yeah, I suppose you'll be wanting a cut of the action.   So it came to pass that Jack and the plucky avocado returned to your Huppets bill. It was a sad homecoming. Piles of unused whiz bangs lined the tattered streets. People walked about like zombies, pining for their toys, discarded for lack of energy. Jack and Benny went directly to the mayor's office and found him sitting in a loincloth, eating berries. Jack, you're back. I got the juice and we're ready to roll. It's about time. Now, I'm going to need some office space, some secretaries, a new car. Jack, first, we've got to have a ceremony. So Jack took the golden orb into the town square and set it up for all the villagers to see. From miles around to see the magical orb. Citizens of your Huppets bill, Jack the hero has returned from his quest and he brings energy for a strong your Huppets bill. When you left on your journey, I promised you a trophy. If ever you returned, I hereby present you with this trophy. Read the inscription. To the best bowling team ever, Al. Gee, thanks mayor. And now, I'll take possession of the orb. Not so fast, you rascal. Who said that? I did. Mayor, people of your Huppets bill, this is my friend and fellow hero, Benny the avocado. Without him, I would never have been able to find the solution to our problem. But now that we've found it, I'd like to say there's going to be a few changes around this place. And so there were. Jack and Benny set up shop in a humble cottage on Beanstalk Drive. As the years passed, the monolith tower of energy incorporated was built stone by stone, floor by floor. Jack had cornered the world market for energy and he used his position ruthlessly. The innocent youth who had set out on a search for energy had become a despot, a tyrant whose prices went up, just as his personal morality went down. He ignored reformers' accusations of price gouging and sent his spies to cut down all who resisted him. Some say that all fairy tales end happily. And if that is true, this story is no longer a fairy tale. It is our plight. Jack, the orb, and you has been a special presentation of Radio Your Huppets Bill News. Good night, everyone. So let me turn that thing off. Mayor, I want you to get me the head of Radio Your Huppets Bill. On a trace, sir. Just bring him here, you incompetent. Jack, it's not Jack. Just speak out. Not Benny. I don't do anything serious. I'll just make him a chopped liver. Let's all be calm. Maybe it's time to share power with the people. Yeah, yeah, that's it. The people's orb preparation is a great angle. Oh, no, no. The orb is mine. If they don't like it, I'll crush them. I'll crush them all. What are you doing here, old man? Get out of my office. No, Jack, it's all over. I've come to collect. What are you talking about? The orb, Jack. You misused it. You took the perfect source of energy and you ruined everything. You can't do this. It just appeared. It's him. If you are belongs to me, give it back. Give it back. Good luck, Jack. Benny, what did he mean? Good luck. Take a look out the window, Jack. They're coming for me. Let me out of here. I have some business at my office that's been piling up. Help! Jack, radio your Heffordville news here. Would you like to comment on tonight's report? I would like to say that I had nothing to do with any of this. But he can't. He's in up to his whatever. Now, I was used from the start. Get away from me. Get out. Everybody, get out. That's our story. And it just goes to show that you're never messing around with the universal source of energy. We've been brought to you by Sears Robuck Inc. Where our policy is satisfaction guaranteed or your money back. Sears. Where America shops for value. Jack and the Energy Crunch was written by Michael Utvitch and Michael Gelman. Produced and directed by Elliot Lewis. Your host was Andy Griffith. Our stars were Les Tremaine, Robert Towers and Jesse White. Featured in the cast were Linda K. Henning, Elliot Reed, Dawes Butler, William Woodson and Ed Max. The music for Sears Radio Theater was composed and conducted by Nelson Riddle. This is Art Gilmore speaking. The Elliot Lewis production of Sears Radio Theater is a presentation of CBI. Sears Radio Theater will be a mystery with Vincent Price as your host. Let's listen. I think she left here on nobody and returned only a few years later as a national celebrity. You must be mighty proud of her. I am. And of her marriage. She'd say around here she might have wound up marrying a real louse. So be sure and tune in tomorrow to Sears Radio Theater. CBS News. Skylab is coming home in the latest time. Appears to be between 8 a.m. and 4 p.m. eastern time tomorrow. This is John Bohannon reporting on the CBS Radio Network. Throughout today, America's unmanned space station dropped about half a mile an hour. And late tomorrow morning, the space station should be 75 miles above the Pacific Northwest. Skylab will break into pieces as it burns up in the atmosphere and some parts are expected to hit Earth. NASA says most should come down to the Atlantic. New and eastern time seems to be the most likely time. At the Johnson Space Center in Houston, Eric Engberg reports on some people with a special interest in the spacecraft. To most people, the Skylab is now just a potentially harmful piece of junk. But there are nine men who once called it home. The members of the three crews which lived aboard the space station in 1973 and 74.  He says he feels neither sentimental nor concerned about its demise. It is appropriate, I think, that when we finish with one activity, we turn and look ahead for what's the next step going to be. And the problems associated with the re-entry of Skylab, I think, have been largely exaggerated. And perhaps in another 24 hours, we'll find out whether or not there is really as much concern as some of the press seems to think there should be. Rather than think about Skylab N, Garrett says he prefers to remember the scientific information it gathered. And the beautiful sunset he was able to see from the craft that was then, and is, for a few more hours at least, the largest object man has ever sent into space. Eric Engberg, CBS News, up at Johnson Space Center. Some people who walked through Carl's bad caverns in New Mexico earlier today had to wait a while to get out because of four men with rifles and shotguns. They took over the underground lunchroom and for a while they held a cavern employee hostage. Reports just reaching CBS News say the men have now surrendered. Four men have given themselves up to authorities. They have been demanding a million dollars and a plane to take them to Brazil. There are no reports of anyone being hurt. CBS News correspondent Don Webster reports from an agua that President Samosa of Nicaragua is ready to resign. Webster says Samosa is blaming communist influences in Cuba and other areas for forcing his resignation. There are reports that Samosa may be planning to settle in Miami, but there's no confirmation of that. The National Hurricane Center says Hurricane Bob is now about 300 miles south-southwest of New Orleans. It's heading toward the north-northeast at 12 to 15 miles an hour. Forecasters say the hurricane could hit the coast of Louisiana west of Grand Isle between 6 a.m. and noon tomorrow, eastern time. President Carter declared an energy emergency today and ordered operators of all public and commercial buildings in America to set thermostats at 78 and no cooler. The order is effective Monday and will last for three months. If Mr. Carter extends it into the winter, the order would be thermostat settings at 65. A petroleum newsletter, the Independent Oil Buyer's Guide in Lakewood, New Jersey predicts that Americans will have apple supplies of home heating oil this winter, and the newsletter says Americans can also expect more gasoline at surface stations. In Sunnyvale, California, a police officer got out of his car to investigate two unleashed dogs, pit bull terriers. But the dogs decided to investigate the officer. Back in his patrol car, he radioed for help while the dogs chewed up his tires. Their owners, as the dogs are really friendly, but they just...


Morning, thanks for coming today, this early Friday morning. So some housekeeping stuff you're going to. So next Wednesday, I'm not going to be here. Oh, I know it's sad. Everybody don't cry at once.  You're going to be responsible for that material. So that way we can, we won't miss any time. We'll get caught up on Friday. And then the TA will use next Wednesday to A, pass back the midterms, and then B, hold a discussion section so you can feel free to ask him for midterm questions, midterm clarifications, any other kind of things. Project 3, it's kind of an open discussion forum for whatever you want to do. So I will remind you before Wednesday because I know that's probably necessary. So yeah, so it should be a good opportunity for you to take advantage of having the TA then. Any other questions? Will the lecture be played in class as well, or should we do, is the lecture, does that have to be watched outside of class, or will it also be played in class? No, it's going to be 15 minutes. It's going to be like a normal lecture. Yeah, so you'll be responsible for that content. I thought you said on Wednesday that the TA was going to be passed in the midterms. Yes. At the same class time, right? Yes. So will the lecture be played in the same class time? No. OK, this one. No, no. So the physical class time period is to hand back the midterm and to give you a discussion section with the TA so you can cover anything. Anything you have questions about midterm content, Project 3, especially Project 3, that's the time, a good time to ask him and ask all of you. But yeah, so we don't miss any content. There'll be videos to watch and content to keep up to date with. Cool. Any other questions before we get started? Anyone else ask how the midterms work? Or is it all? If you have any information. Heights go up. Part of the midterms. They're halfway graded. They were good. I was very impressed with what I saw. The DNS one was hard to grade. There's a lot of different ways to write it, I have found. But that was good. I think it's a good learning experience. So yeah, all right. OK, so let's go back to we have been talking about write a recursive descent parser, a predictive recursive descent parser, based on the first and follow sets. So we want this parser to be predictive. What does that mean for it to be predictive? Determine how a parser is based upon the first and follow. Almost. Yes, but what does it look to determine? It uses first and follow sets. But what about the input does it use to determine which rule? Just one character. Just one token or character. Yes, exactly. So yeah, the predictive part means, by looking ahead, it can decide which rule by using the first and follow sets. So we saw how to prove that, hey, this grammar does support a predictive recursive descent parser. So we've been looking at email addresses. And we've seen, OK, this is how we can define an email address. And we saw, OK, we already have the first and follow sets. We've calculated that. You can go follow this to see how to do this. And so we can say, OK, then we can create a function to parse an address, this non-terminal. So to parse an address, we know that an address is either composed of a name address or an address specification. So how are we going to tell which one is it a name address or an address specification? Yeah, so how do we decide? How do we decide? So that's how we can prove that we can decide, but how do we actually make that decision? Yeah, so it's the first thing you've got to do. Yeah, the first thing to get the token, right? We have to read something into the input, otherwise we have nothing to compare it against. And then we check the first of one of the rules and say, OK, is this token in that first set? So we hard-code this. We say, OK, if it's. So here we can see name address is either a less than symbol and an atom or a quoted string. And so we're checking, hey, if this t type is less than symbol or an atom or a quoted string, then we know it's got to be this rule, name goes to name address. Why do we do this unget token here? The input is consumed. Why is that bad? Because if you're going to one of the things and you have to look at that same token for one of the non-termals that it goes to, then you still have to look at that. Right, so yeah, so if you think about the tree, right? Part of the tree, once we see this, we know, OK, we have a tree where we start to address, right? We're trying to parse address. We have an address node. And we've decided that, OK, address has a child name address because of this rule. I know this rule applies. But name address is not a terminal, right? Name address itself is going to have its own subtree structure and going to generate terminals. So we had to look one ahead to decide which rule to choose. But if we, by looking one ahead, we moved the input tokens forward, right? But address itself, none of address's children are terminals. So we know that terminal has to come from name address and not from address or from one name address of children. We don't know. All we know is that address does not have it. And then we're going to call parse name address, right? So we have this recursive call that's going to call some other function that knows how to parse a name address. And then I'm going to say, OK, I chose the rule here. Address goes to name address, right? I know if I get back from here, what do I know if I get back? If this parse name address call returns. Yeah, it's parsed everything. It's parsed it correctly, right? There were no syntax errors, right? So syntax errors stop the parsing and say, hey, there was an error, right? So we know if we've gotten here, we know that, OK, great. We parsed a name address successfully. And now we can do whatever we want. We can build this tree with this name address, this address and this name address node. We could do some kind of parsing, whatever we want to do. It's a bad practice to pass t-type into parse name address instead of calling on getToken and then having parse name address called getToken. Bad practice. I'd say yes because you're changing the semantics of these parse functions, right? We're kind of looking at these parse underscore non-terminal functions as they take in no input, but they use the lexer to get tokens, right? So if you have to then, for some of them, pass some input and for some not, then you're creating kind of this, you're muddling the abstraction, right? They're not all the same. But I mean, it's all the way you could do it, yeah. OK, now we need to check the first of address specifications. So what are we going to check? It's the same process as before. We just use the first set and check against that. Yeah, so we use the first set the entire right-hand side, DAA, QSA, right? And then what do I do? I want to keep this token or not? Nope, right? We want to un-get this token. And then what function am I going to call? Let's go to somebody else. Yeah, address spec. Yeah, parse address specification, right? So we know that's the rule. We know we have to parse it. If that returns, we know everything went successfully, so we've properly parsed it. So what happens if it's neither of these two cases? I mean, there's an error. And this is what the first set tells us, right? The first set of address says, hey, when we are trying to parse an address, if we read a token that's not in the first set of address, then we have a huge problem, right? Or we don't have a huge problem, we have syntax error. This is not a valid string that came from this grammar because address can only start with dotted atom at, a quoted string at, a less than symbol in the atom or a quoted string. Do we have to account for that for any of the test cases? Like syntax errors? Or are we going to use it? In this project, no. In this project, you just need to, in project three, you can assume that it's well typed, but in other projects, that's not going to be necessarily the case. So for receiving syntax errors, it's because the program that we have written is reading incorrectly. Say that again? If we are getting syntax errors, it means that we have written something incorrectly in our project rather than the test case is incorrect. Yes, unless you wrote your own test case and your test case is wrong. The test case is given. Yes, yes. Okay, so we can do this exact same process with a name address. So we have the first and follows here. So this follows the same process. So what are we going to check first? Display name, yeah, it's the first of display name angle address, which is atom quoted string. So we're first going to get a token, we check that. We say, okay, it's, so why am I doing display name angle address here, not just display name? Yeah, right, so I have to check with the first of this entire rule, right? Because if, exactly, if display name has an epsilon in it, then we say, okay, but we have to also take the first of angle address, right? And we know how to take the first of the sequence of tokens, right, because that's what we do all the time. But because there is no epsilon display name, right? It's just atom quoted string, right? So we check if t-type is atom or t-type is quoted string, are we going to do unget token or not unget? Yeah, we want to unget that token. We want to call parse display name, and then are we done? Is this the rule properly done? Parsity, hesitant no, why? We also have to parse the angle address, we have to handle that. Right, so we've only created one child, right? We called this parse, so we have our name address, right? And we have, we just parsed the display name, which is great, but now we need to parse, we know that after display name comes an angle address, right? And this is because of this rule here, name address goes to display name, angle address. And now are we done? Now do we know that this, is this rule good? If this thing returns? Yeah, right, if this returns, that means that it was able to parse its own tree, everything's syntactically valid there. So we can say, okay, I knew I chose this rule. So then what's the first set? We're gonna have to check the next. So if it's not an atom or a quoted string. Check if it's a left angle bracket. Yeah, check if it's a less than similar, left angle bracket, right? So if it's in the first of angle address, we're gonna call unget token again, we're gonna call parse angle address, and we're gonna say, hey, this was name address, goes to angle address, right? So even though I have parsing angle address in both of these two if clauses, what's the difference here? Now, so the top one has a display name before the angle address, and I can tell which one just by looking at that one token, right? I know if it's a less than symbol, then it's gotta be, it can only possibly have come from this rule. Whereas if it's a quoted string or an atom, then I know it had to have come from this rule. It has to be a display name first followed by an angle address. What do I do if it's neither of these? Syntax, our old friend, syntax error. Okay, let's, we're gonna go through this quickly because this is very same. We do the same process. This has only one, so we check the first sets, and then we make sure it's in that first set otherwise it can syntax error. Ah, okay, so here we have an epsilon. So here's what becomes interesting, right? So display name list is either a word followed by a display name list or epsilon. All right, so we wanna do this parsing. What's the very first thing we do? You got it? Automatic? Yes, get token, right? We always get the token. All right, then what are we checking the first of? Word display name list, right? So we wanna make sure we always check the entire rule, and then we see, okay, there's no epsilon in words, so it's atom quoted string. All right, so we check. If it's an atom or it's a quoted string, then we call unget token, right? And we're gonna parse, what do we gotta parse first? Word first. A word, and then display name list, which is the same function, right? It's gonna happen again. And then we're gonna print out, hey, we parse display name list goes to word display name list. So what do we do? If it's not this, do we just say it's a syntax error? So then what do we check? What rule are we trying to check, right? So these comments here, right above this check, is trying to convey what we're attempting to check. The next condition we check if the next token is in the, or this token that we just got is in the follow set of word display name list. Because of the epsilon. That's how we have it. Why word display name list? Well, just display name list because there's no epsilon in words. Yeah, because that's us, right? So yeah, so this is, we are parsing display name list, right? If it goes to epsilon, then that token must have come, it must be one of the tokens in our follow set, right? So it must be either an atom, a quoted string, or a left angle bracket, right? So we can't check for epsilon. When we call get token, we never are going to get an epsilon, yeah. Don't you mean just an angle bracket? Because we're looking at just the follow set for display name. Oh, yes, sorry. I was looking at follow up word. Yeah. I didn't see that. Okay, yes, yes. Display name list, left angle bracket. Yeah, so we check, is the T type, is the token that we just got, is it a left angle bracket? If it is, then what do we do? If we just return what would happen to somebody who- Unget token return. Yeah, right? So we want to unget token, right? Because we have to make sure, because we just read that token and we just proved it actually came from after us, not from display name list, right? So we need to make sure we push that token back so that we're not consuming that input. Okay, then we print out, we say, okay, we got display name list, went to epsilon here. Right? So you can see this is a recursive call that's going to keep going until, as long as it's reading in essentially words, which are atoms or quoted strings, it's going to keep calling this until it reads a less than symbol. And then it's going to stop. This parse display name list, the lowest one is going to return. And then we're going to actually have parsed that whole list and to create that tree structure for us. And one of it's not one of these? Yeah, syntax error, right? We know it has to be either in one of these first sets or if there's an epsilon, it's going to be in our follow set. Now let's look at, I believe, yeah, there we go, that's a good one. So angle address is a left bracket, an address specification and a right bracket. Here's the first and the follows. If we want to parse this first thing we do. Get token. Get token, they said, all together. All right. So what do we want to check the first of? Yeah? You just make sure that it's a... What do we want to check the first set of if we want to not think about it? Yes, true. But our process is we want to check each of the rules and we want to check the first set of the entire rule, right? So we want to check the first set of left bracket address specification, right bracket, to know that it's this rule. If there's only one case, yes, that first set is going to be the same thing as the first set of angle address. But just to show that this isn't a special case of the other properties. Okay, so we check this. What's the first set of this sequence? Left angle bracket? We say, okay, if the t type is left angle bracket, do we call and get token? No. Do we not call it? Do we want to call it? It's a terminal. Because it's a terminal? What does that really say? Call it. You should call it. What am I trying to parse here? What am I trying to make a tree out of? The address. The... So what's the root of this tree? Angle address, right? And so what's the left-most child going to be? The left angle bracket, which is a terminal or non-terminal? Is it going to have any children? It's a terminal. No, it's a terminal. And then what's the second, the next child going to be? The address bracket. The address specification and the next child? The right angle bracket. The right angle bracket. So then do I want to call and get token? No. No, because address specification doesn't care about that left angle bracket. That left angle bracket came from the angle address. It's one of our children. So when we call parse address specification, we need to make sure that we've consumed and moved that input and said, yes, okay, we've matched up correctly. We know that we generated a left angle bracket, which means when you start parsing, you should parse after that left angle bracket. So now that I call this, am I done? Do I know that now everything's all good? No, no. What do I need to do? And once that's done, then you need to check it. There is a right angle bracket afterwards. How do I check if there's a right angle bracket after it? Get token. Yeah, so I want to, why don't I want to get another token? We haven't done this before. Because after you parsed out address specification, your lexer is looking right after that, but it hasn't gone onto the next character. Yeah, so we want to know, right? We're trying to build these children, right? And say, okay, could this input string have possibly come from an angle address? So we know if, the first case is it has to be a left bracket, right? And then we have to parse an address specification, which does something else that we don't care about. And then we have to make sure that we have a right angle bracket, otherwise it doesn't conform to this rule, right? So what if the type there is not a right angle bracket? So syntax error. Syntax error, right? It's a syntax error, it's a problem. And now do I know that I parsed this correctly? Do I parse this whole rule? Yep. Yeah, so I can say, okay, this was my rule, left bracket, angle specification, right bracket. What if it's not in any of there? Syntax error, yes. Okay, so we can see a similar thing here. We'll go over fairly quickly, because there's other things we want to get to. So we follow the same process. We're going to parse the token. We're going to check if it's in the first of domain, adamat, domain. And do we call unget token here? Hearing a mumble of yeses and nos. Anyone want to venture the thought? Yes. I'm going with no. You're going with no. Who's going with yes? DAA is a terminal. Oh, it's a terminal. Right, yeah, this is a terminal, right? So this is a token, so we want, all right, so they're all tokens, but this is a terminal, so we need to say that yes, this generated a terminal. We don't want to push that token back, right? We want to move the lexing forward and the parsing forward. And then we're going to call parse domain and then we're good. And then we check the first of quoted string at domain. Are we going to call unget token? No, right? For the same reasons. And then we're going to help with that. Otherwise we'll just say syntax error. Let's see, okay, this is a pretty simple one. We just have domain is dotted at, or dotted adam is what the DA stands for. Otherwise it gets too complicated, the long names are here. Okay, get the t token, get the t type. What are we checking? Yeah, if it's in the first set of DA, so what's that checking for? Yeah, t type equals DA, right? And then do we unget token? Do we call any other recursive parsing functions? Exactly, we're at a leaf now, right? We're at a leaf and we know we've read this domain adam, or dotted adam, right? So we say, okay, this is that rule, great. So we know there's nothing more we can do here. So we know whenever we get to domain, right? We're gonna stop and our parsing's gonna continue. But we stopped, but we've consumed a token from the input, from the input string, from our tokenizer, or from our lexer, right? So it's not a dotted adam. A word is an adam or a quoted string, so this should follow pretty straightforwardly. We get a token, we first check if it's an adam, then I say great, word goes to adam. Otherwise it's a quoted string, I say great, it's word goes quoted string. Otherwise it's a syntax error. Questions on parsing, how to write this parser? So because there's no questions, you'd be totally good if I put this on a midterm of here's a grammar, here's first and follow sets, write a recursive parser for this grammar. So let's encourage people to ask questions. There will be a questions like that on the midterms and finals, this is important. There'll also be homework questions. Cool, all right, good. So we can actually turn this into rules about how to do this. So we can say that, I didn't roll this out. We can say, okay, to write this, there's actually a pretty straightforward algorithm that we've been following while doing this. We've been trying to reason about it and trying to think about it, why this is correct. But we basically are gonna create for every non-terminal in our grammar, we're gonna create a function called parse, that name of that non-terminal. Why don't we create functions with parse terminals? I mean, non-terminals are going to generate terminals. So we don't have to worry about that there. So for each, when we're writing our parse A function, if we have a rule A goes to alpha, where I remember we've been using alpha as a sequence of tokens of terminals and non-terminals, we check if get token is in the first of alpha, which is that rule, then choose the production rule A goes to alpha, right? So that's what all of those if checks we were doing, right? We were checking the first set of that entire rule. So that's why I tried to make a point about not just checking the first set of the left bracket, but you have to check the first set of that entire rule. And we're gonna say for every terminal and non-terminal A and alpha, so we're gonna go through, iterate through all of those symbols. If it's a non-terminal, we call parse A, if A is a terminal, we check that get token is equal to that thing that we're expecting. And then we have this rule, which we have devised, right? Of how to check if epsilon is in the first set of alpha, right? Then we know that to check this, we have to check the follow set of A. And basically this last clause just says, hey, if none of these cases has happened, right? If none of the rules match, then we have a syntax error. Questions, confusions, general questions. I'm wondering why we haven't checked the type of the token and not the actual value of the token the whole time, I guess. What's the difference between the type of the token and the value of the token? So let's take it back to what are tokens, right? Like when we defined our ID token, right? Did that just match the string ID? Yeah, yes, it could. Does it just, if and only if, strictly match the string ID? No, right? The whole point of tokenization is so we could abstract all these strings and say, hey, I know there's an infinite number of identifiers you could write, but I will treat all of them, if they look this way, if they match this regular expression, I will treat them as the abstract token ID, right? And that way, for syntax purposes, I can make sure that when you're doing addition, you have an ID, a plus operator and an ID, right? Do you always have that? That you never have an ID plus semicolon, right? Because that's an invalid syntax. So that's why here we're dealing with tokens, right? We'll get to, the next thing we're gonna cover is, okay, we can build this tree, right, using this parser, but what does that tree mean? Which then you kind of have to go back to what are those IDs, what are the actual values of those IDs? But at this stage of the game, we only want to talk about abstract tokens. Now let's talk about some tricky cases that can arise when we want to write a parser. Not my day today. Third time's a charm. The buttons work. Success. Okay, let's consider, let's think about something like this, right? So can we do first set, so pretty much everything here? What's the, let's start, what's the first set of A? A epsilon, B epsilon, right? First set of D? E epsilon. E epsilon, first set of E? E epsilon. E epsilon. So the first set of S? A, B, C, D, E, F, G, D, E, F, G, F. Was it? A, B, C, D, E, F, F, epsilon. A, B, C. So why is it C? Because both A and B have epsilon's in their first set, which means we have the next one, which is C to the first set of S. And then we add D, E, and F, right? Right, so no epsilon, because there is not epsilon in any of the rules here in all of their first sets, right? Okay, we just want to, let's focus on writing the parse S. So at first, what's the first thing I do? Get the other token. Right, we call it lexer, we get a token. So do I check if it's an A, and then I'll know that it's this rule? It's worse. Yeah, so I want to check, what am I checking? What do my rules say? If it's in the first or the latter. Right, this entire thing, right? This is alpha. We have a rule S goes to alpha. So we want to say, is it in the first set of A, B, C? Right, so what's the first set of A, B, C? Is there an epsilon in there? Yes. Because of the C here, right? So yeah, so now I say, okay, is T type is equal to A, T type is equal to B, T type is equal to C. Then what am I going to do? So do I call? First A, first B. You don't know if you call on get. Somebody will get mold. Yeah, you call on get first, then first A, first B. So the question, the first question is, do I call on get token or not? Yes. Yes. Yes, why? Because your first, first thing in there is it isn't on terminal. Right, the first thing in here is in non-termal. So at this point, I don't know if this A came from this A, this B came from this B, or this C came from this little C again, right? I don't really care, but I know that the first thing is a big A, right? And I know that that's not the token that I, that's a non-terminal. So I didn't generate that A or that B or that C at this point, right? So I call parse A. I don't understand that. Which part of that? How do you know it's a big A? It has to be because of this rule. I'm using this first set to say, okay, in this first set, it's either T type, must be either A, B, or C. Looking one character ahead, that's why I can choose it's S goes to A, B, C over S goes to D, E, F, right? If it was in the first set of D, E, F, then I'd have to choose this other rule. So the first set helps me, the matching on the first set of the rule says, okay, I know it has to be this rule. So if it came, but I don't know that it actually came from this rule again, right? I've only looked one character ahead. This rule could define a string that's 100,000 characters long, right? Or a thousand tokens long. But I know that the first thing better be, like if I'm drawing my tree, right? I'm S, I know which of my children it should be. So now I need to say, okay, is the leftmost child, could it be an A? Right, and that's why I call parse A. So parse A is gonna go, it's gonna recursively build its own tree. It's gonna return. If it returns, then we know we parsed an A successfully. So then what do we parse? Pars B, which would be trying to build this. And then if this happens correctly, it's gonna build its own tree. It's gonna return.   Right, so then what am I checking? Then what? So now if I get here, I know I've properly created. So now after this, I know I've created this part of the tree. And so I've successfully parsed an A, I've successfully parsed a B, and I've successfully parsed a C. So now I know that this string did come from this grammar, right? S produced this, whatever my input string is. And so the kind of part of the point here is we don't have to special case this issue of, okay, we have a C here but there's epsilon's and A or B so I could check if it's a C. That means it must have gone to here. We don't have to worry about that because A and B will deal with the case that they went to epsilon, right? All we know is that after A and B return, we better have a C still to parse otherwise something went wrong. Questions on this example? So what if I had changed it like this? How would that change right here? It would just go A, C. Or there wouldn't be a parse B and then inside of it it would go off B. Yeah, so the first thing actually that would change but that's fine because we didn't pre-calculate it, right? Is that first set here would change? Yeah. Right, the first set of this is only A, C, right? There's no B because there's no epsilon and the first set is a little C. But how does this change? Get rid of parse B. Get rid of parse B. Move it actually. I'm not gonna do that but I will rewrite it somewhere else. Right. Where should I rewrite it? So you keep that all that stuff, and then after that then you do another get token. And then if- After this if clause here? Here? Yeah. Or not, get rid of that, that crack right above it. Okay, cool. All right. What did she need to get token first? Because you got your token, that was a C. So you will know that then you need to get the next token to see if it's a B. Do I have to do that though? Do I have any choice here about what this token is gonna be? I guess that could be handle with parse B. Yeah right, parse B is gonna make sure that its token is correct and that it's properly parsing a B. Yeah, so in this case the tree we're generating right is S, we've had S goes to A, A generates something. Then we check, hey we better make sure that next thing is a C, right? Which is what this check does. Then we say, okay whatever's after that is a B, right? We have absolutely no choice about what this next symbol is. And then if it successfully returns, then we know we have, right? We've successfully parsed that string. What may I also wanna check with S about it? But at the end here, right? So I do this, let's say I have everything properly, I've checked it, there's no syntax error in any of those other strings. What then do I need to check? Does that just mean that it's a good string? Yeah. You wanna check for end file? Wanna check for end file, why? Because if there's extra stuff, then you also have a problem. When you're expecting to end it, opt to. Right, so if we look at this grammar, right? If I have the string, we'll keep it as it is here. If I have the string A, C, B, A, B, C, right? So we have, we can have S goes to A, which goes to little A, right, which matches here. We have S goes to C, which matches here. We have S goes to big B, which goes to little B here. But there's still extra stuff, but I've parsed all of S. There's no possible way I could get these more, right? So this string is not in this grammar. So we wanna make sure we check. Okay, we'll do one more check at the end here. So do we have to do this in everything? Just starting. Right, just a starting non-terminal. Which is the starting non-terminal? Traditionally, S, I mean, that's the way we've been. Right, so S has been the starting non-terminal. If it's not specified, S is the starting non-terminal. Could be a different token. It could be a different token. Right, exactly. If it's not end-of-file, like we know it, if it's to be correct, it has to be an end-of-file after S. So we've parsed all of S's. This makes sure that we actually have a tree that looks like this structure and that there's nothing after the input string here. Questions on this? So, again, when do you do this check for, well, checking if it's an end-of-file, do you just run this after the last token and what your parsing on it? You would do this after all of the rules for checking all the rules for S. So you'd say, okay, check the first set of this rule. S goes the first set of this rule. If it is, then you parse all those. Else, otherwise, if it's in the first set of this rule, then you parse that rule. Otherwise, the syntax error. And then after all of that, right, if you've successfully made it there, you correctly parsed the whole tree, then you wanna make sure there's nothing more after. Semantics. Now we get on to semantics. That's analysis in the dust. So what is semantics? So what have we done so far? What was lexical? What is lexors? What is lexical analysis? What are they doing for us? What is it? Yeah, they're turning, right? So they're turning bytes into tokens, right? Because like we just talked about today, right? We don't care that IDs can be, that you can specify, you know, an infinite number of things for an ID. All we care about is something at an abstract level of an ID. So then what did syntax analysis help us to find from these, so syntax analysis, right? Turns these bytes, turns them into a sequence of tokens. And what is syntax analysis helpful for? Yeah, does it? So not necessarily, not quite a valid program yet, but is this a valid sequence of tokens, right? Did this sequence of tokens, is it possible that it came from this grammar, right? Does the grammar that we have generate this sequence of tokens? What is kind of the data structure we want to think about from syntax analysis that we're creating? The tree. The tree, the parse tree, right? That's what we want to think about these things. Just thinking about them in the parse tree. So think about a language like, I didn't bring the book. Think about a language like C, right? There's a grammar that specifies, a context-free grammar that specifies what a C program looks like. So is every possible string, every possible sequence of tokens that conforms to that grammar, is it a valid C program? Can you run every program that the grammar generates? No, I know. It's perfectly possible to produce a program that's syntactically correct that won't work. If you've ever gotten a segmentation fault, this is what you want to do. Has nobody done that before? Right? You compile a program. It maybe compiles fine, so compile, I mean, it's syntax checks, right? So it doesn't say you're missing a semi-colon, it doesn't say you have mismatched parentheses, right? It looks syntactically valid, but it's meaningless to actually try to execute, right? Because you're accessing memory or the compiler's also really good about saving you from a lot of other errors, right? And it was just syntax, right? Like what happens if you try to use a variable that's never been declared in C or C++? That's an error, right? It actually won't even compile, but it's syntactically correct, right? There's nothing wrong with your syntax. And so semantics, that's where it gets into the semantics. Semantics means is about what does that parse tree mean? And how do we know what parts of that, like what parse trees are valid or make sense in our language, right? So up until now, we've been doing some kind of mechanical in some sense or turning bytes into tokens, sequence of tokens, then turning that sequence of tokens into a tree. Now we get into some kind of deeper, how do we design languages and how do I, how do we talk about the design of a language? Like how do I, can I just give you a context free grammar and you can program in my language? That'd be kind of awesome, right? So how did you learn? How to program in Java or C or C++? Examples. What was that? Trial and error. Trial and error? Guided trial and error though, right? You weren't just randomly typing things in to see. Right, you had this search space, but you kind of knew what was valid, so you tried different things to see if they would work. It's the old book he's writing in Shakespeare. Yeah.  So how do we do that? So what properties, so if we wanted to find our language semantics, right? We wanna, what are we trying to get out of language semantics? Why is this important? Who is it important for? Do we care? Ourselves, like our personal selves, like self growth then. Maybe. Why do you care about the semantics of Java or C or C++? If you want to make sense, why? So it works. So it works. What works? Yes, because you want a program in that language, right? You want to write a program in that language and why, so when you say it works, what does that mean? Well, it doesn't mean that it works. When you type in, it gives you the expected output. Yes, right? So that the machine is going to do what you expect it to do, right? That's basically the basis of programming, right? We're trying to convince this stupid, incredibly fast machine to do something for us, right? But if, and all we have is our silly little English style, like that's the way we wanna do it in, but it wants ones and zeros, right? And so, how can we make sure that what we envision, how we want our program to work, how can we make sure that the computer understands the same thing, right? Because at the end of the day, if it doesn't do it, you're wrong, right? Doesn't matter how much, you can't just will the computer to do what you want it to do, as much as we all wish we could.  I'd be worried about going the other way, though. Right. Right. Programming. Exactly. So what do you want when you try, when you're trying to study, when you're trying to understand the programming language, what do you want from the semantics? It needs to be very clear about the program and to understand what the language will support, but also for the computer to make sense of what the program is trying to tell it. Yeah, so there's two different. It's not only you developing the program, it's also the compiler writer, right? They want to make sure that when you, the programmer, write something, if it's in the semantics, it better do that thing, right, for you. So it needs to be precise, right? It needs to be precise. Okay, this is what happens. What other features are useful? What other things? Human readable? Yes, right? You want to be able to understand it, right, as a person, you know, it's not, machines aren't reading, most of the time, semantic documentation, right? It's humans. What about predictability? Is that important? Yeah. Yeah? You want to make sure that the program you wrote today is going to work a week from now or on Tuesdays and Wednesdays, not on Fridays, right? How difficult would it be to write a program like that? There's a language called intercal. There's a joke language, but you have to say please enough times. It'll complain that you didn't say please enough. It's actually really cool. Oh, spelling is important. So what if the semantics, I don't know, what if they're incomplete? Bad spelling. What if they're incomplete? Is that useful? If it doesn't specify all possible, right? If it doesn't say how something should happen and you write a program that takes advantage of that, what happens? What does a machine do? Exactly. Yeah, we can't predict it. It's about predictability. It's about preciseness. It's about conveying our thoughts and our algorithms to the machine. Okay, so when we get back, I want you to think about on Monday how we can specify language semantics. So think about the ways you've learned programming languages and you learn, what does it mean when I call a function, when I add two numbers together, when I concatenate strings? How did I learn that in one of the different ways that we made so? Say a number? And then the un-get broken. See? What's the kind of logic? What's the kind of logic?


I hear the story all the time from Linux users, or new to Linux users especially. They switch from Windows to Linux. They're excited to make the switch, to finally give Linux a try. And they run Linux for a few weeks or a few months, and then they become frustrated. They become angry. They become disillusioned, disenfranchised. Linux wasn't what they thought it was going to be, and they quit. They just totally quit Linux, and they go running back to Windows. And why does this happen? Well I think part of the reason this happens, some of it is psychological. And by psychological what I mean is, these people that switch to Linux, sometimes they are living in imagination. They imagine Linux is going to be something that it's not, right? And then when they come over to Linux, and it's not at all what they thought it was going to be in their head. You know obviously, that's when they become frustrated and angry. And a lot of this can be attributed to something called the Dunning-Kruger effect. I'm sure you guys are familiar with Dunning-Kruger. I've got a chart here that I can pull up here.  I guess it's a social media thing. You know how social media is, where every month there's new hot buzzwords people love to use. And all of a sudden a couple of years ago I saw everybody just throwing out this Dunning-Kruger effect for everything, you know, to describe practically everything in places where it really doesn't belong. But for the topic of today's video, the Dunning-Kruger effect actually is pretty applicable because I think this is part of the reason so many new to Linux users get frustrated and quit and go back to Windows. So for those of you that are not familiar with the Dunning-Kruger effect, let me move my head out of the way, basically we have this chart, we have our X and Y axes here. And this axis here is the confidence axis. So we go from low confidence to high confidence. And on this axis we have competence, and we go from low competence to high competence or expert competence, right? So it's confidence versus competence. And what happens is when you first learn about a topic or a subject, you first become interested in something. Most people have an over-inflated sense of confidence and competence, right? This is this point here. You first learn about something and you just skyrocket all the way to this point here. And what this is, is hubris, right? You imagine that you actually know more about the topic than you really do. I mean you just learned about it. And all of a sudden you feel like, you know what, I know enough I'm already an expert. I know what to expect. I know what I'm getting into. So for the topic of today's video, let's imagine you just found out about this wonderful operating system that is Linux. And you spent a few weeks reading up about it. You see it on web forms. You watch a few YouTube videos by content creators like me and many other Linux content creators.  Or maybe you've played around with Linux in a virtual machine. And all of a sudden, you know what, I know what that thing's about. So let me go ahead and install it on physical hardware, on my main production machines, and let me try it out. And quickly, you know, now the graphs start swinging this way because Linux is not what you thought it was at all, because you really didn't know what Linux was until you actually really use it, until you actually have experience with it. You know, this again was just hubris. Now you start using it and it's not quite what you thought it was, right? Now all of a sudden you're thinking, wow, this Linux thing, this is harder than I thought it was. I'm running into all of these problems. I'm finding these roadblocks on occasion that I just did not expect to be here. And then at some point, you know, the pain points with Linux really start piling up as you swing low here until you get to this point here. This is the low point. This is the valley of despair or the valley of hopelessness. This is where, you know what, you're certain that this is, this Linux thing is horrible. You can never make this work. It's just too hard for you to play with, to understand. You know what? I have to run back to Windows and this is the quitting point. So this low point on the Dunning Kruger graph here, that is where people quit, right? They get to that absolute bottom and that's where they decide to quit. But here's the thing. They just not quit. Look what happens to the graph after that. It starts swinging back up, right?  Now this upward slope is a slope of hope because all of a sudden you start gaining more confidence and more confidence to where now you start feeling like you're in flow with the subject, like you actually are starting to understand this. And you actually kind of surprised that you had so many pain points along this way because now you're realizing, hey, this wasn't as hard as I thought it was. And if you stay with it long enough, eventually you get to this point to where this is no longer incompetence, hubris, this is no longer thinking you actually know stuff you actually don't know. Now you actually do know the subject. Now you've actually mastered it. Again, if you just stick with it long enough. Now, of course, everyone that quits Linux to go back to Windows, they're not suffering from this Dunning-Kruger effect, right? Some people have used Linux for many years. I know all about Linux and they have to go back to Windows for job reasons or school reasons or specialty niche proprietary software reasons as software that doesn't exist on Linux kinds of reasons. But a lot of people, especially the ones that use Linux for a very short period of time and go back to Windows, they just run back to Windows. A lot of those fall into this Dunning-Kruger trap where, you know, they came to it all wrong. They imagined Linux was one thing and in their imagination, right? Because they imagine Linux is this and they know this imaginary Linux that they're thinking of. They of course think they're an expert. It's actually kind of natural to think you're an expert at something when you imagine it's something because obviously what you imagine, you know. So you imagine things like Linux never breaks, right? Maybe you didn't imagine that. Maybe people on the internet told you so. But certainly people do imagine things like, you know, they hear how great Wayland is, you know, some of the Wayland desktop environments and compositors and things like that. So some of these new to Linux users these days are trying some of these Wayland stand-alone window managers and they're not what they thought they would be because they're very beta kind of software, kind of buggy, kind of, you know, experimental kind of software and they're running into all these issues and they don't understand because Wayland was supposed to be the future. That's what people were telling, well, no, that's not what, if you'd actually did a little more research, you would know that there were gonna be some pain points along the way or maybe I've seen this with software developers, a project dies. A very popular software project dies and somebody decides, I'm going to take this project and fork it and it's going to be reborn again because other people like me are going to join along the way and we're all gonna do this wonderful thing where we take this very complicated piece of software and we keep it going and we even improve on it and, you know, patch it and things like that and that almost never happens again because people live in imagination, right? They imagine this utopia thing that was supposed to happen and really, does that happen? And you just have to be careful living in imagination but really, this video is for the new to Linux user because I know a lot of you guys are gonna be watching this video. You haven't been using Linux for very long and you're running into issues. You're running into these pain points. You're getting a little frustrated, maybe a lot frustrated, maybe you're getting to the point where you're actually angry and you're angry at Linux and you want to run back to Windows, what should you do? Well, let's take a look at the graph again because the graph makes it pretty obvious what you should do, right? If you're wanting to quit, chances are you're at the bottom of the graph because that is the point of despair, the point of hopelessness. So you're probably already at the absolute worst part of your Linux experience. You're at it right now. So all you have to do if you're at the bottom of this graph is just stick with it because things are about to turn up and turn up quite quickly. So just keep going, all right? The solution here is just to keep giving it a little more time because right now, the reason you're feeling despair, you're feeling hopelessness is because you're just not smart enough. Smart's not a good word because that signifies maybe you're not intelligent enough. This isn't an intelligence problem. This is a wisdom problem. It's an experience problem. You just haven't been at it long enough. So again, just keep at it. Just keep going. If you keep going, you are going to feel better, right? Because this point is just a little bit further down the road and eventually you get to this point to where not only do you feel better, but you're happy. You are glad you stuck with this and you'll get to the point where you can't imagine running anything but Linux. You can't imagine ever going back to Windows. That's where many long-time Linux users are. We can't imagine using a different operating system. So cheer up a little bit. If you're thinking about quitting, just know it's kind of a normal thing, right? That's not unusual. That's not a negative mark on you in any way that we all go through this kind of thing, not just with Linux, but with every task, every topic of life, everything, every endeavor that we undertake. We have this dip and then we come back up again. Just stick with it. Just keep going. Now before I go, I need to think a few special people. I need to think the producers of this episode. And of course I'm talking about Gabe James, Matt Paul, Steve West, Armoredragon, Commander Angry, George Lee, Matthew, Methos, Nate, Erion, Paul, Peace, Archimoud, or Reality's World Less, Red Prophet, Roland, Solastry, Tulsa, Dealer, Wardji, N2, and Ubuntu, and Willie, these guys, they're my high-steer patrons over on Patreon without these guys. This episode about people wanting to quit Linux due to the Dunning-Kruger effect. It would not have been possible. The show's also brought to you by each and every one of these fine ladies and gentlemen, all these names you're seeing on the screen right now. These are all my supporters over on Patreon. I don't have any corporate sponsors. If you like my work, I'm gonna see more videos about Linux, free and open source software, subscribe to DistroTube over on Patreon. Peace.


Thanks for checking out this unboxing video and this is my second big old box of stuff Or as people fondly have come to know it as Bobo's as you can see this is the Bobo's Robot who is the mascot for Bobo's get a good look Yes, and that looks like it was hand-drawn on there, which I figure that would take a decent amount of time So that's some dedication, but any rate the last box was a nice one quite liked it So very very excited to check this one out. I know a few items are a few Topics that will show up in here one Rob did say that he would get me a twin peaks item something twin peaks. I'm not expecting much though I know there's not a ton of twin peaks stuff out there So even if it's just like a magnet or a button or whatever I'm gonna be psyched because I'm a huge twin peaks fan and especially with the show about to restart in May it's gonna be awesome the other thing I know is a Well, I won't say it I'll say it when when it shows up because it's a Specific excuse me specific thing and I'll talk about it when when it actually comes up But here we go my second Bobo's. I'm hoping it holds just like the first one that it's really awesome Also, the other thing I want to say as I cut this open with my trusty little Letter opener. It's what they call it One thing I wanted to say is that we Is that it's awesome that Rob and Rob Rice and the bogus family actually not only take the Questionnaire they don't just do the questionnaire that's online But also if you put up any sort of unboxing videos on YouTube They're gonna find them and they're gonna watch them because the very first unboxing video I did Rob found it watched it commented on it And that's when he said there will be a twin piece item coming your way and then he commented and Later and said there will be something else and that's why I know that there's another whoops. I didn't cut this all the way Guess I should have done that. It's too excited. You know so I really like that aspect because there's even more of a Aspect of knowing the people who are really doing this for you and feeling like they know you and they care And that's one of the really cool things because a lot of the subscription boxes that you can do and collectibles boxes Not much of a personal feel to it. So That's nice about this. All right gonna get into this and this box is bigger and heftier than last one So I'm very interested to see what happens. Oh, there's stuff right on the top and I want to take this out first Feels like a magnet and a button on the top so we do the button first Oh I love this button. Oh my god. I love this button come play with us Danny It's the twins from the shining love the shining. Oh, let's see if I can get you to see this without much of any glare No, there's gonna be plenty of glare. You can see it. All right, though There you go Yeah, that's a cool button. I love the shining big fan of shining actually saw the shining in the theater Back in October because there's a company called Fathom events and they do like older films They bring them back to the theater for like one or two nights And they were doing two nights for the shining and I was able to go for one of those nights Totally changes the experience of the film. I was a fan of the shining prior to that I love the shining after that experience the Seeing it on the big screen gives it more of an immersive feel as Does any film, you know seeing it in the theater, but that works particularly well because the the actual Hotel is a character in it so in itself in that film and when you feel like you're inside of it Basically because you're in the theater and you can focus on more you can see more of it You can feel more of it. It's just it's life-changing if you ever get the opportunity to see them in the theater Life-changing when it comes to that film. So anyway back to the box. I got sidetracked cool button very cool button All right, the magnet. Oh Another good one another very good one and I've been meaning to re-watch this because it is a really cool older horror film Stephen King's it So got a little bit of a Stephen King theme going on here. Totally fine with me. Love me some Stephen King films Haven't really I don't think I've read a single thing by Stephen King though Maybe I should I don't know I understand that his writing style is a little iffy with with if people will actually like really like it or not just because it's kind of It you have to have a particular taste to like his writing style, but the stories are obviously great next thing feels like a book Feels like a book Check this out. I like the idea of books. Oh my god This is it. This is the Twin Peaks item, and this is cool. This is really cool I love this I knew about this and I had thought about getting it because I was like Oh, it's a little extra content about the original Twin Peaks It's the secret diary of Laura Palmer with a forward by Twin Peaks co-creators Mark Frost and David Lynch, and I love David Lynch So awesome very very cool Secret diary of Laura Palmer super super awesome. I wonder where you got this I mean it looks like it was once at a library because that's one of those like You know library code things for on there, so I guess they sold it off because not enough people were reading it or something But this is so cool Like I said, I thought about getting this at one point So Rob you man you and the fam That's good. That's three good items. I'm very happy already The next thing is wrapped up, and I think this is the thing I knew about that he told me Let's see. Oh No, oh, I love it. I love it. I love it so much.  They look so good. So Rob was able to track down a series one mystery mini And it's one of the ones I really really really would want from series one, and it's hard to find series one It's ash.  Look at it. There's like splatter on there with a blood splatter the saw Looks great. Got the shotgun strapped to his back. I mean the detail on these things are amazing I'm so excited to have this Because Rob had posted and he said that he got me a series one And I was like through the roof happy when I found out about that I was telling my wife to I was like Rob said he tracked down a series one mystery horror mystery mini And I'm so psyched I wonder who it could be and I looked at all of them and I was just like honestly anyone it is I'm gonna be excited because they were really cool But this in particular because I'm a huge Bruce Campbell fan I love Bruce Campbell and especially ash versus evil dead has been such a great show so This is great. This is going in front of all the other horror mystery minis that I have downstairs for display This box is killing it this box. I can't even believe that it still goes on like that's the nuts thing ah Smarties like last time like smarties fan when I need my little sugar fix. What is this thing? This feels weird. I don't know what this is. It's like kind of heavy a little metal. Oh Sweet. Oh my gosh. Oh, this is so great because if you also watch other videos that I have on my channel I do beer reviews and so Rob and fam have hooked me hooked me up with a Friday the 13th Jason Voorhees bottle opener. That is so cool I'll be using this. I'm gonna use this to open Many bottles of beer It looks great, too, it's heavy. That's like good metal like nicely made bottle opener That's nice. This is I can't believe there's more in here like to be to be honest like I'm already psyched with that. I cannot believe there's more Things like two more items feels like maybe a pack of some sort of cards in here. Oh Fango fangoria collect horror collector cards. I didn't know fangoria did anything I love I mean obviously a little horror stuff might as well open it I don't want to keep it shut cuz too many people watching would just be curious like what's in there so Okay, so it looks like a lot of it is some of it's like extra stuff but extra photos, but a lot of its photos from the The covers of fangoria magazines not a huge fangoria fan, but I have a huge horror fan in general So some of these things are cool. You got that one The original no, not the original fly the remake fly Cool Yep, oh a grand one. All right, huh the shining. Yeah There you go. Good stuff. That's cool Those are funny if I'm gonna get typically not big on packs of cards But if I'm gonna packs of cards horror is that's fine with me. I like that. I'm a fan and Yes, I have a friend who has one of these and I'm now excited to also have one of them because I'm a I love This show who doesn't friggin love this show Breaking Bad and it's Walter friggin white My god, what a show and what a what a character and what a great job Brian Cranston did playing that character. I'm sorry the The glare on it's kind of rough, but as you can see it's Walter white.  He's got some Sunglasses that you can put on him, too. I will not be taking this out of the box because I Mean it's it's a cool figure. So I'm gonna keep it in as a collectible. Oh my god I can't believe this is a nuts box man. This box is crazy good. This is I Was gonna say probably this hands-down is the best like subscription type box. I've gotten Period. It's it. This is the best one. That's amazing. Love it. And there's something else. Jesus Oh my gosh This is cool. I even know this existed. This is really cool This community protected neighborhood watch and the neighborhood watch is The family from the Czech Texas chainsaw massacre This is a metal plate like one of those ones that you can either drill into something or you can You know find a way to like tape it up or hang it up. However, like sticky putty, whatever This community protected neighborhood watch. Look at them. I'll get in closer on actually them Look at it. There's the fam very nice That's funny. That's cool and funny. So that was I don't want I'm not gonna say that was it I mean, that's a lot of stuff. I really did not expect this much stuff, but this is really cool Like all of it, but what's my What am I most excited about? Obviously this That even though this is a very small item. This is probably the thing I'm most excited about because it's Hard to get these and it's ash Rob, thank you. I love it all the Walter white is really cool and blown away by the diary I was like, what what type of Twin Peaks thing is he gonna get and I thought maybe like a Button, I was thinking it would probably be like a button Maybe a magnet, but that's way more involved and the amount of time that that's gonna give me of Revisiting the Twin Peaks world as I read it So cool, man The it's Magnet very nice. I'll put that on my beer fridge in the basement Which is where I put the last one which nightmare on Elm Street. I believe the pin or I'm sorry button Very cool Shining button. Like I said, love the bun. The guy gets me. He watches my videos I need to crack some beers and I need to do it horror style. So that's great. Man. This is so cool I'm a fan. I'm such a fan of those. I can't wait for my wife to get home so I can show her what I got She's gonna be blown away too. She's gonna be like, wow, that's a really great box for you But anyway, I just feel like I'm gushing so much. I really can't thank Bobo's enough It's great. If you are out there watching you've been on the fence about Bobo's I think this kind of speaks to Why you should Purchase some Bobo's but know that it's limited to 300 per month because you know, they need to be able to keep up But it's just a family of three. So, you know, that's what happens But they've really caught up on their backlog because they had a backlog for a little bit and this showed up relatively fast For for what I was expecting.  I'm gonna be Signing up again It may not be like immediately, but maybe next month or in a week or maybe I won't be able to contain myself And it'll be tonight or in a day or two. I don't know but anyway, thank you everyone for checking this out Thank you, Rob Rice and your family and Bobo's Doing it right. I'm gonna put this Ash Williams figure downstairs and just marvel at it Thank you so much everyone and don't forget keep it brutal Sorry real quick needed to add I'm sorry real quick. I needed to add on that. I found another button I was just about to get rid of the box and it was like all the way up in the corner I didn't you know, so I found another button.  Very cool. Look at that Get some of the dad or the original So cool. Love it another awesome thing But anyway, I'll let you go and for the second time keep it brutal