diff options
Diffstat (limited to 'pygments/lexers/j.py')
-rw-r--r-- | pygments/lexers/j.py | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/pygments/lexers/j.py b/pygments/lexers/j.py index 223820b7..ee18b2bd 100644 --- a/pygments/lexers/j.py +++ b/pygments/lexers/j.py @@ -8,9 +8,9 @@ :license: BSD, see LICENSE for details. """ -from pygments.lexer import RegexLexer, words, include +from pygments.lexer import RegexLexer, words, include, bygroups from pygments.token import Comment, Keyword, Name, Number, Operator, Punctuation, \ - String, Text + String, Text, Whitespace __all__ = ['JLexer'] @@ -36,19 +36,25 @@ class JLexer(RegexLexer): # Comments (r'NB\..*', Comment.Single), - (r'\n+\s*Note', Comment.Multiline, 'comment'), - (r'\s*Note.*', Comment.Single), + (r'(\n+\s*)(Note)', bygroups(Whitespace, Comment.Multiline), + 'comment'), + (r'(\s*)(Note.*)', bygroups(Whitespace, Comment.Single)), # Whitespace - (r'\s+', Text), + (r'\s+', Whitespace), # Strings (r"'", String, 'singlequote'), # Definitions - (r'0\s+:\s*0|noun\s+define\s*$', Name.Entity, 'nounDefinition'), - (r'(([1-4]|13)\s+:\s*0|(adverb|conjunction|dyad|monad|verb)\s+define)\b', - Name.Function, 'explicitDefinition'), + (r'0\s+:\s*0', Name.Entity, 'nounDefinition'), + (r'(noun)(\s+)(define)(\s*)$', bygroups(Name.Entity, Whitespace, + Name.Entity, Whitespace), 'nounDefinition'), + (r'([1-4]|13)\s+:\s*0\b', + Name.Function, 'explicitDefinition'), + (r'(adverb|conjunction|dyad|monad|verb)(\s+)(define)\b', + bygroups(Name.Function, Whitespace, Name.Function), + 'explicitDefinition'), # Flow Control (words(('for_', 'goto_', 'label_'), suffix=validName+r'\.'), Name.Label), @@ -125,7 +131,7 @@ class JLexer(RegexLexer): ], 'nounDefinition': [ - (r'[^)]', String), + (r'[^)]+', String), (r'^\)', Name.Label, '#pop'), (r'[)]', String), ], @@ -138,7 +144,7 @@ class JLexer(RegexLexer): ], 'singlequote': [ - (r"[^']", String), + (r"[^']+", String), (r"''", String), (r"'", String, '#pop'), ], |