this post was submitted on 16 Oct 2024
75 points (100.0% liked)

Programmer Humor

32332 readers
43 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 

So, this uses a macro, but if you're thinking anything is possible with a macro, it's actually not in Rust. The input does still need to parse as valid Rust tokens.

Which means the authors asked themselves at some point: Is the Rust syntax a superset of the Python syntax?
And well, it's not. In particular, some Python keywords will just be tokenized as an identifier (like a variable name).

But it is close enough that the authors decided against requiring a massive string to be passed in, which does amuse me. ๐Ÿ™ƒ

you are viewing a single comment's thread
view the rest of the comments
[โ€“] JoYo@lemmy.ml 6 points 1 week ago* (last edited 1 week ago) (1 children)

is it converting the syntax to rust? wouldn't that be easier at the LLIL or i guess python bytecode level?

[โ€“] Ephera@lemmy.ml 9 points 1 week ago* (last edited 1 week ago) (1 children)

From what I understand, it works like this:

  1. Rust compiler reads the pseudo-Python and tokenizes it according to Rust's rules.
  2. Macro code converts the tokens back to (now proper) Python, while filling in the captured variables. I believe, this is the code that does this.
  3. Python code is executed in an actual Python interpreter, via PyO3.
[โ€“] JoYo@lemmy.ml 4 points 1 week ago

oh ok nm i misunderstood. thanks