Lint cleanup and README updates

This commit is contained in:
James Eversole 2025-02-07 12:37:27 -06:00
parent 30b9505d5f
commit 871245b567
4 changed files with 22 additions and 16 deletions

View File

@ -84,6 +84,12 @@ tricu decode [OPTIONS]
Defaults to stdin. Defaults to stdin.
``` ```
## Collaborating
I am happy to accept issue reports, pull requests, or questions about tricu [via email](mailto:james@eversole.co).
If you want to collaborate but don't want to email back-and-forth, please reach out via email once to let me know and I will provision a git.eversole.co account for you.
## Acknowledgements ## Acknowledgements
Tree Calculus was discovered by [Barry Jay](https://github.com/barry-jay-personal/blog). Tree Calculus was discovered by [Barry Jay](https://github.com/barry-jay-personal/blog).

View File

@ -3,6 +3,7 @@ module Lexer where
import Research import Research
import Control.Monad (void) import Control.Monad (void)
import Data.Functor (($>))
import Data.Void import Data.Void
import Text.Megaparsec import Text.Megaparsec
import Text.Megaparsec.Char hiding (space) import Text.Megaparsec.Char hiding (space)
@ -54,7 +55,7 @@ lexTricu input = case runParser tricuLexer "" input of
keywordT :: Lexer LToken keywordT :: Lexer LToken
keywordT = string "t" *> notFollowedBy alphaNumChar *> pure LKeywordT keywordT = string "t" *> notFollowedBy alphaNumChar $> LKeywordT
identifier :: Lexer LToken identifier :: Lexer LToken
identifier = do identifier = do
@ -63,7 +64,7 @@ identifier = do
<|> digitChar <|> char '_' <|> char '-' <|> char '?' <|> digitChar <|> char '_' <|> char '-' <|> char '?'
<|> char '$' <|> char '#' <|> char '@' <|> char '%' <|> char '$' <|> char '#' <|> char '@' <|> char '%'
let name = first : rest let name = first : rest
if (name == "t" || name == "!result") if name == "t" || name == "!result"
then fail "Keywords (`t`, `!result`) cannot be used as an identifier" then fail "Keywords (`t`, `!result`) cannot be used as an identifier"
else return (LIdentifier name) else return (LIdentifier name)
@ -76,7 +77,7 @@ namespace = do
return (LNamespace name) return (LNamespace name)
dot :: Lexer LToken dot :: Lexer LToken
dot = char '.' *> pure LDot dot = char '.' $> LDot
lImport :: Lexer LToken lImport :: Lexer LToken
lImport = do lImport = do
@ -88,28 +89,28 @@ lImport = do
return (LImport path name) return (LImport path name)
assign :: Lexer LToken assign :: Lexer LToken
assign = char '=' *> pure LAssign assign = char '=' $> LAssign
colon :: Lexer LToken colon :: Lexer LToken
colon = char ':' *> pure LColon colon = char ':' $> LColon
backslash :: Lexer LToken backslash :: Lexer LToken
backslash = char '\\' *> pure LBackslash backslash = char '\\' $> LBackslash
openParen :: Lexer LToken openParen :: Lexer LToken
openParen = char '(' *> pure LOpenParen openParen = char '(' $> LOpenParen
closeParen :: Lexer LToken closeParen :: Lexer LToken
closeParen = char ')' *> pure LCloseParen closeParen = char ')' $> LCloseParen
openBracket :: Lexer LToken openBracket :: Lexer LToken
openBracket = char '[' *> pure LOpenBracket openBracket = char '[' $> LOpenBracket
closeBracket :: Lexer LToken closeBracket :: Lexer LToken
closeBracket = char ']' *> pure LCloseBracket closeBracket = char ']' $> LCloseBracket
lnewline :: Lexer LToken lnewline :: Lexer LToken
lnewline = char '\n' *> pure LNewline lnewline = char '\n' $> LNewline
sc :: Lexer () sc :: Lexer ()
sc = space sc = space

View File

@ -3,12 +3,12 @@ module Parser where
import Lexer import Lexer
import Research import Research
import Control.Monad (void) import Control.Monad (void)
import Control.Monad.State import Control.Monad.State
import Data.List.NonEmpty (toList) import Data.List.NonEmpty (toList)
import Data.Void (Void) import Data.Void (Void)
import Text.Megaparsec import Text.Megaparsec
import Text.Megaparsec.Error (ParseErrorBundle, errorBundlePretty) import Text.Megaparsec.Error (ParseErrorBundle, errorBundlePretty)
import qualified Data.Set as Set import qualified Data.Set as Set
data PState = PState data PState = PState

View File

@ -1,6 +1,5 @@
module Research where module Research where
import Control.Monad.State
import Data.List (intercalate) import Data.List (intercalate)
import Data.Map (Map) import Data.Map (Map)
import Data.Text (Text, replace) import Data.Text (Text, replace)