feat: fieldIdx antiquotation

This commit is contained in:
Sebastian Ullrich 2019-12-26 18:49:26 +01:00 committed by Leonardo de Moura
parent f130a82cd9
commit 8ebe0cb94f

View file

@ -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