5 ms·
TS does not have macro facilities. Proper macros operate on AST, which it to say, it is exactly like the Expression stuff in C#, except it can represent the en
by int_19h 2y ago
TS does not have macro facilities.
Proper macros operate on AST, which it to say, it is exactly like the Expression stuff in C#, except it can represent the entirety of the language instead of some subset of it (C# doesn't even fully support the entirety of System.Linq.Expressions - e.g. if you want LoopExpression, you have to spell the tree out explicitly itself).
- CharlieDigital 2y ago> TS does not have macro facilities That I'm aware; I'm curious how this works on Go or Rust.
- int_19h 2y agoFor details, take a look at the examples here: https://doc.rust-lang.org/book/ch20-06-macros.html https://doc.rust-lang.org/book/ch20-06-macros.html For procedural macros, what you get is not even the syntax tree but rather the token tree: https://doc.rust-lang.org/proc_macro/struct.TokenStream.html https://doc.rust-lang.org/proc_macro/struct.TokenStream.html. You can then use stdlib to parse that into a Rust syntax tree (which is roughly the equivalent of Expression): https://docs.rs/syn/latest/syn/enum.Expr.html https://docs.rs/syn/latest/syn/enum.Expr.html Or you can do your own parsing, meaning that you can handle pretty much any syntax that can be lexed as Rust tokens. Which means that e.g. the C# LINQ syntactic sugar (from ... select ... where etc) can also be implemented as a macro. Or you could handle raw SQL and do typechecking on it.