movementState function

Function? movementState(
  1. Lexer lexer
)

Implementation

Function? movementState(Lexer lexer) {
  bool superset = false;

  String chr = lexer.next();

  if (chr == Token.EOF) {
    return null;
  }

  if (chr == "+") {
    superset = true;
    lexer.take([" "]);
    lexer.ignore();
    chr = lexer.next();
  }

  if (chr == "'") {
    lexer.ignore();
    chr = lexer.next();
  }

  while (!isColonTerminator(chr)) {
    chr = lexer.next();
  }

  lexer.rewind();

  if (superset) {
    lexer.emit(TokenType.SupersetMovement);
  } else {
    lexer.emit(TokenType.Movement);
  }

  lexer.take([":"]);
  lexer.ignore();

  return idleState;
}