Skip to content

Commit

Permalink
chore: minor improvements of grammar and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
piotr-semenov committed May 8, 2024
1 parent 0d9ba5f commit 13bc339
Show file tree
Hide file tree
Showing 8 changed files with 51 additions and 27 deletions.
14 changes: 8 additions & 6 deletions src/functions.YAML-tmLanguage.j2
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ repository:
1:
name: entity.name.function.builtins.parigp
-
match: '\b({{ scopes["constant.language"] | join("|") }})\b\s*(\(\)|\{\}|\(\{\}\)|\{\(\)\})?'
match: '\b({{ scopes["constant.language"] | join("|") }})'
captures:
1:
name: constant.language.parigp
Expand All @@ -26,16 +26,18 @@ repository:
1:
name: keyword.control.parigp
-
match: '\.({{ scopes["entity.name.function.member"] | join("|") }})\b'
match: '(\.)({{ scopes["entity.name.function.member"] | join("|") }})\b'
captures:
1:
name: markup.punctuation.member.parigp
2:
name: entity.name.function.member.builtins.parigp

user-defined:
patterns:
-
begin: '([[:alpha:]][[:alnum:]_]*)\b(?=(\s*\(|\(\s*\{|\{\s*\()[^=]*=)'
end: '(?<=\=)'
end: '(?<=\s*\=)'
beginCaptures:
1:
name: entity.name.function.user.parigp
Expand All @@ -44,7 +46,7 @@ repository:
- include: '#function-vars'
-
begin: '([[:alpha:]][[:alnum:]_]*)\b(?=\s*=\s*(\(([^()]|(\g<2>))*\)|[[:alpha:]][[:alnum:]_]*)\s*\-\s*>)'
end: '(?<=\->)'
end: '(?<=\s*\-\s*>)'
beginCaptures:
1:
name: entity.name.function.user.lambda.parigp
Expand All @@ -53,7 +55,7 @@ repository:
- include: '#function-vars'
-
begin: '(\(([^()]|(\g<0>))*\)|[[:alpha:]][[:alnum:]_]*|\{.+\})(?=\s*\-\s*>)'
end: '(?<=\->)'
end: '(?<=\s*\-\s*>)'
beginCaptures:
1:
name: entity.name.function.user.lambda.anonymous.parigp
Expand All @@ -65,7 +67,7 @@ repository:
- include: '#operators'
-
begin: '\.([[:alpha:]][[:alnum:]_]*)\b(?=[^=]*=)'
end: '(?<=\=)'
end: '(?<=\s*\=)'
beginCaptures:
1:
name: entity.name.function.user.member.parigp
Expand Down
1 change: 1 addition & 0 deletions src/main.YAML-tmLanguage
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
---
fileTypes:
- gp
- gpi
- pari
- parigp
name: PARI/GP
Expand Down
2 changes: 1 addition & 1 deletion src/operators.YAML-tmLanguage
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ repository:
name: keyword.operator.increment-decrement.parigp
-
match: '(\+=|\-=|\*=|\/=|\\=|<<=|>>=)'
name: keyword.operator.arithmetic.assign.parigp
name: keyword.operator.arithmetic.assignment.parigp
-
match: '(\-|\+|\*|\^|\/|\\|\\/|%)'
name: keyword.operator.arithmetic.parigp
Expand Down
10 changes: 6 additions & 4 deletions tests/comments.test.gp
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,22 @@
/**
##^^ source.parigp comment.block.parigp punctuation.definition.comment.begin.parigp
Multi-line comment: Line 1
## ^^^^^^^^^^^^^^^^^^^^^^^^^^ source.parigp comment.block.parigp
##^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.parigp comment.block.parigp
Multi-line comment: Line 2
## ^^^^^^^^^^^^^^^^^^^^^^^^^^ source.parigp comment.block.parigp
##^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.parigp comment.block.parigp
/* Nested multi-line comments shouldn't confuse the parser */
##^^ source.parigp comment.block.parigp
## ^^ source.parigp comment.block.parigp comment.block.parigp punctuation.definition.comment.begin.parigp
## ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.parigp comment.block.parigp comment.block.parigp
## ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.parigp comment.block.parigp comment.block.parigp
## ^^ source.parigp comment.block.parigp comment.block.parigp punctuation.definition.comment.end.parigp
*/
##^^ source.parigp comment.block.parigp punctuation.definition.comment.end.parigp

(/* Comment inside expression */ 1)
##^ source.parigp meta.parens.parigp punctuation.section.parens.begin.parigp
## ^^ source.parigp meta.parens.parigp comment.block.parigp punctuation.definition.comment.begin.parigp
## ^^^^^^^^^^^^^^^^^^^^^^^^^ source.parigp meta.parens.parigp comment.block.parigp
## ^^^^^^^^^^^^^^^^^^^^^^^^^^^source.parigp meta.parens.parigp comment.block.parigp
## ^^ source.parigp meta.parens.parigp comment.block.parigp punctuation.definition.comment.end.parigp
## ^ source.parigp meta.parens.parigp constant.character.whitespace.parigp
## ^ source.parigp meta.parens.parigp constant.numeric.int.parigp
## ^ source.parigp meta.parens.parigp punctuation.section.parens.end.parigp
9 changes: 8 additions & 1 deletion tests/functions.test.gp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
## ^ ^ source.parigp constant.character.whitespace.parigp
## ^ source.parigp keyword.operator.assignment.parigp
## ^^^^^ ^ source.parigp constant.language.parigp
## ^ source.parigp meta.parens.parigp punctuation.section.parens.begin.parigp
## ^ source.parigp meta.parens.parigp punctuation.section.parens.end.parigp
## ^ ^ source.parigp constant.character.whitespace.parigp
## ^ source.parigp keyword.operator.arithmetic.parigp

Expand All @@ -21,6 +23,7 @@

x = Mod(4, 5);
##^ source.parigp variable.name.parigp
## ^ ^ source.parigp constant.character.whitespace.parigp
## ^ source.parigp keyword.operator.assignment.parigp
## ^^^ source.parigp entity.name.function.builtins.parigp
## ^ source.parigp meta.parens.parigp punctuation.section.parens.begin.parigp
Expand All @@ -32,6 +35,7 @@

x.mod
##^ source.parigp variable.name.parigp
## ^ source.parigp markup.punctuation.member.parigp
## ^^^ source.parigp entity.name.function.member.builtins.parigp

ellinit([0, 0, 0, -1, 0]).b2
Expand All @@ -44,6 +48,7 @@
## ^ source.parigp meta.parens.parigp meta.brackets.parigp keyword.operator.arithmetic.parigp
## ^ source.parigp meta.parens.parigp punctuation.section.brackets.end.parigp
## ^ source.parigp meta.parens.parigp punctuation.section.parens.end.parigp
## ^ source.parigp markup.punctuation.member.parigp
## ^^ source.parigp entity.name.function.member.builtins.parigp

allocatemem();
Expand Down Expand Up @@ -76,13 +81,15 @@
## ^ source.parigp meta.function.lambda.parigp meta.parens.parigp meta.function.parameter.optional.parigp constant.numeric.int.parigp
## ^ source.parigp meta.function.lambda.parigp meta.parens.parigp meta.function.parameter.optional.end.parigp
## ^ source.parigp meta.function.lambda.parigp meta.parens.parigp punctuation.section.parens.end.parigp
## ^ ^ source.parigp constant.character.whitespace.parigp
## ^ source.parigp meta.function.lambda.parigp constant.character.whitespace.parigp
## ^^ source.parigp keyword.operator.lambda
## ^ source.parigp constant.character.whitespace.parigp
## ^ source.parigp meta.block.parigp punctuation.section.group.begin.parigp
## ^ ^ source.parigp meta.block.parigp constant.character.whitespace.parigp
## ^^^^^^ source.parigp meta.block.parigp keyword.control.parigp
## ^ source.parigp meta.block.parigp meta.parens.parigp punctuation.section.parens.begin.parigp
## ^ ^ ^ source.parigp meta.block.parigp variable.name.parigp
## ^ ^ ^ source.parigp meta.block.parigp meta.parens.parigp constant.character.whitespace.parigp
## ^ ^ source.parigp meta.block.parigp keyword.operator.arithmetic.parigp
## ^ source.parigp meta.block.parigp meta.parens.parigp punctuation.section.parens.end.parigp
## ^ source.parigp meta.block.parigp markup.punctuation.statement-terminator.parigp
Expand Down
5 changes: 3 additions & 2 deletions tests/literals.test.gp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
-123 - .123E-07 + 043664.32
##^ ^ ^ source.parigp keyword.operator.arithmetic.parigp
## ^^^ source.parigp constant.numeric.int.parigp
## ^ ^ ^ ^ source.parigp constant.character.whitespace.parigp
## ^^^^^^^^ ^^^^^^^^^ source.parigp constant.numeric.float.parigp

00432
Expand All @@ -18,10 +19,10 @@
##^^^^^^^^^^ source.parigp constant.numeric.bin.parigp

"Hello, world!"
## ^^^^^^^^^^^^^ source.parigp constant.character.escape.parigp
##^^^^^^^^^^^^^^^ source.parigp constant.character.escape.parigp

s = "Lorem_ipsum;"
##^ source.parigp variable.name.parigp
## ^ ^ source.parigp constant.character.whitespace.parigp
## ^ source.parigp keyword.operator.assignment.parigp
## ^^^^^^^^^^^^^ source.parigp constant.character.escape.parigp
## ^^^^^^^^^^^^^^ source.parigp constant.character.escape.parigp
13 changes: 10 additions & 3 deletions tests/operators.test.gp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
## ^ source.parigp meta.parens.parigp meta.brackets.parigp punctuation.section.brackets.begin.parigp
## ^ source.parigp meta.parens.parigp meta.brackets.parigp punctuation.section.brackets.end.parigp
## ^ ^ source.parigp meta.parens.parigp punctuation.section.parens.end.parigp
## ^ ^ source.parigp constant.character.whitespace.parigp
## ^^ source.parigp keyword.operator.logical.parigp
## ^ ^ source.parigp meta.parens.parigp constant.character.whitespace.parigp
## ^^ source.parigp meta.parens.parigp keyword.operator.logical.parigp
Expand All @@ -32,22 +33,26 @@
## ^^^^^^ source.parigp meta.parens.parigp meta.parens.parigp constant.character.escape.parigp
## ^ source.parigp meta.parens.parigp meta.parens.parigp punctuation.section.parens.end.parigp
## ^ source.parigp meta.parens.parigp punctuation.section.parens.end.parigp
## ^ source.parigp markup.punctuation.statement-terminator.parigp

(1 >= 1) && (10 <= 11) || (x > 0)
##^ ^ ^ source.parigp meta.parens.parigp punctuation.section.parens.begin.parigp
## ^ ^ ^^ ^^ ^ source.parigp meta.parens.parigp constant.numeric.int.parigp
## ^ ^ ^ ^ source.parigp meta.parens.parigp constant.character.whitespace.parigp
## ^^ ^^ ^ source.parigp meta.parens.parigp keyword.operator.comparison.parigp
## ^^ ^^ source.parigp keyword.operator.logical.parigp
## ^ ^ ^ source.parigp meta.parens.parigp punctuation.section.parens.end.parigp
## ^^ source.parigp keyword.operator.logical.parigp
## ^ ^ ^ ^ source.parigp constant.character.whitespace.parigp
## ^^ ^^ source.parigp keyword.operator.logical.parigp

y < 0
##^ source.parigp variable.name.parigp
## ^ ^ source.parigp constant.character.whitespace.parigp
## ^ source.parigp keyword.operator.comparison.parigp
## ^ source.parigp constant.numeric.int.parigp

x = 10;
##^ source.parigp variable.name.parigp
## ^ ^ source.parigp constant.character.whitespace.parigp
## ^ source.parigp keyword.operator.assignment.parigp
## ^^ source.parigp constant.numeric.int.parigp
## ^ source.parigp markup.punctuation.statement-terminator.parigp
Expand All @@ -62,15 +67,17 @@
##^ source.parigp meta.brackets.parigp punctuation.section.brackets.begin.parigp
## ^ ^ ^ ^ ^ ^ source.parigp meta.brackets.parigp constant.numeric.int.parigp
## ^ ^ ^ ^ ^ source.parigp meta.brackets.parigp markup.punctuation.separator.parigp
## ^ ^ ^ ^ ^ source.parigp meta.brackets.parigp constant.character.whitespace.parigp
## ^ source.parigp meta.brackets.parigp punctuation.section.brackets.end.parigp
## ^ source.parigp keyword.operator.transpose.parigp


[('x^2 + 1)', 1; 1, 'x]'
##^ source.parigp meta.brackets.parigp punctuation.section.brackets.begin.parigp
## ^ source.parigp meta.brackets.parigp meta.parens.parigp punctuation.section.parens.begin.parigp
## ^^ source.parigp meta.brackets.parigp meta.parens.parigp variable.name.parigp
## ^ source.parigp meta.brackets.parigp meta.parens.parigp keyword.operator.arithmetic.parigp
## ^ ^ source.parigp meta.brackets.parigp meta.parens.parigp constant.numeric.int.parigp
## ^ ^ source.parigp meta.brackets.parigp meta.parens.parigp constant.character.whitespace.parigp
## ^ source.parigp meta.brackets.parigp meta.parens.parigp punctuation.section.parens.end.parigp
## ^ source.parigp meta.brackets.parigp keyword.operator.derivative.parigp
## ^ ^ ^ source.parigp meta.brackets.parigp markup.punctuation.separator.parigp
Expand Down
24 changes: 14 additions & 10 deletions tests/other.test.gp
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,13 @@
## ^ source.parigp constant.character.whitespace.parigp
## ^^^^^^^^^^^^ source.parigp constant.character.escape.parigp

x = 1;
x *= 10;
##^ source.parigp variable.name.parigp
## ^ ^ source.parigp constant.character.whitespace.parigp
## ^^ source.parigp keyword.operator.arithmetic.assign.parigp
## ^^ source.parigp constant.numeric.int.parigp
## ^ source.parigp markup.punctuation.statement-terminator.parigp
x = 1; x *= 10;
##^ ^ source.parigp variable.name.parigp
## ^ ^ ^ ^ ^ source.parigp constant.character.whitespace.parigp
## ^ source.parigp keyword.operator.assignment.parigp
## ^^ source.parigp keyword.operator.arithmetic.assignment.parigp
## ^ ^^ source.parigp constant.numeric.int.parigp
## ^ ^ source.parigp markup.punctuation.statement-terminator.parigp

y = x >> 2;
##^ ^ source.parigp variable.name.parigp
Expand All @@ -64,7 +64,9 @@

[(x) -> x, 1]
##^ source.parigp meta.brackets.parigp punctuation.section.brackets.begin.parigp
## ^^^ source.parigp meta.brackets.parigp meta.function.lambda.anonymous.parigp entity.name.function.user.lambda.anonymous.parigp
## ^ source.parigp meta.brackets.parigp meta.function.lambda.anonymous.parigp entity.name.function.user.lambda.anonymous.parigp meta.parens.parigp punctuation.section.parens.begin.parigp
## ^ source.parigp meta.brackets.parigp meta.function.lambda.anonymous.parigp entity.name.function.user.lambda.anonymous.parigp meta.parens.parigp variable.parameter.function.parigp
## ^ source.parigp meta.brackets.parigp meta.function.lambda.anonymous.parigp entity.name.function.user.lambda.anonymous.parigp meta.parens.parigp punctuation.section.parens.end.parigp
## ^ source.parigp meta.brackets.parigp meta.function.lambda.anonymous.parigp constant.character.whitespace.parigp
## ^^ source.parigp meta.brackets.parigp meta.function.lambda.anonymous.parigp keyword.operator.lambda
## ^ source.parigp meta.brackets.parigp constant.character.whitespace.parigp
Expand All @@ -76,7 +78,9 @@

({x} -> 1)()
##^ source.parigp meta.parens.parigp punctuation.section.parens.begin.parigp
## ^^^ source.parigp meta.parens.parigp meta.function.lambda.anonymous.parigp entity.name.function.user.lambda.anonymous.parigp
## ^ source.parigp meta.parens.parigp meta.function.lambda.anonymous.parigp entity.name.function.user.lambda.anonymous.parigp meta.function.parameter.optional.parigp meta.function.parameter.optional.begin.parigp
## ^ source.parigp meta.parens.parigp meta.function.lambda.anonymous.parigp entity.name.function.user.lambda.anonymous.parigp meta.function.parameter.optional.parigp variable.parameter.function.parigp
## ^ source.parigp meta.parens.parigp meta.function.lambda.anonymous.parigp entity.name.function.user.lambda.anonymous.parigp meta.function.parameter.optional.parigp meta.function.parameter.optional.end.parigp
## ^ source.parigp meta.parens.parigp meta.function.lambda.anonymous.parigp constant.character.whitespace.parigp
## ^^ source.parigp meta.parens.parigp meta.function.lambda.anonymous.parigp keyword.operator.lambda
## ^ source.parigp meta.parens.parigp constant.character.whitespace.parigp
Expand All @@ -87,7 +91,7 @@

(x -> 1)(10)
##^ source.parigp meta.parens.parigp punctuation.section.parens.begin.parigp
## ^ source.parigp meta.parens.parigp meta.function.lambda.anonymous.parigp entity.name.function.user.lambda.anonymous.parigp
## ^ source.parigp meta.parens.parigp meta.function.lambda.anonymous.parigp entity.name.function.user.lambda.anonymous.parigp variable.parameter.function.parigp
## ^ source.parigp meta.parens.parigp meta.function.lambda.anonymous.parigp constant.character.whitespace.parigp
## ^^ source.parigp meta.parens.parigp meta.function.lambda.anonymous.parigp keyword.operator.lambda
## ^ source.parigp meta.parens.parigp constant.character.whitespace.parigp
Expand Down

0 comments on commit 13bc339

Please sign in to comment.