diff options
author | Chong Yidong <cyd@stupidchicken.com> | 2009-09-07 16:38:28 +0000 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2009-09-07 16:38:28 +0000 |
commit | bb05142310581fe66bd9920406544c58976997ed (patch) | |
tree | bea35a57f76c5237d0ee856e135bb1e7f5b2c8c9 /lisp/cedet/semantic/wisent/js-wy.el | |
parent | bbaca9f74bcc6f530d8bd2e591ab25ea556d794f (diff) | |
download | emacs-bb05142310581fe66bd9920406544c58976997ed.tar.gz |
lisp/cedet/semantic/wisent/comp.el:
lisp/cedet/semantic/wisent/java-wy.el:
lisp/cedet/semantic/wisent/java.el:
lisp/cedet/semantic/wisent/javascript.el:
lisp/cedet/semantic/wisent/js-wy.el:
lisp/cedet/semantic/wisent/wisent.el: New files.
Diffstat (limited to 'lisp/cedet/semantic/wisent/js-wy.el')
-rw-r--r-- | lisp/cedet/semantic/wisent/js-wy.el | 491 |
1 files changed, 491 insertions, 0 deletions
diff --git a/lisp/cedet/semantic/wisent/js-wy.el b/lisp/cedet/semantic/wisent/js-wy.el new file mode 100644 index 00000000000..8419e55ae1f --- /dev/null +++ b/lisp/cedet/semantic/wisent/js-wy.el @@ -0,0 +1,491 @@ +;;; semantic/wisent/js-wy.el --- Generated parser support file + +;; Copyright (C) 2005 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: +;; +;; This file was generated from the grammar file +;; semantic/wisent/javascript-jv.wy in the CEDET repository. + +;;; Code: +(require 'semantic/lex) + +;;; Prologue +;; + +;;; Declarations +;; +(defconst wisent-javascript-jv-wy--keyword-table + (semantic-lex-make-keyword-table + '(("if" . IF) + ("break" . BREAK) + ("continue" . CONTINUE) + ("else" . ELSE) + ("for" . FOR) + ("function" . FUNCTION) + ("this" . THIS) + ("return" . RETURN) + ("while" . WHILE) + ("void" . VOID_SYMBOL) + ("new" . NEW) + ("delete" . DELETE) + ("var" . VAR) + ("with" . WITH) + ("typeof" . TYPEOF) + ("in" . IN)) + '(("in" summary "in something") + ("typeof" summary "typeof ") + ("with" summary "with ") + ("var" summary "var <variablename> [= value];") + ("delete" summary "delete(<objectreference>) - Deletes the object.") + ("new" summary "new <objecttype> - Creates a new object.") + ("void" summary "Method return type: void <name> ...") + ("while" summary "while (<expr>) <stmt> | do <stmt> while (<expr>);") + ("return" summary "return [<expr>] ;") + ("this" summary "this") + ("function" summary "function declaration blah blah") + ("for" summary "for ([<init-expr>]; [<expr>]; [<update-expr>]) <stmt>") + ("else" summary "if (<expr>) <stmt> else <stmt>") + ("continue" summary "continue [<label>] ;") + ("break" summary "break [<label>] ;") + ("if" summary "if (<expr>) <stmt> [else <stmt>] (jv)"))) + "Table of language keywords.") + +(defconst wisent-javascript-jv-wy--token-table + (semantic-lex-make-type-table + '(("<no-type>" + (NULL_TOKEN) + (QUERY) + (TRUE) + (FALSE)) + ("number" + (NUMBER)) + ("string" + (STRING)) + ("symbol" + (VARIABLE)) + ("close-paren" + (CLOSE_SQ_BRACKETS . "]") + (END_BLOCK . "}") + (CLOSE_PARENTHESIS . ")")) + ("open-paren" + (OPEN_SQ_BRACKETS . "[") + (START_BLOCK . "{") + (OPEN_PARENTHESIS . "(")) + ("block" + (BRACK_BLOCK . "(OPEN_SQ_BRACKETS CLOSE_SQ_BRACKETS)") + (BRACE_BLOCK . "(START_BLOCK END_BLOCK)") + (PAREN_BLOCK . "(OPEN_PARENTHESIS CLOSE_PARENTHESIS)")) + ("punctuation" + (ONES_COMPLIMENT . "~") + (SEMICOLON . ";") + (LINE_TERMINATOR . "\n") + (LESS_THAN . "<") + (DOT . ".") + (COMMA . ",") + (COLON . ":") + (DIV . "/") + (DECREMENT . "--") + (INCREMENT . "++") + (PLUS_EQUALS . "+=") + (PLUS . "+") + (MULTIPLY_EQUALS . "*=") + (MULTIPLY . "*") + (MOD_EQUALS . "%=") + (MOD . "%") + (MINUS_EQUALS . "-=") + (MINUS . "-") + (LS_EQUAL . "<=") + (LOGICAL_NOT . "!!") + (LOGICAL_OR . "||") + (LOGICAL_AND . "&&") + (GT_EQUAL . ">=") + (GREATER_THAN . ">") + (EQUALS . "==") + (DIV_EQUALS . "/=") + (NOT_EQUAL . "!=") + (BITWISE_SHIFT_RIGHT_ZERO_FILL_EQUALS . ">>>=") + (BITWISE_SHIFT_RIGHT_ZERO_FILL . ">>>") + (BITWISE_SHIFT_RIGHT_EQUALS . ">>=") + (BITWISE_SHIFT_RIGHT . ">>") + (BITWISE_SHIFT_LEFT_EQUALS . "<<=") + (BITWISE_SHIFT_LEFT . "<<") + (BITWISE_OR_EQUALS . "|=") + (BITWISE_OR . "|") + (BITWISE_EXCLUSIVE_OR_EQUALS . "^=") + (BITWISE_EXCLUSIVE_OR . "^") + (BITWISE_AND_EQUALS . "&=") + (BITWISE_AND . "&") + (ASSIGN_SYMBOL . "="))) + '(("number" :declared t) + ("string" :declared t) + ("symbol" :declared t) + ("keyword" :declared t) + ("block" :declared t) + ("punctuation" :declared t))) + "Table of lexical tokens.") + +(defconst wisent-javascript-jv-wy--parse-table + (progn + (eval-when-compile + (require 'semantic/wisent/comp)) + (wisent-compile-grammar + '((ASSIGN_SYMBOL BITWISE_AND BITWISE_AND_EQUALS BITWISE_EXCLUSIVE_OR BITWISE_EXCLUSIVE_OR_EQUALS BITWISE_OR BITWISE_OR_EQUALS BITWISE_SHIFT_LEFT BITWISE_SHIFT_LEFT_EQUALS BITWISE_SHIFT_RIGHT BITWISE_SHIFT_RIGHT_EQUALS BITWISE_SHIFT_RIGHT_ZERO_FILL BITWISE_SHIFT_RIGHT_ZERO_FILL_EQUALS NOT_EQUAL DIV_EQUALS EQUALS GREATER_THAN GT_EQUAL LOGICAL_AND LOGICAL_OR LOGICAL_NOT LS_EQUAL MINUS MINUS_EQUALS MOD MOD_EQUALS MULTIPLY MULTIPLY_EQUALS PLUS PLUS_EQUALS INCREMENT DECREMENT DIV COLON COMMA DOT LESS_THAN LINE_TERMINATOR SEMICOLON ONES_COMPLIMENT PAREN_BLOCK BRACE_BLOCK BRACK_BLOCK OPEN_PARENTHESIS CLOSE_PARENTHESIS START_BLOCK END_BLOCK OPEN_SQ_BRACKETS CLOSE_SQ_BRACKETS IF BREAK CONTINUE ELSE FOR FUNCTION THIS RETURN WHILE VOID_SYMBOL NEW DELETE VAR WITH TYPEOF IN VARIABLE STRING NUMBER FALSE TRUE QUERY NULL_TOKEN) + ((left PLUS MINUS) + (left MULTIPLY DIV MOD) + (nonassoc FALSE) + (nonassoc HIGHER_THAN_FALSE) + (nonassoc ELSE) + (nonassoc LOWER_THAN_CLOSE_PARENTHESIS) + (nonassoc CLOSE_PARENTHESIS)) + (Program + ((SourceElement))) + (SourceElement + ((Statement)) + ((FunctionDeclaration))) + (Statement + ((Block)) + ((VariableStatement)) + ((EmptyStatement)) + ((ExpressionStatement)) + ((IfStatement)) + ((IterationExpression)) + ((ContinueStatement)) + ((BreakStatement)) + ((ReturnStatement)) + ((WithStatement))) + (FunctionDeclaration + ((FUNCTION VARIABLE FormalParameterListBlock Block) + (wisent-raw-tag + (semantic-tag-new-function $2 nil $3)))) + (FormalParameterListBlock + ((PAREN_BLOCK) + (semantic-parse-region + (car $region1) + (cdr $region1) + 'FormalParameterList 1))) + (FormalParameterList + ((OPEN_PARENTHESIS) + nil) + ((VARIABLE) + (wisent-raw-tag + (semantic-tag-new-variable $1 nil nil))) + ((CLOSE_PARENTHESIS) + nil) + ((COMMA) + nil)) + (StatementList + ((Statement)) + ((StatementList Statement))) + (Block + ((BRACE_BLOCK))) + (BlockExpand + ((START_BLOCK StatementList END_BLOCK)) + ((START_BLOCK END_BLOCK))) + (VariableStatement + ((VAR VariableDeclarationList SEMICOLON) + (wisent-raw-tag + (semantic-tag-new-variable $2 nil nil)))) + (VariableDeclarationList + ((VariableDeclaration) + (list $1)) + ((VariableDeclarationList COMMA VariableDeclaration) + (append $1 + (list $3)))) + (VariableDeclaration + ((VARIABLE) + (append + (list $1 nil) + $region)) + ((VARIABLE Initializer) + (append + (cons $1 $2) + $region))) + (Initializer + ((ASSIGN_SYMBOL AssignmentExpression) + (list $2))) + (EmptyStatement + ((SEMICOLON))) + (ExpressionStatement + ((Expression SEMICOLON))) + (IfStatement + ((IF OPEN_PARENTHESIS Expression CLOSE_PARENTHESIS Statement) + [HIGHER_THAN_FALSE]) + ((IF OPEN_PARENTHESIS Expression CLOSE_PARENTHESIS Statement ELSE Statement)) + ((IF OPEN_PARENTHESIS FALSE CLOSE_PARENTHESIS Statement)) + ((IF OPEN_PARENTHESIS LeftHandSideExpression AssignmentOperator AssignmentExpression CLOSE_PARENTHESIS Statement))) + (IterationExpression + ((WHILE OPEN_PARENTHESIS Expression CLOSE_PARENTHESIS Statement) + [HIGHER_THAN_FALSE]) + ((WHILE OPEN_PARENTHESIS FALSE CLOSE_PARENTHESIS Statement)) + ((WHILE OPEN_PARENTHESIS LeftHandSideExpression AssignmentOperator AssignmentExpression CLOSE_PARENTHESIS Statement)) + ((FOR OPEN_PARENTHESIS OptionalExpression SEMICOLON OptionalExpression SEMICOLON OptionalExpression CLOSE_PARENTHESIS Statement)) + ((FOR OPEN_PARENTHESIS VAR VariableDeclarationList SEMICOLON OptionalExpression SEMICOLON OptionalExpression CLOSE_PARENTHESIS Statement)) + ((FOR OPEN_PARENTHESIS LeftHandSideExpression IN Expression CLOSE_PARENTHESIS Statement)) + ((FOR OPEN_PARENTHESIS VAR VARIABLE OptionalInitializer IN Expression CLOSE_PARENTHESIS Statement))) + (ContinueStatement + ((CONTINUE SEMICOLON))) + (BreakStatement + ((BREAK SEMICOLON))) + (ReturnStatement + ((RETURN Expression SEMICOLON)) + ((RETURN SEMICOLON))) + (WithStatement + ((WITH OPEN_PARENTHESIS Expression CLOSE_PARENTHESIS Statement))) + (OptionalInitializer + ((Initializer)) + (nil)) + (PrimaryExpression + ((THIS)) + ((VARIABLE)) + ((NUMBER)) + ((STRING)) + ((NULL_TOKEN)) + ((TRUE)) + ((FALSE)) + ((OPEN_PARENTHESIS Expression CLOSE_PARENTHESIS))) + (MemberExpression + ((PrimaryExpression)) + ((MemberExpression OPEN_SQ_BRACKETS Expression CLOSE_SQ_BRACKETS)) + ((MemberExpression DOT VARIABLE)) + ((NEW MemberExpression Arguments))) + (NewExpression + ((MemberExpression)) + ((NEW NewExpression))) + (CallExpression + ((MemberExpression Arguments)) + ((CallExpression Arguments)) + ((CallExpression OPEN_SQ_BRACKETS Expression CLOSE_SQ_BRACKETS)) + ((CallExpression DOT VARIABLE))) + (Arguments + ((OPEN_PARENTHESIS CLOSE_PARENTHESIS)) + ((OPEN_PARENTHESIS ArgumentList CLOSE_PARENTHESIS))) + (ArgumentList + ((AssignmentExpression)) + ((ArgumentList COMMA AssignmentExpression))) + (LeftHandSideExpression + ((NewExpression)) + ((CallExpression))) + (PostfixExpression + ((LeftHandSideExpression)) + ((LeftHandSideExpression INCREMENT)) + ((LeftHandSideExpression DECREMENT))) + (UnaryExpression + ((PostfixExpression)) + ((DELETE UnaryExpression)) + ((VOID_SYMBOL UnaryExpression)) + ((TYPEOF UnaryExpression)) + ((INCREMENT UnaryExpression)) + ((DECREMENT UnaryExpression)) + ((PLUS UnaryExpression)) + ((MINUS UnaryExpression)) + ((ONES_COMPLIMENT UnaryExpression)) + ((LOGICAL_NOT UnaryExpression))) + (MultiplicativeExpression + ((UnaryExpression)) + ((MultiplicativeExpression MULTIPLY UnaryExpression)) + ((MultiplicativeExpression DIV UnaryExpression)) + ((MultiplicativeExpression MOD UnaryExpression))) + (AdditiveExpression + ((MultiplicativeExpression)) + ((AdditiveExpression PLUS MultiplicativeExpression)) + ((AdditiveExpression MINUS MultiplicativeExpression))) + (ShiftExpression + ((AdditiveExpression)) + ((ShiftExpression BITWISE_SHIFT_LEFT AdditiveExpression)) + ((ShiftExpression BITWISE_SHIFT_RIGHT AdditiveExpression)) + ((ShiftExpression BITWISE_SHIFT_RIGHT_ZERO_FILL AdditiveExpression))) + (RelationalExpression + ((ShiftExpression)) + ((RelationalExpression LESS_THAN ShiftExpression)) + ((RelationalExpression GREATER_THAN ShiftExpression)) + ((RelationalExpression LS_EQUAL ShiftExpression)) + ((RelationalExpression GT_EQUAL ShiftExpression))) + (EqualityExpression + ((RelationalExpression)) + ((EqualityExpression EQUALS RelationalExpression)) + ((EqualityExpression NOT_EQUAL RelationalExpression))) + (BitwiseANDExpression + ((EqualityExpression)) + ((BitwiseANDExpression BITWISE_AND EqualityExpression))) + (BitwiseXORExpression + ((BitwiseANDExpression)) + ((BitwiseXORExpression BITWISE_EXCLUSIVE_OR BitwiseANDExpression))) + (BitwiseORExpression + ((BitwiseXORExpression)) + ((BitwiseORExpression BITWISE_OR BitwiseXORExpression))) + (LogicalANDExpression + ((BitwiseORExpression)) + ((LogicalANDExpression LOGICAL_AND BitwiseORExpression))) + (LogicalORExpression + ((LogicalANDExpression)) + ((LogicalORExpression LOGICAL_OR LogicalANDExpression))) + (ConditionalExpression + ((LogicalORExpression)) + ((LogicalORExpression QUERY AssignmentExpression COLON AssignmentExpression))) + (AssignmentExpression + ((ConditionalExpression)) + ((LeftHandSideExpression AssignmentOperator AssignmentExpression) + [LOWER_THAN_CLOSE_PARENTHESIS])) + (AssignmentOperator + ((ASSIGN_SYMBOL)) + ((MULTIPLY_EQUALS)) + ((DIV_EQUALS)) + ((MOD_EQUALS)) + ((PLUS_EQUALS)) + ((MINUS_EQUALS)) + ((BITWISE_SHIFT_LEFT_EQUALS)) + ((BITWISE_SHIFT_RIGHT_EQUALS)) + ((BITWISE_SHIFT_RIGHT_ZERO_FILL_EQUALS)) + ((BITWISE_AND_EQUALS)) + ((BITWISE_EXCLUSIVE_OR_EQUALS)) + ((BITWISE_OR_EQUALS))) + (Expression + ((AssignmentExpression)) + ((Expression COMMA AssignmentExpression))) + (OptionalExpression + ((Expression)) + (nil))) + '(Program FormalParameterList))) + "Parser table.") + +(defun wisent-javascript-jv-wy--install-parser () + "Setup the Semantic Parser." + (semantic-install-function-overrides + '((parse-stream . wisent-parse-stream))) + (setq semantic-parser-name "LALR" + semantic--parse-table wisent-javascript-jv-wy--parse-table + semantic-debug-parser-source "wisent-javascript-jv.wy" + semantic-flex-keywords-obarray wisent-javascript-jv-wy--keyword-table + semantic-lex-types-obarray wisent-javascript-jv-wy--token-table) + ;; Collect unmatched syntax lexical tokens + (semantic-make-local-hook 'wisent-discarding-token-functions) + (add-hook 'wisent-discarding-token-functions + 'wisent-collect-unmatched-syntax nil t)) + + +;;; Analyzers +;; +(define-lex-keyword-type-analyzer wisent-javascript-jv-wy--<keyword>-keyword-analyzer + "keyword analyzer for <keyword> tokens." + "\\(\\sw\\|\\s_\\)+") + +(define-lex-block-type-analyzer wisent-javascript-jv-wy--<block>-block-analyzer + "block analyzer for <block> tokens." + "\\s(\\|\\s)" + '((("(" OPEN_PARENTHESIS PAREN_BLOCK) + ("{" START_BLOCK BRACE_BLOCK) + ("[" OPEN_SQ_BRACKETS BRACK_BLOCK)) + (")" CLOSE_PARENTHESIS) + ("}" END_BLOCK) + ("]" CLOSE_SQ_BRACKETS)) + ) + +(define-lex-regex-type-analyzer wisent-javascript-jv-wy--<symbol>-regexp-analyzer + "regexp analyzer for <symbol> tokens." + "\\(\\sw\\|\\s_\\)+" + nil + 'VARIABLE) + +(define-lex-sexp-type-analyzer wisent-javascript-jv-wy--<string>-sexp-analyzer + "sexp analyzer for <string> tokens." + "\\s\"" + 'STRING) + +(define-lex-regex-type-analyzer wisent-javascript-jv-wy--<number>-regexp-analyzer + "regexp analyzer for <number> tokens." + semantic-lex-number-expression + nil + 'NUMBER) + +(define-lex-string-type-analyzer wisent-javascript-jv-wy--<punctuation>-string-analyzer + "string analyzer for <punctuation> tokens." + "\\(\\s.\\|\\s$\\|\\s'\\)+" + '((ONES_COMPLIMENT . "~") + (SEMICOLON . ";") + (LINE_TERMINATOR . "\n") + (LESS_THAN . "<") + (DOT . ".") + (COMMA . ",") + (COLON . ":") + (DIV . "/") + (DECREMENT . "--") + (INCREMENT . "++") + (PLUS_EQUALS . "+=") + (PLUS . "+") + (MULTIPLY_EQUALS . "*=") + (MULTIPLY . "*") + (MOD_EQUALS . "%=") + (MOD . "%") + (MINUS_EQUALS . "-=") + (MINUS . "-") + (LS_EQUAL . "<=") + (LOGICAL_NOT . "!!") + (LOGICAL_OR . "||") + (LOGICAL_AND . "&&") + (GT_EQUAL . ">=") + (GREATER_THAN . ">") + (EQUALS . "==") + (DIV_EQUALS . "/=") + (NOT_EQUAL . "!=") + (BITWISE_SHIFT_RIGHT_ZERO_FILL_EQUALS . ">>>=") + (BITWISE_SHIFT_RIGHT_ZERO_FILL . ">>>") + (BITWISE_SHIFT_RIGHT_EQUALS . ">>=") + (BITWISE_SHIFT_RIGHT . ">>") + (BITWISE_SHIFT_LEFT_EQUALS . "<<=") + (BITWISE_SHIFT_LEFT . "<<") + (BITWISE_OR_EQUALS . "|=") + (BITWISE_OR . "|") + (BITWISE_EXCLUSIVE_OR_EQUALS . "^=") + (BITWISE_EXCLUSIVE_OR . "^") + (BITWISE_AND_EQUALS . "&=") + (BITWISE_AND . "&") + (ASSIGN_SYMBOL . "=")) + 'punctuation) + + +;;; Epilogue +;; +;;here something like: +;;(define-lex wisent-java-tags-lexer +;; should go +(define-lex javascript-lexer-jv +"javascript thingy" +;;std stuff + semantic-lex-ignore-whitespace + semantic-lex-ignore-newline + semantic-lex-ignore-comments + + ;;stuff generated from the wy file(one for each "type" declaration) + wisent-javascript-jv-wy--<number>-regexp-analyzer + wisent-javascript-jv-wy--<string>-sexp-analyzer + + wisent-javascript-jv-wy--<keyword>-keyword-analyzer + + wisent-javascript-jv-wy--<symbol>-regexp-analyzer + wisent-javascript-jv-wy--<punctuation>-string-analyzer + wisent-javascript-jv-wy--<block>-block-analyzer + + + ;;;;more std stuff + semantic-lex-default-action + ) + +(provide 'semantic/wisent/js-wy) + +;;; semantic/wisent/js-wy.el ends here |