emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/phps-mode f9ddef260c 039/135: Passing first bookkeeping


From: Christian Johansson
Subject: [elpa] externals/phps-mode f9ddef260c 039/135: Passing first bookkeeping test using SDT generated bookkeeping
Date: Sun, 29 Jan 2023 03:11:02 -0500 (EST)

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

    Passing first bookkeeping test using SDT generated bookkeeping
---
 phps-mode-ast-bookkeeping.el |   1 -
 phps-mode-parser-sdt.el      | 213 +++++++++++++++++++++++++++----------------
 2 files changed, 135 insertions(+), 79 deletions(-)

diff --git a/phps-mode-ast-bookkeeping.el b/phps-mode-ast-bookkeeping.el
index e46e98f642..6bf8875c65 100644
--- a/phps-mode-ast-bookkeeping.el
+++ b/phps-mode-ast-bookkeeping.el
@@ -250,7 +250,6 @@
 (defun phps-mode-ast-bookkeeping--generate (&optional tree)
   "Generate AST for current buffer or optionally for TREE."
   (setq phps-mode-ast-bookkeeping--index phps-mode-parser-sdt-bookkeeping)
-  (message "phps-mode-parser-sdt--bookkeeping-symbol-stack: %S" 
phps-mode-parser-sdt--bookkeeping-symbol-stack)
   phps-mode-ast-bookkeeping--index)
 
 
diff --git a/phps-mode-parser-sdt.el b/phps-mode-parser-sdt.el
index 996b27f2ac..ae931203e3 100644
--- a/phps-mode-parser-sdt.el
+++ b/phps-mode-parser-sdt.el
@@ -601,6 +601,68 @@
   nil
   "Current bookkeeping symbol stack.")
 
+(defvar-local
+  phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack
+  nil
+  "Current bookkeeping assignment symbol stack.")
+
+(defun phps-mode-parser-sdt--parse-statement ()
+  "Parse latest statement."
+   ;; (message "phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack: %S" 
phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack)
+   ;; (message "phps-mode-parser-sdt--bookkeeping-symbol-stack: %S" 
phps-mode-parser-sdt--bookkeeping-symbol-stack)
+
+  ;; Parse bookkeeping writes and reads at every statement terminus
+  (when phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack
+    ;; TODO Should declare based on start?
+    ;; Declare variables
+    (dolist (
+             symbol-list
+             phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack)
+      (let ((symbol-name (car symbol-list))
+            (symbol-start (car (cdr symbol-list)))
+            (symbol-end (car (cdr (cdr symbol-list)))))
+        (if (gethash symbol-name phps-mode-parser-sdt-bookkeeping)
+            (puthash
+             symbol-name
+             (1+ (gethash symbol-name phps-mode-parser-sdt-bookkeeping))
+             phps-mode-parser-sdt-bookkeeping)
+          (puthash
+           symbol-name
+           1
+           phps-mode-parser-sdt-bookkeeping))))
+    (setq
+     phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack
+     nil))
+
+  (when phps-mode-parser-sdt--bookkeeping-symbol-stack
+    ;; Bookkeeping hit / misses of symbols here
+    ;; TODO Should consider declaration position as well?
+    (dolist (
+             symbol-list
+             phps-mode-parser-sdt--bookkeeping-symbol-stack)
+      (let ((symbol-name (car symbol-list))
+            (symbol-start (car (cdr symbol-list)))
+            (symbol-end (car (cdr (cdr symbol-list)))))
+        (if (gethash
+             symbol-name
+             phps-mode-parser-sdt-bookkeeping)
+            (puthash
+             (list
+              symbol-start
+              symbol-end)
+             1
+             phps-mode-parser-sdt-bookkeeping)
+          (puthash
+           (list
+            symbol-start
+            symbol-end)
+           0
+           phps-mode-parser-sdt-bookkeeping))))
+    (setq
+     phps-mode-parser-sdt--bookkeeping-symbol-stack
+     nil)))
+
+
 ;; SDT starts here
 
 ;; 0 ((start) (top_statement_list))
@@ -1323,19 +1385,31 @@
 (puthash
  145
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    (nth 1 args))
  phps-mode-parser--table-translations)
 
 ;; 146 ((statement) (if_stmt))
-(puthash 146 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+(puthash
+ 146
+ (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
+   args)
+ phps-mode-parser--table-translations)
 
 ;; 147 ((statement) (alt_if_stmt))
-(puthash 147 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+(puthash
+ 147
+ (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
+   args)
+ phps-mode-parser--table-translations)
 
-;; 148 (T_WHILE "(" expr ")" while_statement))
+;; 148 ((statement) (T_WHILE "(" expr ")" while_statement))
 (puthash
  148
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      while-statement
@@ -1350,6 +1424,7 @@
 (puthash
  149
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      do-statement
@@ -1360,10 +1435,11 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 150 (T_FOR "(" for_exprs ";" for_exprs ";" for_exprs ")" for_statement))
+;; 150 ((statement) (T_FOR "(" for_exprs ";" for_exprs ";" for_exprs ")" 
for_statement))
 (puthash
  150
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      for-statement
@@ -1382,6 +1458,7 @@
 (puthash
  151
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      switch-statement
@@ -1396,6 +1473,7 @@
 (puthash
  152
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      break-statement
@@ -1408,6 +1486,7 @@
 (puthash
  153
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      continue-statement
@@ -1420,6 +1499,7 @@
 (puthash
  154
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      return-statement
@@ -1432,6 +1512,7 @@
 (puthash
  155
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      global-statement
@@ -1444,6 +1525,7 @@
 (puthash
  156
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      static-statement
@@ -1456,6 +1538,7 @@
 (puthash
  157
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      echo-statement
@@ -1465,12 +1548,18 @@
  phps-mode-parser--table-translations)
 
 ;; 158 ((statement) (T_INLINE_HTML))
-(puthash 158 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+(puthash
+ 158
+ (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
+   args)
+ phps-mode-parser--table-translations)
 
 ;; 159 ((statement) (expr ";"))
 (puthash
  159
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      expr-statement
@@ -1480,12 +1569,18 @@
  phps-mode-parser--table-translations)
 
 ;; 160 ((statement) (T_UNSET "(" unset_variables possible_comma ")" ";"))
-(puthash 159 (lambda(args _terminals) (nth 0 args)) 
phps-mode-parser--table-translations)
+(puthash
+ 160
+ (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
+   (nth 0 args))
+ phps-mode-parser--table-translations)
 
 ;; 161 ((statement) (T_FOREACH "(" expr T_AS foreach_variable ")" 
foreach_statement))
 (puthash
  161
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      foreach-statement
@@ -1494,14 +1589,14 @@
      as
      ,(nth 4 args)
      foreach-statement
-     ,(nth 6 args)
-     ))
+     ,(nth 6 args)))
  phps-mode-parser--table-translations)
 
 ;; 162 ((statement) (T_FOREACH "(" expr T_AS foreach_variable T_DOUBLE_ARROW 
foreach_variable ")" foreach_statement))
 (puthash
  162
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      foreach-statement
@@ -1512,14 +1607,14 @@
      value
      ,(nth 6 args)
      foreach-statement
-     ,(nth 8 args)
-     ))
+     ,(nth 8 args)))
  phps-mode-parser--table-translations)
 
 ;; 163 ((statement) (T_DECLARE "(" const_list ")" declare_statement))
 (puthash
  163
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      declare-statement
@@ -1533,12 +1628,18 @@
  phps-mode-parser--table-translations)
 
 ;; 164 ((statement) (";"))
-(puthash 164 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+(puthash
+ 164
+ (lambda(_args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
+   nil)
+ phps-mode-parser--table-translations)
 
 ;; 165 ((statement) (T_TRY "{" inner_statement_list "}" catch_list 
finally_statement))
 (puthash
  165
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      try-statement
@@ -1547,32 +1648,31 @@
      catch-list
      ,(nth 4 args)
      finally-statement
-     ,(nth 5 args)
-     ))
+     ,(nth 5 args)))
  phps-mode-parser--table-translations)
 
 ;; 166 ((statement) (T_GOTO T_STRING ";"))
 (puthash
  166
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      goto-statement
      label
-     ,(nth 1 args)
-     ))
+     ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
 ;; 167 ((statement) (T_STRING ":"))
 (puthash
  167
  (lambda(args _terminals)
+   (phps-mode-parser-sdt--parse-statement)
    `(
      ast-type
      label-statement
      label
-     ,(nth 0 args)
-     ))
+     ,(nth 0 args)))
  phps-mode-parser--table-translations)
 
 ;; 168 ((catch_list) (%empty))
@@ -3175,35 +3275,26 @@
          (cond
           ((equal callable-variable-type 'callable-variable-simple-variable)
            (let ((callable-variable-simple-variable (plist-get 
callable-variable 'simple-variable)))
-             (message "callable-variable-simple-variable: %S" 
callable-variable-simple-variable)
              (let ((callable-variable-simple-variable-type
                     (plist-get
                      callable-variable-simple-variable
                      'ast-type)))
-                   (cond
-                    ((equal
-                      callable-variable-simple-variable-type
-                      'simple-variable-variable)
-                     (push
-                      (list
-                       'write
-                       (format
-                        "%s id %s"
-                        phps-mode-parser-sdt--bookkeeping-namespace
-                        (plist-get
-                         callable-variable-simple-variable
-                         'variable))
-                       (car (cdr (car terminals)))
-                       (cdr (cdr (car terminals))))
-                      phps-mode-parser-sdt--bookkeeping-symbol-stack)))))))))))
-
-   ;; TODO Should parse bookkeeping writes and reads at every statement 
terminus
-
-   ;; TODO Declare variable in bookkeeping and imenu here
-   (message "expr-assign-variable-by-expr")
-   (message "args: %S" args)
-   (message "terminals: %S" terminals)
-   (message "stack: %S" phps-mode-parser-sdt--bookkeeping-symbol-stack)
+               (cond
+                ((equal
+                  callable-variable-simple-variable-type
+                  'simple-variable-variable)
+                 (push
+                  (list
+                   (format
+                    "%s id %s"
+                    phps-mode-parser-sdt--bookkeeping-namespace
+                    (plist-get
+                     callable-variable-simple-variable
+                     'variable))
+                   (car (cdr (car terminals)))
+                   (cdr (cdr (car terminals))))
+                  
phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack)))))))))))
+
    `(
      ast-type
      expr-assign-variable-by-expr
@@ -5109,45 +5200,11 @@
            args)))
      (push
       (list
-       'read
        namespaced-variable
        (car (cdr terminals))
        (cdr (cdr terminals)))
-      phps-mode-parser-sdt--bookkeeping-symbol-stack)
-
-     ;; Bookkeep whether we hit or miss the variable
-     (if (gethash
-          namespaced-variable
-          phps-mode-parser-sdt-bookkeeping)
-       (puthash
-        (list
-         (car (cdr terminals))
-         (cdr (cdr terminals)))
-        1
-        phps-mode-parser-sdt-bookkeeping)
-       (puthash
-        (list
-         (car (cdr terminals))
-         (cdr (cdr terminals)))
-        0
-        phps-mode-parser-sdt-bookkeeping))
-
-     ;; Declare variable
-     (unless (gethash
-              namespaced-variable
-              phps-mode-parser-sdt-bookkeeping)
-
-       ;; TODO Should not declare in this production
-       (puthash
-        namespaced-variable
-        1
-        phps-mode-parser-sdt-bookkeeping)
-       (message "Declared variable")
-       )
-     ;; Flag whether we hit or missed variable in the bookkeeping here
-     )
-   (message "args: %S" args)
-   (message "terminals: %S" terminals)
+      phps-mode-parser-sdt--bookkeeping-symbol-stack))
+
    `(
      ast-type
      simple-variable-variable



reply via email to

[Prev in Thread] Current Thread [Next in Thread]