lean4-htt/src/Lean/Parser/Level.lean
Leonardo de Moura 0510f746fc feat: add macro registerParserAlias!
It register the parser, parenthesizer, and formatter.
2020-11-11 19:34:14 -08:00

30 lines
983 B
Text

/-
Copyright (c) 2019 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Leonardo de Moura, Sebastian Ullrich
-/
import Lean.Parser.Extra
namespace Lean
namespace Parser
builtin_initialize
registerBuiltinParserAttribute `builtinLevelParser `level
@[inline] def levelParser (rbp : Nat := 0) : Parser :=
categoryParser `level rbp
namespace Level
@[builtinLevelParser] def paren := parser! "(" >> levelParser >> ")"
@[builtinLevelParser] def max := parser! nonReservedSymbol "max " true >> many1 (levelParser maxPrec)
@[builtinLevelParser] def imax := parser! nonReservedSymbol "imax " true >> many1 (levelParser maxPrec)
@[builtinLevelParser] def hole := parser! "_"
@[builtinLevelParser] def num := checkPrec maxPrec >> numLit
@[builtinLevelParser] def ident := checkPrec maxPrec >> Parser.ident
@[builtinLevelParser] def addLit := tparser!:65 " + " >> numLit
end Level
end Parser
end Lean