diff options
| author | Akshay Nair <phenax5@gmail.com> | 2023-08-20 11:29:07 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2023-08-20 11:29:07 +0530 |
| commit | f61677bbc3ae32cc460014cffe4d9ae9264291c5 (patch) | |
| tree | af7f8935ba15364699f1b1abf6a5987b61011d33 /src | |
| parent | 2b94b07fdc8f1a82f507b99000add9b7dca2c3d8 (diff) | |
| download | css-everything-f61677bbc3ae32cc460014cffe4d9ae9264291c5.tar.gz css-everything-f61677bbc3ae32cc460014cffe4d9ae9264291c5.zip | |
feat: function declaration
Diffstat (limited to 'src')
| -rw-r--r-- | src/eval.ts | 4 | ||||
| -rw-r--r-- | src/parser.ts | 12 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/eval.ts b/src/eval.ts index 26b3df0..e421d7a 100644 --- a/src/eval.ts +++ b/src/eval.ts @@ -245,7 +245,9 @@ const getFunctions = ( return EvalValue.Void() }, - _: () => Promise.reject(new Error('not supposed to be here')), + func: async () => EvalValue.Lazy(args), + + _: () => Promise.reject(new Error(`Not implemented: ${name}`)), }) } diff --git a/src/parser.ts b/src/parser.ts index 732e32a..eeb9acf 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -108,6 +108,18 @@ const exprParser: P.Parser<Expr> = P.or([ identifierExprParser, ]) +export const parseExpr = (input: string): Expr => { + return match(exprParser(input), { + Ok: ({ value, input }) => { + if (input) throw new Error(`Aaaaaa. Input left: ${input}`) + return value + }, + Err: e => { + throw e + }, + }) +} + const declarationParser = P.or([callExprParser, selectorExprParser]) const multiDeclarationParser = P.sepBy(declarationParser, whitespace) |
