Shell: Parse comments

This commit is contained in:
AnotherTest 2020-05-10 11:47:12 +04:30 committed by Andreas Kling
parent a862c230b1
commit 1d0d0e9d00
Notes: sideshowbarker 2024-07-19 06:46:42 +09:00
3 changed files with 20 additions and 0 deletions

View File

@ -86,6 +86,19 @@ Vector<Command> Parser::parse()
char ch = m_input.characters()[i];
switch (state()) {
case State::Free:
if (ch == '#') {
commit_token(Token::Bare);
while (i < m_input.length()) {
ch = m_input.characters()[++i];
++m_position;
if (ch == '\n')
break;
m_token.append(ch);
}
commit_token(Token::Comment);
break;
}
if (ch == ' ') {
commit_token(Token::Bare);
break;

View File

@ -36,6 +36,7 @@ struct Token {
DoubleQuoted,
UnterminatedSingleQuoted,
UnterminatedDoubleQuoted,
Comment,
Special,
};
String text;

View File

@ -782,6 +782,9 @@ static Vector<String> process_arguments(const Vector<Token>& args)
{
Vector<String> argv_string;
for (auto& arg : args) {
if (arg.type == Token::Comment)
continue;
// This will return the text passed in if it wasn't a variable
// This lets us just loop over its values
auto expanded_parameters = expand_parameters(arg.text);
@ -863,6 +866,9 @@ static ExitCodeOrContinuationRequest run_command(const StringView& cmd)
case Token::Special:
dbgprintf("<%s> ", arg.text.characters());
break;
case Token::Comment:
dbgprintf("<%s> ", arg.text.characters());
break;
}
}
dbgprintf("\n");