var words = {};
function tokenBase(t) {
  if (t.eatSpace()) return null;
  var n = t.sol(), r = t.next();
  if (r === "\\") return t.match("fB") || t.match("fR") || t.match("fI") || t.match("u") || t.match("d") || t.match("%") || t.match("&") ? "string" : t.match("m[") ? (t.skipTo("]"), t.next(), "string") : t.match("s+") || t.match("s-") ? (t.eatWhile(/[\d-]/), "string") : ((t.match("(") || t.match("*(")) && t.eatWhile(/[\w-]/), "string");
  if (n && (r === "." || r === "'") && t.eat("\\") && t.eat('"')) return t.skipToEnd(), "comment";
  if (n && r === ".") {
    if (t.match("B ") || t.match("I ") || t.match("R ")) return "attribute";
    if (t.match("TH ") || t.match("SH ") || t.match("SS ") || t.match("HP ")) return t.skipToEnd(), "quote";
    if (t.match(/[A-Z]/) && t.match(/[A-Z]/) || t.match(/[a-z]/) && t.match(/[a-z]/)) return "attribute";
  }
  t.eatWhile(/[\w-]/);
  var i = t.current();
  return words.hasOwnProperty(i) ? words[i] : null;
}
function tokenize(e, n) {
  return (n.tokens[0] || tokenBase)(e, n);
}
const troff = {
  name: "troff",
  startState: function() {
    return { tokens: [] };
  },
  token: function(e, t) {
    return tokenize(e, t);
  }
};
export {
  troff as t
};
