From bb96b0c0c4a13ea8c9eaa883e13273f0123f545c Mon Sep 17 00:00:00 2001 From: Jonathan Date: Wed, 25 Oct 2023 01:25:09 +0200 Subject: [PATCH] feat(Lezer grammar): Allow tabs (#3742) --- grammars/prql-lezer/src/highlight.js | 1 + grammars/prql-lezer/src/prql.grammar | 2 +- grammars/prql-lezer/test/misc.txt | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/grammars/prql-lezer/src/highlight.js b/grammars/prql-lezer/src/highlight.js index 7e58c8a658ea..9aef910c1626 100644 --- a/grammars/prql-lezer/src/highlight.js +++ b/grammars/prql-lezer/src/highlight.js @@ -11,6 +11,7 @@ export const prqlHighlight = styleTags({ Boolean: t.bool, Integer: t.integer, Float: t.float, + TypeTerm: t.typeName, Escape: t.escape, String: t.string, FString: t.special(t.string), diff --git a/grammars/prql-lezer/src/prql.grammar b/grammars/prql-lezer/src/prql.grammar index 0f63d126bd9c..83f523eac59a 100644 --- a/grammars/prql-lezer/src/prql.grammar +++ b/grammars/prql-lezer/src/prql.grammar @@ -136,7 +136,7 @@ LambdaParam { identPart TypeDefinition? (":" expression)? } Float { @digit ( @digit | "_" )* "." @digit ( @digit | "_" )* ("e" Integer)? } // TODO: This is not as precise as PRQL, which doesn't allow trailing // underscores and allows no digit before the decimal point. - space { " "+ } + space { $[ \t] } Escape { "\\" ("x" hex hex | "u" "{" hex+ "}" | $[bfnrt]) diff --git a/grammars/prql-lezer/test/misc.txt b/grammars/prql-lezer/test/misc.txt index 7072480c3fc1..ad78a63fcfcf 100644 --- a/grammars/prql-lezer/test/misc.txt +++ b/grammars/prql-lezer/test/misc.txt @@ -87,6 +87,14 @@ let my_func = arg1 arg2 -> arg1 + arg2 Query(Statements(VariableDeclaration(let,VariableName,Equals,Lambda(LambdaParam,LambdaParam,BinaryExpression(Identifier,ArithOp,Identifier))))) +# Function declaration with type annotation + +let my_func = arg1 -> arg1 + +==> + +Query(Statements(VariableDeclaration(let,VariableName,Equals,Lambda(LambdaParam(TypeDefinition(TypeTerm)),Identifier)))) + # Simple pipeline from foo | select bar @@ -117,3 +125,11 @@ group customer_id ( ==> Query(Statements(PipelineStatement(Pipeline(CallExpression(Identifier,Identifier,NestedPipeline(Pipeline(CallExpression(Identifier,TupleExpression(CallExpression(Identifier,Identifier)))))))))) + +# Tabs as spaces + +let foo = (1) + +==> + +Query(Statements(VariableDeclaration(let,VariableName,Equals,NestedPipeline(Pipeline(Integer)))))