Skip to content

Commit fdae3b1

Browse files
committed
Merge pull request #5 from purescript-contrib/build-update
Rename to .purs (resolves #4), update build for latest grunt-purescript, add travis build
2 parents 369c543 + e714856 commit fdae3b1

File tree

13 files changed

+248
-38
lines changed

13 files changed

+248
-38
lines changed

.gitignore

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
/js/
2-
/externs/
3-
/node_modules/
1+
/.*
2+
!/.gitignore
3+
!/.travis.yml
44
/bower_components/
5+
/node_modules/
6+
/output/
7+
/tmp/

.travis.yml

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
language: node_js
2+
node_js:
3+
- "0.10"
4+
install:
5+
- "sudo apt-get install cabal-install"
6+
- "cabal update"
7+
- "cabal install Cabal cabal-install"
8+
- "export PATH=~/.cabal/bin:$PATH"
9+
- "cabal install purescript --force-reinstalls"
10+
- "npm install bower grunt-cli -g"
11+
- "npm install"
12+
- "bower install"
13+
script:
14+
- "grunt test"

Gruntfile.js

+41-21
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,49 @@
11
module.exports = function(grunt) {
22

3-
"use strict";
3+
"use strict";
44

5-
grunt.initConfig({
5+
grunt.initConfig({
6+
7+
libFiles: [
8+
"src/**/*.purs",
9+
"bower_components/purescript-*/src/**/*.purs",
10+
],
611

7-
clean: ["externs", "js"],
8-
9-
psc: {
10-
options: {
11-
main: true
12-
},
13-
lib: {
14-
src:
15-
[ "src/**/*.purs.hs"
16-
, "examples/**/*.purs.hs"
17-
, "bower_components/purescript-*/src/**/*.purs"
18-
],
19-
dest: "js/Main.js"
20-
}
12+
clean: ["output"],
13+
14+
pscMake: ["<%=libFiles%>"],
15+
dotPsci: ["<%=libFiles%>"],
16+
docgen: {
17+
readme: {
18+
src: "src/**/*.purs",
19+
dest: "docs/Module.md"
2120
}
22-
23-
});
21+
},
22+
23+
psc: {
24+
options: {
25+
main: true
26+
},
27+
exampleTest: {
28+
src: ["examples/Test.purs", "<%=libFiles%>"],
29+
dest: "tmp/Test.js"
30+
}
31+
},
32+
33+
execute: {
34+
exampleTest: {
35+
src: "tmp/Test.js"
36+
}
37+
}
2438

25-
grunt.loadNpmTasks("grunt-purescript");
26-
grunt.loadNpmTasks("grunt-contrib-clean");
39+
});
2740

28-
grunt.registerTask("default", ["psc"]);
41+
grunt.loadNpmTasks("grunt-contrib-clean");
42+
grunt.loadNpmTasks("grunt-purescript");
43+
grunt.loadNpmTasks("grunt-execute");
44+
45+
grunt.registerTask("exampleTest", ["psc:exampleTest", "execute:exampleTest"]);
46+
grunt.registerTask("make", ["pscMake", "dotPsci", "docgen"]);
47+
grunt.registerTask("test", ["exampleTest"]);
48+
grunt.registerTask("default", ["make"]);
2949
};

README.md

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
purescript-parsing
22
==================
33

4-
A work-in-progress parser combinator library written in PureScript
4+
[![Build Status](https://travis-ci.org/purescript-contrib/purescript-parsing.svg?branch=master)](https://travis-ci.org/purescript-contrib/purescript-parsing)
5+
6+
A work-in-progress parser combinator library written in PureScript.
7+
8+
- [Module documentation](docs/Module.md)
9+
- [Example usage](examples/Test.purs)

bower.json

+15-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,21 @@
11
{
22
"name": "purescript-parsing",
3-
"version": "0.0.1",
3+
"homepage": "https://github.com/purescript-contrib/purescript-parsing",
4+
"description": "Parser combinator library",
5+
"keywords": [
6+
"purescript"
7+
],
8+
"license": "MIT",
49
"ignore": [
5-
".jshintrc",
6-
"**/*.txt",
7-
"tmp/**"
10+
"**/.*",
11+
"bower_components",
12+
"node_modules",
13+
"output",
14+
"tests",
15+
"tmp",
16+
"bower.json",
17+
"Gruntfile.js",
18+
"package.json"
819
],
920
"dependencies": {
1021
"purescript-transformers": "*",
@@ -13,8 +24,5 @@
1324
"purescript-arrays": "*",
1425
"purescript-strings": "*",
1526
"purescript-foldable-traversable": "*"
16-
},
17-
"devDependencies": {
18-
"purescript-quickcheck": "https://github.com/purescript/purescript-quickcheck.git"
1927
}
2028
}

docs/Module.md

+160
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
# Module Documentation
2+
3+
## Module Text.Parsing.Parser
4+
5+
### Types
6+
7+
data ParseError where
8+
ParseError :: { message :: String } -> ParseError
9+
10+
type Parser s a = ParserT s Identity a
11+
12+
data ParserT s m a where
13+
ParserT :: s -> m { consumed :: Boolean, result :: Either ParseError a, input :: s } -> ParserT s m a
14+
15+
16+
### Type Class Instances
17+
18+
instance alternativeParserT :: (Monad m) => Alternative (ParserT s m)
19+
20+
instance applicativeParserT :: (Monad m) => Applicative (ParserT s m)
21+
22+
instance applyParserT :: (Monad m) => Apply (ParserT s m)
23+
24+
instance bindParserT :: (Monad m) => Bind (ParserT s m)
25+
26+
instance errorParseError :: Error ParseError
27+
28+
instance functorParserT :: (Functor m) => Functor (ParserT s m)
29+
30+
instance monadParserT :: (Monad m) => Monad (ParserT s m)
31+
32+
instance monadStateParserT :: (Monad m) => MonadState s (ParserT s m)
33+
34+
instance monadTransParserT :: MonadTrans (ParserT s)
35+
36+
37+
### Values
38+
39+
consume :: forall s m. (Monad m) => ParserT s m { }
40+
41+
fail :: forall m s a. (Monad m) => String -> ParserT s m a
42+
43+
runParser :: forall s a. s -> Parser s a -> Either ParseError a
44+
45+
runParserT :: forall m s a. (Monad m) => s -> ParserT s m a -> m (Either ParseError a)
46+
47+
unParserT :: forall m s a. ParserT s m a -> s -> m { consumed :: Boolean, result :: Either ParseError a, input :: s }
48+
49+
50+
## Module Text.Parsing.Parser.Combinators
51+
52+
### Values
53+
54+
(<?>) :: forall m s a. (Monad m) => ParserT s m a -> String -> ParserT s m a
55+
56+
between :: forall m s a open close. (Monad m) => ParserT s m open -> ParserT s m close -> ParserT s m a -> ParserT s m a
57+
58+
chainl :: forall m s a. (Monad m) => ParserT s m a -> ParserT s m (a -> a -> a) -> a -> ParserT s m a
59+
60+
chainl1 :: forall m s a. (Monad m) => ParserT s m a -> ParserT s m (a -> a -> a) -> ParserT s m a
61+
62+
chainl1' :: forall m s a. (Monad m) => ParserT s m a -> ParserT s m (a -> a -> a) -> a -> ParserT s m a
63+
64+
chainr :: forall m s a. (Monad m) => ParserT s m a -> ParserT s m (a -> a -> a) -> a -> ParserT s m a
65+
66+
chainr1 :: forall m s a. (Monad m) => ParserT s m a -> ParserT s m (a -> a -> a) -> ParserT s m a
67+
68+
chainr1' :: forall m s a. (Monad m) => ParserT s m a -> ParserT s m (a -> a -> a) -> a -> ParserT s m a
69+
70+
choice :: forall m s a. (Monad m) => [ParserT s m a] -> ParserT s m a
71+
72+
endBy :: forall m s a sep. (Monad m) => ParserT s m a -> ParserT s m sep -> ParserT s m [a]
73+
74+
endBy1 :: forall m s a sep. (Monad m) => ParserT s m a -> ParserT s m sep -> ParserT s m [a]
75+
76+
fix :: forall m s a. (ParserT m s a -> ParserT m s a) -> ParserT m s a
77+
78+
fix2 :: forall m s a b. (Tuple (ParserT m s a) (ParserT m s b) -> Tuple (ParserT m s a) (ParserT m s b)) -> Tuple (ParserT m s a) (ParserT m s b)
79+
80+
many :: forall m s a. (Monad m) => ParserT s m a -> ParserT s m [a]
81+
82+
many1 :: forall m s a. (Monad m) => ParserT s m a -> ParserT s m [a]
83+
84+
option :: forall m s a. (Monad m) => a -> ParserT s m a -> ParserT s m a
85+
86+
optionMaybe :: forall m s a. (Functor m, Monad m) => ParserT s m a -> ParserT s m (Maybe a)
87+
88+
optional :: forall m s a. (Monad m) => ParserT s m a -> ParserT s m { }
89+
90+
sepBy :: forall m s a sep. (Monad m) => ParserT s m a -> ParserT s m sep -> ParserT s m [a]
91+
92+
sepBy1 :: forall m s a sep. (Monad m) => ParserT s m a -> ParserT s m sep -> ParserT s m [a]
93+
94+
sepEndBy :: forall m s a sep. (Monad m) => ParserT s m a -> ParserT s m sep -> ParserT s m [a]
95+
96+
sepEndBy1 :: forall m s a sep. (Monad m) => ParserT s m a -> ParserT s m sep -> ParserT s m [a]
97+
98+
try :: forall m s a. (Functor m) => ParserT s m a -> ParserT s m a
99+
100+
101+
## Module Text.Parsing.Parser.Expr
102+
103+
### Types
104+
105+
data Assoc where
106+
AssocNone :: Assoc
107+
AssocLeft :: Assoc
108+
AssocRight :: Assoc
109+
110+
data Operator m s a where
111+
Infix :: ParserT s m (a -> a -> a) -> Assoc -> Operator m s a
112+
Prefix :: ParserT s m (a -> a) -> Operator m s a
113+
Postfix :: ParserT s m (a -> a) -> Operator m s a
114+
115+
type OperatorTable m s a = [[Operator m s a]]
116+
117+
type SplitAccum m s a = { postfix :: [ParserT s m (a -> a)], prefix :: [ParserT s m (a -> a)], nassoc :: [ParserT s m (a -> a -> a)], lassoc :: [ParserT s m (a -> a -> a)], rassoc :: [ParserT s m (a -> a -> a)] }
118+
119+
120+
### Values
121+
122+
buildExprParser :: forall m s a. (Monad m) => OperatorTable m s a -> ParserT s m a -> ParserT s m a
123+
124+
lassocP :: forall m a b c s. (Monad m) => a -> ParserT s m (a -> a -> a) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> a) -> ParserT s m a
125+
126+
lassocP1 :: forall m a b c s. (Monad m) => a -> ParserT s m (a -> a -> a) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> a) -> ParserT s m a
127+
128+
nassocP :: forall m a b c d e s. (Monad m) => a -> ParserT s m (a -> d -> e) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> d) -> ParserT s m e
129+
130+
rassocP :: forall m a b c s. (Monad m) => a -> ParserT s m (a -> a -> a) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> a) -> ParserT s m a
131+
132+
rassocP1 :: forall m a b c s. (Monad m) => a -> ParserT s m (a -> a -> a) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> a) -> ParserT s m a
133+
134+
splitOp :: forall m s a. Operator m s a -> SplitAccum m s a -> SplitAccum m s a
135+
136+
termP :: forall m s a b c. (Monad m) => ParserT s m (a -> b) -> ParserT s m a -> ParserT s m (b -> c) -> ParserT s m c
137+
138+
139+
## Module Text.Parsing.Parser.String
140+
141+
### Values
142+
143+
char :: forall m. (Monad m) => ParserT String m String
144+
145+
eof :: forall m. (Monad m) => ParserT String m { }
146+
147+
satisfy :: forall m. (Monad m) => (String -> Boolean) -> ParserT String m String
148+
149+
string :: forall m. (Monad m) => String -> ParserT String m String
150+
151+
whiteSpace :: forall m. (Monad m) => ParserT String m String
152+
153+
154+
## Module Text.Parsing.Parser.Token
155+
156+
### Types
157+
158+
type LanguageDef s m = { caseSensitive :: Boolean, reservedOpNames :: [String], reservedNames :: [String], opLetter :: ParserT s m String, opStart :: ParserT s m String, identLetter :: ParserT s m String, identStart :: ParserT s m String, nestedComments :: Boolean, commentLine :: String, commentEnd :: String, commentStart :: String }
159+
160+
type TokenParser s m = { commaSep1 :: forall a. ParserT s m a -> ParserT s m [a], commaSep :: forall a. ParserT s m a -> ParserT s m [a], semiSep1 :: forall a. ParserT s m a -> ParserT s m [a], semiSep :: forall a. ParserT s m a -> ParserT s m [a], dot :: ParserT s m String, colon :: ParserT s m String, comma :: ParserT s m String, semi :: ParserT s m String, brackets :: forall a. ParserT s m a -> ParserT s m a, angles :: forall a. ParserT s m a -> ParserT s m a, braces :: forall a. ParserT s m a -> ParserT s m a, parens :: forall a. ParserT s m a -> ParserT s m a, whiteSpace :: ParserT s m { }, lexme :: forall a. ParserT s m a -> ParserT s m a, symbol :: String -> ParserT s m Number, octal :: ParserT s m Number, hexadecimal :: ParserT s m Number, decimal :: ParserT s m Number, naturalOrFloat :: ParserT s m Number, float :: ParserT s m Number, integer :: ParserT s m Number, natural :: ParserT s m Number, stringLiteral :: ParserT s m String, charLiteral :: ParserT s m String, reservedOp :: String -> ParserT s m String, operator :: ParserT s m String, reserved :: String -> ParserT s m String, identifier :: ParserT s m String }

examples/test.purs.hs renamed to examples/Test.purs

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ nested = fix $ \p -> (do
2020
string "a"
2121
return 0) <|> ((+) 1) <$> parens p
2222

23-
parseTest :: forall s a eff. (Show a) => Parser s a -> s -> Eff (trace :: Trace | eff) {}
23+
parseTest :: forall s a eff. (Show a) => Parser s a -> s -> Eff (trace :: Trace | eff) Unit
2424
parseTest p input = case runParser input p of
2525
Left (ParseError err) -> print err.message
2626
Right result -> print result

package.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
2-
"name": "purescript-parsing",
3-
"version": "0.0.1",
4-
"devDependencies": {
2+
"private": true,
3+
"dependencies": {
54
"grunt": "~0.4.4",
6-
"grunt-purescript": "~0.5.0",
7-
"grunt-contrib-clean": "~0.5.0"
5+
"grunt-contrib-clean": "~0.5.0",
6+
"grunt-execute": "~0.2.2",
7+
"grunt-purescript": "~0.5.1"
88
}
99
}
File renamed without changes.

0 commit comments

Comments
 (0)