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