indent = do cc <- getPosition >>= return . sourceColumn
            pc <- liftM (fromMaybe 0) topStack
            if cc > pc
               then pushStack cc
               else unexpected "end of block"


-- // # 5. Level 1: Tree grammar

-- //     [1] char_word ::= [0x21-0xD7FF] | [0xE000-0xFFFD] | [0x10000-0x10FFFD]

-- // This range includes all Unicode characters, except characters below
-- // and including 0x20 (space), Unicode surrogate blocks, 0xfffe and
-- // 0xffff.

-- Since this actually differs from the characters that can appear
-- in words, I've renamed it.
indent = do cc <- getPosition >>= return . sourceColumn
            pc <- liftM (fromMaybe 0) topStack
            if cc > pc
               then pushStack cc
               else unexpected "end of block"


-- // # 5. Level 1: Tree grammar

-- //     [1] char_word ::= [0x21-0xD7FF] | [0xE000-0xFFFD] | [0x10000-0x10FFFD]

-- // This range includes all Unicode characters, except characters below
-- // and including 0x20 (space), Unicode surrogate blocks, 0xfffe and
-- // 0xffff.

-- Since this actually differs from the characters that can appear
-- in words, I've renamed it.
indent = do cc <- getPosition >>= return . sourceColumn
            pc <- liftM (fromMaybe 0) topStack
            if cc > pc
               then pushStack cc
               else unexpected "end of block"


-- // # 5. Level 1: Tree grammar

-- //     [1] char_word ::= [0x21-0xD7FF] | [0xE000-0xFFFD] | [0x10000-0x10FFFD]

-- // This range includes all Unicode characters, except characters below
-- // and including 0x20 (space), Unicode surrogate blocks, 0xfffe and
-- // 0xffff.

-- Since this actually differs from the characters that can appear
-- in words, I've renamed it.