Module: LexerKit::IR::Opcode

Defined in:
lib/lexer_kit/ir/opcode.rb

Overview

Opcode definitions for the LexerKit VM

Constant Summary collapse

DFA_RUN =

DFA operations

0x01
DFA_RUN_IF_MATCH =

Optimized DFA run for single-candidate regex tokens. Argument encoding: (dfa_id << 14) | fail_target (10+14 bits) On success: advance position, move to next instruction On failure: jump directly to fail_target

0x02
SCAN_UNTIL =

Delimiter/literal operations

0x10
MATCH_LITERAL =

Scan until delimiter, arg = const_id

0x12
SCAN_UNTIL_ESCAPE =

Match fixed string, arg = const_id

0x13
MATCH_RANGE =

Scan until delimiter with escape, arg = config_id

0x14
MATCH_LITERAL_OR_JUMP =

Optimized literal matching with embedded failure jump target. Argument encoding: (const_id << 14) | fail_target (10+14 bits) On success: advance position, move to next instruction On failure: jump directly to fail_target

0x16
SWITCH_BYTE =

Branch/control operations

0x20
JUMP =

Branch on next byte, arg = jump_table_id

0x21
JUMP_IF_EOF =

Unconditional jump, arg = offset

0x24
PUSH_MODE =

Mode operations

0x30
POP_MODE =

Push mode to stack, arg = mode_id

0x31
EMIT =

Token operations

0x40
EMIT_SKIP =

Emit token, arg = token_id

0x41
EMIT_ERROR =

Skip (advance without emit)

0x42
MARK =

Emit error token, arg = error_id

0x43
EMIT_AND_JUMP =

Optimized EMIT + JUMP for common token emission pattern. Argument encoding: (token_id << 14) | jump_target (10+14 bits)

0x44
KEYWORD_LOOKUP =

Keyword lookup, arg = keyword_table_id

0x45
LITERAL_TRIE_RUN =

Run literal trie, arg = const_id

0x46
CLEAR_BEST =

Clear best match tracking

0x49
COMMIT_BEST =

Commit best match, arg = default offset

0x4C
SET_MATCH =

Optimized regex candidate matching with embedded action target. Argument encoding: (order << 14) | action_ip (10+14 bits)

0x4D
LITERAL_TRIE_COMMIT =

Optimized CLEAR_BEST + LITERAL_TRIE_RUN + COMMIT_BEST for literal-only matching. Argument encoding: (const_id << 14) | fail_target (10+14 bits) On match: jump to best match action IP On no match: jump to fail_target

0x4E
EMIT_SKIP_AND_JUMP =

Optimized EMIT_SKIP + JUMP for skipped token pattern. Argument encoding: jump_target (24 bits)

0x4F
HALT =

Special

0xFF
NAMES =

Opcode metadata

{
  DFA_RUN => "DFA_RUN",
  DFA_RUN_IF_MATCH => "DFA_RUN_IF_MATCH",
  SCAN_UNTIL => "SCAN_UNTIL",
  MATCH_LITERAL => "MATCH_LITERAL",
  SCAN_UNTIL_ESCAPE => "SCAN_UNTIL_ESCAPE",
  MATCH_RANGE => "MATCH_RANGE",
  MATCH_LITERAL_OR_JUMP => "MATCH_LITERAL_OR_JUMP",
  SWITCH_BYTE => "SWITCH_BYTE",
  JUMP => "JUMP",
  JUMP_IF_EOF => "JUMP_IF_EOF",
  PUSH_MODE => "PUSH_MODE",
  POP_MODE => "POP_MODE",
  EMIT => "EMIT",
  EMIT_SKIP => "EMIT_SKIP",
  EMIT_ERROR => "EMIT_ERROR",
  MARK => "MARK",
  EMIT_AND_JUMP => "EMIT_AND_JUMP",
  KEYWORD_LOOKUP => "KEYWORD_LOOKUP",
  LITERAL_TRIE_RUN => "LITERAL_TRIE_RUN",
  CLEAR_BEST => "CLEAR_BEST",
  COMMIT_BEST => "COMMIT_BEST",
  SET_MATCH => "SET_MATCH",
  LITERAL_TRIE_COMMIT => "LITERAL_TRIE_COMMIT",
  EMIT_SKIP_AND_JUMP => "EMIT_SKIP_AND_JUMP",
  HALT => "HALT"
}.freeze

Class Method Summary collapse

Class Method Details

.name(opcode) ⇒ Object



91
92
93
# File 'lib/lexer_kit/ir/opcode.rb', line 91

def self.name(opcode)
  NAMES[opcode] || "UNKNOWN(0x#{opcode.to_s(16)})"
end