branch: externals/phps-mode
commit b9f74656adc28e01e734afa9aa7307b47829f901
Author: Christian Johansson <christ...@cvj.se>
Commit: Christian Johansson <christ...@cvj.se>

    Added ONUM regex
---
 phps-mode-lexer.el | 35 +++++++++++++++++++++++++++--------
 1 file changed, 27 insertions(+), 8 deletions(-)

diff --git a/phps-mode-lexer.el b/phps-mode-lexer.el
index 679ef90256..a53596ed83 100644
--- a/phps-mode-lexer.el
+++ b/phps-mode-lexer.el
@@ -52,14 +52,6 @@
   2147483648
   "Limit for 32-bit integer.")
 
-(defconst phps-mode-lexer--bnum
-  "0b[01]+"
-  "Boolean number.")
-
-(defconst phps-mode-lexer--hnum
-  "0x[0-9a-fA-F]+"
-  "Hexadecimal number.")
-
 (defconst phps-mode-lexer--lnum
   "[0-9]+"
   "Long number.")
@@ -75,6 +67,20 @@
           phps-mode-lexer--lnum)
   "Exponent double number.")
 
+;; TODO Fix this
+(defconst phps-mode-lexer--hnum
+  "0x[0-9a-fA-F]+"
+  "Hexadecimal number.")
+
+;; TODO Fix this
+(defconst phps-mode-lexer--bnum
+  "0b[01]+"
+  "Boolean number.")
+
+(defconst phps-mode-lexer--onum
+  "0o[0-7]+\\(_[0-7]+\\)*"
+  "Octal number.")
+
 (defconst phps-mode-lexer--label
   "[A-Za-z_[:nonascii:]][0-9A-Za-z_[:nonascii:]]*"
   "Labels are used for names.")
@@ -1250,6 +1256,19 @@
          (phps-mode-lexer--return-token 'T_DNUMBER)
        (phps-mode-lexer--return-token 'T_LNUMBER))))
 
+  ;; TODO ONUM here
+  (phps-mode-lexer--match-macro
+   ST_IN_SCRIPTING
+   (looking-at phps-mode-lexer--onum)
+   (let* ((start (match-beginning 0))
+          (end (match-end 0))
+          (data (string-to-number
+                 (buffer-substring-no-properties start end)
+                 8)))
+     (if (> data phps-mode-lexer--long-limit)
+         (phps-mode-lexer--return-token 'T_DNUMBER)
+       (phps-mode-lexer--return-token 'T_LNUMBER))))
+
   (phps-mode-lexer--match-macro
    ST_IN_SCRIPTING
    (looking-at phps-mode-lexer--lnum)

Reply via email to