42 lines
1.1 KiB
Text
42 lines
1.1 KiB
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
|
|
-/
|
|
module
|
|
|
|
prelude
|
|
public import Lean.Parser.Extra
|
|
|
|
public section
|
|
|
|
namespace Lean
|
|
namespace Parser
|
|
|
|
builtin_initialize
|
|
registerBuiltinParserAttribute `builtin_level_parser ``Category.level
|
|
|
|
@[inline] def levelParser (rbp : Nat := 0) : Parser :=
|
|
categoryParser `level rbp
|
|
|
|
namespace Level
|
|
|
|
@[builtin_level_parser] def paren := leading_parser
|
|
"(" >> withoutPosition levelParser >> ")"
|
|
@[builtin_level_parser] def max := leading_parser
|
|
nonReservedSymbol "max" true >> many1 (ppSpace >> levelParser maxPrec)
|
|
@[builtin_level_parser] def imax := leading_parser
|
|
nonReservedSymbol "imax" true >> many1 (ppSpace >> levelParser maxPrec)
|
|
@[builtin_level_parser] def hole := leading_parser
|
|
"_"
|
|
@[builtin_level_parser] def num :=
|
|
checkPrec maxPrec >> numLit
|
|
@[builtin_level_parser] def ident :=
|
|
checkPrec maxPrec >> Parser.ident
|
|
@[builtin_level_parser] def addLit := trailing_parser:65
|
|
" + " >> numLit
|
|
|
|
end Level
|
|
|
|
end Parser
|
|
end Lean
|