sub method

void sub()

Implementation

void sub() {
  final char = advance();

  // NOTE: This is not preserving comments at this time.
  if (peek().lexeme == '-') {
    // Check for left block comment token
    if (peek(offset: 1).lexeme == '[' && peek(offset: 2).lexeme == '[') {
      // Consume this extra '-' char in the stream.
      advance();
      final substr = parseDoubleBracketStr();
      tokens.add(
        char.toToken(TokenType.kBlockComment, lexeme: '--${substr.lexeme}'),
      );
      return;
    }

    tokens.add(char.toToken(TokenType.kLineComment, lexeme: '--'));

    // Consume until newline terminator
    while (!eof() && peek().lexeme != '\n') {
      advance();
    }
    return;
  }

  tokens.add(char.toToken(TokenType.kSub));
}