lezer-parser/lezer

Is it really this difficult?

pragdave opened this issue · 1 comments

Using prism.js for Macro-11 assembler, I can define a register as

  register: {
    pattern: /\b(:?r[0-7])|sp|pc\b/i,
  },

Using lezer, I seem to need

Register {
    @specialize<identifier, "r0"> 
  | @specialize<identifier, "r1"> 
  | @specialize<identifier, "r2"> 
  | @specialize<identifier, "r3"> 
  | @specialize<identifier, "r4"> 
  | @specialize<identifier, "r5"> 
  | @specialize<identifier, "r6"> 
  | @specialize<identifier, "r7"> 
  | @specialize<identifier, "R0"> 
  | @specialize<identifier, "R1"> 
  | @specialize<identifier, "R2"> 
  | @specialize<identifier, "R3"> 
  | @specialize<identifier, "R4"> 
  | @specialize<identifier, "R5"> 
  | @specialize<identifier, "R6"> 
  | @specialize<identifier, "R7"> 
  | @specialize<identifier, "sp"> 
  | @specialize<identifier, "sP"> 
  | @specialize<identifier, "Sp"> 
  | @specialize<identifier, "SP"> 
  | @specialize<identifier, "pc"> 
  | @specialize<identifier, "pC"> 
  | @specialize<identifier, "Pc"> 
  | @specialize<identifier, "PC"> 
}

The issues I'm circumventing are:

  • I can't give the register pattern a higher priority than identifiers, and
  • I can't specify case insensitive strings

Am I missing something?

You can use an external specializer if you prefer.