pub enum Token {
Show 42 variants
Word(String),
Pipe,
RedirOut,
RedirOutClobber,
RedirIn,
RedirAppend,
RedirHereDoc(String, bool),
RedirHereString(String),
RedirectFdIn(i32, String),
RedirectFdOut(i32, String),
RedirectFdOutClobber(i32, String),
RedirectFdAppend(i32, String),
RedirectFdDup(i32, i32),
RedirectFdClose(i32),
RedirectFdInOut(i32, String),
If,
Then,
Else,
Elif,
Fi,
Case,
In,
Esac,
DoubleSemicolon,
Semicolon,
RightParen,
LeftParen,
LeftBrace,
RightBrace,
Newline,
Local,
Return,
For,
Do,
Done,
While,
Until,
Break,
Continue,
And,
Or,
Bang,
}Expand description
Represents a lexical token in shell syntax.
Each variant corresponds to a specific syntactic element that can appear in shell commands. The lexer produces a stream of these tokens which the parser then uses to build an AST.
Variants§
Word(String)
A word token representing command names, arguments, or other text. This is the most common token type.
Pipe
Pipe operator | - connects stdout of one command to stdin of another.
RedirOut
Output redirection > - redirects stdout to a file.
RedirOutClobber
Output redirection with noclobber override >| - forces overwrite even with noclobber set.
RedirIn
Input redirection < - redirects stdin from a file.
RedirAppend
Append redirection >> - appends stdout to a file.
RedirHereDoc(String, bool)
Here-document <<DELIMITER - multi-line input redirection.
The boolean indicates if the delimiter was quoted (affects expansion).
RedirHereString(String)
Here-string <<<"content" - single-line input redirection.
RedirectFdIn(i32, String)
Redirect file descriptor N from file: N<file
RedirectFdOut(i32, String)
Redirect file descriptor N to file: N>file
RedirectFdOutClobber(i32, String)
Redirect file descriptor N to file with noclobber override: N>|file
RedirectFdAppend(i32, String)
Append file descriptor N to file: N>>file
RedirectFdDup(i32, i32)
Duplicate file descriptor: N>&M or N<&M
RedirectFdClose(i32)
Close file descriptor: N>&- or N<&-
RedirectFdInOut(i32, String)
Open file descriptor for read/write: N<>file
If
if keyword - starts a conditional statement.
Then
then keyword - begins the consequent clause of an if statement.
Else
else keyword - begins the alternative clause of an if statement.
Elif
elif keyword - else-if for chained conditionals.
Fi
fi keyword - ends an if statement.
Case
case keyword - starts a case statement.
In
in keyword - used in case and for statements.
Esac
esac keyword - ends a case statement.
DoubleSemicolon
Double semicolon ;; - terminates a case clause.
Semicolon
Semicolon ; - command separator.
RightParen
Right parenthesis ) - used in case patterns and subshells.
LeftParen
Left parenthesis ( - starts a subshell or case pattern.
LeftBrace
Left brace { - starts a command group.
RightBrace
Right brace } - ends a command group.
Newline
Newline - line terminator, also acts as command separator.
Local
local keyword - declares local variables in functions.
Return
return keyword - returns from a function with an exit code.
For
for keyword - starts a for loop.
Do
do keyword - begins the body of a loop.
Done
done keyword - ends a loop.
While
while keyword - starts a while loop.
Until
until keyword - starts an until loop.
Break
break keyword - exits from a loop.
Continue
continue keyword - skips to next iteration of a loop.
And
AND operator && - executes next command only if previous succeeded.
Or
OR operator || - executes next command only if previous failed.
Bang
Bang operator ! - negates the exit status of a command.