Hello, so am doing a little research on pragmas, what i commonly see about them is, they are metadata, and the compiler can use that metadata to handle a statement differently. Cool. Then i read this doc : https://nim-docs.readthedocs.io/en/latest/manual/pragmas/user_defined_pragmas/ And i saw user defined pragmas, based on macros and the doc showed the following : template command(name: string, def: untyped) = discard proc p() {.command("print").} = discard This is translated to: command("print"): proc p() = discard greate, so i asked assked an LLM a question which is basically simplified as "Can i use a pragma to trigger a macro call on a statement" .... and it gave me this long explanation on how macros only work on the statements you call them on, and if you want to use a pragma to trigger some "macro" handling, you will need to have a macro that that takes the entire module as an input and find the statements that have the defined "pragma" and modify their ast. So now am really confused, because the doc seems to say that the pragma is translated to something else as shown in the above command template example, how ever, the llm is saying, the pragma just adds extra data to the AST, eg: "VarSection IdentDefs PragmaExpr Ident "y" Pragma Call Ident "addToSequence" StrLit "hi" Ident "string" StrLit "hello"" and that i will need a seprate macro to process then entire module to find statements with that pragmas and handle them. Which is which ?