branch: elpa/haskell-tng-mode commit b12e49aa446157560432ef2e0fc8c7265b17eca2 Author: Tseen She <ts33n....@gmail.com> Commit: Tseen She <ts33n....@gmail.com>
consym --- haskell-tng-font-lock.el | 6 +++--- haskell-tng-lexer.el | 12 ++++++++---- test/src/medley.hs.lexer | 20 ++++++++++---------- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/haskell-tng-font-lock.el b/haskell-tng-font-lock.el index 2a4fb92..da9980f 100644 --- a/haskell-tng-font-lock.el +++ b/haskell-tng-font-lock.el @@ -103,11 +103,11 @@ (: symbol-start (char ?\\)))) "reservedid / reservedop") -(defconst haskell-tng:regexp:varid +(defconst haskell-tng:regexp:qvarid (rx-to-string `(: symbol-start (opt ,haskell-tng:rx:qual) ,haskell-tng:rx:varid symbol-end))) -(defconst haskell-tng:regexp:conid +(defconst haskell-tng:regexp:qconid (rx-to-string `(: symbol-start (opt ,haskell-tng:rx:qual) ,haskell-tng:rx:conid symbol-end))) -(defconst haskell-tng:regexp:consym +(defconst haskell-tng:regexp:qconsym (rx-to-string `(: ,haskell-tng:rx:consym symbol-end))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/haskell-tng-lexer.el b/haskell-tng-lexer.el index 29633a3..830f6b2 100644 --- a/haskell-tng-lexer.el +++ b/haskell-tng-lexer.el @@ -84,10 +84,12 @@ the lexer." ;; known identifiers ((looking-at haskell-tng:regexp:reserved) (haskell-tng-lexer:last-match)) - ((looking-at haskell-tng:regexp:varid) + ((looking-at haskell-tng:regexp:qvarid) (haskell-tng-lexer:last-match nil "VARID")) - ((looking-at haskell-tng:regexp:conid) + ((looking-at haskell-tng:regexp:qconid) (haskell-tng-lexer:last-match nil "CONID")) + ((looking-at haskell-tng:regexp:qconsym) + (haskell-tng-lexer:last-match nil "CONSYM")) ;; TODO symid ;; TODO numeric literals ;; TODO l1==l2 is not parsed correctly as VARID SYMID VARID @@ -134,10 +136,12 @@ the lexer." ;; known identifiers ((looking-back haskell-tng:regexp:reserved (- (point) 8)) (haskell-tng-lexer:last-match 'reverse)) - ((looking-back haskell-tng:regexp:varid lbp 't) + ((looking-back haskell-tng:regexp:qvarid lbp 't) (haskell-tng-lexer:last-match 'reverse "VARID")) - ((looking-back haskell-tng:regexp:conid lbp 't) + ((looking-back haskell-tng:regexp:qconid lbp 't) (haskell-tng-lexer:last-match 'reverse "CONID")) + ((looking-back haskell-tng:regexp:qconsym lbp 't) + (haskell-tng-lexer:last-match 'reverse "CONSYM")) ((looking-back (rx (+ (| (syntax word) (syntax symbol)))) lbp 't) (haskell-tng-lexer:last-match 'reverse)) (t diff --git a/test/src/medley.hs.lexer b/test/src/medley.hs.lexer index 7070521..22a7910 100644 --- a/test/src/medley.hs.lexer +++ b/test/src/medley.hs.lexer @@ -26,7 +26,7 @@ VARID CONID CONID , VARID , CONID » -; import CONID « VARID , CONID « CONID , « :< » » +; import CONID « VARID , CONID « CONID , « CONSYM » » ; import CONID « CONID « .. » , VARID , VARID , VARID , VARID , VARID , VARID , VARID , CONID » @@ -112,15 +112,15 @@ VARID § » » ; type CONID ; type CONID = -§ :> CONID § CONID :> CONID § CONID -:> CONID § CONID -:> CONID CONID CONID -:> CONID -:> CONID ' « CONID » « CONID CONID » -:<|> § :> CONID ' « CONID » CONID -:> CONID CONID CONID -:> CONID -:> CONID ' « CONID » « CONID CONID » +§ CONSYM CONID § CONID CONSYM CONID § CONID +CONSYM CONID § CONID +CONSYM CONID CONID CONID +CONSYM CONID +CONSYM CONID ' « CONID » « CONID CONID » +CONSYM § CONSYM CONID ' « CONID » CONID +CONSYM CONID CONID CONID +CONSYM CONID +CONSYM CONID ' « CONID » « CONID CONID » ; deriving instance CONID CONID ; deriving VARID instance CONID CONID