Skip to content

Commit

Permalink
Improve regexp patterns for Nevod language. Update operator_feature.t…
Browse files Browse the repository at this point in the history
…est.
  • Loading branch information
dmitry-surkov committed Mar 11, 2021
1 parent 53db2f8 commit 483d8df
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 35 deletions.
56 changes: 40 additions & 16 deletions components/prism-nevod.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ Prism.languages.nevod = {
lookbehind: true,
},
'pattern': {
pattern: /(@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?=/,
pattern: /(@pattern\s+)?#?[a-zA-Z0-9\-.]+\s*(?:(?:[(]\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]+\s*(?:,\s*(?:(?:~\s*)?[a-zA-Z0-9\-.]*))*)[)])\s*)?(?:=)/,
alias: 'class-name',
lookbehind: true,
inside: {
'name': /#?[a-zA-Z0-9\-.]+/,
'equal': /=/,
'attributes': {
pattern: /\(.*\)/,
inside: {
Expand All @@ -29,35 +29,59 @@ Prism.languages.nevod = {
},
},
'search': {
pattern: /(@search\s+|#)[a-zA-Z0-9\-.]+(?:\.\*)?\s*(?=;)/,
pattern: /(@search\s+|#)[a-zA-Z0-9\-.]+\s*(?:\.\*\s*)?(?:;)/,
alias: 'function',
lookbehind: true,
inside: {
'name': /.*(?=;)/
}
},
'keyword': /@(?:require|namespace|pattern|search|inside|outside|having|where)\b/,
'basic-reference': {
'builtin': {
pattern: /\b(?:Word|Punct|Symbol|Space|LineBreak|Start|End|Alpha|AlphaNum|Num|NumAlpha|Blank|WordBreak|Any)(?:\(.*\)|\b)/,
inside: {
'name': /.+\b/,
'params': /\(.*\)/,
},
},
'quantifier': /\b\d+(?:\+|-\d+)?\b/,
'conjunction': /&/,
'exception': /~/,
'optionality': /\?/,
'bracket': /[()]/,
'repetition': /[[\]]/,
'variation': /[{}]/,
'semi-colon': /;/,
'quantifier': {
pattern: /\b\d+(?:\+|-\d+)?\b/,
alias: 'number',
},
'operator': [
{
pattern: /&/,
alias: 'conjunction',
},
{
pattern: /~/,
alias: 'exception',
},
{
pattern: /\?/,
alias: 'optionality',
},
{
pattern: /[[\]]/,
alias: 'repetition',
},
{
pattern: /[{}]/,
alias: 'variation',
},
{
pattern: /[+_]/,
alias: 'sequence',
},
{
pattern: /\.{2,3}/,
alias: 'span',
},
],
'attr-capture': {
pattern: /[a-zA-Z0-9\-.]+\s*:/,
inside: {
'attr-name': /[a-zA-Z0-9\-.]+/,
'colon': /:/,
},
},
'punctuation': /[,+_]|\.{2,3}/,
'punctuation': /[:;,()=]/,
'name': /\S+/
}
2 changes: 1 addition & 1 deletion components/prism-nevod.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

29 changes: 11 additions & 18 deletions tests/languages/nevod/operator_feature.test
Original file line number Diff line number Diff line change
@@ -1,30 +1,23 @@
, + _
( , ) ;
+ _
.. ...
0-5
[ 0-5 ]
&
~
?
()
[]
{}
;

----------------------------------------------------

[
["punctuation", ","], ["punctuation", "+"], ["punctuation", "_"],
["punctuation", ".."], ["punctuation", "..."],
["quantifier", "0-5"],
["conjunction", "&"],
["exception", "~"],
["optionality", "?"],
["bracket", "("],
["bracket", ")"],
["repetition", "["],
["repetition", "]"],
["variation", "{"],
["variation", "}"],
["semi-colon", ";"]
["punctuation", "("], ["punctuation", ","], ["punctuation", ")"], ["punctuation", ";"],
["operator", "+"], ["operator", "_"],
["operator", ".."], ["operator", "..."],
["operator", "["], ["quantifier", "0-5"], ["operator", "]"],
["operator", "&"],
["operator", "~"],
["operator", "?"],
["operator", "{"], ["operator", "}"]
]

----------------------------------------------------
Expand Down

0 comments on commit 483d8df

Please sign in to comment.