text: /* -*- mode: c; c-default-style: "bsd"; -*- */
  /* Copyright (c) 2020-2022 Charlie Burnett <burne251@umn.edu> */
  /* SPDX-License-Identifier: ISC OR Apache-2.0 */
  
  #ifndef OPE_SCANNER_H
  #define OPE_SCANNER_H
  
  #include "location.h"
  #include "syntax_private.h"
  OPE_BEGIN_HEADER
  
  
  char scanner_get_char(struct scanner *scanner);
  void scanner_add_token(struct scanner *scanner, yytokentype kind, char *str);
  void scanner_add_token_no_data(struct scanner *scanner, yytokentype kind);
  void scanner_reset(struct scanner *scanner);
  void scanner_preprocessor(struct scanner *scanner);
  void scanner_clear_caches(struct scanner *scanner);
  bool scanner_char_vec_valid(struct scanner *scanner);
  void scanner_transpose_last(struct scanner *scanner);
  
  OPE_END_HEADER
  
  #endif /* OPE_SCANNER_H */
  