chore: remove checkWsBeforeIfSymbol hack

Now the `app` parsing rule always require some whitespace before the
first argument.

cc @Kha
This commit is contained in:
Leonardo de Moura 2020-06-11 14:58:29 -07:00
parent f0ebf426b7
commit 36bddc91cb
2 changed files with 1 additions and 22 deletions

View file

@ -1078,27 +1078,6 @@ let sym := sym.trim;
{ info := symbolNoWsInfo sym,
fn := symbolNoWsFn sym }
def checkWsBeforeIfSymbolFn (sym : String) (errorMsg : String) : ParserFn :=
fun c s =>
let left := s.stxStack.back;
if checkTailNoWs left then
let iniSz := s.stackSize;
let iniPos := s.pos;
let s := strAux sym "" 0 c s;
if s.hasError then
-- next token is not `sym`
s.restore iniSz iniPos
else
let s := s.restore iniSz iniPos;
s.mkError errorMsg
else
s -- there whitespace before `sym`
-- This parser fails if the next token is `sym`, but there is no space before it.
def checkWsBeforeIfSymbol (sym : String) (errorMsg : String) : Parser :=
{ info := epsilonInfo,
fn := checkWsBeforeIfSymbolFn sym errorMsg }
def unicodeSymbolFnAux (sym asciiSym : String) (expected : List String) : ParserFn :=
satisfySymbolFn (fun s => s == sym || s == asciiSym) expected

View file

@ -147,7 +147,7 @@ def bracketedDoSeq := parser! "{" >> doSeq >> "}"
@[builtinTermParser] def uminus := parser!:65 "-" >> termParser 100
def namedArgument := parser! try ("(" >> ident >> " := ") >> termParser >> ")"
@[builtinTermParser] def app := tparser!:(maxPrec-1) checkWsBeforeIfSymbol "[" "expected space before '['" >> many1 (namedArgument <|> termParser maxPrec)
@[builtinTermParser] def app := tparser!:(maxPrec-1) checkWsBefore "expected space" >> many1 (namedArgument <|> termParser maxPrec)
@[builtinTermParser] def proj := tparser! symbolNoWs "." >> (fieldIdx <|> ident)
@[builtinTermParser] def arrow := tparser! unicodeInfixR " → " " -> " 25