pub enum Token {
Unsigned(u16),
Signed(i16),
Reg(u8),
Ident(Ident),
Directive(String),
String(String),
Colon,
Comma,
Comment,
NewLine,
}
Expand description
A unit of information in LC3 source code.
Variants§
Unsigned(u16)
An unsigned numeric value (e.g., 9
, #14
, x7F
, etc.)
Signed(i16)
A signed numeric value (e.g., -9
, #-14
, x-7F
, etc.)
Reg(u8)
A register value (i.e., R0
-R7
)
Ident(Ident)
An identifier.
This can refer to either:
- a label (e.g.,
IF
,WHILE
,ENDIF
,IF1
) - an instruction (e.g.
ADD
,AND
,NOT
)
This token type is case-insensitive.
Directive(String)
A directive (e.g., .orig
, .end
).
String(String)
A string literal (e.g., "Hello!"
)
Colon
A colon, which can optionally appear after labels
Comma
A comma, which delineate operands of an instruction
Comment
A comment, which starts with a semicolon and spans the remaining part of the line.
NewLine
A new line
Trait Implementations§
Source§impl<'s> Logos<'s> for Token
impl<'s> Logos<'s> for Token
Source§type Error = LexErr
type Error = LexErr
Error type returned by the lexer. This can be set using
#[logos(error = MyError)]
. Defaults to ()
if not set.Source§type Extras = ()
type Extras = ()
Associated type
Extras
for the particular lexer. This can be set using
#[logos(extras = MyExtras)]
and accessed inside callbacks.Source§type Source = str
type Source = str
Source type this token can be lexed from. This will default to
str
,
unless one of the defined patterns explicitly uses non-unicode byte values
or byte slices, in which case that implementation will use [u8]
.Source§fn lex(lex: &mut Lexer<'s, Self>)
fn lex(lex: &mut Lexer<'s, Self>)
The heart of Logos. Called by the
Lexer
. The implementation for this function
is generated by the logos-derive
crate.impl Eq for Token
impl StructuralPartialEq for Token
Auto Trait Implementations§
impl Freeze for Token
impl RefUnwindSafe for Token
impl Send for Token
impl Sync for Token
impl Unpin for Token
impl UnwindSafe for Token
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more