Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/util/ast_extensions.py
diff options
context:
space:
mode:
authorMarion Zepf <marion.zepf@gmail.com>2013-10-29 21:42:20 (GMT)
committer Walter Bender <walter@sugarlabs.org>2013-10-29 21:42:20 (GMT)
commitffcc2d5d53fa814673498f62a0d160e322af66a7 (patch)
tree4191a0fb5a5d600bbadbb2e27bc76810f2fdbba0 /util/ast_extensions.py
parenta1265fed0f64d130fc66be0fe140fafae25d8895 (diff)
add new library for python export
Diffstat (limited to 'util/ast_extensions.py')
-rw-r--r--util/ast_extensions.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/util/ast_extensions.py b/util/ast_extensions.py
new file mode 100644
index 0000000..3335afb
--- /dev/null
+++ b/util/ast_extensions.py
@@ -0,0 +1,52 @@
+#Copyright (c) 2013 Marion Zepf
+
+#Permission is hereby granted, free of charge, to any person obtaining a copy
+#of this software and associated documentation files (the "Software"), to deal
+#in the Software without restriction, including without limitation the rights
+#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#copies of the Software, and to permit persons to whom the Software is
+#furnished to do so, subject to the following conditions:
+
+#The above copyright notice and this permission notice shall be included in
+#all copies or substantial portions of the Software.
+
+#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+#THE SOFTWARE.
+
+
+""" Extend the `ast` module to include comments """
+
+import ast
+
+
+class Comment(ast.stmt):
+ """ An inline comment, starting with a hashtag (#).
+ Extends the Python abstract grammar by the following:
+ stmt = Comment(string text) | ... """
+
+ _fields = ('text')
+
+ def __init__(self, text="", lineno=1, col_offset=0):
+ """ text -- the textual content of the comment, i.e. everything
+ directly following the hashtag until the next newline """
+ self.text = text
+ self.lineno = lineno
+ self.col_offset = col_offset
+
+
+class LambdaWithStrBody(ast.Lambda):
+ """ Lambda AST whose body is a simple string (not ast.Str).
+ Extends the Python abstract grammar by the following:
+ expr = LambdaWithStrBody(string body_str, expr* args) | ... """
+
+ def __init__(self, body_str="", args=[], lineno=1, col_offset=0):
+ self.body_str = body_str
+ self.args = args
+ self.lineno = lineno
+ self.col_offset = col_offset
+