feat: fieldIdx antiquotation
This commit is contained in:
parent
f130a82cd9
commit
8ebe0cb94f
1 changed files with 15 additions and 14 deletions
|
|
@ -1098,20 +1098,6 @@ fun _ c s =>
|
|||
def unquotedSymbol {k : ParserKind} : Parser k :=
|
||||
{ fn := unquotedSymbolFn }
|
||||
|
||||
def fieldIdxFn : BasicParserFn :=
|
||||
fun c s =>
|
||||
let iniPos := s.pos;
|
||||
let curr := c.input.get iniPos;
|
||||
if curr.isDigit && curr != '0' then
|
||||
let s := takeWhileFn (fun c => c.isDigit) c s;
|
||||
mkNodeToken fieldIdxKind iniPos c s
|
||||
else
|
||||
s.mkErrorAt "field index" iniPos
|
||||
|
||||
@[inline] def fieldIdx {k : ParserKind} : Parser k :=
|
||||
{ fn := fun _ => fieldIdxFn,
|
||||
info := mkAtomicInfo "fieldIdx" }
|
||||
|
||||
instance string2basic {k : ParserKind} : HasCoe String (Parser k) :=
|
||||
⟨symbolAux⟩
|
||||
|
||||
|
|
@ -1576,6 +1562,21 @@ node kind $ try $ dollarSymbol >> checkNoWsBefore "no space before" >> termParse
|
|||
def ident {k : ParserKind} : Parser k :=
|
||||
mkAntiquot "ident" `ident <|> identNoAntiquot
|
||||
|
||||
def fieldIdxFn : BasicParserFn :=
|
||||
fun c s =>
|
||||
let iniPos := s.pos;
|
||||
let curr := c.input.get iniPos;
|
||||
if curr.isDigit && curr != '0' then
|
||||
let s := takeWhileFn (fun c => c.isDigit) c s;
|
||||
mkNodeToken fieldIdxKind iniPos c s
|
||||
else
|
||||
s.mkErrorAt "field index" iniPos
|
||||
|
||||
@[inline] def fieldIdx {k : ParserKind} : Parser k :=
|
||||
mkAntiquot "fieldIdx" `fieldIdx <|>
|
||||
{ fn := fun _ => fieldIdxFn,
|
||||
info := mkAtomicInfo "fieldIdx" }
|
||||
|
||||
end Parser
|
||||
|
||||
namespace Syntax
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue