[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode 2efba0b 38/62: Started on generated parser vi
From: |
Christian Johansson |
Subject: |
[elpa] externals/phps-mode 2efba0b 38/62: Started on generated parser via emacs-parser-generator |
Date: |
Tue, 20 Apr 2021 10:56:19 -0400 (EDT) |
branch: externals/phps-mode
commit 2efba0b1123db707caecb75f252f715a7cfc6ba1
Author: Christian Johansson <christian@mediastrategi.se>
Commit: Christian Johansson <christian@mediastrategi.se>
Started on generated parser via emacs-parser-generator
---
admin/phps-mode-automation-grammar.el | 357 ++++++++++++++++++++++++++++++++++
admin/phps-mode-automation-header.wy | 312 -----------------------------
admin/phps-mode-automation.el | 51 +----
3 files changed, 360 insertions(+), 360 deletions(-)
diff --git a/admin/phps-mode-automation-grammar.el
b/admin/phps-mode-automation-grammar.el
new file mode 100644
index 0000000..3e355ed
--- /dev/null
+++ b/admin/phps-mode-automation-grammar.el
@@ -0,0 +1,357 @@
+;;; phps-mode-automation-grammar --- Grammar -*- lexical-binding: t -*-
+
+;;; Commentary:
+
+;;; Code:
+
+(defconst
+ phps-mode-automation-grammar-non-terminals
+ '(
+ absolute_trait_method_reference
+ alt_if_stmt
+ alt_if_stmt_without_else
+ anonymous_class
+ argument
+ argument_list
+ array_object_dereferencable
+ array_pair
+ array_pair_list
+ attribute
+ attribute_decl
+ attribute_group
+ attributed_class_statement
+ attributed_parameter
+ attributed_statement
+ attributes
+ backticks_expr
+ backup_doc_comment
+ backup_fn_flags
+ backup_lex_pos
+ callable_expr
+ callable_variable
+ case_list
+ case_separator
+ catch_list
+ catch_name_list
+ class_const_decl
+ class_const_list
+ class_constant
+ class_declaration_statement
+ class_modifier
+ class_modifiers
+ class_name
+ class_name_list
+ class_name_reference
+ class_statement
+ class_statement_list
+ const_decl
+ const_list
+ constant
+ ctor_arguments
+ declare_statement
+ dereferencable_scalar
+ echo_expr_list
+ encaps_list
+ encaps_var
+ encaps_var_offset
+ exit_expr
+ expr
+ extends_from
+ finally_statement
+ fn
+ for_exprs
+ for_statement
+ foreach_statement
+ foreach_variable
+ fully_dereferencable
+ function
+ function_call
+ function_declaration_statement
+ global_var
+ global_var_list
+ group_use_declaration
+ identifier
+ if_stmt
+ if_stmt_without_else
+ implements_list
+ inline_function
+ inline_use_declaration
+ inline_use_declarations
+ inner_statement
+ inner_statement_list
+ interface_declaration_statement
+ interface_extends_list
+ internal_functions_in_yacc
+ is_reference
+ is_variadic
+ isset_variable
+ isset_variables
+ legacy_namespace_name
+ lexical_var
+ lexical_var_list
+ lexical_vars
+ match
+ match_arm
+ match_arm_cond_list
+ match_arm_list
+ member_modifier
+ member_name
+ method_body
+ method_modifiers
+ mixed_group_use_declaration
+ name
+ namespace_declaration_name
+ namespace_name
+ new_expr
+ new_variable
+ non_empty_argument_list
+ non_empty_array_pair_list
+ non_empty_for_exprs
+ non_empty_match_arm_list
+ non_empty_member_modifiers
+ non_empty_parameter_list
+ optional_expr
+ optional_type_without_static
+ optional_variable
+ optional_visibility_modifier
+ parameter
+ parameter_list
+ possible_array_pair
+ possible_comma
+ property
+ property_list
+ property_name
+ reserved_non_modifiers
+ return_type
+ returns_ref
+ scalar
+ semi_reserved
+ simple_variable
+ start
+ statement
+ static_member
+ static_var
+ static_var_list
+ switch_case_list
+ top_statement
+ top_statement_list
+ trait_adaptation
+ trait_adaptation_list
+ trait_adaptations
+ trait_alias
+ trait_declaration_statement
+ trait_method_reference
+ trait_precedence
+ type
+ type_expr
+ type_expr_without_static
+ type_without_static
+ union_type
+ union_type_without_static
+ unprefixed_use_declaration
+ unprefixed_use_declarations
+ unset_variable
+ unset_variables
+ use_declaration
+ use_declarations
+ use_type
+ variable
+ variable_class_name
+ variable_modifiers
+ while_statement
+ )
+ "The non-terminals in grammar.")
+
+(defconst
+ phps-mode-automation-grammar-terminals
+ '(
+ "!"
+ "%"
+ "&"
+ "("
+ ")"
+ "*"
+ "+"
+ ","
+ "-"
+ "/"
+ ":"
+ ";"
+ "<"
+ "="
+ ">"
+ "?"
+ "@"
+ "["
+ "]"
+ "^"
+ "|"
+ "~"
+ T_ABSTRACT
+ T_AND
+ T_ARG
+ T_ARRAY
+ T_ARROW
+ T_AS
+ T_ASSIGN
+ T_ATTRIBUTE
+ T_BAD
+ T_BOOL
+ T_BOOLEAN
+ T_BREAK
+ T_CALL
+ T_CALLABLE
+ T_CASE
+ T_CATCH
+ T_CLASS
+ T_CLONE
+ T_CLOSE
+ T_CLOSURE
+ T_COALESCE
+ T_COMMENT
+ T_COMPILER
+ T_CONCAT
+ T_CONDITIONAL
+ T_CONST
+ T_CONSTANT
+ T_CONTINUE
+ T_CURLY
+ T_DEC
+ T_DECL
+ T_DECLARE
+ T_DEFAULT
+ T_DIM
+ T_DIR
+ T_DIV
+ T_DNUMBER
+ T_DO
+ T_DOC
+ T_DOLLAR
+ T_DOUBLE
+ T_ECHO
+ T_ELLIPSIS
+ T_ELSE
+ T_ELSEIF
+ T_EMPTY
+ T_ENCAPS
+ T_ENCAPSED
+ T_END
+ T_ENDDECLARE
+ T_ENDFOR
+ T_ENDFOREACH
+ T_ENDIF
+ T_ENDSWITCH
+ T_ENDWHILE
+ T_EQUAL
+ T_ERROR
+ T_EVAL
+ T_EXIT
+ T_EXPR
+ T_EXTENDS
+ T_FILE
+ T_FINAL
+ T_FINALLY
+ T_FN
+ T_FOR
+ T_FOREACH
+ T_FQ
+ T_FUNC
+ T_FUNCTION
+ T_GLOBAL
+ T_GOTO
+ T_GREATER
+ T_GROUP
+ T_HALT
+ T_IDENTICAL
+ T_IF
+ T_IMPLEMENTS
+ T_INC
+ T_INCLUDE
+ T_INLINE
+ T_INSTANCEOF
+ T_INSTEADOF
+ T_INT
+ T_INTERFACE
+ T_IS
+ T_ISSET
+ T_LABEL
+ T_LINE
+ T_LIST
+ T_LNUMBER
+ T_LOGICAL
+ T_MAGIC
+ T_MATCH
+ T_METHOD
+ T_MINUS
+ T_MOD
+ T_MUL
+ T_NAME
+ T_NAMED
+ T_NAMESPACE
+ T_NEW
+ T_NOELSE
+ T_NS
+ T_NULLSAFE
+ T_NUM
+ T_OBJECT
+ T_OPEN
+ T_OPERATOR
+ T_OR
+ T_PAAMAYIM
+ T_PARAM
+ T_PLUS
+ T_POST
+ T_POW
+ T_PRE
+ T_PRINT
+ T_PRIVATE
+ T_PROP
+ T_PROTECTED
+ T_PUBLIC
+ T_REF
+ T_REQUIRE
+ T_RETURN
+ T_SHELL
+ T_SILENCE
+ T_SL
+ T_SPACESHIP
+ T_SR
+ T_START
+ T_STATIC
+ T_STMT
+ T_STRING
+ T_SWITCH
+ T_THROW
+ T_TRAIT
+ T_TRY
+ T_TYPE
+ T_UNARY
+ T_UNPACK
+ T_UNSET
+ T_USE
+ T_VAR
+ T_VARIABLE
+ T_WHILE
+ T_WHITESPACE
+ T_XOR
+ T_YIELD
+ )
+ "The terminals of grammar.")
+
+(defconst
+ phps-mode-automation-grammar-look-ahead-number
+ 1
+ "The look-ahead number of grammar.")
+
+(defconst
+ phps-mode-automation-grammar-productions
+ '(
+ ;; TODO Implement this
+ )
+ "The productions of grammar.")
+
+
+(provide 'phps-mode-automation-grammar)
+
+;;; phps-mode-automation-grammar.el ends here
+
diff --git a/admin/phps-mode-automation-header.wy
b/admin/phps-mode-automation-header.wy
deleted file mode 100644
index 17c4b33..0000000
--- a/admin/phps-mode-automation-header.wy
+++ /dev/null
@@ -1,312 +0,0 @@
-;;; phps.wy --- Semantic LALR grammar for PHP -*- lexical-binding: t -*-
-
-;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
-
-;; This file is not part of GNU Emacs.
-
-;; This program 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 2, or (at
-;; your option) any later version.
-
-;; This program 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:
-
-;; Run `(wisent-make-parsers)' or "C-c C-c" to generate grammar-file in Emacs
Lisp.
-;;
-;; To debug (setq wisent-verbose-flag t) and check buffer *wisent-log*
-;;
-;; Based on the Zend PHP Parser YACC
https://github.com/php/php-src/blob/master/Zend/zend_language_parser.y
-
-;; Create macros for all macros uses in original YACC, base macro structure on
semantic-php-wy-macro.el
-
-;; Don't edit phps.wy because it's generated by phps-automation.el and
phps-automation-header.wy
-
-;; Check semantic/wisent/grammar.el for macro definitions
-
-;; To force compile grammar use: (semantic-grammar-create-package t)
-
-
-;;; Code:
-
-%package phps-mode
-%provide phps-mode-wy
-
-%languagemode phps-mode
-
-%{
- (setq max-specpdl-size 160000)
-}
-
-%use-macros phps-mode-parser-grammar-macro
-{
- ZEND_AST_CREATE
- ZEND_AST_CREATE_ASSIGN_OP
- ZEND_AST_CREATE_BINARY_OP
- ZEND_AST_CREATE_CAST
- ZEND_AST_CREATE_CLASS_CONST_OR_NAME
- ZEND_AST_CREATE_EX
- ZEND_AST_CREATE_LIST
- ZEND_AST_CREATE_ZVAL
- ZEND_AST_LIST_ADD
- ZEND_AST_LIST_RTRIM
- ZEND_LEX_TSTRING
- ZEND_NEGATE_NUM_STRING
- ZVAL_INTERNED_STR
-}
-
-%precedence T_THROW
-%precedence PREC_ARROW_FUNCTION
-%precedence T_INCLUDE T_INCLUDE_ONCE T_REQUIRE T_REQUIRE_ONCE
-%left T_LOGICAL_OR
-%left T_LOGICAL_XOR
-%left T_LOGICAL_AND
-%precedence T_PRINT
-%precedence T_YIELD
-%precedence T_DOUBLE_ARROW
-%precedence T_YIELD_FROM
-%precedence '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL
T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL
T_SR_EQUAL T_POW_EQUAL T_COALESCE_EQUAL
-%left '?' ':'
-%right T_COALESCE
-%left T_BOOLEAN_OR
-%left T_BOOLEAN_AND
-%left '|'
-%left '^'
-%left '&'
-%nonassoc T_IS_EQUAL T_IS_NOT_EQUAL T_IS_IDENTICAL T_IS_NOT_IDENTICAL
T_SPACESHIP
-%nonassoc '<' T_IS_SMALLER_OR_EQUAL '>' T_IS_GREATER_OR_EQUAL
-%left '.'
-%left T_SL T_SR
-%left '+' '-'
-%left '*' '/' '%'
-%precedence '!'
-%precedence T_INSTANCEOF
-%precedence '~' T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST
T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@'
-%right T_POW
-%precedence T_CLONE
-
-;; Resolve danging else conflict
-%precedence T_NOELSE
-%precedence T_ELSEIF
-%precedence T_ELSE
-
-%token <ast> T_LNUMBER "integer number (T_LNUMBER)"
-%token <ast> T_DNUMBER "floating-point number (T_DNUMBER)"
-%token <ast> T_STRING "identifier (T_STRING)"
-%token <ast> T_VARIABLE "variable (T_VARIABLE)"
-%token <ast> T_INLINE_HTML
-%token <ast> T_ENCAPSED_AND_WHITESPACE "quoted-string and whitespace
(T_ENCAPSED_AND_WHITESPACE)"
-%token <ast> T_CONSTANT_ENCAPSED_STRING "quoted-string
(T_CONSTANT_ENCAPSED_STRING)"
-%token <ast> T_STRING_VARNAME "variable name (T_STRING_VARNAME)"
-%token <ast> T_NUM_STRING "number (T_NUM_STRING)"
-
-%type <punctuation>
-%token <punctuation> ADDITION "+"
-%token <punctuation> ASSIGN "="
-%token <punctuation> AT "@"
-%token <punctuation> BACKTICK "`"
-%token <punctuation> BITWISE_AND "&"
-%token <punctuation> BITWISE_OR "|"
-%token <punctuation> CLOSE_CURLY_BRACKET "]"
-%token <punctuation> CLOSE_PARENTHESIS ")"
-%token <punctuation> CLOSE_SQUARE_BRACKET "]"
-%token <punctuation> COLON ":"
-%token <punctuation> COMMA ","
-%token <punctuation> DOLLAR_SIGN "$"
-%token <punctuation> DOUBLE_QUOTE "\""
-%token <punctuation> DIVISION "/"
-%token <punctuation> DOT "."
-%token <punctuation> GREATER_THAN ">"
-%token <punctuation> LESSER_THAN "<"
-%token <punctuation> MODULO "%"
-%token <punctuation> MULTIPLICATION "*"
-%token <punctuation> NEGATION "!"
-%token <punctuation> OPEN_CURLY_BRACKET "{"
-%token <punctuation> OPEN_PARENTHESIS "("
-%token <punctuation> OPEN_SQUARE_BRACKET "["
-%token <punctuation> POW "^"
-%token <punctuation> QUESTION_MARK "?"
-%token <punctuation> SEMICOLON ";"
-%token <punctuation> SINGLE_QUOTE "'"
-%token <punctuation> SUBTRACTION "-"
-%token <punctuation> UNARY "~"
-
-%token END 0 "end of file"
-%token T_INCLUDE "include (T_INCLUDE)"
-%token T_INCLUDE_ONCE "include_once (T_INCLUDE_ONCE)"
-%token T_EVAL "eval (T_EVAL)"
-%token T_REQUIRE "require (T_REQUIRE)"
-%token T_REQUIRE_ONCE "require_once (T_REQUIRE_ONCE)"
-%token T_LOGICAL_OR "or (T_LOGICAL_OR)"
-%token T_LOGICAL_XOR "xor (T_LOGICAL_XOR)"
-%token T_LOGICAL_AND "and (T_LOGICAL_AND)"
-%token T_PRINT "print (T_PRINT)"
-%token T_YIELD "yield (T_YIELD)"
-%token T_YIELD_FROM "yield from (T_YIELD_FROM)"
-%token T_PLUS_EQUAL "+= (T_PLUS_EQUAL)"
-%token T_MINUS_EQUAL "-= (T_MINUS_EQUAL)"
-%token T_MUL_EQUAL "*= (T_MUL_EQUAL)"
-%token T_DIV_EQUAL "/= (T_DIV_EQUAL)"
-%token T_CONCAT_EQUAL ".= (T_CONCAT_EQUAL)"
-%token T_MOD_EQUAL "%= (T_MOD_EQUAL)"
-%token T_AND_EQUAL "&= (T_AND_EQUAL)"
-%token T_OR_EQUAL "|= (T_OR_EQUAL)"
-%token T_XOR_EQUAL "^= (T_XOR_EQUAL)"
-%token T_SL_EQUAL "<<= (T_SL_EQUAL)"
-%token T_SR_EQUAL ">>= (T_SR_EQUAL)"
-%token T_COALESCE_EQUAL "??= (T_COALESCE_EQUAL)"
-%token T_BOOLEAN_OR "|| (T_BOOLEAN_OR)"
-%token T_BOOLEAN_AND "&& (T_BOOLEAN_AND)"
-%token T_IS_EQUAL "== (T_IS_EQUAL)"
-%token T_IS_NOT_EQUAL "!= (T_IS_NOT_EQUAL)"
-%token T_IS_IDENTICAL "=== (T_IS_IDENTICAL)"
-%token T_IS_NOT_IDENTICAL "!== (T_IS_NOT_IDENTICAL)"
-%token T_IS_SMALLER_OR_EQUAL "<= (T_IS_SMALLER_OR_EQUAL)"
-%token T_IS_GREATER_OR_EQUAL ">= (T_IS_GREATER_OR_EQUAL)"
-%token T_SPACESHIP "<=> (T_SPACESHIP)"
-%token T_SL "<< (T_SL)"
-%token T_SR ">> (T_SR)"
-%token T_INSTANCEOF "instanceof (T_INSTANCEOF)"
-%token T_INC "++ (T_INC)"
-%token T_DEC "-- (T_DEC)"
-%token T_INT_CAST "(int) (T_INT_CAST)"
-%token T_DOUBLE_CAST "(double) (T_DOUBLE_CAST)"
-%token T_STRING_CAST "(string) (T_STRING_CAST)"
-%token T_ARRAY_CAST "(array) (T_ARRAY_CAST)"
-%token T_OBJECT_CAST "(object) (T_OBJECT_CAST)"
-%token T_BOOL_CAST "(bool) (T_BOOL_CAST)"
-%token T_UNSET_CAST "(unset) (T_UNSET_CAST)"
-%token T_NEW "new (T_NEW)"
-%token T_CLONE "clone (T_CLONE)"
-%token T_EXIT "exit (T_EXIT)"
-%token T_IF "if (T_IF)"
-%token T_ELSEIF "elseif (T_ELSEIF)"
-%token T_ELSE "else (T_ELSE)"
-%token T_ENDIF "endif (T_ENDIF)"
-%token T_ECHO "echo (T_ECHO)"
-%token T_DO "do (T_DO)"
-%token T_WHILE "while (T_WHILE)"
-%token T_ENDWHILE "endwhile (T_ENDWHILE)"
-%token T_FOR "for (T_FOR)"
-%token T_ENDFOR "endfor (T_ENDFOR)"
-%token T_FOREACH "foreach (T_FOREACH)"
-%token T_ENDFOREACH "endforeach (T_ENDFOREACH)"
-%token T_DECLARE "declare (T_DECLARE)"
-%token T_ENDDECLARE "enddeclare (T_ENDDECLARE)"
-%token T_AS "as (T_AS)"
-%token T_SWITCH "switch (T_SWITCH)"
-%token T_ENDSWITCH "endswitch (T_ENDSWITCH)"
-%token T_CASE "case (T_CASE)"
-%token T_DEFAULT "default (T_DEFAULT)"
-%token T_BREAK "break (T_BREAK)"
-%token T_CONTINUE "continue (T_CONTINUE)"
-%token T_GOTO "goto (T_GOTO)"
-%token T_FUNCTION "function (T_FUNCTION)"
-%token T_FN "fn (T_FN)"
-%token T_CONST "const (T_CONST)"
-%token T_RETURN "return (T_RETURN)"
-%token T_TRY "try (T_TRY)"
-%token T_CATCH "catch (T_CATCH)"
-%token T_FINALLY "finally (T_FINALLY)"
-%token T_THROW "throw (T_THROW)"
-%token T_USE "use (T_USE)"
-%token T_INSTEADOF "insteadof (T_INSTEADOF)"
-%token T_GLOBAL "global (T_GLOBAL)"
-%token T_STATIC "static (T_STATIC)"
-%token T_ABSTRACT "abstract (T_ABSTRACT)"
-%token T_FINAL "final (T_FINAL)"
-%token T_PRIVATE "private (T_PRIVATE)"
-%token T_PROTECTED "protected (T_PROTECTED)"
-%token T_PUBLIC "public (T_PUBLIC)"
-%token T_VAR "var (T_VAR)"
-%token T_UNSET "unset (T_UNSET)"
-%token T_ISSET "isset (T_ISSET)"
-%token T_EMPTY "empty (T_EMPTY)"
-%token T_HALT_COMPILER "__halt_compiler (T_HALT_COMPILER)"
-%token T_CLASS "class (T_CLASS)"
-%token T_TRAIT "trait (T_TRAIT)"
-%token T_INTERFACE "interface (T_INTERFACE)"
-%token T_EXTENDS "extends (T_EXTENDS)"
-%token T_IMPLEMENTS "implements (T_IMPLEMENTS)"
-%token T_OBJECT_OPERATOR "-> (T_OBJECT_OPERATOR)"
-%token T_DOUBLE_ARROW "=> (T_DOUBLE_ARROW)"
-%token T_LIST "list (T_LIST)"
-%token T_ARRAY "array (T_ARRAY)"
-%token T_CALLABLE "callable (T_CALLABLE)"
-%token T_LINE "__LINE__ (T_LINE)"
-%token T_FILE "__FILE__ (T_FILE)"
-%token T_DIR "__DIR__ (T_DIR)"
-%token T_CLASS_C "__CLASS__ (T_CLASS_C)"
-%token T_TRAIT_C "__TRAIT__ (T_TRAIT_C)"
-%token T_METHOD_C "__METHOD__ (T_METHOD_C)"
-%token T_FUNC_C "__FUNCTION__ (T_FUNC_C)"
-%token T_COMMENT "comment (T_COMMENT)"
-%token T_DOC_COMMENT "doc comment (T_DOC_COMMENT)"
-%token T_OPEN_TAG "open tag (T_OPEN_TAG)"
-%token T_OPEN_TAG_WITH_ECHO "open tag with echo (T_OPEN_TAG_WITH_ECHO)"
-%token T_CLOSE_TAG "close tag (T_CLOSE_TAG)"
-%token T_WHITESPACE "whitespace (T_WHITESPACE)"
-%token T_START_HEREDOC "heredoc start (T_START_HEREDOC)"
-%token T_END_HEREDOC "heredoc end (T_END_HEREDOC)"
-%token T_DOLLAR_OPEN_CURLY_BRACES "${ (T_DOLLAR_OPEN_CURLY_BRACES)"
-%token T_CURLY_OPEN "{$ (T_CURLY_OPEN)"
-%token T_PAAMAYIM_NEKUDOTAYIM ":: (T_PAAMAYIM_NEKUDOTAYIM)"
-%token T_NAMESPACE "namespace (T_NAMESPACE)"
-%token T_NS_C "__NAMESPACE__ (T_NS_C)"
-%token T_NS_SEPARATOR "\\ (T_NS_SEPARATOR)"
-%token T_ELLIPSIS "... (T_ELLIPSIS)"
-%token T_COALESCE "?? (T_COALESCE)"
-%token T_POW "** (T_POW)"
-%token T_POW_EQUAL "**= (T_POW_EQUAL)"
-%token T_BAD_CHARACTER "invalid character (T_BAD_CHARACTER)"
-
-;; Token used to force a parse error from the lexer
-%token T_ERROR
-
-%type <ast> top_statement namespace_name name statement
function_declaration_statement
-%type <ast> class_declaration_statement trait_declaration_statement
-%type <ast> interface_declaration_statement interface_extends_list
-%type <ast> group_use_declaration inline_use_declarations
inline_use_declaration
-%type <ast> mixed_group_use_declaration use_declaration
unprefixed_use_declaration
-%type <ast> unprefixed_use_declarations const_decl inner_statement
-%type <ast> expr optional_expr while_statement for_statement foreach_variable
-%type <ast> foreach_statement declare_statement finally_statement
unset_variable variable
-%type <ast> extends_from parameter optional_type_without_static argument
global_var
-%type <ast> static_var class_statement trait_adaptation trait_precedence
trait_alias
-%type <ast> absolute_trait_method_reference trait_method_reference property
echo_expr
-%type <ast> new_expr anonymous_class class_name class_name_reference
simple_variable
-%type <ast> internal_functions_in_yacc
-%type <ast> exit_expr scalar backticks_expr lexical_var function_call
member_name property_name
-%type <ast> variable_class_name dereferencable_scalar constant class_constant
-%type <ast> fully_dereferencable array_object_dereferencable
-%type <ast> callable_expr callable_variable static_member new_variable
-%type <ast> encaps_var encaps_var_offset isset_variables
-%type <ast> top_statement_list use_declarations const_list
inner_statement_list if_stmt
-%type <ast> alt_if_stmt for_exprs switch_case_list global_var_list
static_var_list
-%type <ast> echo_expr_list unset_variables catch_name_list catch_list
optional_variable parameter_list class_statement_list
-%type <ast> implements_list case_list if_stmt_without_else
-%type <ast> non_empty_parameter_list argument_list non_empty_argument_list
property_list
-%type <ast> class_const_list class_const_decl class_name_list
trait_adaptations method_body non_empty_for_exprs
-%type <ast> ctor_arguments alt_if_stmt_without_else trait_adaptation_list
lexical_vars
-%type <ast> lexical_var_list encaps_list
-%type <ast> array_pair non_empty_array_pair_list array_pair_list
possible_array_pair
-%type <ast> isset_variable type return_type type_expr type_without_static
-%type <ast> identifier type_expr_without_static union_type_without_static
-%type <ast> inline_function union_type
-
-%type <num> returns_ref function fn is_reference is_variadic variable_modifiers
-%type <num> method_modifiers non_empty_member_modifiers member_modifier
-%type <num> class_modifiers class_modifier use_type backup_fn_flags
-
-%type <ptr> backup_lex_pos
-%type <str> backup_doc_comment
-
-%start start
\ No newline at end of file
diff --git a/admin/phps-mode-automation.el b/admin/phps-mode-automation.el
index d4ff671..28bc423 100644
--- a/admin/phps-mode-automation.el
+++ b/admin/phps-mode-automation.el
@@ -1,4 +1,4 @@
-;;; phps-automation --- Generate a Wisent Parser file -*- lexical-binding: t
-*-
+;;; phps-mode-automation --- Generate a Wisent Parser file -*-
lexical-binding: t -*-
;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
@@ -27,41 +27,8 @@
;;; Code:
-(let ((php-yacc-url
"https://raw.githubusercontent.com/php/php-src/master/Zend/zend_language_parser.y")
- (php-yacc-file (expand-file-name "zend_language_parser.y"))
- (wisent-destination (expand-file-name
"../phps-mode-parser-grammar-raw.wy"))
- (header (expand-file-name "phps-mode-automation-header.wy"))
- (terminal-replacements (make-hash-table :test 'equal)))
-
- (puthash "'+'" "ADDITION" terminal-replacements)
- (puthash "'='" "ASSIGN" terminal-replacements)
- (puthash "'@'" "AT" terminal-replacements)
- (puthash "'`'" "BACKTICK" terminal-replacements)
- (puthash "'&'" "BITWISE_AND" terminal-replacements)
- (puthash "'|'" "BITWISE_OR" terminal-replacements)
- (puthash "'}'" "CLOSE_CURLY_BRACKET" terminal-replacements)
- (puthash "')'" "CLOSE_PARENTHESIS" terminal-replacements)
- (puthash "']'" "CLOSE_SQUARE_BRACKET" terminal-replacements)
- (puthash "':'" "COLON" terminal-replacements)
- (puthash "','" "COMMA" terminal-replacements)
- (puthash "'$'" "DOLLAR_SIGN" terminal-replacements)
- (puthash "'\"'" "DOUBLE_QUOTE" terminal-replacements)
- (puthash "'/'" "DIVISION" terminal-replacements)
- (puthash "'.'" "DOT" terminal-replacements)
- (puthash "'>'" "GREATER_THAN" terminal-replacements)
- (puthash "'<'" "LESSER_THAN" terminal-replacements)
- (puthash "'%'" "MODULO" terminal-replacements)
- (puthash "'*'" "MULTIPLICATION" terminal-replacements)
- (puthash "'!'" "NEGATION" terminal-replacements)
- (puthash "'{'" "OPEN_CURLY_BRACKET" terminal-replacements)
- (puthash "'('" "OPEN_PARENTHESIS" terminal-replacements)
- (puthash "'['" "OPEN_SQUARE_BRACKET" terminal-replacements)
- (puthash "'^'" "POW" terminal-replacements)
- (puthash "'?'" "QUESTION_MARK" terminal-replacements)
- (puthash "';'" "SEMICOLON" terminal-replacements)
- (puthash "'''" "SINGLE_QUOTE" terminal-replacements)
- (puthash "'-'" "SUBTRACTION" terminal-replacements)
- (puthash "'~'" "UNARY" terminal-replacements)
+(let ((php-yacc-url
"https://raw.githubusercontent.com/php/php-src/php-8.0.0/Zend/zend_language_parser.y")
+ (php-yacc-file (expand-file-name "zend_language_parser.y")))
;; Download Yacc if not available
(unless (file-exists-p php-yacc-file)
@@ -69,18 +36,6 @@
(url-copy-file php-yacc-url php-yacc-file t t)
(message "Download completed"))
- ;; Generate grammar
- (message "Generating Wisent grammar..")
- (if (fboundp 'emacs-wisent-grammar-converter--generate-grammar-from-filename)
- (emacs-wisent-grammar-converter--generate-grammar-from-filename
- php-yacc-file
- wisent-destination
- header
- "phps-mode-parser--"
- terminal-replacements)
- (display-warning
- 'warning
- "Missing emacs-wisent-grammar-converter!"))
(message "Automation completed"))
(provide 'phps-mode-automation)
- [elpa] externals/phps-mode ec19574 43/62: More implementation of grammar, (continued)
- [elpa] externals/phps-mode ec19574 43/62: More implementation of grammar, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode a99284a 39/62: Added TODO item, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 209055b 62/62: Updated date and version, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 86de51b 51/62: Fixed bug with incremental nesting stack, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode a164e82 33/62: Updated README about PHP 8.0 lexer, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 5a3bee3 40/62: More work on implementing PHP 8.0 grammar, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode a4b641d 56/62: Improved Make-script for compile and clean, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode d56472c 50/62: Added precedence attributes to grammar, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode e92bed3 54/62: Started debugging failing indentation in some weird cases, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 3fb73ee 37/62: Added bookkeeping support of superglobals $argc, $argv and $http_response_header, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 2efba0b 38/62: Started on generated parser via emacs-parser-generator,
Christian Johansson <=
- [elpa] externals/phps-mode fd971ee 48/62: Fixed missing lex-analyzer tokens, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 30e1317 59/62: Removed test-file from master branch, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode b04da34 60/62: Fixed tests, only clearing imenu when starting to process changes, if idle inteval is set to nil process changes directly, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 1991912 49/62: Fixed bug in grammar syntax, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode afaf192 53/62: Resolved conflict, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode daff735 58/62: Removed debug output, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode b115fdc 57/62: Added ELPA copyright to file missing it, Christian Johansson, 2021/04/20