summaryrefslogtreecommitdiff
path: root/lisp/cedet/semantic/wisent/js-wy.el
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2009-09-07 16:38:28 +0000
committerChong Yidong <cyd@stupidchicken.com>2009-09-07 16:38:28 +0000
commitbb05142310581fe66bd9920406544c58976997ed (patch)
treebea35a57f76c5237d0ee856e135bb1e7f5b2c8c9 /lisp/cedet/semantic/wisent/js-wy.el
parentbbaca9f74bcc6f530d8bd2e591ab25ea556d794f (diff)
downloademacs-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.el491
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