Hey,

Without answering your question, I think you might be better off posting
your question at reddit.com/r/rust because this mailing list has very low
participation.

On Wed, Jan 27, 2016 at 11:18 AM, Johan Tibell <[email protected]>
wrote:

> Hi!
>
> I'm trying to read the compiler code (mostly because I'm curious) and
> right now I'm trying to understand the handling of negative integer/float
> literals.
>
> In token.rs we have:
>
>     pub enum Lit {
>         ...
>         Integer(ast::Name),
>         Float(ast::Name),
>         ...
>     }
>
> So at this stage these literals are still just (interned) strings. In
> lexer/mod.rs we can see that the lexer doesn't consume any plus/minus
> sign, so the above tokens don't contain them.
>
> In ast.rs we have:
>
>     pub enum Expr_ {
>         ...
>         /// A literal (For example: `1u8`, `"foo"`)
>         ExprLit(P<Lit>),
>         ...
>     }
>
>     pub enum Lit_ {
>         ...
>         /// An integer literal (`1u8`)
>         LitInt(u64, LitIntType),
>         /// A float literal (`1f64` or `1E10f64`)
>         LitFloat(InternedString, FloatTy),
>         /// A float literal without a suffix (`1.0 or 1.0E10`)
>         LitFloatUnsuffixed(InternedString),
>         ...
>     }
>
>     pub enum Sign {
>         Minus,
>         Plus
>     }
>
>     pub enum LitIntType {
>         SignedIntLit(IntTy, Sign),
>         UnsignedIntLit(UintTy),
>         UnsuffixedIntLit(Sign)
>     }
>
> I'd expect that somewhere in the code we'd construct e.g. an SignedIntLit
> with a Minus in it, but I cannot find a single place that does this after
> looking for all uses of ast::Minus ast::SignedIntLit, etc.
>
> So my question is, *since the sign isn't lexed together with the literal,
> how is it eventually added to the literal that's stored in in e.g.
> ast::LitInt?*
>
> -- Johan
>
>
> _______________________________________________
> Rust-dev mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/rust-dev
>
>
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to