summaryrefslogtreecommitdiff
path: root/admin/grammars/python.wy
diff options
context:
space:
mode:
authorChong Yidong <cyd@gnu.org>2012-10-02 02:10:29 +0800
committerChong Yidong <cyd@gnu.org>2012-10-02 02:10:29 +0800
commit62a81506f802e4824b718cc30321ee3a0057cdf7 (patch)
treed681d7b767b1c3f7e4aee24ce39f6bef0d7f1f7e /admin/grammars/python.wy
parentb3317662acc0157406c20c8e14c43b7126eaa8a0 (diff)
downloademacs-62a81506f802e4824b718cc30321ee3a0057cdf7.tar.gz
emacs-62a81506f802e4824b718cc30321ee3a0057cdf7.tar.bz2
emacs-62a81506f802e4824b718cc30321ee3a0057cdf7.zip
Update CEDET from upstream.
Diffstat (limited to 'admin/grammars/python.wy')
-rw-r--r--admin/grammars/python.wy64
1 files changed, 56 insertions, 8 deletions
diff --git a/admin/grammars/python.wy b/admin/grammars/python.wy
index f7808fd20b8..f17f41c9b1b 100644
--- a/admin/grammars/python.wy
+++ b/admin/grammars/python.wy
@@ -88,6 +88,12 @@
;; --------
%package wisent-python-wy
+%provide semantic/wisent/python-wy
+
+%{
+(declare-function wisent-python-reconstitute-function-tag "semantic/wisent/python")
+(declare-function wisent-python-reconstitute-class-tag "semantic/wisent/python")
+}
%languagemode python-mode
@@ -173,6 +179,7 @@
%token <punctuation> COMMA ","
%token <punctuation> ASSIGN "="
%token <punctuation> BACKQUOTE "`"
+%token <punctuation> AT "@"
;; -----------------
@@ -307,6 +314,10 @@
%put WHILE summary
"Start a 'while' loop"
+%keyword WITH "with"
+%put WITH summary
+"Start statement with an associated context object"
+
%keyword YIELD "yield"
%put YIELD summary
"Create a generator function"
@@ -545,8 +556,10 @@ import_stmt
;; dotted_as_name (',' dotted_as_name)*
dotted_as_name_list
- : dotted_as_name
- | dotted_as_name_list COMMA dotted_as_name
+ : dotted_as_name_list COMMA dotted_as_name
+ (cons $3 $1)
+ | dotted_as_name
+ (list $1)
;
;; ('*' | import_as_name (',' import_as_name)*)
@@ -649,6 +662,7 @@ compound_stmt
| while_stmt
| for_stmt
| try_stmt
+ | with_stmt
| funcdef
| class_declaration
;
@@ -756,13 +770,46 @@ zero_one_or_two_test
;
;;;============================================================================
+;;@@ with_stmt
+;;;============================================================================
+
+;; with_stmt: 'with' test [ with_var ] ':' suite
+with_stmt
+ : WITH test COLON suite
+ (CODE-TAG $1 nil)
+ | WITH test with_var COLON suite
+ (CODE-TAG $1 nil) ;; TODO capture variable
+ ;
+
+with_var
+ : AS expr
+ () ;; TODO capture
+ ;
+
+;;;============================================================================
;;;@@ funcdef
;;;============================================================================
-;; funcdef: 'def' NAME parameters ':' suite
+decorator
+ : AT dotted_name varargslist_opt NEWLINE
+ (FUNCTION-TAG $2 "decorator" $3)
+ ;
+
+decorators
+ : decorator
+ (list $1)
+ | decorator decorators
+ (cons $1 $2)
+ ;
+
+;; funcdef: [decorators] 'def' NAME parameters ':' suite
funcdef
: DEF NAME function_parameter_list COLON suite
- (FUNCTION-TAG $2 nil $3)
+ (wisent-python-reconstitute-function-tag
+ (FUNCTION-TAG $2 nil $3) $5)
+ | decorators DEF NAME function_parameter_list COLON suite
+ (wisent-python-reconstitute-function-tag
+ (FUNCTION-TAG $3 nil $4 :decorators $1) $6)
;
function_parameter_list
@@ -798,10 +845,11 @@ function_parameter
;; classdef: 'class' NAME ['(' testlist ')'] ':' suite
class_declaration
: CLASS NAME paren_class_list_opt COLON suite
- (TYPE-TAG $2 $1 ;; Name "class"
- $5 ;; Members
- (cons $3 nil) ;; (SUPERCLASSES . INTERFACES)
- )
+ (wisent-python-reconstitute-class-tag
+ (TYPE-TAG $2 $1 ;; Name "class"
+ $5 ;; Members
+ (cons $3 nil) ;; (SUPERCLASSES . INTERFACES)
+ ))
;
;; ['(' testlist ')']