Lint cleanup and README updates
This commit is contained in:
parent
30b9505d5f
commit
871245b567
@ -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).
|
||||||
|
23
src/Lexer.hs
23
src/Lexer.hs
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user