{"record":{"id":"d4e133c1b866f89d","repo":"stanfordnlp/CoreNLP","slug":"unknown-sequence-pattern-variable","errorCode":null,"errorMessage":"Unknown sequence pattern variable ","messagePattern":"Unknown sequence pattern variable ","errorType":"exception","errorClass":"java.lang.Error","httpStatus":null,"severity":"error","filePath":"src/edu/stanford/nlp/ling/tokensregex/parser/TokenSequenceParser.java","lineNumber":1287,"sourceCode":"        jj_consume_token(32);\n        break;\n        }\n      default:\n        jj_la1[40] = jj_gen;\n        jj_consume_token(-1);\n        throw new ParseException();\n      }\n    }\n{if (\"\" != null) return node;}\n    throw new Error(\"Missing return statement in function\");\n}\n\n  final public SequencePattern.PatternExpr SeqVar(Env env) throws ParseException {SequencePattern.PatternExpr expr;\n  Token name;\n    name = jj_consume_token(REGEXVAR);\nexpr = env.getSequencePatternExpr(name.image, true);\n        if (expr == null) {\n            {if (true) throw new Error(\"Unknown sequence pattern variable \" + name.image);}\n        }\n{if (\"\" != null) return expr;}\n    throw new Error(\"Missing return statement in function\");\n}\n\n  final public SequencePattern.PatternExpr SeqBackRef(Env env) throws ParseException {Token name;\n    name = jj_consume_token(BACKREF);\nint v = Integer.parseInt(name.image.substring(1));\n        {if (\"\" != null) return new SequencePattern.BackRefPatternExpr(CoreMapNodePattern.TEXT_ATTR_EQUAL_CHECKER, v);}\n    throw new Error(\"Missing return statement in function\");\n}\n\n  final public NodePattern Node(Env env) throws ParseException {NodePattern node;\n    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {\n    case 31:{\n      node = BracketedNode(env);\n      break;\n      }","sourceCodeStart":1269,"sourceCodeEnd":1305,"githubUrl":"https://github.com/stanfordnlp/CoreNLP/blob/1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a/src/edu/stanford/nlp/ling/tokensregex/parser/TokenSequenceParser.java#L1269-L1305","documentation":"SeqVar resolves a REGEXVAR token (a '$name' reference) to a previously registered SequencePattern.PatternExpr in the parse environment. If env.getSequencePatternExpr(name.image, true) returns null, the parser throws 'Unknown sequence pattern variable <name>' because the referenced pattern variable was never defined in the environment.","triggerScenarios":"Parsing a TokensRegex sequence pattern whose text references $VarName, but no pattern of that name was registered in the Env (e.g. via env.bind or sequence pattern definitions) before parsing.","commonSituations":"Rule files where the variable definition rule was removed, renamed, or where variables are defined in a separate file not loaded into the same environment; also case-sensitivity mismatches between definition and reference.","solutions":["Define the referenced variable before use, e.g. with a rule like 'pattern = ( ... )' or env.bind(name, patternExpr) in code.","Check exact name and case match between the definition and the $reference.","Load all variable-defining rule files into the same Env before parsing dependent rules.","Log env contents (or iterate bound names) to confirm which sequence pattern variables exist."],"exampleFix":"// before\nString rule = \"$DATE\"; // never defined\n// after\nenv.bind(\"DATE\", datePattern); // or add: $DATE = ( [ { tag:/DATE/ } ] )\\n... $DATE ...","handlingStrategy":"validation","validationCode":"// Confirm all $refs used in a rule are defined in the Env first\nSet<String> defined = env variable names; // collect via your binding registry\njava.util.regex.Matcher m = java.util.regex.Pattern.compile(\"\\\\$([A-Za-z_]\\\\w*)\").matcher(ruleText);\nwhile (m.find()) {\n  if (!defined.contains(m.group(1))) throw new IllegalStateException(\"Undefined variable: \" + m.group(1));\n}","typeGuard":null,"tryCatchPattern":"try {\n  return parser.parsePattern(env, ruleText);\n} catch (Error e) {\n  if (e.getMessage() != null && e.getMessage().startsWith(\"Unknown sequence pattern variable\")) {\n    throw new IllegalArgumentException(e.getMessage() + \" - define it via a pattern rule or env.bind() first\", e);\n  }\n  throw e;\n}","preventionTips":["Bind all sequence pattern variables before parsing dependent rules.","Keep variable definitions in the same rule file, above their uses.","Match variable names exactly (case-sensitive)."],"tags":["parser","tokensregex","undefined-variable","java"],"backgroundTag":"resource-not-found","analyzedSha":"1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a","analyzedAt":"2026-09-10T02:24:07.274Z","contentChangedAt":"2026-09-10T02:24:07.274Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}