branch: externals/phps-mode commit f8465bd50be6b11084174d3cb48c60941dde448f Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Fix for POW and POW assignment in lexer --- phps-mode-lexer-generator.el | 4 ++-- phps-mode-lexer.el | 4 ++-- test/phps-mode-test-lexer.el | 9 +++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/phps-mode-lexer-generator.el b/phps-mode-lexer-generator.el index d7eff3494a..fdba516223 100644 --- a/phps-mode-lexer-generator.el +++ b/phps-mode-lexer-generator.el @@ -852,13 +852,13 @@ (phps-mode-lexer-generator--add-rule phps-mode-lexer-generator--table 'ST_IN_SCRIPTING - (lambda() (looking-at "\\*\\\\\\*")) + (lambda() (looking-at "\\*\\*")) (lambda() (phps-mode-lexer--return-token 'T_POW))) (phps-mode-lexer-generator--add-rule phps-mode-lexer-generator--table 'ST_IN_SCRIPTING - (lambda() (looking-at "\\*\\\\\\*=")) + (lambda() (looking-at "\\*\\*=")) (lambda() (phps-mode-lexer--return-token 'T_POW_EQUAL))) (phps-mode-lexer-generator--add-rule diff --git a/phps-mode-lexer.el b/phps-mode-lexer.el index e41ba52829..c11e9f8ce9 100644 --- a/phps-mode-lexer.el +++ b/phps-mode-lexer.el @@ -9,8 +9,8 @@ ;; any higher order meta-lexer logic goes into `phps-mode-lex-analyzer.el'. ;; ;; Features: -;; * Defines the lexer for this grammar based on the Zend PHP 8.2 Lexer at -;; https://raw.githubusercontent.com/php/php-src/PHP-8.2/Zend/zend_language_scanner.l +;; * Defines the lexer for this grammar based on the Zend PHP 8.3 Lexer at +;; https://raw.githubusercontent.com/php/php-src/PHP-8.3/Zend/zend_language_scanner.l ;; which is using re2c. ;;; Code: diff --git a/test/phps-mode-test-lexer.el b/test/phps-mode-test-lexer.el index 79a2b920cf..ff2c0d176f 100644 --- a/test/phps-mode-test-lexer.el +++ b/test/phps-mode-test-lexer.el @@ -332,6 +332,15 @@ '((T_OPEN_TAG 1 . 7) (T_VARIABLE 8 . 10) ("=" 11 . 12) (T_DNUMBER 13 . 16) (";" 16 . 17) (T_VARIABLE 19 . 21) ("=" 22 . 23) (T_DNUMBER 24 . 26) (";" 26 . 27)) ))) + (phps-mode-test--with-buffer + "<?php\n\n$a = 3 ** 2;\n$a **= 2;" + "Exponentiation and assignment exponentiation" + (should + (equal + phps-mode-lex-analyzer--tokens + '((T_OPEN_TAG 1 . 7) (T_VARIABLE 8 . 10) ("=" 11 . 12) (T_LNUMBER 13 . 14) (T_POW 15 . 17) (T_LNUMBER 18 . 19) (";" 19 . 20) (T_VARIABLE 21 . 23) (T_POW_EQUAL 24 . 27) (T_LNUMBER 28 . 29) (";" 29 . 30)) + ))) + ) (defun phps-mode-test-lexer--complex-tokens ()