Advanced Macros Welcome back to our Sweet. js Get Started course. In this third module we're going to be having a look at some advanced macros that we could write with Sweet. js and some advanced concepts that we can combine with Sweet. js macros to make them more powerful and easier to work with. The first advanced concept that I want to introduce is adding restrictions to the patterns that we're creating, so that we can make sure that we only are matching _____ be more specifically on the things that we want to match with inside of our pattern usage. The order of this is that we can create classes for the tokens that we're going to be working with, so the tokens are the variables that we're capturing with inside of our Sweet. js patterns. The reason we might want to do this is that we don't want to treat every single token with inside of our pattern in the same manner. By default we can use any kind of token classification with inside of our pattern and they'll be parsed as valid by Sweet. js, but we might not want that to happen. We might want to be able to treat the usage of a variable with inside of our Sweet. js macro differently to the way we do an assignment statement with inside the macro itself, so this is what we would want to use token classes to make sure that we do some restrictions and their incorrect usages can be caught at compile time. Ultimately the goal is that we can be able to do different things based on the types of tokens that we're capturing with inside of our macro, so some of these that we don't have to create as many different named macros to do what are similar things, instead we can have different types of patterns and classes of those tokens with inside the patterns to make sure that we're capturing and performing the operations we want to on the correct part of our macro definition.