diff --git a/packages/codemirror-lang-kcl/src/kcl.grammar b/packages/codemirror-lang-kcl/src/kcl.grammar index c8a6ad1aa..179d535be 100644 --- a/packages/codemirror-lang-kcl/src/kcl.grammar +++ b/packages/codemirror-lang-kcl/src/kcl.grammar @@ -17,7 +17,7 @@ statement[@isGroup=Statement] { ImportStatement { kw<"import"> ImportItems ImportFrom String } | - FunctionDeclaration { kw<"export">? kw<"fn"> VariableDefinition Equals ParamList Arrow Body } | + FunctionDeclaration { kw<"export">? kw<"fn"> VariableDefinition Equals? ParamList Arrow? Body } | VariableDeclaration { kw<"export">? (kw<"var"> | kw<"let"> | kw<"const">)? VariableDefinition Equals expression } | ReturnStatement { kw<"return"> expression } | ExpressionStatement { expression } diff --git a/packages/codemirror-lang-kcl/test/fn.txt b/packages/codemirror-lang-kcl/test/fn.txt new file mode 100644 index 000000000..b77946cc4 --- /dev/null +++ b/packages/codemirror-lang-kcl/test/fn.txt @@ -0,0 +1,60 @@ +# full + +fn two = () => { + return 2 +} + +==> + +Program(FunctionDeclaration(fn, + VariableDefinition, + Equals, + ParamList, + Arrow, + Body(ReturnStatement(return, + Number)))) + +# = is optional + +fn one () => { + return 1 +} + +==> + +Program(FunctionDeclaration(fn, + VariableDefinition, + ParamList, + Arrow, + Body(ReturnStatement(return, + Number)))) + +# => is optional + +fn one = () { + return 1 +} + +==> + +Program(FunctionDeclaration(fn, + VariableDefinition, + Equals, + ParamList, + Body(ReturnStatement(return, + Number)))) + +# terse + +fn two() { + return 2 +} + +==> + +Program(FunctionDeclaration(fn, + VariableDefinition, + ParamList, + Body(ReturnStatement(return, + Number)))) +