[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/haskell-tng-mode cfbdae1 084/385: simplify the lexer asser
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/haskell-tng-mode cfbdae1 084/385: simplify the lexer assertion language |
Date: |
Tue, 5 Oct 2021 23:59:06 -0400 (EDT) |
branch: elpa/haskell-tng-mode
commit cfbdae1f66d040bdded70b5325712c760aa17e2b
Author: Tseen She <ts33n.sh3@gmail.com>
Commit: Tseen She <ts33n.sh3@gmail.com>
simplify the lexer assertion language
---
haskell-tng-lexer.el | 1 +
test/haskell-tng-lexer-test.el | 49 ++++++++++---------
test/src/layout.hs.lexer | 18 +++----
test/src/medley.hs.lexer | 106 ++++++++++++++++++++---------------------
4 files changed, 89 insertions(+), 85 deletions(-)
diff --git a/haskell-tng-lexer.el b/haskell-tng-lexer.el
index f2a5973..98023e5 100644
--- a/haskell-tng-lexer.el
+++ b/haskell-tng-lexer.el
@@ -89,6 +89,7 @@ the lexer."
((looking-at haskell-tng:regexp:conid)
(haskell-tng-lexer:last-match nil "CONID"))
;; TODO symid
+ ;; TODO literals
((or
;; known identifiers
diff --git a/test/haskell-tng-lexer-test.el b/test/haskell-tng-lexer-test.el
index 1128761..fba496a 100644
--- a/test/haskell-tng-lexer-test.el
+++ b/test/haskell-tng-lexer-test.el
@@ -29,7 +29,7 @@
(goto-char 317)
(should (equal (haskell-tng-lexer-test:indent-forward-token) ";"))
(should (equal (haskell-tng-lexer-test:indent-forward-token) "VARID"))
- (should (equal (haskell-tng-lexer-test:indent-forward-token) "_("))
+ (should (equal (haskell-tng-lexer-test:indent-forward-token) "«"))
;; repeating the above, but with a user edit, should reset the state
(goto-char 317)
@@ -39,7 +39,7 @@
(insert " "))
(should (equal (haskell-tng-lexer-test:indent-forward-token) ";"))
(should (equal (haskell-tng-lexer-test:indent-forward-token) "VARID"))
- (should (equal (haskell-tng-lexer-test:indent-forward-token) "_("))
+ (should (equal (haskell-tng-lexer-test:indent-forward-token) "«"))
;; repeating again, but jumping the lexer, should reset the state
(goto-char 317)
@@ -49,13 +49,13 @@
(goto-char 317)
(should (equal (haskell-tng-lexer-test:indent-forward-token) ";"))
(should (equal (haskell-tng-lexer-test:indent-forward-token) "VARID"))
- (should (equal (haskell-tng-lexer-test:indent-forward-token) "_("))
+ (should (equal (haskell-tng-lexer-test:indent-forward-token) "«"))
;; repeating those tests, but for the backward lexer
(goto-char 317)
(should (equal (haskell-tng-lexer-test:indent-backward-token) ";"))
- (should (equal (haskell-tng-lexer-test:indent-backward-token) "_]"))
- (should (equal (haskell-tng-lexer-test:indent-backward-token) "_["))
+ (should (equal (haskell-tng-lexer-test:indent-backward-token) "»"))
+ (should (equal (haskell-tng-lexer-test:indent-backward-token) "«"))
(goto-char 317)
(should (equal (haskell-tng-lexer-test:indent-backward-token) ";"))
@@ -63,17 +63,17 @@
(goto-char (point-max))
(insert " "))
(should (equal (haskell-tng-lexer-test:indent-backward-token) ";"))
- (should (equal (haskell-tng-lexer-test:indent-backward-token) "_]"))
- (should (equal (haskell-tng-lexer-test:indent-backward-token) "_["))
+ (should (equal (haskell-tng-lexer-test:indent-backward-token) "»"))
+ (should (equal (haskell-tng-lexer-test:indent-backward-token) "«"))
(goto-char 317)
(should (equal (haskell-tng-lexer-test:indent-backward-token) ";"))
(goto-char 327)
- (should (equal (haskell-tng-lexer-test:indent-backward-token) "_("))
+ (should (equal (haskell-tng-lexer-test:indent-backward-token) "«"))
(goto-char 317)
(should (equal (haskell-tng-lexer-test:indent-backward-token) ";"))
- (should (equal (haskell-tng-lexer-test:indent-backward-token) "_]"))
- (should (equal (haskell-tng-lexer-test:indent-backward-token) "_["))
+ (should (equal (haskell-tng-lexer-test:indent-backward-token) "»"))
+ (should (equal (haskell-tng-lexer-test:indent-backward-token) "«"))
;; jumping between forward and backward at point should reset state
(goto-char 317)
@@ -93,14 +93,16 @@
(cond
((< 0 (length tok)) tok)
((eobp) nil)
- ((looking-at (rx (| (syntax open-parenthesis)
- (syntax close-parenthesis))))
- (concat "_" (haskell-tng-lexer:last-match)))
+ ((looking-at (rx (syntax open-parenthesis)))
+ (haskell-tng-lexer:last-match)
+ "«")
+ ((looking-at (rx (syntax close-parenthesis)))
+ (haskell-tng-lexer:last-match)
+ "»")
((looking-at (rx (| (syntax string-quote)
(syntax string-delimiter))))
- (let ((start (point)))
- (forward-sexp 1)
- (concat "_" (buffer-substring-no-properties start (point)))))
+ (forward-sexp 1)
+ "§")
(t (error "Bumped into unknown token")))))
;; same as above, but for `smie-indent-backward-token'
@@ -109,16 +111,17 @@
(cond
((< 0 (length tok)) tok)
((bobp) nil)
- ((looking-back (rx (| (syntax open-parenthesis)
- (syntax close-parenthesis)))
- (- (point) 1))
- (concat "_" (haskell-tng-lexer:last-match 'reverse)))
+ ((looking-back (rx (syntax open-parenthesis)) (- (point) 1))
+ (haskell-tng-lexer:last-match 'reverse)
+ "«")
+ ((looking-back (rx (syntax close-parenthesis)) (- (point) 1))
+ (haskell-tng-lexer:last-match 'reverse)
+ "»")
((looking-back (rx (| (syntax string-quote)
(syntax string-delimiter)))
(- (point) 1))
- (let ((start (point)))
- (backward-sexp 1)
- (concat "_" (buffer-substring-no-properties (point) start))))
+ (backward-sexp 1)
+ "§")
(t (error "Bumped into unknown token")))))
(defun haskell-tng-lexer-test:tokens (&optional reverse)
diff --git a/test/src/layout.hs.lexer b/test/src/layout.hs.lexer
index 96ba575..921d495 100644
--- a/test/src/layout.hs.lexer
+++ b/test/src/layout.hs.lexer
@@ -1,20 +1,20 @@
-module CONID _( CONID , VARID , VARID , VARID , VARID _) where
+module CONID « CONID , VARID , VARID , VARID , VARID » where
{ data CONID VARID = CONID
-| CONID VARID _( CONID VARID _)
+| CONID VARID « CONID VARID »
; VARID :: VARID -> CONID VARID -> CONID VARID
; VARID VARID VARID = CONID VARID VARID
; VARID :: CONID VARID -> CONID
-; VARID VARID = VARID _( VARID VARID _) where
-{ VARID CONID = _[ _]
-; VARID _( CONID VARID VARID _) = x:xs where { VARID = VARID VARID
+; VARID VARID = VARID « VARID VARID » where
+{ VARID CONID = « »
+; VARID « CONID VARID VARID » = x:xs where { VARID = VARID VARID
-} } ; VARID :: CONID VARID -> _( VARID , CONID VARID _)
-; VARID _( CONID VARID VARID _)
-= _( VARID , case VARID of { VARID -> VARID VARID where { VARID VARID = VARID
} } _)
+} } ; VARID :: CONID VARID -> « VARID , CONID VARID »
+; VARID « CONID VARID VARID »
+= « VARID , case VARID of { VARID -> VARID VARID where { VARID VARID = VARID }
} »
; VARID :: CONID VARID -> VARID
-; VARID _( CONID VARID VARID _) = VARID
+; VARID « CONID VARID VARID » = VARID
}
diff --git a/test/src/medley.hs.lexer b/test/src/medley.hs.lexer
index 647ab47..7070521 100644
--- a/test/src/medley.hs.lexer
+++ b/test/src/medley.hs.lexer
@@ -3,64 +3,64 @@
module CONID
-_( CONID _( .. _) , CONID _( CONID , _( !!! _) _) , CONID
+« CONID « .. » , CONID « CONID , « !!! » » , CONID
, VARID , VARID
, module CONID
-_) where
+» where
-{ import CONID _( VARID , VARID , VARID , _( <*> _) , _( <|> _) _)
-; import CONID _( VARID _)
-; import CONID _( _( <$> _) _)
-; import CONID _( VARID _)
-; import CONID _( _( <> _) _)
+{ import CONID « VARID , VARID , VARID , « <*> » , « <|> » »
+; import CONID « VARID »
+; import CONID « « <$> » »
+; import CONID « VARID »
+; import CONID « « <> » »
; import VARID CONID
; import VARID CONID VARID CONID
; import VARID CONID
VARID CONID
-; import VARID CONID VARID _( VARID , VARID , VARID _)
-; import CONID _( VARID , VARID , VARID _)
-; import CONID VARID _( VARID , VARID , VARID _)
-; import VARID CONID _( VARID , VARID , VARID _)
-; import CONID _( CONID _( .. _) , VARID , VARID ,
+; import VARID CONID VARID « VARID , VARID , VARID »
+; import CONID « VARID , VARID , VARID »
+; import CONID VARID « VARID , VARID , VARID »
+; import VARID CONID « VARID , VARID , VARID »
+; import CONID « CONID « .. » , VARID , VARID ,
CONID ,
VARID ,
-CONID _)
-; import CONID _( VARID , CONID _( CONID , _( :< _) _)
-; import CONID _( CONID _( .. _) , VARID , VARID ,
+CONID »
+; import CONID « VARID , CONID « CONID , « :< » »
+; import CONID « CONID « .. » , VARID , VARID ,
VARID , VARID , VARID , VARID ,
-VARID , CONID _)
-; import CONID _( CONID _( .. _) , CONID _( .. _) ,
-VARID , VARID , VARID _)
+VARID , CONID »
+; import CONID « CONID « .. » , CONID « .. » ,
+VARID , VARID , VARID »
-; VARID = _[ _'c' , _'\n' , _'\'' _]
+; VARID = « § , § , § »
-; VARID = _"wobble (wibble)"
+; VARID = §
; class CONID VARID VARID where
{ VARID :: CONID VARID -> VARID
-} ; instance CONID VARID _( VARID ': VARID _) where
-{ VARID _( CONID VARID _ _) = VARID
+} ; instance CONID VARID « VARID ': VARID » where
+{ VARID « CONID VARID _ » = VARID
-} ; instance CONID VARID VARID => CONID VARID _( VARID ': VARID _) where
-{ VARID _( CONID _ VARID _) = VARID VARID
+} ; instance CONID VARID VARID => CONID VARID « VARID ': VARID » where
+{ VARID « CONID _ VARID » = VARID VARID
} ; data CONID = CONID
-_{ VARID :: CONID
+« VARID :: CONID
, VARID :: CONID CONID
, VARID :: CONID CONID
-, VARID :: _[ CONID _]
-_} deriving _( CONID , CONID _)
+, VARID :: « CONID »
+» deriving « CONID , CONID »
-; class _( CONID VARID _) => CONID VARID where
-{ _( < _) , _( <= _) , _( >= _) , _( > _) :: VARID -> VARID -> CONID
+; class « CONID VARID » => CONID VARID where
+{ « < » , « <= » , « >= » , « > » :: VARID -> VARID -> CONID
; VARID @Foo , VARID :: VARID -> VARID -> VARID
-} ; instance _( CONID VARID _) => CONID _( CONID VARID _) where
+} ; instance « CONID VARID » => CONID « CONID VARID » where
{ CONID VARID == CONID VARID = VARID == VARID
-; _( CONID VARID VARID _) == _( CONID VARID VARID _) = _( l1==l2 _) && _(
r1==r2 _)
+; « CONID VARID VARID » == « CONID VARID VARID » = « l1==l2 » && « r1==r2 »
; _ == _ = CONID
} ; data CONID = CONID
@@ -68,16 +68,16 @@ _} deriving _( CONID , CONID _)
| CONID
| CONID
| CONID
-deriving _( CONID , CONID _)
+deriving « CONID , CONID »
; type VARID CONID VARID where
{ CONID CONID = CONID
; CONID VARID = CONID
} ; data CONID = CONID
-deriving _( CONID _) VARID _( CONID _( CONID CONID _) _)
-deriving VARID _( CONID _)
-deriving VARID _( CONID , CONID _)
+deriving « CONID » VARID « CONID « CONID CONID » »
+deriving VARID « CONID »
+deriving VARID « CONID , CONID »
; newtype CONID = CONID
@@ -86,41 +86,41 @@ CONID
-> CONID
-> CONID
-> CONID
--> _( VARID :: CONID _)
--> _( CONID
-VARID VARID VARID _)
+-> « VARID :: CONID »
+-> « CONID
+VARID VARID VARID »
-; _( VARID :: _( CONID CONID _) _) VARID
+; « VARID :: « CONID CONID » » VARID
; newtype CONID
-_( VARID :: CONID _)
-_( VARID :: CONID _)
+« VARID :: CONID »
+« VARID :: CONID »
VARID
VARID
= CONID VARID
; VARID :: CONID CONID
; VARID = CONID
-<$> _( VARID CONID _( VARID _"alloc" <> VARID _"wibble" _)
-<|> VARID CONID _( VARID _"entry" <> VARID _"wobble" _)
-<|> VARID CONID _( VARID _"bytes" <> VARID _"i'm a fish" _) _)
+<$> « VARID CONID « VARID § <> VARID § »
+<|> VARID CONID « VARID § <> VARID § »
+<|> VARID CONID « VARID § <> VARID § » »
<*> VARID
-_( VARID
-_( VARID _"MY-FILE" <>
-VARID _"meh" _) _)
+« VARID
+« VARID § <>
+VARID § » »
; type CONID
; type CONID =
-_"thing" :> CONID _"bar" CONID :> CONID _"wibble" CONID
-:> CONID _"wobble" CONID
+§ :> CONID § CONID :> CONID § CONID
+:> CONID § CONID
:> CONID CONID CONID
:> CONID
-:> CONID ' _[ CONID _] _( CONID CONID _)
-:<|> _"thing" :> CONID ' _[ CONID _] CONID
+:> CONID ' « CONID » « CONID CONID »
+:<|> § :> CONID ' « CONID » CONID
:> CONID CONID CONID
:> CONID
-:> CONID ' _[ CONID _] _( CONID CONID _)
+:> CONID ' « CONID » « CONID CONID »
; deriving instance CONID CONID
; deriving VARID instance CONID CONID
@@ -130,5 +130,5 @@ _"thing" :> CONID _"bar" CONID :> CONID _"wibble" CONID
where { VARID = _
-; _( + _) = _
+; « + » = _
} }
- [nongnu] elpa/haskell-tng-mode de48840 030/385: multiline import anchors, (continued)
- [nongnu] elpa/haskell-tng-mode de48840 030/385: multiline import anchors, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 5c50be0 044/385: remove redundant TODOs, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 174c63b 046/385: laying the foundations for SMIE, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 97ce717 058/385: improve the testing, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 2a2afee 064/385: cache invalidation and tests for layout invalidation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 3ca869f 067/385: code reorganisation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 0ffb885 071/385: a thought, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 79aeb82 076/385: most of the grammar, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 7eaef51 078/385: optimisation in the sexp test, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode cb0f3d2 082/385: starting indentation rules, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode cfbdae1 084/385: simplify the lexer assertion language,
ELPA Syncer <=
- [nongnu] elpa/haskell-tng-mode 0c5acb7 087/385: lexer and grammar supports symid, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 6c520bc 093/385: fixes for type level lists, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode f085f16 097/385: indentation regression tests, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 01ea0b8 103/385: heuristic alternative indentation levels, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode c20ea4f 096/385: infix varid as symid, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode bfe859a 095/385: notes about lexers, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 0506391 109/385: module ... where indents to 0, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode d9bbcdd 111/385: next steps, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 6cf67bf 105/385: indentation can't handle mismatched parens, don't test for it, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 25b15eb 102/385: indentation alternatives wiring, ELPA Syncer, 2021/10/06