annotate Demo/parser/example.py @ 5817:48b94de85bf3 legacy-trunk

Extensive changes by AMK.
author Guido van Rossum <guido@python.org>
date Thu, 17 Jul 1997 16:29:42 +0000
parents c18d52e06238
children b52864c5e9c9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4088
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 """Simple code to extract class & function docstrings from a module.
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
4132
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
3 This code is used as an example in the library reference manual in the
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
4 section on using the parser module. Refer to the manual for a thorough
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
5 discussion of the operation of this code.
4088
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 """
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
7
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 import symbol
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 import token
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 import types
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
11
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
12
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 def get_docs(fileName):
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 """Retrieve information from the parse tree of a source file.
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
15
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 fileName
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 Name of the file to read Python source code from.
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 """
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 source = open(fileName).read()
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 import os
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 basename = os.path.basename(os.path.splitext(fileName)[0])
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 import parser
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 ast = parser.suite(source)
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 tup = parser.ast2tuple(ast)
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 return ModuleInfo(tup, basename)
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
26
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
27
4132
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
28 class SuiteInfoBase:
4088
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 _docstring = ''
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 _name = ''
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
31
4132
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
32 def __init__(self, tree = None):
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
33 self._class_info = {}
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
34 self._function_info = {}
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
35 if tree:
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
36 self._extract_info(tree)
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
37
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
38 def _extract_info(self, tree):
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
39 # extract docstring
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
40 if len(tree) == 2:
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
41 found, vars = match(DOCSTRING_STMT_PATTERN[1], tree[1])
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
42 else:
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
43 found, vars = match(DOCSTRING_STMT_PATTERN, tree[3])
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
44 if found:
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
45 self._docstring = eval(vars['docstring'])
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
46 # discover inner definitions
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
47 for node in tree[1:]:
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
48 found, vars = match(COMPOUND_STMT_PATTERN, node)
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
49 if found:
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
50 cstmt = vars['compound']
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
51 if cstmt[0] == symbol.funcdef:
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
52 name = cstmt[2][1]
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
53 self._function_info[name] = FunctionInfo(cstmt)
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
54 elif cstmt[0] == symbol.classdef:
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
55 name = cstmt[2][1]
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
56 self._class_info[name] = ClassInfo(cstmt)
4088
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
57
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 def get_docstring(self):
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
59 return self._docstring
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
60
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
61 def get_name(self):
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 return self._name
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
63
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 def get_class_names(self):
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 return self._class_info.keys()
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
66
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 def get_class_info(self, name):
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 return self._class_info[name]
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
69
4132
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
70 def __getitem__(self, name):
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
71 try:
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
72 return self._class_info[name]
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
73 except KeyError:
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
74 return self._function_info[name]
4088
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
75
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
76
4132
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
77 class SuiteFuncInfo:
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
78 # Mixin class providing access to function names and info.
4088
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
79
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 def get_function_names(self):
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
81 return self._function_info.keys()
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
82
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
83 def get_function_info(self, name):
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
84 return self._function_info[name]
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
85
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
86
4132
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
87 class FunctionInfo(SuiteInfoBase, SuiteFuncInfo):
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
88 def __init__(self, tree = None):
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
89 self._name = tree[2][1]
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
90 SuiteInfoBase.__init__(self, tree and tree[-1] or None)
4088
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
91
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
92
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
93 class ClassInfo(SuiteInfoBase):
4132
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
94 def __init__(self, tree = None):
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
95 self._name = tree[2][1]
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
96 SuiteInfoBase.__init__(self, tree and tree[-1] or None)
4088
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
97
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 def get_method_names(self):
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 return self._function_info.keys()
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
100
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 def get_method_info(self, name):
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 return self._function_info[name]
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
103
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
104
4132
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
105 class ModuleInfo(SuiteInfoBase, SuiteFuncInfo):
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
106 def __init__(self, tree = None, name = "<string>"):
4088
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 self._name = name
4132
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
108 SuiteInfoBase.__init__(self, tree)
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
109 if tree:
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
110 found, vars = match(DOCSTRING_STMT_PATTERN, tree[1])
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
111 if found:
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
112 self._docstring = vars["docstring"]
4088
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
113
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
114
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 from types import ListType, TupleType
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
116
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 def match(pattern, data, vars=None):
4132
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
118 """Match `data' to `pattern', with variable extraction.
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
119
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
120 pattern
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
121 Pattern to match against, possibly containing variables.
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
122
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
123 data
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
124 Data to be checked and against which variables are extracted.
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
125
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
126 vars
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
127 Dictionary of variables which have already been found. If not
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
128 provided, an empty dictionary is created.
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
129
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
130 The `pattern' value may contain variables of the form ['varname'] which
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
131 are allowed to match anything. The value that is matched is returned as
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
132 part of a dictionary which maps 'varname' to the matched value. 'varname'
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
133 is not required to be a string object, but using strings makes patterns
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
134 and the code which uses them more readable.
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
135
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
136 This function returns two values: a boolean indicating whether a match
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
137 was found and a dictionary mapping variable names to their associated
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
138 values.
4088
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 """
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
140 if vars is None:
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
141 vars = {}
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
142 if type(pattern) is ListType: # 'variables' are ['varname']
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
143 vars[pattern[0]] = data
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
144 return 1, vars
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
145 if type(pattern) is not TupleType:
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
146 return (pattern == data), vars
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 if len(data) != len(pattern):
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
148 return 0, vars
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
149 for pattern, data in map(None, pattern, data):
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 same, vars = match(pattern, data, vars)
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 if not same:
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
152 break
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 return same, vars
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
154
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
155
4132
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
156 # This pattern identifies compound statements, allowing them to be readily
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
157 # differentiated from simple statements.
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
158 #
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
159 COMPOUND_STMT_PATTERN = (
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
160 symbol.stmt,
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
161 (symbol.compound_stmt, ['compound'])
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
162 )
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
163
c18d52e06238 Final set of changes by Fred before 1.4beta3
Guido van Rossum <guido@python.org>
parents: 4088
diff changeset
164
4088
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
165 # This pattern will match a 'stmt' node which *might* represent a docstring;
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
166 # docstrings require that the statement which provides the docstring be the
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
167 # first statement in the class or function, which this pattern does not check.
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
168 #
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 DOCSTRING_STMT_PATTERN = (
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
170 symbol.stmt,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
171 (symbol.simple_stmt,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
172 (symbol.small_stmt,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 (symbol.expr_stmt,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
174 (symbol.testlist,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
175 (symbol.test,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
176 (symbol.and_test,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
177 (symbol.not_test,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
178 (symbol.comparison,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
179 (symbol.expr,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
180 (symbol.xor_expr,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
181 (symbol.and_expr,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
182 (symbol.shift_expr,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
183 (symbol.arith_expr,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
184 (symbol.term,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
185 (symbol.factor,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
186 (symbol.power,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
187 (symbol.atom,
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
188 (token.STRING, ['docstring'])
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
189 )))))))))))))))),
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
190 (token.NEWLINE, '')
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 ))
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
192
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
193 #
f81d78547f28 Demos for Fred's parser module
Guido van Rossum <guido@python.org>
parents:
diff changeset
194 # end of file