File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -9,6 +9,20 @@ import ParseUtils
99import ParseUnit
1010
1111
12+ {- -
13+ <expr> = <expr> <binop> <expr>
14+ | '-' <expr>
15+ | '(' <expr> ')'
16+ | <identifier> '(' <args>? ')'
17+ | <expr> '::' <unit>
18+ | <number>
19+ | <identifier>
20+
21+ <args> = <expr> | <expr> ',' <args>
22+
23+ <binop> = [-+*/^]
24+ --}
25+
1226combineExprSS :: Expr SS -> Expr SS -> SS
1327combineExprSS e1 e2 = combineSS (getTag e1) (getTag e2)
1428
Original file line number Diff line number Diff line change @@ -9,6 +9,32 @@ import Control.Applicative hiding (Const)
99import ParseExpr
1010import ParseUnit
1111
12+ {- -
13+ <program> = <statement>*
14+
15+ <statement> = 'def' <identifier> '=' <expression>
16+ | 'var' <identifier> '::' <unit>
17+ | 'derived' <identifier> '=' <unit>
18+ | 'expr' <expr>
19+ | 'eq' <expr> '=' <expr>
20+
21+ <expr> = <expr> <binop> <expr>
22+ | '-' <expr>
23+ | '(' <expr> ')'
24+ | <identifier> '(' <args>? ')'
25+ | <expr> '::' <unit>
26+ | <number>
27+ | <identifier>
28+
29+ <args> = <expr> | <expr> ',' <args>
30+
31+ <binop> = [-+*/^]
32+
33+ <unit> = '[' <basePow>* ']'
34+
35+ <basePow> = <identifier> ('^' <integer>)?
36+ --}
37+
1238program :: Parser (Program SS )
1339program = Program <$> many statement <?> " program"
1440
Original file line number Diff line number Diff line change @@ -7,6 +7,12 @@ import qualified Text.Parsec.Token as P
77import Control.Applicative hiding (Const )
88import qualified Data.Maybe as Maybe
99
10+ {- -
11+ <unit> = '[' <basePow>* ']'
12+
13+ <basePow> = <identifier> ('^' <integer>)?
14+ --}
15+
1016baseOfString :: String -> SS -> BaseUnit SS
1117baseOfString s = Maybe. fromMaybe (Derived s) (lookup s siMap)
1218 where
You can’t perform that action at this time.
0 commit comments