summaryrefslogtreecommitdiff
path: root/src/examples/builtin_parse_action_demo.py
blob: 3ec6af8dce9a0d3d7135ecadfe9996ea12bca77f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#
#  builtin_parse_action_demo.py
#  Copyright, 2012 - Paul McGuire
#
#  Simple example of using builtin functions as parse actions.
#

from pyparsing import *

integer = Word(nums).setParseAction(lambda t : int(t[0]))

# make an expression that will match a list of ints (which
# will be converted to actual ints by the parse action attached
# to integer)
nums = OneOrMore(integer)


test = "2 54 34 2 211 66 43 2 0"
print(test)

# try each of these builtins as parse actions
for fn in (sum, max, min, len, sorted, reversed, list, tuple, set, any, all):
    fn_name = fn.__name__
    if fn is reversed:
        # reversed returns an iterator, we really want to show the list of items
        fn = lambda x : list(reversed(x))

    # show how each builtin works as a free-standing parse action
    print(fn_name, nums.setParseAction(fn).parseString(test))